Skip to content

用于切换不同渠道的启动器,以连接到不同的《尘白禁区》服务器。(纯bat脚本实现)

License

Notifications You must be signed in to change notification settings

LiuJiewenTT/Snowbreak_ServerSwitcher

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

LANG date permalink redirect_from
zh_CN.UTF-8
2024-12-16 22:17:00 +0800
/
/README/

《尘白禁区》服务器切换器

简介:此程序用于切换不同渠道的启动器,以连接到不同的《尘白禁区》服务器。

自尘白一周年开始,lhm启用了西山居尘白启动器(以下简称西山居启动器),新用户下载到的不是旧版的尘白启动器。截止至2024年8月15日,西山居启动器存在诸多问题,包括缩放错误、闪退、蓝屏、无法开机、被顶号后无法登录(收集自启动器交流群群友自述内容)。因此,推荐暂时使用旧版启动器v2.0(仍在正常更新)。

旧版启动器下载链接:跳转至v1.2.2发行

快速跳转:使用, 配置方法, GUI一键启动.

项目地址:https://github.com/LiuJiewenTT/Snowbreak_ServerSwitcher
说明页链接:https://liujiewentt.github.io/Snowbreak_ServerSwitcher/README
下载请到Release区:https://github.com/LiuJiewenTT/Snowbreak_ServerSwitcher/releases
视频教程:

如果有bug欢迎反馈!到这里来添加 Issue
参与更多讨论可以来 *Discussions *区

可行性分析

已知:

  1. 启动器名称没有任何影响,可以自己修改,不同启动器可以共存。
  2. 官服和B服共用相同的数据,仅启动器不同。
  3. 已有工具基于以上原理实现了切换。
  4. 符号链接通常对程序透明。
  5. 已测试:启动器名称不会被更新改变。

故:

  1. 可以使用符号链接实现共存和替换,但最后共用同一入口
  2. 可以正常更新启动器。

优势

在2023年7月开服时,已经有人用易语言制作了一个启动器。

后来,西山居更新了启动器(发布1.1版本“夏日过年”时),这意味着各个渠道的启动器都要更新。(事实上,后来每个大版本更新都要更新启动器。)

使用符号链接的好处在于,如果直接访问,那么链接是透明的,程序直接访问真实文件。

本程序使用Windows系统下运行于cmd.exe(命令提示符)的.bat批处理脚本实现。代码开放,完全开源,安全可查。

  • 非易语言程序,不会被杀毒软件误杀(360,仅未知程序运行提醒),放心使用。

  • 非powershell脚本(.ps1),没有麻烦。

  • 没有高危操作,不需要管理员权限启动。(但启动启动器时,启动器会要求管理员权限。此提权请求与本程序无关。)

    v1.2.1起,也可以使用管理员权限启动,这样后续不再需要UAC确认了。

  • 支持国服国际服切换!(资源版本不同无法共用资源,仅能共用入口)

  • 预留扩展槽可供测试服使用!

  • 支持游戏语言配置互相切换,不同服的语言配置不再互相影响!

    中文用户本就不用担心,国际服默认配置也改用简体中文和汉语了。

如果不放心担心被其它程序或其它人修改程序产生不良影响,可以在【属性】->【安全】删除普通用户“写入”权限、保留“执行”权限。

此外,在游戏目录内(启动器原始位置),不同渠道的启动器可以共用相同的文件名。也就是说,如果你不是一起开那么一个桌面快捷方式就足够了。(此时也不用担心更新可能出现混乱导致快捷方式或是其它程序(如,Razor Cortex)出现路径错误。)

本切服器已确认适配了一些软件和文件形式:

  • “桌面快捷方式”(在win10测试,可用但不显示图标)。
  • Razor Cortex (雷游)
  • Live2DViewerEx (小部件“桌面图标”已适配完美)

例:M:\Program Files\Snow\snow_launcher.exe(这将会是一个符号链接,三服都可以共用这个入口,雷游这样的程序也不需要添加多个服务器的启动器,一次就好。)

当然,如果你就是要多个一起开,那,如果可以的话,本程序应该也可以满足你。可惜,启动器似乎进行了限制,不允许多开。

具体什么问题可以联系作者,有空会协助解决。

备注

  1. 双语特性:支持中文(保证不乱码)和英文。(Support zh_CN and en_US.)
  2. 已添加游戏语言配置文件链接。

使用

首次启动前需要完成配置,具体看下一部分说明。

命令格式:

CBJQ_SS.main [OPTIONS] [SERVER]

完成配置后,可使用GUI进行操作。

注意事项

游戏本体存在对于西山居启动器和尘白启动器配置文件的兼容,因此部分配置文件与作者使用的尘白启动器版本的目录不同(%LOCALAPPDATA%\Game\Saved\),而是在西山居启动器的尘白目录内。

你的当前账户可能不被允许创建“文件符号链接”(symlink),请到设置中打开“开发人员模式”。

补充说明:请确保真正的启动器所在目录下有preference.json文件,如果没有这个文件,启动器会以为是第一次运行,进而无法定位到正确的游戏数据目录。

运行环境注意(普通玩家)

  1. 使用前请确认“用户变量设定区”的已经设置好了启动器路径。
  2. 除了“用户变量设定区”,其它都不要动。
  3. 请确保路径中不包含这些符号:“[ ]

运行环境注意(高级玩家)

  1. 从Powershell启动可能会存在LANG环境变量,程序将优先从LANG选择mLANG缺省值。
  2. 启动参数必须选项在前服务器在后,指定多个服务器会依次触发操作。
  3. 上部分第三点具体说明:目的路径字符串不得包含启动器储存路径字符串。

不要乱改,没允许改的地方小白就不要碰了,你可知从v1.0.1v1.1.0就一个主要功能更新在功能完成后还出现了7次修复bug提交吗?如果没那么小心,bug数量一定是两位数。所以,不要乱改没让改的区域!!!

参数

启动参数必须选项在前服务器在后,指定多个服务器会依次触发操作。

  1. -nopause:从命令行启动可以指定该参数,使得程序结束时不暂停。
  2. -nostart仅切换启动器,不顺带启动程序。
  3. -noswitch仅启动程序,不切换启动器。

程序已经根据当前情况预设好了三种服务器(名):

  1. worldwide:国际服
  2. bilibili:B服
  3. kingsoft(金山):官服

例1:

CBJQ_SS.main bilibili

例2:

CBJQ_SS.main.bat bilibili

例3:

CBJQ_SS.main.bat -nostart bilibili

例4:

CBJQ_SS.main.bat -nostart slot1

slot1是自带的示例预留扩展槽的昵称("nickname")。

例5:

CBJQ_SS.main.bat -nostart -nopause bilibili

例6:

CBJQ_SS.main.bat -noswitch -nopause bilibili

例7(没什么意义):

CBJQ_SS.main.bat -nostart -nopause bilibili kingsoft worldwide

配置方法

请按照注意事项和脚本内的说明进行配置。

国际服的适配:**v1.1.0版已通过适配测试。**探究实践日志见:日志

请在安装好一个版本后开始配置。(推荐优先国服)

以下为示例,看得懂的可以自行配置。

  1. 选择一个位置,比如启动器所在的位置。例如:M:\Program Files\Snow\

  2. 将发行的压缩包内的文件夹Snowbreak_ServerSwitcher解压到这个位置。

  3. 把原启动器拖入:Snowbreak_ServerSwitcher\Launchers\文件夹内。

    如果是国际服,可以考虑使用此示例:Snowbreak_ServerSwitcher\Launchers\worldwide\

  4. 把原启动器所在目录下的preference.json复制到启动器新位置。

    补充说明:

    1. 请确保真正的启动器所在目录下有preference.json文件,如果没有这个文件,启动器会以为是第一次运行,进而无法定位到正确的游戏数据目录。

    2. 国际服默认不可与国服共用文件,所以您应该安装游戏内容到其它位置,而启动器使用的preference.json也同样不能与国服的共用。

      启动器也不是非要放在另外的安装位置,只要和国服不在同一目录即可, 详细方法如下:

      ​ 更改preference.json中资源储存位置dataPath,无此文件直接启动可能导致当处于同一目录时属于国服的data\manifest.json被覆写而使国服需要重新下载资源。

    3. 同大类(国际服/国服)同版本是共用资源的基础,而国服正式版和国服测试版资源版本不同,所以不能完全共用。(想啥呢,要是都一样,那还能是测试服吗?)

      所以如果差异不大,没关系共用资源,差异部分让它重新下载就行了(或者自己修改manifest.json); 如果大或者单纯不想折腾,打算分开装,请把它当国际服一样配置(除了切服器的对应localization要为homeland)。

  5. 把你要的其它渠道的安装包(如:CBJQ_Setup.exe)用解压软件打开,打开其中的app.7z(即,压缩包内的压缩包)。

  6. 将里面的启动器复制到刚才那个启动器的新位置去,把它们放到一起(同一目录)(国际服启动器不要和国服启动器放同一目录下!!!测试服也是!)。

  7. 给不同启动器重命名。

  8. 来到脚本Snowbreak_ServerSwitcher\CBJQ_SS.main.bat中的“用户变量设定区”,设置说明了的6个变量。(没有就设为%launcher_none%

    launcher_worldwide, launcher_bilibili, launcher_kingsoft;(没有就设为%launcher_none%
    launcher_worldwide_dest, launcher_bilibili_dest, launcher_kingsoft_dest。(目的位置,就是原本应该在的路径)

    **首尾不要有多余的空格!**储存路径建议使用绝对路径而非相对路径。若移动了储存路径,可能会错误识别未存在,尝试切换或删除目的文件即可解决。目的目录必须存在,程序不会自动创建缺失的目录。示例

    @set launcher_worldwide=%~dp0Launchers\worldwide\snow_launcher-worldwide.exe
    @set launcher_bilibili=%~dp0Launchers\snow_launcher-bilibili.exe
    @set launcher_kingsoft=%~dp0Launchers\snow_launcher-kingsoft.exe
    
    @set launcher_worldwide_dest=..\snow_launcher.exe
    @set launcher_bilibili_dest=..\snow_launcher.exe
    @set launcher_kingsoft_dest=..\snow_launcher.exe

    预留扩展槽的配置方法同理,在“用户区”内,额外的一个必要项就是“nickname”,启动时是按照它来匹配的。对应的对国际服的兼容项为“localization”,只能在homelandworldwide之间选择。如果是这段时间的国服测试服,那么用自带的扩展槽位配置即可:把启动器放到合适位置并重命名。)

    不会改参数就按这里的命名,然后复制这一段将对应代码替换。

    如果你既玩国服又玩国际服,请参照配置后续几行:

    @set StartupSettingsName_homeland=startup-homeland.settings
    @set StartupSettingsName_worldwide=startup-worldwide.settings

    如果不是,这样即可:

    @REM @set StartupSettingsName_homeland=startup-homeland.settings
    @REM @set StartupSettingsName_worldwide=startup-worldwide.settings

    即,在行首添加@REM注释掉命令使之不生效即可。如果用过上面的,配置且运行通过后,不想重新生成startup.settings(虽然无所谓),那只注释一个并留下自己要用的那个即可。

    如果你不需要不同服拥有独立的语言配置,请将如下默认改去:

    @set flag_enable_GameIni_switching=true

    改为:

    @set flag_enable_GameIni_switching=false

    truefalse。或将其注释,使其无效化:

    @REM @set flag_enable_GameIni_switching=true
  9. 使用命令行按照上述参数示例启动/切换启动器;或使用GUI操作;或直接使用一键启动程序。

    也可以用配置好的几个文件,给这几个文件创好桌面快捷方式,然后双击启动:

    • 切换+启动:尘白禁区**(切换+启动).bat
    • 仅切换,不自动启动:尘白禁区**(切换).bat
    • 仅启动,不切换:尘白禁区**(启动).bat

    您也可以为测试服配置启动脚本!

    配置GUI (CBJQ_SS_FrontEnd-tk)时您可以使用如下方式完成cwd参数和配置文件的初始化

    1. 运行cmd(命令行)。(Win+R,输入cmd,回车)

    2. 转到GUI程序所在目录,示例:cd /d "M:\Program Files\Snow\Snowbreak_ServerSwitcher\GUIs\CBJQ_SS_FrontEnd_tk-B-I2\CBJQ_SS_FrontEnd_tk-B-I2"

    3. Snowbreak_ServerSwitcher的完整路径作为启动参数传入,示例:

      M:\Program Files\Snow\Snowbreak_ServerSwitcher\GUIs\CBJQ_SS_FrontEnd_tk-B-I2\CBJQ_SS_FrontEnd_tk-B-I2> CBJQ_SS_FrontEnd_tk-B-I2.exe -cwd "M:\Program Files\Snow\Snowbreak_ServerSwitcher"
    4. 关闭弹出的图形窗口,配置得到保存。(如果有启动页,先进入)

GUIs

可用GUI程序:

  1. 项目:CBJQ_SS_FrontEnd-tk。(目前仅支持中文)

一键启动

可用。使用对应的 CBJQ_SS.QS.*.exe即可,如双击打开、桌面快捷方式。

发行包应已存在CBJQ_SS.QS.exe,重命名即可。例如:CBJQ_SS.QS.kingsoft.exe

详见项目页:https://github.com/LiuJiewenTT/CBJQ_SS.QS

LICENSE

本项目遵循MIT开源协议。

本项目含子项目CBJQ_SS.StartWrapper (.\startwrapper)(MIT开源协议)实现管理员权限下符号链接解析,以确保使用的配置文件正确。构建产品应存储在main所在目录;

本项目含子项目CBJQ_SS.QS (.\quickstart)(MIT开源协议)实现一键切换并启动。构建产品推荐在main所在目录使用;

本项目内置IconFold v1.0.0 (.\tools\IconFold\v1.0.0) (MIT开源协议)实现文件夹图标的设置。可以删除tools文件夹。

Copyrights

此部分主要是关于资源的版权声明。(排序不分先后)

资源位置 版权所有者 备注
辰星-云篆 团子.jpg 魔法少女鱼鱼熏Kaori (B站用户UID: 66874794)
icon1.ico 魔法少女鱼鱼熏Kaori (B站用户UID: 66874794) 本项目作者自行从辰星-云篆 团子.jpg转换而来。

About

用于切换不同渠道的启动器,以连接到不同的《尘白禁区》服务器。(纯bat脚本实现)

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published