zoffline 通过充当 Zwift 服务器的部分实现来支持离线使用 Zwift。默认情况下,zoffline 仅适用于单个玩家。请参阅步骤 6:启用多人游戏,了解如何启用对多个用户/配置文件的支持。
zoffline 还提供对抗幽灵的骑行(您之前的骑行)。通过在 zoffline 启动器中选中“启用幽灵”来启用此功能。有关更多详细信息,请参阅幽灵和机器人。
此外,zoffline 的启动器允许选择要骑行的特定地图,而无需修改配置文件。
设置 zoffline 需要两个主要步骤。首先,必须在运行 Zwift 之前在系统上安装并运行 zoffline(无论是在运行 Zwift 的系统上还是在另一个本地联网系统上)。其次,必须将 Zwift 配置为使用 zoffline 而不是官方 Zwift 服务器。
根据您的平台,可以通过三种方式安装和运行 zoffline:
pace_partners
目录解压到zoffline所在的同一文件夹中。storage
目录中创建一个server-ip.txt
文件,其中包含运行 zoffline 的 PC 的 IP 地址。storage
目录来存储您的 Zwift 进度。pip3 install -r requirements.txt
pip install -r requirements.txt
C:UsersAppDataLocalProgramsPythonPythonScriptspip.exe
而不仅仅是pip
storage
目录中创建一个server-ip.txt
文件,其中包含运行 zoffline 的 PC 的 IP 地址。sudo ./standalone.py
sudo python3 standalone.py
python standalone.py
C:UsersAppDataLocalProgramsPythonPythonpython.exe
而不仅仅是python
storage
目录。它包含您的 Zwift 进度状态。zoffline 可以安装在与 Zwift 相同的计算机上或另一台本地计算机上。
docker create --name zwift-offline -p 443:443 -p 80:80 -p 3024:3024/udp -p 3025:3025 -p 53:53/udp -v :/usr/src/app/zwift-offline/storage -e TZ= zoffline/zoffline
-v :/usr/src/app/zwift-offline/storage
-v
路径可能需要是全局可读和可写的。
值(例如 America/New_York)的列表。--restart unless-stopped
将使 zoffline 在启动时启动。
目录中创建一个server-ip.txt
文件,其中包含运行 zoffline 的 PC 的 IP 地址。docker start zwift-offline
docker-compose.yml
文件(该文件将从 Dockerfile 构建),也可以使用以下示例撰写文件: version: "3.3"
services:
zoffline:
image: zoffline/zoffline:latest
container_name: zoffline
environment:
- TZ=Europe/London
volumes:
- ./storage/:/usr/src/app/zwift-offline/storage
ports:
- 80:80
- 443:443
- 3024:3024/udp
- 3025:3025
restart: unless-stopped
storage
目录中创建一个server-ip.txt
文件,其中包含运行 zoffline 的 PC 的 IP 地址。docker-compose up -d
C:Program Files (x86)ZwiftZwift_ver_cur.xml
复制到 zoffline 的cdn/gameassets/Zwift_Updates_Root/
覆盖现有文件。certutil.exe -importpfx Root cert-zwift-com.p12
C:Program Files (x86)Zwiftdatacacert.pem
ssl/cert-zwift-com.pem
的内容附加到 cacert.pemC:WindowsSystem32Driversetchosts
us-or-rly101.zwift.com secure.zwift.com cdn.zwift.com launcher.zwift.com
是运行 zoffline 的计算机的 IP 地址。如果它与 Zwift 在同一台计算机上运行,请使用127.0.0.1
作为 IP。)hosts
文件不变,除非专门使用 zoffline,您可以选择使用scripts
目录中的launch.bat脚本来启动 zoffline,而不是使用普通的 Zwift 启动器。有关详细信息,请参阅#121。原因:我们需要重定向 Zwift 以使用 zoffline,并说服 Windows 和 Zwift 接受 zoffline 对 Zwift 域名的自签名证书。请随意生成您自己的证书并执行相同的操作。
~/Library/Application Support/Zwift/ZwiftMac_ver_cur.xml
复制到 zoffline 的cdn/gameassets/Zwift_Updates_Root/
覆盖现有文件。sed -n '29,53p' cert-zwift-com.pem >> ~/Library/Application Support/Zwift/data/cacert.pem
/etc/hosts
us-or-rly101.zwift.com secure.zwift.com cdn.zwift.com launcher.zwift.com
是运行 zoffline 的计算机的 IP 地址。如果它与 Zwift 在同一台计算机上运行,请使用127.0.0.1
作为 IP。)原因:我们需要重定向 Zwift 以使用 zoffline,并说服 macOS 和 Zwift 接受 Zoffline 对 Zwift 域名的自签名证书。请随意生成您自己的证书并执行相同的操作。
ZofflineObb.apk
app-Github-release.apk
hosts.txt
文件(您可以使用文本编辑器应用程序或使用此类在线工具在线创建它)。该文件必须如下所示(将
替换为运行 zoffline 的计算机的 IP 地址): us-or-rly101.zwift.com
secure.zwift.com
cdn.zwift.com
hosts.txt
文件storage
目录中创建一个fake-dns.txt
文件,并将手机 Wi-Fi 连接的“DNS 1”设置为运行 zoffline 的 PC 的 IP 地址,而不是使用“虚拟主机”应用程序Android Settings > Applications > Zwift
并清除数据或卸载并重新安装该应用程序。ZofflineObb
应用程序并运行它(允许访问存储)原因:我们需要重定向 Zwift 以使用 zoffline(这是由虚拟主机应用程序完成的),并说服 Zwift 接受 zoffline 的 Zwift 域名自签名证书(这是由补丁工具 ZofflineObb 完成的)。
ssl/cert-zwift-com.pem
的内容附加到设备上的/data/data/com.zwift.zwiftgame/dataES/cacert.pem
adb push ssl/cert-zwift-com.pem /data/data/com.zwift.zwiftgame/dataES/
adb shell
中: cd /data/data/com.zwift.zwiftgame/dataES/
adb shell
中: cat cert-zwift-com.pem >> cacert.pem
/etc/hosts
文件 us-or-rly101.zwift.com secure.zwift.com cdn.zwift.com
是运行 zoffline 的计算机的 IP 地址。)adb pull /etc/hosts
adb push hosts /etc/hosts
hosts
文件。原因:我们需要重定向 Zwift 以使用 zoffline 并说服 Zwift 接受 Zoffline 的 Zwift 域名自签名证书。请随意生成您自己的证书并执行相同的操作。
要像平常一样在线使用 Zwift,请在启动 Zwift 之前注释掉或删除添加到hosts
文件中的行。然后确保 Zwift 完全关闭(右键单击 Zwift 系统托盘图标并退出)并重新启动 Zwift。
如果您在启用 zoffline 的情况下首次启动 Zwift 之前未获取当前的 Zwift 配置文件,系统将提示您创建新的配置文件(身高、体重、性别)。您的个人资料可以通过游戏菜单进一步定制和更改(例如姓名、国籍、体重变化等)。
要获取您当前的个人资料:
scripts/get_profile.py -u
get_profile.exe
代替scripts/get_profile.py
profile.bin
、 achievements.bin
和economy_config.txt
(保存在您运行 get_profile.py 的任何目录中)移动到storage/1
目录中。storage/1
目录(如果该目录尚不存在)。1
应位于您传递给-v
路径中launcher.zwift.com
,然后使用启动器窗口中的“设置 - Strava”按钮(仅限 Windows 和 macOS),而不是执行以下步骤。scripts/strava_auth.py --client-id CLIENT_ID --client-secret CLIENT_SECRET
strava_auth.exe
来代替scripts/strava_auth.py
strava_token.txt
(保存在运行strava_auth.py
的任何目录中)移动到storage/1
目录中。pip install garth
storage
目录中创建文件garmin_domain.txt
garmin.cn
storage/1
目录中创建包含您的登录凭据的文件garmin_credentials.txt
要启用对多个用户的支持,请执行以下步骤:
storage
目录中创建multiplayer.txt
文件。storage
目录中创建一个server-ip.txt
文件,其中包含运行 zoffline 的 PC 的 IP 地址。apk-mitm/dist/tools/apktool.js
(运行npm root -g
找到它的位置)并像这样编辑它: decode ( inputPath , outputPath ) {
return this . run ( [
'decode' ,
'-resm' , // add this
'dummy' , // add this
inputPath ,
'--output' ,
outputPath ,
'--frame-path' ,
this . options . frameworkPath ,
] , 'decoding' ) ;
}
zca.apk
)复制到已知位置apk-mitm --certificate cert-zwift-com.pem zca.apk
zca-patched.apk
复制到您的手机并安装app-Github-release.apk
hosts.txt
文件(您可以使用文本编辑器应用程序或使用此类在线工具在线创建它)。该文件必须如下所示(将
替换为运行 zoffline 的计算机的 IP 地址): us-or-rly101.zwift.com
secure.zwift.com
hosts.txt
中添加cdn.zwift.com
,Companion需要从官方服务器下载镜像hosts.txt
文件storage
目录中创建一个fake-dns.txt
文件,并将手机 Wi-Fi 连接的“DNS 1”设置为运行 zoffline 的 PC 的 IP 地址,而不是使用“虚拟主机”应用程序storage
目录中创建cdn-proxy.txt
文件。仅当您在与 Zwift 客户端不同的计算机上运行 zoffline 时,这才有效。storage
目录中创建一个disable_proxy.txt
文件。storage
目录中创建一个gmail_credentials.txt
文件,其中包含 Gmail 帐户的登录凭据。您需要访问 https://security.google.com/settings/security/apppasswords 并创建应用程序密码以允许从服务器登录。pip3 install discord.py
并在storage
目录中创建一个包含以下内容的discord.cfg
文件: [discord]
token =
webhook =
channel =
welcome_message =
help_message =
[system_default_sect]
MinProtocol = TLSv1.0
CipherString = DEFAULT@SECLEVEL=1
storage
文件夹中创建文件enable_ghosts.txt
。https:///login/
,选中“启用幽灵”并单击“启动 Zwift”以保存选项。storage//ghosts//
中。下次你骑同样的路线时,幽灵就会被加载。.regroup
来重新组合幽灵。storage
文件夹内创建文件ghost_profile.txt
来自定义设备。脚本find_equip.py
可用于填充此文件。 storage
文件夹中创建一个文件enable_bots.txt
将幽灵加载为机器人,无论您骑行的路线如何,它们都会继续骑行。enable_bots.txt
可以包含一个乘数值(请注意,如果生成的机器人数量过高,可能会导致性能问题或根本无法工作)。storage
文件夹内创建文件bot.txt
来自定义姓名、国籍和设备。脚本get_pro_names.py
和get_strava_names.py
可用于填充此文件。bot_editor.py
可用于修改profile.bin
(设置名称、玩家ID和路线ID)和route.bin
(剪掉超出的点以形成完美的循环)。.bookmark
保存书签。storage
目录中创建文件all_time_leaderboards.txt
。storage
目录中创建文件unlock_entitlements.txt
。unlock_all_equipment.txt
。 请加入社区支持的 Discord 服务器和 Strava 俱乐部。
码头工人
-或者-
未来的 Zwift 更新可能会中断 zoffline,直到更新为止。启用 zoffline 后,将不会安装 Zwift 更新。如果 zoffline 更新破坏了某些内容,请检查CHANGELOG
以了解可能需要进行的更改。
不要将 zoffline 暴露在互联网上,它的设计并没有考虑到这一点。
注意:不保证未经测试的 Zwift 更新能够与 zoffline 配合使用。然而,从历史上看,Zwift 更新很少会破坏 zoffline。
Zwift 是 Zwift, Inc. 的商标,该公司与该项目的制造商没有附属关系,也不认可该项目。
所有产品和公司名称均为其各自所有者的商标。使用它们并不意味着与它们有任何隶属关系或得到它们的认可。