├── 尘白禁区B服(切换+启动).bat ├── 尘白禁区国际服(切换+启动).bat ├── 尘白禁区官服(切换+启动).bat ├── _config.yml ├── 尘白禁区B服(切换).bat ├── 尘白禁区B服(启动).bat ├── 尘白禁区国际服(切换).bat ├── 尘白禁区国际服(启动).bat ├── 尘白禁区官服(切换).bat ├── 尘白禁区官服(启动).bat ├── icon1.ico ├── 辰星-云篆 团子.jpg ├── desktop.ini ├── docs ├── doc_res │ ├── css │ │ ├── main.css │ │ ├── go-to-top.css │ │ ├── quick-navigate.css │ │ └── github-markdown-alert.css │ ├── 添加游戏到雷游.jpeg │ └── js │ │ ├── go_to_top.js │ │ └── github-markdown-alert-reproduce.js ├── 国际服兼容研究 │ ├── 国际服兼容研究.md │ ├── after-3.txt │ └── after-2.txt └── old_version │ └── README.md ├── IconGroup-bilibili.ico ├── IconGroup-bilibili.png ├── IconGroup-kingsoft.ico ├── IconGroup-kingsoft.png ├── IconGroup-worldwide.ico ├── IconGroup-worldwide.png ├── tools ├── IconFold │ └── v1.0.0 │ │ ├── res_ico │ │ ├── desktop.ini │ │ └── icon1.ico │ │ ├── template_of_res_ico │ │ ├── desktop.ini │ │ └── IcoFX_Customization_{BD6C4569-4997-4069-B5D5-4D94BB1213D0}.ico │ │ ├── extract_command.bat │ │ ├── LICENSE │ │ ├── apply_ico.bat │ │ ├── enable_ico.bat │ │ ├── disable_ico.bat │ │ ├── README.md │ │ └── clean_ico.bat ├── change_exe_icon │ ├── rh_scripts │ │ ├── StartWrapper.txt │ │ ├── QS_bilibili.txt │ │ ├── QS_kingsoft.txt │ │ └── QS_worldwide.txt │ ├── readme.txt │ └── change.py └── CBJQ_KickoffWorldwideServerConfigConfliction.bat ├── .gitmodules ├── .gitignore ├── LICENSE ├── readme.js ├── .github └── workflows │ └── jekyll-gh-pages.yml ├── README.md └── CBJQ_SS.main.bat /尘白禁区B服(切换+启动).bat: -------------------------------------------------------------------------------- 1 | call .\CBJQ_SS.main.bat bilibili -------------------------------------------------------------------------------- /尘白禁区国际服(切换+启动).bat: -------------------------------------------------------------------------------- 1 | call .\CBJQ_SS.main.bat worldwide -------------------------------------------------------------------------------- /尘白禁区官服(切换+启动).bat: -------------------------------------------------------------------------------- 1 | call .\CBJQ_SS.main.bat kingsoft -------------------------------------------------------------------------------- /_config.yml: -------------------------------------------------------------------------------- 1 | plugins: 2 | - jekyll-redirect-from 3 | -------------------------------------------------------------------------------- /尘白禁区B服(切换).bat: -------------------------------------------------------------------------------- 1 | call .\CBJQ_SS.main.bat -nostart bilibili -------------------------------------------------------------------------------- /尘白禁区B服(启动).bat: -------------------------------------------------------------------------------- 1 | call .\CBJQ_SS.main.bat -noswitch bilibili -------------------------------------------------------------------------------- /尘白禁区国际服(切换).bat: -------------------------------------------------------------------------------- 1 | call .\CBJQ_SS.main.bat -nostart worldwide -------------------------------------------------------------------------------- /尘白禁区国际服(启动).bat: -------------------------------------------------------------------------------- 1 | call .\CBJQ_SS.main.bat -noswitch worldwide -------------------------------------------------------------------------------- /尘白禁区官服(切换).bat: -------------------------------------------------------------------------------- 1 | call .\CBJQ_SS.main.bat -nostart kingsoft -------------------------------------------------------------------------------- /尘白禁区官服(启动).bat: -------------------------------------------------------------------------------- 1 | call .\CBJQ_SS.main.bat -noswitch kingsoft -------------------------------------------------------------------------------- /icon1.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LiuJiewenTT/Snowbreak_ServerSwitcher/HEAD/icon1.ico -------------------------------------------------------------------------------- /辰星-云篆 团子.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LiuJiewenTT/Snowbreak_ServerSwitcher/HEAD/辰星-云篆 团子.jpg -------------------------------------------------------------------------------- /desktop.ini: -------------------------------------------------------------------------------- 1 | [.ShellClassInfo] 2 | IconResource=icon1.ico,0 3 | IconFile=icon1.ico 4 | IconIndex=0 5 | -------------------------------------------------------------------------------- /docs/doc_res/css/main.css: -------------------------------------------------------------------------------- 1 | /* @import url("quick-navigate.css"); 2 | @import url("go-to-top.css"); */ 3 | -------------------------------------------------------------------------------- /IconGroup-bilibili.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LiuJiewenTT/Snowbreak_ServerSwitcher/HEAD/IconGroup-bilibili.ico -------------------------------------------------------------------------------- /IconGroup-bilibili.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LiuJiewenTT/Snowbreak_ServerSwitcher/HEAD/IconGroup-bilibili.png -------------------------------------------------------------------------------- /IconGroup-kingsoft.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LiuJiewenTT/Snowbreak_ServerSwitcher/HEAD/IconGroup-kingsoft.ico -------------------------------------------------------------------------------- /IconGroup-kingsoft.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LiuJiewenTT/Snowbreak_ServerSwitcher/HEAD/IconGroup-kingsoft.png -------------------------------------------------------------------------------- /IconGroup-worldwide.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LiuJiewenTT/Snowbreak_ServerSwitcher/HEAD/IconGroup-worldwide.ico -------------------------------------------------------------------------------- /IconGroup-worldwide.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LiuJiewenTT/Snowbreak_ServerSwitcher/HEAD/IconGroup-worldwide.png -------------------------------------------------------------------------------- /docs/doc_res/添加游戏到雷游.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LiuJiewenTT/Snowbreak_ServerSwitcher/HEAD/docs/doc_res/添加游戏到雷游.jpeg -------------------------------------------------------------------------------- /tools/IconFold/v1.0.0/res_ico/desktop.ini: -------------------------------------------------------------------------------- 1 | [.ShellClassInfo] 2 | IconResource=icon1.ico,0 3 | IconFile=icon1.ico 4 | IconIndex=0 5 | -------------------------------------------------------------------------------- /tools/IconFold/v1.0.0/res_ico/icon1.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LiuJiewenTT/Snowbreak_ServerSwitcher/HEAD/tools/IconFold/v1.0.0/res_ico/icon1.ico -------------------------------------------------------------------------------- /tools/IconFold/v1.0.0/template_of_res_ico/desktop.ini: -------------------------------------------------------------------------------- 1 | [.ShellClassInfo] 2 | IconResource=IcoFX_Customization_{BD6C4569-4997-4069-B5D5-4D94BB1213D0}.ico,0 3 | IconFile=IcoFX_Customization_{BD6C4569-4997-4069-B5D5-4D94BB1213D0}.ico 4 | IconIndex=0 5 | -------------------------------------------------------------------------------- /tools/change_exe_icon/rh_scripts/StartWrapper.txt: -------------------------------------------------------------------------------- 1 | [FILENAMES] 2 | Open= "..\..\..\CBJQ_SS.StartWrapper.exe" 3 | Save= "..\..\..\CBJQ_SS.StartWrapper.exe" 4 | Log= CONSOLE 5 | [COMMANDS] 6 | -addoverwrite "..\..\..\icon1.ico",ICONGROUP,MAINICON, 7 | -------------------------------------------------------------------------------- /tools/change_exe_icon/rh_scripts/QS_bilibili.txt: -------------------------------------------------------------------------------- 1 | [FILENAMES] 2 | Open= "..\..\..\CBJQ_SS.QS.bilibili.exe" 3 | Save= "..\..\..\CBJQ_SS.QS.bilibili.exe" 4 | Log= CONSOLE 5 | [COMMANDS] 6 | -addoverwrite "..\..\..\IconGroup-bilibili.ico",ICONGROUP,MAINICON, 7 | -------------------------------------------------------------------------------- /tools/change_exe_icon/rh_scripts/QS_kingsoft.txt: -------------------------------------------------------------------------------- 1 | [FILENAMES] 2 | Open= "..\..\..\CBJQ_SS.QS.kingsoft.exe" 3 | Save= "..\..\..\CBJQ_SS.QS.kingsoft.exe" 4 | Log= CONSOLE 5 | [COMMANDS] 6 | -addoverwrite "..\..\..\IconGroup-kingsoft.ico",ICONGROUP,MAINICON, 7 | -------------------------------------------------------------------------------- /tools/change_exe_icon/rh_scripts/QS_worldwide.txt: -------------------------------------------------------------------------------- 1 | [FILENAMES] 2 | Open= "..\..\..\CBJQ_SS.QS.worldwide.exe" 3 | Save= "..\..\..\CBJQ_SS.QS.worldwide.exe" 4 | Log= CONSOLE 5 | [COMMANDS] 6 | -addoverwrite "..\..\..\IconGroup-worldwide.ico",ICONGROUP,MAINICON, 7 | -------------------------------------------------------------------------------- /tools/IconFold/v1.0.0/template_of_res_ico/IcoFX_Customization_{BD6C4569-4997-4069-B5D5-4D94BB1213D0}.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LiuJiewenTT/Snowbreak_ServerSwitcher/HEAD/tools/IconFold/v1.0.0/template_of_res_ico/IcoFX_Customization_{BD6C4569-4997-4069-B5D5-4D94BB1213D0}.ico -------------------------------------------------------------------------------- /tools/CBJQ_KickoffWorldwideServerConfigConfliction.bat: -------------------------------------------------------------------------------- 1 | @echo Deleting server configuration file that causes confliction between worldwide server and homeland server: [%LOCALAPPDATA%\Game\Saved\PersistentDownloadDir\startup.settings] 2 | del "%LOCALAPPDATA%\Game\Saved\PersistentDownloadDir\startup.settings" 3 | @pause -------------------------------------------------------------------------------- /tools/IconFold/v1.0.0/extract_command.bat: -------------------------------------------------------------------------------- 1 | mkdir res_ico 2 | @echo Pass the path of the folder that is going to be extracted from. 3 | @echo You may want a clean res_ico directory. Do this yourself. 4 | @if "%1" == "" @( 5 | echo No input. Exit. 6 | goto:eof 7 | ) 8 | 9 | for /f "delims=" %%i in ('dir "%1" /A:A /b') do @( echo %%i & xcopy /H /R /K "%1\%%i" res_ico\ ) 10 | -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "quickstart"] 2 | path = quickstart 3 | url = https://github.com/LiuJiewenTT/CBJQ_SS.QS.git 4 | [submodule "startwrapper"] 5 | path = startwrapper 6 | url = https://github.com/LiuJiewenTT/CBJQ_SS.StartWrapper.git 7 | [submodule "tools/snow_launcher_downloader"] 8 | path = tools/snow_launcher_downloader 9 | url = https://github.com/LiuJiewenTT/snow_launcher_downloader.git 10 | -------------------------------------------------------------------------------- /docs/doc_res/js/go_to_top.js: -------------------------------------------------------------------------------- 1 | // Go to Top功能实现 2 | $(document).ready(function() { 3 | // 显示/隐藏按钮 4 | $(window).scroll(function() { 5 | if ($(this).scrollTop() > 200) { 6 | $('.go-to-top').fadeIn(); 7 | } else { 8 | $('.go-to-top').fadeOut(); 9 | } 10 | }); 11 | 12 | // 平滑滚动到顶部 13 | $('.go-to-top').click(function() { 14 | $('html, body').animate({scrollTop: 0}, 300); 15 | return false; 16 | }); 17 | }); 18 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | keep_local 2 | tmp 3 | Launchers/ 4 | snow_launcher.exe 5 | snow.exe 6 | tmp1.bat 7 | README.html 8 | 国际服兼容研究/国际服兼容研究.html 9 | /.vscode 10 | /quickstart/build 11 | CBJQ_SS.QS.kingsoft.exe 12 | CBJQ_SS.QS.kingsoft.config.json 13 | *.hide 14 | *.log 15 | CBJQ_SS.StartWrapper.exe 16 | *.test 17 | *.unhide 18 | *.supervise 19 | CBJQ_SS_FrontEnd-tk.config.json 20 | log.txt 21 | __pycache__ 22 | CBJQ_SS.QS.bilibili.exe 23 | CBJQ_SS.QS.worldwide.exe 24 | CBJQ_SS.QS.exe 25 | *.enforce_pwd 26 | docs/国际服兼容研究/国际服兼容研究.html 27 | -------------------------------------------------------------------------------- /tools/change_exe_icon/readme.txt: -------------------------------------------------------------------------------- 1 | Here is to use "Resource Hacker" to replace icon of executables. 2 | 3 | There are two recommanded approaches: 4 | 5 | 1. You may modify Python script or operate in Python cmdline to do the thing. The file can be "change.py". 6 | 7 | 2. You may run the scripts in "rh_scripts" directory to apply preset tasks. You may run in cmdline with: 8 | `ResourceHacker.exe -script [ScriptFile]` 9 | 10 | Resource Hacker is here available: https://www.angusj.com/resourcehacker/#download 11 | You have to download the software yourself. I can provide the software for the reason of distribution restrictions. 12 | -------------------------------------------------------------------------------- /docs/doc_res/css/go-to-top.css: -------------------------------------------------------------------------------- 1 | /* Go to Top 按钮样式 */ 2 | :root { 3 | --go-to-top-main-color: var(--quick-navigate-main-color, rgb(145, 145, 241)); 4 | } 5 | 6 | .go-to-top { 7 | position: fixed; 8 | bottom: 20px; 9 | right: 20px; 10 | width: 50px; 11 | height: 50px; 12 | background-color: var(--go-to-top-main-color); 13 | color: white; 14 | border-radius: 4px; 15 | display: flex; 16 | align-items: center; 17 | justify-content: center; 18 | cursor: pointer; 19 | opacity: 0.8; 20 | transition: opacity 0.3s; 21 | z-index: 999; 22 | } 23 | 24 | .go-to-top:hover { 25 | opacity: 1; 26 | } 27 | 28 | .go-to-top i { 29 | font-size: 24px; 30 | } 31 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2024 LiuJiewenTT 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /tools/IconFold/v1.0.0/LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2023 LiuJiewenTT 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /tools/change_exe_icon/change.py: -------------------------------------------------------------------------------- 1 | import subprocess 2 | import os 3 | 4 | 5 | def replace_icon(exe_path, icon_path, output_path, resource_hacker_path): 6 | """ 7 | 使用Resource Hacker替换exe文件中的图标 8 | 9 | :param exe_path: 原始exe文件的路径 10 | :param icon_path: 新的图标文件的路径 11 | :param output_path: 保存修改后的exe文件的路径 12 | :param resource_hacker_path: Resource Hacker可执行文件的路径 13 | """ 14 | command = [ 15 | resource_hacker_path, 16 | '-open', exe_path, 17 | '-save', output_path, 18 | '-action', 'addoverwrite', 19 | '-res', icon_path, 20 | '-mask', 'ICONGROUP,MAINICON,' 21 | ] 22 | try: 23 | subprocess.run(command, check=True) 24 | print(f"Replaced icon in {exe_path} and saved as {output_path}") 25 | except subprocess.CalledProcessError as e: 26 | print(f"Failed to replace icon: {e}") 27 | 28 | 29 | if __name__ == "__main__": 30 | # 路径设置 31 | exe_path = "path_to_your_executable.exe" # 你的可执行文件路径 32 | icon_path = "path_to_your_icon.ico" # 你的图标文件路径 33 | output_path = "path_to_output_executable.exe" # 修改后的可执行文件保存路径 34 | resource_hacker_path = "path_to_ResourceHacker.exe" # Resource Hacker可执行文件的路径 35 | 36 | # 执行替换 37 | replace_icon(exe_path, icon_path, output_path, resource_hacker_path) 38 | -------------------------------------------------------------------------------- /readme.js: -------------------------------------------------------------------------------- 1 | function loadScript_Promise(src, async_flag=true) { 2 | return new Promise((resolve, reject) => { 3 | const script = document.createElement('script'); 4 | script.src = src; 5 | script.async = async_flag; 6 | script.onload = () => resolve(script); 7 | script.onerror = () => reject(new Error(`Failed to load script: ${src}`)); 8 | document.head.appendChild(script); 9 | }); 10 | } 11 | 12 | 13 | async function await_add_scripts() { 14 | await loadScript_Promise('https://code.jquery.com/jquery-3.6.0.min.js', false); 15 | loadScript_Promise('docs/doc_res/js/go_to_top.js'); 16 | await loadScript_Promise('docs/doc_res/js/github-markdown-alert-reproduce.js'); 17 | } 18 | 19 | 20 | function edit_old_version_link() { 21 | try { 22 | old_version_link = document.getElementById("old-version-link"); 23 | old_version_link.setAttribute("href", 'old/'); 24 | } catch (e) { 25 | setTimeout(edit_old_version_link, 500); 26 | } 27 | } 28 | 29 | 30 | function dom_edit() { 31 | edit_old_version_link(); 32 | process_blockquote_to_markdown_alert(); 33 | // document.body.prepend(process_blockquote_to_markdown_alert); 34 | } 35 | 36 | 37 | (async () => { 38 | await await_add_scripts(); 39 | dom_edit(); 40 | })(); 41 | -------------------------------------------------------------------------------- /tools/IconFold/v1.0.0/apply_ico.bat: -------------------------------------------------------------------------------- 1 | @if "%1" == "/?" ( 2 | @echo This program is used to apply an ico to some specific directory and the subdirectories. 3 | @echo Pass path as the first parameter and options in the followings. 4 | @echo The second parameter should be option of /S, meaning also applies to subdirectories. Default is no. 5 | 6 | @echo Before running this script, make sure the source is ready. If not, run "extract_command.bat" first. 7 | 8 | @echo Author: LiuJiewenTT [on Github.com] 9 | @echo License: MIT. 10 | 11 | @echo Have fun! 12 | @goto:eof 13 | ) 14 | 15 | @echo off 16 | 17 | set tmpv=%1 18 | if "%tmpv:~-1%" == "\" ( 19 | echo "Directory name should not be ended with '\' (not supported), please correct." 20 | goto:eof 21 | ) 22 | 23 | echo Target: %~f1 24 | if /I "%2" == "/S" ( echo Apply with Search? [Yes] ) else ( echo Apply with Search? [No] ) 25 | 26 | set ls=dir /b /A:D 27 | set lss=dir /b /S /A:D 28 | 29 | if /I "%2" == "/S" ( 30 | call:main "%1" 31 | for /f "usebackq delims=" %%i in (`%lss% "%1"`) do ( 32 | call:main "%%i" 33 | ) 34 | ) else ( 35 | call:main "%1" 36 | @REM for /f "usebackq delims=" %%i in (`%ls% "%1"`) do ( 37 | @REM call:main "%%i" 38 | @REM ) 39 | ) 40 | 41 | @echo on 42 | @goto:eof 43 | 44 | :main 45 | echo [%~f1] 46 | xcopy /H "%~dp0res_ico\*" "%~1" /Y /Q /R 47 | for /f "usebackq delims=" %%i in (`dir /b "%~dp0res_ico\" /A:H`) do ( 48 | @REM echo %%i 49 | attrib "%~1\%%i" +R +S +H 50 | attrib "%~1\%%i" 51 | ) 52 | attrib "%~1" +R 53 | goto:eof 54 | 55 | -------------------------------------------------------------------------------- /docs/doc_res/css/quick-navigate.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --quick-navigate-main-color: rgb(145, 145, 241); 3 | } 4 | 5 | div.quick-navigate { 6 | border: 2px solid var(--quick-navigate-main-color); /* 蓝色圆角边框 */ 7 | border-radius: 8px; /* 圆角大小可以根据需要调整 */ 8 | color: var(--quick-navigate-main-color); /* 蓝色文字 */ 9 | padding: 10px; /* 内边距可以根据需要调整 */ 10 | margin: 10px 0; /* 外边距可以根据需要调整 */ 11 | display: flex; 12 | flex-direction: column; 13 | } 14 | 15 | div.quick-navigate-item-group { 16 | display: flex; 17 | flex-wrap: wrap; 18 | align-items: center; 19 | } 20 | 21 | span.quick-navigate-item { 22 | display: inline-block; /* 为了更好地控制span的样式 */ 23 | border: 2px solid var(--quick-navigate-main-color); /* 蓝色圆角边框 */ 24 | border-radius: 16px; /* 圆角大小可以根据需要调整 */ 25 | padding: 5px 10px; /* 内边距可以根据需要调整 */ 26 | margin: 0 5px; /* 外边距可以根据需要调整 */ 27 | color: var(--quick-navigate-main-color); /* 默认文字颜色为蓝色 */ 28 | transition: background-color 0.3s, color 0.3s; /* 添加过渡效果 */ 29 | } 30 | 31 | span.quick-navigate-item a { 32 | color: var(--quick-navigate-main-color); 33 | } 34 | 35 | span.quick-navigate-item:hover { 36 | background-color: var(--quick-navigate-main-color); /* 鼠标移上去时背景变为蓝色 */ 37 | color: white; /* 鼠标移上去时文字变为白色 */ 38 | cursor: pointer; /* 添加鼠标指针样式 */ 39 | } 40 | 41 | span.quick-navigate-item:hover a { 42 | color: white; 43 | } 44 | 45 | span.quick-navigate-item:active { 46 | background-color: lightblue; /* 点击时背景变为浅蓝色 */ 47 | color: var(--quick-navigate-main-color); /* 点击时文字保持蓝色 */ 48 | border-color: lightblue; /* 点击时边框颜色变为浅蓝色 */ 49 | } 50 | 51 | span.quick-navigate-title { 52 | font-weight: bold; /* 加粗标题 */ 53 | margin-bottom: 10px; /* 与下方元素间距 */ 54 | width: 100%; 55 | } 56 | -------------------------------------------------------------------------------- /.github/workflows/jekyll-gh-pages.yml: -------------------------------------------------------------------------------- 1 | # Sample workflow for building and deploying a Jekyll site to GitHub Pages 2 | name: Deploy Jekyll with GitHub Pages dependencies preinstalled 3 | 4 | on: 5 | # Runs on pushes targeting the default branch 6 | # push: 7 | # branches: ["master"] 8 | 9 | # Allows you to run this workflow manually from the Actions tab 10 | workflow_dispatch: 11 | 12 | # Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages 13 | permissions: 14 | contents: read 15 | pages: write 16 | id-token: write 17 | 18 | # Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued. 19 | # However, do NOT cancel in-progress runs as we want to allow these production deployments to complete. 20 | concurrency: 21 | group: "pages" 22 | cancel-in-progress: false 23 | 24 | jobs: 25 | # Build job 26 | build: 27 | runs-on: ubuntu-latest 28 | steps: 29 | - name: Setup encoding and terminal codepage 30 | run: | 31 | echo "LANG=en_US.UTF-8" >> $GITHUB_ENV 32 | echo "LC_ALL=en_US.UTF-8" >> $GITHUB_ENV 33 | - name: Checkout 34 | uses: actions/checkout@v4 35 | - name: Setup Pages 36 | uses: actions/configure-pages@v4 37 | - name: Build with Jekyll 38 | uses: actions/jekyll-build-pages@v1 39 | with: 40 | source: ./ 41 | destination: ./_site 42 | - name: Upload artifact 43 | uses: actions/upload-pages-artifact@v3 44 | 45 | # Deployment job 46 | deploy: 47 | environment: 48 | name: github-pages 49 | url: ${{ steps.deployment.outputs.page_url }} 50 | runs-on: ubuntu-latest 51 | needs: build 52 | steps: 53 | - name: Deploy to GitHub Pages 54 | id: deployment 55 | uses: actions/deploy-pages@v4 56 | -------------------------------------------------------------------------------- /tools/IconFold/v1.0.0/enable_ico.bat: -------------------------------------------------------------------------------- 1 | @if "%1" == "/?" ( 2 | @echo This program is used to enable an ico to some specific directory and the subdirectories. 3 | @echo Pass path as the first parameter and options in the followings. 4 | @echo The second parameter should be option of /S, meaning also applies to subdirectories. Default is no. 5 | @echo The third parameter should be option of /AICO, meaning affecting all icons. 6 | 7 | @echo Author: LiuJiewenTT [on Github.com] 8 | @echo License: MIT. 9 | 10 | @echo Have fun! 11 | @goto:eof 12 | ) 13 | 14 | @echo off 15 | 16 | set tmpv=%1 17 | if "%tmpv:~-1%" == "\" ( 18 | echo "Directory name should not be ended with '\' (not supported), please correct." 19 | goto:eof 20 | ) 21 | 22 | echo Target: %~f1 23 | if /I "%2" == "/S" ( echo Enable with Search? [Yes] ) else ( echo Enable with Search? [No] ) 24 | 25 | set ls=dir /b /A 26 | set lss=dir /b /S /A:D 27 | 28 | if /I "%2" == "/S" ( 29 | attrib "%~1" +R 30 | attrib "%~1" 31 | call:main "%1\desktop.ini" 32 | for /f "usebackq delims=" %%i in (`%lss% "%1"`) do ( 33 | @REM echo %%i 34 | attrib "%%i" +R 35 | attrib "%%i" 36 | for /f "usebackq delims=" %%j in (`%ls% "%%i" ^| findstr "^desktop.ini$"`) do ( 37 | @REM echo %%i\%%j 38 | call:main "%%i\%%j" 39 | ) 40 | if "%3" == "/AICO" ( 41 | for /f "usebackq delims=" %%j in (`%ls% "%%i" ^| findstr ".ico$"`) do ( 42 | call:main "%%i\%%j" 43 | ) 44 | ) 45 | ) 46 | ) else ( 47 | attrib "%1" +R 48 | attrib "%1" 49 | for /f "usebackq delims=" %%i in (`%ls% "%1" ^| findstr "^desktop.ini$"`) do ( 50 | call:main "%1\%%i" 51 | ) 52 | if "%3" == "/AICO" ( 53 | for /f "usebackq delims=" %%j in (`%ls% "%%i" ^| findstr ".ico$"`) do ( 54 | call:main "%%i\%%j" 55 | ) 56 | ) 57 | ) 58 | 59 | @echo on 60 | @goto:eof 61 | 62 | :main 63 | if not exist "%~1" ( 64 | goto:eof 65 | ) 66 | 67 | @REM echo %~1 68 | attrib "%~1" +S +H +R 69 | attrib "%~1" 70 | goto:eof 71 | 72 | -------------------------------------------------------------------------------- /tools/IconFold/v1.0.0/disable_ico.bat: -------------------------------------------------------------------------------- 1 | @if "%1" == "/?" ( 2 | @echo This program is used to disable an ico to some specific directory and the subdirectories. 3 | @echo Pass path as the first parameter and options in the followings. 4 | @echo The second parameter should be option of /S, meaning also applies to subdirectories. Default is no. 5 | @echo The third parameter should be option of /AICO, meaning affecting all icons. 6 | 7 | @echo Author: LiuJiewenTT [on Github.com] 8 | @echo License: MIT. 9 | 10 | @echo Have fun! 11 | @goto:eof 12 | ) 13 | 14 | @echo off 15 | 16 | set tmpv=%1 17 | if "%tmpv:~-1%" == "\" ( 18 | echo "Directory name should not be ended with '\' (not supported), please correct." 19 | goto:eof 20 | ) 21 | 22 | echo Target: %~f1 23 | if /I "%2" == "/S" ( echo Disable with Search? [Yes] ) else ( echo Disable with Search? [No] ) 24 | 25 | set ls=dir /b /A:S 26 | set lss=dir /b /S /A:D 27 | 28 | if /I "%2" == "/S" ( 29 | attrib "%~1" -R 30 | attrib "%~1" 31 | call:main "%1\desktop.ini" 32 | for /f "usebackq delims=" %%i in (`%lss% "%1"`) do ( 33 | @REM echo %%i 34 | attrib "%%i" -R 35 | attrib "%%i" 36 | for /f "usebackq delims=" %%j in (`%ls% "%%i" ^| findstr "^desktop.ini$"`) do ( 37 | @REM echo %%i\%%j 38 | call:main "%%i\%%j" 39 | ) 40 | if "%3" == "/AICO" ( 41 | for /f "usebackq delims=" %%j in (`%ls% "%%i" ^| findstr ".ico$"`) do ( 42 | call:main "%%i\%%j" 43 | ) 44 | ) 45 | ) 46 | ) else ( 47 | attrib "%~1" -R 48 | attrib "%~1" 49 | for /f "usebackq delims=" %%i in (`%ls% "%1" ^| findstr "^desktop.ini$"`) do ( 50 | call:main "%1\%%i" 51 | ) 52 | if "%3" == "/AICO" ( 53 | for /f "usebackq delims=" %%j in (`%ls% "%%i" ^| findstr ".ico$"`) do ( 54 | call:main "%%i\%%j" 55 | ) 56 | ) 57 | ) 58 | 59 | @echo on 60 | @goto:eof 61 | 62 | :main 63 | if not exist "%~1" ( 64 | goto:eof 65 | ) 66 | 67 | @REM echo %~1 68 | attrib "%~1" -S -H -R 69 | attrib "%~1" 70 | goto:eof 71 | 72 | -------------------------------------------------------------------------------- /tools/IconFold/v1.0.0/README.md: -------------------------------------------------------------------------------- 1 | # IconFold 2 | A series of tools made for folders' icons. It's aimed to manage the icon used. 3 | 4 | This toolkit is made **for Windows** platform. 5 | 6 | ## Installation 7 | Thers is no need of installation. Just store these things in some place. 8 | 9 | There might be some EXE version. (That is, programs being packed into *.exe* files.) 10 | 11 | ## Using 12 | You should run in some terminal, like *cmd.exe* and *Power Shell*. 13 | > You are ought to run in the location of the programs' directory. Otherwise the *res_ico* would be located at somewhere else. 14 | > 15 | > You may ignore this notice if you are really sure about what you are doing and if it's up to your expectation. 16 | 17 | Type "/?" as the only parameter to the program to see help message. 18 | 19 | ### General Options 20 | 21 | | Option | Desc. | 22 | |--------|-------| 23 | | /? | Show help message | 24 | | /S | Do with search. i.e. recursive. | 25 | | /AICO | Affect all icons | 26 | 27 | ### File Desc. 28 | 29 | #### Main programs 30 | 31 | | Program | Desc. | 32 | |---------|-------| 33 | | apply_ico | Apply prepared resources the specific folder, or even the subfolders. | 34 | | clean_ico | Clean the *.ini* and the corresponding, or all instead, *.ico* of some folders given. | 35 | | enable_ico | Enable the configuration existed. | 36 | | disable_ico | Disable the configration existed. | 37 | 38 | #### Assistant programs 39 | 40 | | Program | Desc. | 41 | |---------|-------| 42 | | extract_command | Extract resouce from an already customized folder. | 43 | 44 | #### res_ico 45 | 46 | Files prepared in *res_ico* and *template_of_res_ico* are **hidden** by default. This is because the files are extracted from a folder customized by the tool of *icofx*. 47 | 48 | To show them, change the settings of explorer. 49 | 50 | To list the items, execute this command in the cmd (example): 51 | ``` shell 52 | dir /A:A res_ico 53 | ``` 54 | 55 | To del the items, execute this command in the cmd (example): 56 | ``` shell 57 | del /F /A:A res_ico\* 58 | ``` 59 | 60 | ## License 61 | 62 | **MIT** 63 | -------------------------------------------------------------------------------- /tools/IconFold/v1.0.0/clean_ico.bat: -------------------------------------------------------------------------------- 1 | @if "%1" == "/?" ( 2 | @echo This program is used to clean an ico to some specific directory and the subdirectories. 3 | @echo Pass path as the first parameter and options in the followings. 4 | @echo The second parameter should be option of /S, meaning also applies to subdirectories. Default is no. 5 | @echo The third parameter should be option of /AICO, meaning affecting all icons. 6 | 7 | @echo Author: LiuJiewenTT [on Github.com] 8 | @echo License: MIT. 9 | 10 | @echo Have fun! 11 | @goto:eof 12 | ) 13 | 14 | @echo off 15 | 16 | setlocal enabledelayedexpansion 17 | 18 | set tmpv=%1 19 | if "%tmpv:~-1%" == "\" ( 20 | echo "Directory name should not be ended with '\' (not supported), please correct." 21 | goto:eof 22 | ) 23 | 24 | echo Target: %~f1 25 | if /I "%2" == "/S" ( echo Clean with Search? [Yes] ) else ( echo Clean with Search? [No] ) 26 | 27 | set ls=dir /b /A:D 28 | set lss=dir /b /S /A:D 29 | 30 | set AICO=%3 31 | 32 | if /I "%2" == "/S" ( 33 | call:main "%1" 34 | @REM echo -- 35 | for /f "usebackq delims=" %%i in (`%lss% "%1"`) do ( 36 | call:main "%%i" 37 | ) 38 | ) else ( 39 | call:main "%1" 40 | @REM for /f "usebackq delims=" %%i in (`%ls% "%1"`) do ( 41 | @REM call:main "%%i" 42 | @REM ) 43 | ) 44 | 45 | @echo on 46 | @goto:eof 47 | 48 | :main 49 | attrib "%~1" -R 50 | attrib "%~1" 51 | 52 | if "%AICO%" == "/AICO" ( 53 | @REM echo %~1 54 | if exist "%~1\*.ico" ( 55 | call:isHide "%~1\*.ico" 56 | if /I "!isHide_retv!" EQU "0" ( 57 | del /F "%~1\*.ico" 58 | if exist "%~1\*.ico" del /F "%~1\*.ico" /A:H 59 | ) else ( 60 | del /F "%~1\*.ico" /A:H 61 | if exist "%~1\*.ico" del /F "%~1\*.ico" 62 | ) 63 | ) 64 | ) else ( 65 | if not exist "%~1\desktop.ini" ( 66 | goto:eof 67 | ) 68 | 69 | @REM echo %~1 70 | 71 | set IconFile=NUL 72 | for /f "usebackq eol=[ tokens=1,* delims==" %%i in ("%~1\desktop.ini") do ( 73 | @REM echo [%%i][%%j] 74 | if "%%i" == "IconFile" ( 75 | if "%%j" NEQ "" ( 76 | set "IconFile=%%j" 77 | @REM break 78 | ) 79 | ) 80 | ) 81 | echo IconFile=!IconFile! 82 | 83 | @REM del /F /Q "%~1\.ico" 84 | if "!IconFile!" NEQ "NUL" ( 85 | if exist "%~1\!IconFile!" ( 86 | call:isHide "%~1\!IconFile!" 87 | if /I "!isHide_retv!" EQU "0" ( 88 | del /F "%~1\!IconFile!" 89 | ) else ( 90 | del /F "%~1\!IconFile!" /A:H 91 | ) 92 | ) 93 | ) 94 | ) 95 | 96 | if exist "%~1\desktop.ini" ( 97 | call:isHide "%~1\desktop.ini" 98 | if /I "!isHide_retv!" EQU "0" ( 99 | del /F "%~1\desktop.ini" 100 | ) else ( 101 | del /F "%~1\desktop.ini" /A:H 102 | ) 103 | ) 104 | 105 | goto:eof 106 | 107 | 108 | :isHide 109 | @REM set a=abcde 110 | for /f "usebackq tokens=1,* delims=:" %%i in (`attrib "%~1"`) do ( 111 | set a=%%i 112 | ) 113 | set a=%a:~0,-1% 114 | @REM echo %a% 115 | for /f "usebackq delims=" %%i in (`echo %a% ^| find /c "H"`) do ( 116 | set b=%%i 117 | ) 118 | @REM echo %b% 119 | set isHide_retv=%b% 120 | goto:eof -------------------------------------------------------------------------------- /docs/doc_res/css/github-markdown-alert.css: -------------------------------------------------------------------------------- 1 | 2 | .markdown-alert { 3 | --base-size-8: 0.5rem; 4 | --base-size-16: 1rem; 5 | --borderColor-default: #d1d9e0; 6 | --base-text-weight-medium: 500; 7 | --borderColor-accent-emphasis: #0969da; 8 | --fgColor-accent: #0969da; 9 | --borderColor-done-emphasis: #8250df; 10 | --fgColor-done: #8250df; 11 | --borderColor-attention-emphasis: #9a6700; 12 | --fgColor-attention: #9a6700; 13 | --borderColor-success-emphasis: #1a7f37; 14 | --fgColor-success: #1a7f37; 15 | --borderColor-danger-emphasis: #cf222e; 16 | --fgColor-danger: #d1242f; 17 | 18 | --fgColor-closed: var(--fgColor-danger); 19 | --fgColor-disabled: #818b98; 20 | --fgColor-muted: #59636e; 21 | --fgColor-neutral: #59636e; 22 | --fgColor-severe: #bc4c00; 23 | --fgColor-sponsors: #bf3989; 24 | } 25 | 26 | .markdown-alert { 27 | padding: var(--base-size-8) var(--base-size-16); 28 | margin-bottom: var(--base-size-16); 29 | color: inherit; 30 | border-left: .25em solid var(--borderColor-default) 31 | } 32 | 33 | .markdown-alert>:first-child { 34 | margin-top: 0 35 | } 36 | 37 | .markdown-alert>:last-child { 38 | margin-bottom: 0 39 | } 40 | 41 | .markdown-alert-title { 42 | font-family: var(--fontStack-sansSerif, -apple-system, BlinkMacSystemFont, "Segoe UI", "Noto Sans", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji"); 43 | font-size: 16px; 44 | } 45 | 46 | .markdown-alert .markdown-alert-title { 47 | display: flex; 48 | font-weight: var(--base-text-weight-medium, 500); 49 | align-items: center; 50 | line-height: 1 51 | } 52 | 53 | .markdown-alert.markdown-alert-note { 54 | border-left-color: var(--borderColor-accent-emphasis) 55 | } 56 | 57 | .markdown-alert.markdown-alert-note .markdown-alert-title { 58 | color: var(--fgColor-accent) 59 | } 60 | 61 | .markdown-alert.markdown-alert-important { 62 | border-left-color: var(--borderColor-done-emphasis) 63 | } 64 | 65 | .markdown-alert.markdown-alert-important .markdown-alert-title { 66 | color: var(--fgColor-done) 67 | } 68 | 69 | .markdown-alert.markdown-alert-warning { 70 | border-left-color: var(--borderColor-attention-emphasis) 71 | } 72 | 73 | .markdown-alert.markdown-alert-warning .markdown-alert-title { 74 | color: var(--fgColor-attention) 75 | } 76 | 77 | .markdown-alert.markdown-alert-tip { 78 | border-left-color: var(--borderColor-success-emphasis) 79 | } 80 | 81 | .markdown-alert.markdown-alert-tip .markdown-alert-title { 82 | color: var(--fgColor-success) 83 | } 84 | 85 | .markdown-alert.markdown-alert-caution { 86 | border-left-color: var(--borderColor-danger-emphasis) 87 | } 88 | 89 | .markdown-alert.markdown-alert-caution .markdown-alert-title { 90 | color: var(--fgColor-danger) 91 | } 92 | 93 | .markdown-alert svg.markdown-alert-icon { 94 | margin-right: var(--base-size-8, 8px) !important; 95 | display: inline-block; 96 | overflow: visible !important; 97 | vertical-align: text-bottom; 98 | fill: currentColor; 99 | } -------------------------------------------------------------------------------- /docs/doc_res/js/github-markdown-alert-reproduce.js: -------------------------------------------------------------------------------- 1 | // Reproduce blockquote alert in GitHub Markdown 2 | 3 | // Define Svg Icons 4 | var svg_note = ''; 5 | 6 | var svg_tip = ''; 7 | 8 | var svg_warning = ''; 9 | 10 | var svg_caution = ''; 11 | 12 | var svg_important = ''; 13 | 14 | const svg_map = { 15 | note: svg_note, 16 | tip: svg_tip, 17 | warning: svg_warning, 18 | caution: svg_caution, 19 | important: svg_important 20 | }; 21 | 22 | function process_blockquote_to_markdown_alert() { 23 | $('blockquote').each(function () { 24 | var $this = $(this); 25 | var $para0 = $this.find('p').first(); 26 | var text = $para0.text().trim(); 27 | 28 | if ( $this.hasClass('markdown-alert') && $para0.hasClass('markdown-alert-title') ) { 29 | return; 30 | } 31 | 32 | // 检测是否包含提示类型 33 | var match = text.match(/^\[\!(NOTE|TIP|IMPORTANT|CAUTION|WARNING)\]/i); 34 | if (match) { 35 | var type = match[1].toLowerCase(); 36 | 37 | // 添加样式类 38 | $this.addClass('markdown-alert ' + `markdown-alert-${type}`); 39 | $para0.addClass('markdown-alert-title'); 40 | 41 | // 更新内容 42 | let newTypeText = `${type[0].toUpperCase()}${type.slice(1)}`; 43 | $para0.text(text.replace(match[0], newTypeText)); 44 | $para0.prepend(svg_map[type]); 45 | } 46 | }); 47 | } 48 | 49 | // $(document).ready(process_blockquote_to_markdown_alert); 50 | -------------------------------------------------------------------------------- /docs/国际服兼容研究/国际服兼容研究.md: -------------------------------------------------------------------------------- 1 | # 国际服兼容研究 2 | 3 | 研究人:`LiuJiewenTT ` 4 | 5 | 2024-02-05: 6 | 7 | 通过比较`%APPDATA%\..\Local\Game\Saved`在启动国际服游戏本体前后的变化,可以确认以下信息: 8 | 9 | 1. 国服国际服有分开,有自己的xg编号,但是分离没做清楚。 10 | 1. 国服为`xg_111111639` 11 | 2. 国际服为`xg_111111680` 12 | 2. `Logs`作为运行日志出现变动可以理解。 13 | 3. `CrashReportClient`暂且不管。 14 | 4. `Config\WindowsNoEditior`出现大量变动,十分可疑。 15 | 1. 其中,`Engine.ini`和`Game.ini`出现了文件大小变化。 16 | 5. `PersistentDownloadDir`中的`User.settings`时间戳被更新,内容未确认。 17 | 6. `SaveGames`中新增`XGSDK_SAVE_GAME.sav` 18 | 19 | 此外,如果切回国服发现要重新下载资源,但是明明文件都在,那可能是由于`data\manifest.json`内容缺失导致的。重新下载时,通过vscode观察此文件,可以发现为文件末尾一直在追加内容,而国际服目录的不会同步更新,可以确认是由于曾经尝试国际服启动器共用国服资源导致的内容列表数据丢失。所以`data\manifest.json`文件也是很重要的,注意备份。 20 | 21 | > 此外再额外提一嘴,国服国际服的资源版本确实不太一样,在今日的实验中,在已经成功启动了最新版国际服的前提下,发现国服版本已经是`1.5.0.143`,然而国际服还是`1.5.0.120`。 22 | 23 | 随后我成功启动了国服(B服),发现在排除`Logs`(日志)和`CrashReportClient`之后,发生变化的有:`Config\WindowsNoEditor\Engine.ini`(有文件大小变化)。 24 | 25 | 另外,由于再次进入时可能是未同意协议的状态,同意且登录后发现`PersistentDownloadDir\`目录下的`startup.settings`和`User.settings`发生时间戳变化(未确认内容)。而`Config\WindowsNoEditor`变化如同`after-2.txt`和`after-3.txt`一般,其中出现文件大小变化的有:`Game.ini`和`Input.ini`。 26 | 27 | 由于此时暂未完成国际服登录,故暂时不能确认`Config\WindowsNoEditor\Game.ini`是否能被正常修改。而`Config\WindowsNoEditor\Engine.ini`想必是启动游戏但未登录就已经用到了,从上面的成功启动国际服游戏本体和成功启动国服(B服)游戏本体可以基本认为此文件不造成无法启动的冲突。 28 | 29 | 登录国际服后,`SaveGames`下`XGSDK_LOGIN_USER.sav`存在修改。注册过程会打开页面,对应的`webcache`下多出`Visited Links`,其下的`Cache`也有变化。此外就是`xg_111111680`出现改变,这个文件夹是属于国际服的文件夹,没什么好研究的。 30 | 31 | 综上,`%APPDATA%\..\Local\Game\Saved`在2024年已不存在冲突,**国服国际服现今仍然不可以都安装在同一台电脑上属于谣言**。结论下早了。 32 | 33 | 现在已经不能登录国服了,看来`%APPDATA%\..\Local\Game\Saved`还是存在冲突的。 34 | 35 | 经测试知:`SaveGames\XGSDK_LOGIN_USER.sav`包含官服账号有关信息,但与B服无关。移除此文件会是官服需要重新登录账号,而B服不受影响。同时,移除此文件并不会改变“卡在'权限识别中'的问题”。 36 | 37 | 这是`Conifg\WindowsNoEditor\Game.ini`的内容: 38 | 39 | > ``` ini 40 | > [Distribution] 41 | > VoiceLanguage=Chinese 42 | > CheckLanguageTip=Set 43 | > xgsdk_language=zh-Hans 44 | > ``` 45 | > 46 | > 显然也没什么特别。 47 | 48 | `Config\WindowsNoEditor\Input.ini`看起来全是键位绑定的信息。试过了,也不是它。 49 | 50 | 这是`Config\CrashReportClient\*\CrashReportClient.ini`的内容: 51 | 52 | > ``` ini 53 | > [CrashReportClient] 54 | > bHideLogFilesOption=false 55 | > bIsAllowedToCloseWithoutSending=true 56 | > CrashConfigPurgeDays=2 57 | > ``` 58 | > 59 | > 显然也没什么特别。 60 | 61 | 这是`Config\WindowsNoEditor\Engine.ini`的部分内容: 62 | 63 | > ``` ini 64 | > [Core.System] 65 | > Paths=../../../Engine/Content 66 | > Paths=%GAMEDIR%Content 67 | > Paths=../../../Game/Plugins/UnLua/Content 68 | > Paths=../../../Game/Plugins/GameEventSystem/Content 69 | > Paths=../../../Game/Plugins/GameTable/Content 70 | > ``` 71 | > 72 | > 看起来和加载组件有关,我试一下。文件的末尾有一个section只在运行时出现,退出就被删除。通过比较。奇怪的是通过官服重新生成的的文件中反而没了`Paths=../../../Game/Plugins/AntiHook/Content`,而是`Paths=../../../Game/Plugins/CaptureTool/Content`,此外还少了`Paths=../../../Game/Plugins/Designer/TPS_Survivors/Content`, `Paths=../../../Game/Plugins/CaptureTool/Content`和`Paths=../../../Game/Plugins/XGSDKSeasun/Content`。但是这个文件不解决问题。 73 | 74 | 这是`PersistentDownloadDir`的`startup.settings`和`User.settings`的部分内容: 75 | 76 | > ``` ini 77 | > CheckSelectVoice Check 78 | > Voice 1.0 79 | > Music 1.0 80 | > Sound 1.0 81 | > Master 1.0 82 | > LoginBgId 1 83 | > Login.CachedLoginServerID 3002 84 | > ``` 85 | > 86 | > 这个`Login.CachedLoginServerID`有点可疑,我试试。 87 | > 88 | > ``` ini 89 | > KEY VAL 90 | > PlayerSetting_2 [[6],[null,null,null,1,2,1,3,3,2,2,200,2,1,1,300,1,3],[0,8]] 91 | > GachaTip 1 92 | > PlayerSetting_7 [] 93 | > PlayerSetting_1 [null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[1011.0],null,null,null,[1],null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[50]] 94 | > PlayerSetting_3 [] 95 | > PlayerSetting_4 [] 96 | > PlayerSetting_6 [] 97 | > PlayerSetting_8 [] 98 | > TEAM_RULE_1.1.1.2011_10102 [[1,101002]] 99 | > TEAM_RULE_1.1.1.2011_10103 [[1,101002]] 100 | > TEAM_RULE_1.1.1.2011_10104 [[1,101002]] 101 | > NOTICE_SAVE_HEAD_804228300 1 102 | > NOTICE_SAVE_HEAD_-691779882 1 103 | > TEAM_RULE_1.1.1.2011_10105 [[1,101002]] 104 | > TEAM_RULE_1.1.1.2011_10106 [[1,101004]] 105 | > TEAM_RULE_1.1.1.2011_10107 [[1,101005]] 106 | > TEAM_RULE_1.1.1.2011_10108 [[1,101005]] 107 | > TEAM_RULE_1.1.1.2011_10109 [[1,101005]] 108 | > NOTICE_SAVE_HEAD_1729244809 1 109 | > NOTICE_SAVE_HEAD_1317675782 1 110 | > NOTICE_SAVE_HEAD_592556732 1 111 | > ``` 112 | > 113 | > 成功进去了!刚才是两个文件都移除了,现在试试仅移除`startup.settings`是否正常。在此之前,贴出新的内容: 114 | > 115 | > ``` ini 116 | > CheckSelectVoice Check 117 | > Sound 1.0 118 | > Master 1.0 119 | > Music 1.0 120 | > Voice 1.0 121 | > LoginBgId 1 122 | > ``` 123 | > 124 | > ``` ini 125 | > KEY VAL 126 | > PlayerSetting_2 [null,null,[0,1]] 127 | > GachaTip 1 128 | > Activity_15403473_22 0 129 | > Activity_15403473_24 0 130 | > Activity_15403473_20 0 131 | > Activity_15403473_23 0 132 | > ``` 133 | > 134 | > 那个可疑的`Login.CachedLoginServerID`消失了。突然想起来,国服是不需要选择服务器的,但是国际服是要选择区服的,我想这就是为什么会像是在尝试连接国际服服务器一样(就像国际服用魔法进不去的时候一样出现`权限识别中`)。可以推测,程序上没有给国服设定,或者说启动器自带一个服务器指针,但是如果文件中存在这个值,那就会改用文件中的服务器指针(ID)。至于为什么没有给国服作特判,想来是本来这么干的人就不多,另外也可能是预留未来增加国内区服或特别服务器的支持空间,这在编程的人员看来非常合适,反而加个特殊判定是不必要的。就像很多游戏不给转服一样,之所以还可以既上官服有上B服,大概正是因为没有在这里限定住写死。因为这个值除非不存在,且启动器有要求,否则是不会被修改的。**故,依据此猜测,由于国服禁掉了选服功能,而国际服没有,所以国际服不会出问题,但国服就会出问题,因为那个修改服务器指针的功能被禁了!**此外,那个选择初始服务器的逻辑,可能在于选服功能之外且允许被配置文件值覆盖,也可能在于设置初始服务器或切换到初始服务器的“初始化”函数/方法在换服功能中从而被顺带禁了。我写个可能的逻辑: 135 | > 136 | > ``` text 137 | > 定义:选择的初始服务器。此时应当等于启动器要求的值,(或:也即传入的参数)。 138 | > 如果文件有对应值,改为对应值。 139 | > 根据参数,如果允许(或检测到多个可用服务器选项): 140 | > 调用选服功能,选服功能设定当前选择。选服功能会设定可用列表中的某一个为第二初始值(或者根本不会主动设第二初始值而默认空)。如果当前(函数外)值不在允许列表,则要求用户选择,完成服务器“指针/选项/柄”纠正。 141 | > 若不被允许,则跳过。 142 | > 继续运行,用户点击“开始游戏”,然后开始尝试连接服务器。 143 | > ``` 144 | > 145 | > 可以看到,在上面的逻辑中,“服务器选项纠正”这一逻辑被连带禁用,因为请求用户选择是被禁止的。 146 | > 147 | > 在思考这段逻辑的同时,我完成了测试,证明**两文件仅需移除`startup.settings`即可恢复正常**。 148 | 149 | 综上,罪魁祸首为:`PersistentDownloadDir\startup.settings`文件中的`Login.CachedLoginServerID`选项。 150 | 151 | 152 | 153 | --- 154 | 155 | -------------------------------------------------------------------------------- /docs/old_version/README.md: -------------------------------------------------------------------------------- 1 | --- 2 | LANG: zh_CN.UTF-8 3 | date: 2024-12-16 22:17:00 +0800 4 | permalink: /old/README/ 5 | redirect_from: 6 | - /old/ 7 | --- 8 | 9 | 10 | # 《尘白禁区》服务器切换器 11 | 12 | 简介:此程序用于切换不同渠道的启动器,以连接到不同的《尘白禁区》服务器。 13 | 14 | > 自尘白一周年开始,lhm启用了西山居尘白启动器(以下简称西山居启动器),新用户下载到的不是旧版的尘白启动器。截止至2024年8月15日,西山居启动器存在诸多问题,包括缩放错误、闪退、蓝屏、无法开机、被顶号后无法登录(收集自启动器交流群群友自述内容)。因此,推荐暂时使用旧版启动器v2.0(仍在正常更新)。 15 | > 16 | > 旧版启动器下载链接:[跳转至v1.2.2发行](https://github.com/LiuJiewenTT/Snowbreak_ServerSwitcher/releases/tag/v1.2.2) 17 | 18 | 快速跳转:[使用](#使用), [配置方法](#配置方法), [GUI](#guis),[一键启动](#一键启动). 19 | 20 | 21 | 22 | 项目地址:
23 | 说明页链接:
下载请到Release区:
视频教程: 24 | 25 | - [尘白禁区切服器-特点一览](https://www.bilibili.com/video/BV1rH4y1u7Zh/) 26 | - [尘白禁区切服器 - 安装及美化](https://www.bilibili.com/video/BV1sE421F7m3/) 27 | - [尘白禁区切服器 - 使用演示 - 技术演示版](https://www.bilibili.com/video/BV1Wt421T7GP/) 28 | - [尘白禁区切服器 - 添加测试服](https://www.bilibili.com/video/BV1Nx4y1p7us/) 29 | 30 | 31 | 32 | 如果有bug欢迎反馈![到这里来添加 *Issue*](https://github.com/LiuJiewenTT/Snowbreak_ServerSwitcher/issues)
参与更多讨论可以来 [*Discussions *区](https://github.com/LiuJiewenTT/Snowbreak_ServerSwitcher/discussions) 33 | 34 | ## 可行性分析 35 | 36 | 已知: 37 | 38 | 1. 启动器名称没有任何影响,可以自己修改,不同启动器可以共存。 39 | 2. 官服和B服共用相同的数据,仅启动器不同。 40 | 3. 已有工具基于以上原理实现了切换。 41 | 4. 符号链接通常对程序透明。 42 | 5. 已测试:启动器名称不会被更新改变。 43 | 44 | 故: 45 | 46 | 1. 可以使用符号链接实现共存和替换,但最后共用**同一入口**。 47 | 2. 可以正常更新启动器。 48 | 49 | ## 优势 50 | 51 | 在2023年7月开服时,已经有人用易语言制作了一个启动器。 52 | 53 | 后来,西山居更新了启动器(发布1.1版本“夏日过年”时),这意味着各个渠道的启动器都要更新。(事实上,后来每个大版本更新都要更新启动器。) 54 | 55 | > 使用符号链接的好处在于,如果直接访问,那么链接是透明的,程序直接访问真实文件。 56 | 57 | 本程序使用Windows系统下运行于`cmd.exe`(命令提示符)的`.bat`批处理脚本实现。代码开放,完全开源,安全可查。 58 | 59 | > - 非易语言程序,不会被杀毒软件误杀(360,仅未知程序运行提醒),放心使用。 60 | > 61 | > - 非powershell脚本(.ps1),没有麻烦。 62 | > 63 | > - 没有高危操作,不需要管理员权限启动。(但启动启动器时,启动器会要求管理员权限。此提权请求与本程序无关。) 64 | > 65 | > > 自`v1.2.1`起,也可以使用管理员权限启动,这样后续不再需要UAC确认了。 66 | > 67 | > - 支持国服国际服切换!(资源版本不同无法共用资源,仅能共用入口) 68 | > 69 | > - 预留**扩展槽可供测试服**使用! 70 | > 71 | > - 支持游戏语言配置互相切换,不同服的语言配置不再互相影响! 72 | > 73 | > > 中文用户本就不用担心,国际服默认配置也改用简体中文和汉语了。 74 | 75 | > 如果不放心担心被其它程序或其它人修改程序产生不良影响,可以在【属性】->【安全】删除普通用户“写入”权限、保留“执行”权限。 76 | 77 | 此外,在游戏目录内(启动器原始位置),不同渠道的启动器可以共用相同的文件名。也就是说,如果你不是一起开那么一个桌面快捷方式就足够了。(此时也不用担心更新可能出现混乱导致快捷方式或是其它程序(如,Razor Cortex)出现路径错误。) 78 | 79 | > 本切服器已确认适配了一些软件和文件形式: 80 | > 81 | > - “桌面快捷方式”(在win10测试,可用但不显示图标)。 82 | > - *Razor Cortex (雷游)* 83 | > - Live2DViewerEx (小部件“桌面图标”已适配完美) 84 | > 85 | > 86 | > 87 | > 例:`M:\Program Files\Snow\snow_launcher.exe`(这将会是一个符号链接,三服都可以共用这个入口,雷游这样的程序也不需要添加多个服务器的启动器,一次就好。) 88 | 89 | 当然,如果你就是要多个一起开,那,如果可以的话,本程序应该也可以满足你。可惜,启动器似乎进行了限制,不允许多开。 90 | 91 | > 具体什么问题可以联系作者,有空会协助解决。 92 | 93 | ## 备注 94 | 95 | 1. 双语特性:支持中文(保证不乱码)和英文。(Support zh_CN and en_US.) 96 | 2. 已添加游戏语言配置文件链接。 97 | 98 | ## 使用 99 | 100 | > 首次启动前需要完成配置,具体看[下一部分](#配置方法)说明。 101 | 102 | 命令格式: 103 | 104 | ``` bat 105 | CBJQ_SS.main [OPTIONS] [SERVER] 106 | ``` 107 | 108 | 完成配置后,可使用[GUI](#guis)进行操作。 109 | 110 | ### 注意事项 111 | 112 | 游戏本体存在对于西山居启动器和尘白启动器配置文件的兼容,因此部分配置文件与作者使用的尘白启动器版本的目录不同(`%LOCALAPPDATA%\Game\Saved\`),而是在西山居启动器的尘白目录内。 113 | 114 | 你的当前账户可能不被允许创建“文件符号链接”(symlink),请到设置中打开“**开发人员模式**”。 115 | 116 | *补充说明:请确保真正的启动器所在目录下有`preference.json`文件,如果没有这个文件,启动器会以为是第一次运行,进而无法定位到正确的游戏数据目录。* 117 | 118 | 运行环境注意(普通玩家) 119 | 1. 使用前请确认“用户变量设定区”的已经设置好了启动器路径。 120 | 2. 除了“用户变量设定区”,其它都不要动。 121 | 3. 请确保路径中不包含这些符号:“`[` `]`” 122 | 123 | 运行环境注意(高级玩家) 124 | 1. 从Powershell启动可能会存在`LANG`环境变量,程序将优先从`LANG`选择`mLANG`缺省值。 125 | 2. 启动参数必须选项在前服务器在后,指定多个服务器会依次触发操作。 126 | 3. 上部分第三点具体说明:目的路径字符串不得包含启动器储存路径字符串。 127 | 128 | 不要乱改,没允许改的地方小白就不要碰了,你可知从`v1.0.1`到`v1.1.0`就一个主要功能更新在功能完成后还出现了7次修复bug提交吗?如果没那么小心,bug数量一定是两位数。所以,**不要乱改没让改的区域!!!** 129 | 130 | ### 参数 131 | 132 | **启动参数必须选项在前服务器在后,指定多个服务器会依次触发操作。** 133 | 134 | 1. `-nopause`:从命令行启动可以指定该参数,使得程序结束时不暂停。 135 | 2. **`-nostart`**:**仅切换**启动器,**不顺带启动**程序。 136 | 3. `-noswitch`:**仅启动**程序,**不切换**启动器。 137 | 138 | 程序已经根据当前情况预设好了三种服务器(名): 139 | 140 | 1. `worldwide`:国际服 141 | 2. `bilibili`:B服 142 | 3. `kingsoft`(金山):官服 143 | 144 | 例1: 145 | 146 | ``` bat 147 | CBJQ_SS.main bilibili 148 | ``` 149 | 150 | 例2: 151 | 152 | ``` bat 153 | CBJQ_SS.main.bat bilibili 154 | ``` 155 | 156 | 例3: 157 | 158 | ``` bat 159 | CBJQ_SS.main.bat -nostart bilibili 160 | ``` 161 | 162 | 例4: 163 | 164 | ``` bat 165 | CBJQ_SS.main.bat -nostart slot1 166 | ``` 167 | 168 | > `slot1`是自带的示例预留扩展槽的昵称("*nickname*")。 169 | 170 | 例5: 171 | 172 | ``` bat 173 | CBJQ_SS.main.bat -nostart -nopause bilibili 174 | ``` 175 | 176 | 例6: 177 | 178 | ```bat 179 | CBJQ_SS.main.bat -noswitch -nopause bilibili 180 | ``` 181 | 182 | 例7(没什么意义): 183 | 184 | ``` bat 185 | CBJQ_SS.main.bat -nostart -nopause bilibili kingsoft worldwide 186 | ``` 187 | 188 | ## 配置方法 189 | 190 | > 请按照[注意事项](#注意事项)和脚本内的说明进行配置。 191 | > 192 | > **国际服的适配**:**`v1.1.0`版已通过适配测试。**探究实践日志见:[日志](../国际服兼容研究/国际服兼容研究.md)。 193 | 194 | **请在安装好一个版本后开始配置**。(推荐优先国服) 195 | 196 | > 以下为示例,看得懂的可以自行配置。 197 | 198 | 1. 选择一个位置,比如启动器所在的位置。例如:`M:\Program Files\Snow\`。 199 | 200 | 2. 将发行的压缩包内的文件夹`Snowbreak_ServerSwitcher`解压到这个位置。 201 | 202 | 3. 把原启动器拖入:`Snowbreak_ServerSwitcher\Launchers\`文件夹内。 203 | 204 | > 如果是国际服,可以考虑使用此示例:`Snowbreak_ServerSwitcher\Launchers\worldwide\`。 205 | 206 | 4. 把原启动器所在目录下的`preference.json`复制到启动器新位置。 207 | 208 | > 补充说明: 209 | > 210 | > 1. 请确保真正的启动器所在目录下有`preference.json`文件,如果没有这个文件,启动器会以为是第一次运行,进而无法定位到正确的游戏数据目录。 211 | > 212 | > 2. 国际服默认不可与国服共用文件,所以您应该安装游戏内容到其它位置,而启动器使用的`preference.json`也同样不能与国服的共用。 213 | > 214 | > > 启动器也不是非要放在另外的*安装位置*,只要和国服*不在同一目录即可*, 详细方法如下: 215 | > > 216 | > > ​ 更改`preference.json`中资源储存位置`dataPath`,无此文件直接启动可能导致当处于同一目录时属于国服的`data\manifest.json`被覆写而使国服需要重新下载资源。 217 | > 218 | > 3. 同大类(国际服/国服)同版本是共用资源的基础,而**国服正式版和国服测试版资源版本不同**,所以不能完全共用。(想啥呢,要是都一样,那还能是测试服吗?) 219 | > 220 | > > 所以如果差异不大,没关系共用资源,差异部分让它重新下载就行了(或者自己修改`manifest.json`); 221 | > > 如果大或者单纯不想折腾,打算分开装,请把它当国际服一样配置(除了切服器的对应localization要为`homeland`)。 222 | 223 | 5. 把你要的其它渠道的安装包(如:`CBJQ_Setup.exe`)用解压软件打开,打开其中的`app.7z`(即,压缩包内的压缩包)。 224 | 225 | 6. 将里面的启动器复制到刚才那个启动器的新位置去,把它们放到一起(同一目录)(国际服启动器不要和国服启动器放同一目录下!!!测试服也是!)。 226 | 227 | 7. 给不同启动器重命名。 228 | 229 | 8. 来到脚本`Snowbreak_ServerSwitcher\CBJQ_SS.main.bat`中的“用户变量设定区”,设置说明了的*6个*变量。(没有就设为`%launcher_none%`) 230 | 231 | > `launcher_worldwide`, `launcher_bilibili`, `launcher_kingsoft`;(没有就设为`%launcher_none%`)
232 | > `launcher_worldwide_dest`, `launcher_bilibili_dest`, `launcher_kingsoft_dest`。(目的位置,就是原本应该在的路径) 233 | 234 | **首尾不要有多余的空格!**储存路径建议使用绝对路径而非相对路径。若移动了储存路径,可能会错误识别未存在,尝试切换或删除目的文件即可解决。目的目录必须存在,程序不会自动创建缺失的目录。**示例**: 235 | 236 | ``` bat 237 | @set launcher_worldwide=%~dp0Launchers\worldwide\snow_launcher-worldwide.exe 238 | @set launcher_bilibili=%~dp0Launchers\snow_launcher-bilibili.exe 239 | @set launcher_kingsoft=%~dp0Launchers\snow_launcher-kingsoft.exe 240 | 241 | @set launcher_worldwide_dest=..\snow_launcher.exe 242 | @set launcher_bilibili_dest=..\snow_launcher.exe 243 | @set launcher_kingsoft_dest=..\snow_launcher.exe 244 | ``` 245 | 246 | (**预留扩展槽的配置方法**同理,在“用户区”内,额外的一个必要项就是“*nickname*”,启动时是按照它来匹配的。对应的对国际服的兼容项为“*localization*”,只能在`homeland`和`worldwide`之间选择。如果是这段时间的国服测试服,那么用自带的扩展槽位配置即可:把启动器放到合适位置并重命名。) 247 | 248 | 不会改参数就按这里的命名,然后复制这一段将对应代码替换。 249 | 250 | 如果你既玩国服又玩国际服,请参照配置后续几行: 251 | 252 | > ``` bat 253 | >@set StartupSettingsName_homeland=startup-homeland.settings 254 | > @set StartupSettingsName_worldwide=startup-worldwide.settings 255 | > ``` 256 | > 257 | > 如果不是,这样即可: 258 | > 259 | > ``` bat 260 | >@REM @set StartupSettingsName_homeland=startup-homeland.settings 261 | > @REM @set StartupSettingsName_worldwide=startup-worldwide.settings 262 | > ``` 263 | > 264 | > 即,在行首添加`@REM`注释掉命令使之不生效即可。如果用过上面的,配置且运行通过后,不想重新生成`startup.settings`(虽然无所谓),那只注释一个并留下自己要用的那个即可。 265 | 266 | 如果你不需要不同服拥有独立的语言配置,请将如下默认改去: 267 | 268 | > ``` bat 269 | > @set flag_enable_GameIni_switching=true 270 | > ``` 271 | > 272 | > 改为: 273 | > 274 | > ``` bat 275 | > @set flag_enable_GameIni_switching=false 276 | > ``` 277 | > 278 | > 即`true`改`false`。或将其注释,使其无效化: 279 | > 280 | > ```bat 281 | > @REM @set flag_enable_GameIni_switching=true 282 | > ``` 283 | 284 | 9. 使用命令行按照上述参数示例启动/切换启动器;或使用[GUI](#guis)操作;或直接使用一键启动程序。 285 | 286 | > 也可以用配置好的几个文件,给这几个文件创好桌面快捷方式,然后双击启动: 287 | > 288 | > - 切换+启动:`尘白禁区**(切换+启动).bat` 289 | > - 仅切换,不自动启动:`尘白禁区**(切换).bat` 290 | > - 仅启动,不切换:`尘白禁区**(启动).bat` 291 | > 292 | > 您也可以为测试服配置启动脚本! 293 | 294 | > 配置**GUI** (CBJQ_SS_FrontEnd-tk)时您可以使用如下方式完成cwd参数和配置文件的**初始化**: 295 | > 296 | > 1. 运行cmd(命令行)。(`Win`+`R`,输入`cmd`,回车) 297 | > 298 | > 2. 转到GUI程序所在目录,示例:`cd /d "M:\Program Files\Snow\Snowbreak_ServerSwitcher\GUIs\CBJQ_SS_FrontEnd_tk-B-I2\CBJQ_SS_FrontEnd_tk-B-I2"` 299 | > 300 | > 3. 把`Snowbreak_ServerSwitcher`的完整路径作为启动参数传入,示例: 301 | > 302 | > ``` bat 303 | > 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" 304 | > ``` 305 | > 306 | > 4. 关闭弹出的图形窗口,配置得到保存。(如果有启动页,先进入) 307 | 308 | ## GUIs 309 | 310 | 可用GUI程序: 311 | 312 | 1. 项目:[CBJQ_SS_FrontEnd-tk](https://github.com/LiuJiewenTT/CBJQ_SS_FrontEnd-tk)。(目前仅支持中文) 313 | 314 | ## 一键启动 315 | 316 | 可用。使用对应的 *CBJQ_SS.QS.\*.exe*即可,如双击打开、桌面快捷方式。 317 | 318 | 发行包应已存在`CBJQ_SS.QS.exe`,重命名即可。例如:`CBJQ_SS.QS.kingsoft.exe`。 319 | 320 | 详见项目页: 321 | 322 | ## LICENSE 323 | 324 | 本项目遵循MIT开源协议。 325 | 326 | 本项目含子项目[`CBJQ_SS.StartWrapper` (`.\startwrapper`)](https://github.com/LiuJiewenTT/CBJQ_SS.StartWrapper)(MIT开源协议)实现管理员权限下符号链接解析,以确保使用的配置文件正确。构建产品应存储在`main`所在目录; 327 | 328 | 本项目含子项目[`CBJQ_SS.QS` (`.\quickstart`)](https://github.com/LiuJiewenTT/CBJQ_SS.QS)(MIT开源协议)实现一键切换并启动。构建产品推荐在`main`所在目录使用; 329 | 330 | 本项目内置[`IconFold` `v1.0.0` (`.\tools\IconFold\v1.0.0`)](https://github.com/LiuJiewenTT/IconFold) (MIT开源协议)实现文件夹图标的设置。可以删除tools文件夹。 331 | 332 | ## Copyrights 333 | 334 | 此部分主要是关于资源的版权声明。(排序不分先后) 335 | 336 | | 资源位置 | 版权所有者 | 备注 | 337 | | ------------------ | -------------------------------------------- | ---------------------------------------------- | 338 | | 辰星-云篆 团子.jpg | *魔法少女鱼鱼熏Kaori* (B站用户UID: 66874794) | | 339 | | icon1.ico | *魔法少女鱼鱼熏Kaori* (B站用户UID: 66874794) | 本项目作者自行从`辰星-云篆 团子.jpg`转换而来。 | 340 | 341 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | --- 2 | LANG: zh_CN.UTF-8 3 | date: 2025-10-14 20:37:00 +0800 4 | permalink: / 5 | redirect_from: 6 | - /README/ 7 | --- 8 | 9 | # 《尘白禁区》服务器切换器 10 | 11 |
12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 25 | 26 |
27 | GitHub Downloads (all assets, all releases) 28 | GitHub Release 29 | GitHub Repo stars 30 | GitHub License 31 |
32 | 33 | 本工具可以帮助你切换游玩不同服务器的《尘白禁区》游戏(Windows PC端)。 34 | 35 | 项目地址:[GitHub](https://github.com/LiuJiewenTT/Snowbreak_ServerSwitcher)
36 | 项目主页:[尘白禁区服务器切换器](https://liujiewentt.github.io/Snowbreak_ServerSwitcher/) 37 | 38 |
39 | 快速跳转:
40 |
41 |      42 | 下载安装 43 | 使用说明 44 | 帮助 45 | 旧主页 46 |
47 |
48 | 49 | 50 | ## 背景介绍 51 | 52 | 在PC端,《尘白禁区》有三个主要的服务器可供选择,包括“官服”“B服”和“国际服”。其中,“官服”和“B服”属于国服版本。 53 | 54 | 关于PC端的官方启动器,《尘白禁区》目前有两种:**尘白禁区启动器**和*西山居(尘白)启动器*。前者是仍在更新的原启动器,后者是极其不稳定的替代启动器,强烈建议不要使用后者,改用前者!本项目的所有内容针对前者进行适配和开发,绝不适配后者。 55 | 56 | > 注:由于游戏本体对西山居启动器存在不完整支持,并会先行检测部分适用于它的配置文件,因此可能会导向某些bug代码。因此,即便你可以不卸载西山居启动器和删除游戏资源就改用尘白启动器,也不建议这么做,除非你缺少流量重新下载资源([指南](#关于从西山居启动器迁移到尘白启动器,但不卸载西山居启动器和删除游戏资源))。 57 | 58 | 由于不同服使用的内容不完全一致,也不完全兼容,因此需要做一些额外的操作才能让玩家在不同服务器间游玩。此外,游戏的资源多达20GB+,如果能共用一部分资源那是再好不过了。 59 | 60 | 61 |
冲突主要出现在以下几个方面: 62 |
    63 |
  1. 资源版本:对于同时期的正式服,国服的两个服使用相同的资源,资源可以共享,无需重复下载;对于国服与国际服,两者使用的资源差异较大,资源清单文件manifest.json内容不互通不兼容;对于正式服与测试服,两者的资源显然不同,无法共用。
  2. 64 |
  3. 设置存储:对于国服的两个服,使用的设置可以共享;对于国服和国际服,使用的设置互相冲突,无法共享。
  4. 65 |
66 |
67 | 68 |
冲突的主要成因: 69 |
    70 |
  1. 对于资源版本:资源清单的不同直接导致资源目录的不共享。此处细分两种原因: 71 |
      72 |
    1. 启动器会检查清单文件版本和内容,如果存在出入,则会做资源校验,并在这个过程中持续覆写(过程出错则等同于破坏)。此处存在未知原因,即便从他处重新获取了正确的清单文件,也可能无法识别,而使启动器提示需要全部重新下载。
    2. 73 |
    3. 如果在启动器中执行了“更新资源”,则会增减原有资源,导致原有版本无法启动,即无法进入原本的服务器。
    4. 74 |
    75 |
  2. 76 |
  3. 对于存储的设置,按内容分: 77 |
      78 |
    1. 缓存的服务器选择:由于国际服存在多个区服,需要选择区服,故startup.settings文件中会记录选择的服务器号,在游戏启动时会优先引用这个值。国服砍了切区服功能,也就使得本体只会尝试使用错误的服务器号进行登录连接,表现为持续处于鉴权状态,无法进入游戏的大厅界面。
    2. 79 |
    3. 语言的选择:其实这部分设置(在Game.ini文件中)本来是兼容的,但是由于不同服务器之间,可能存在bug或内容缺失,导致可能出现一些意外的语言搭配,不过这部分不影响正常游戏。一个比较有趣的例子是,在上次启动的国际服中使用了英语配音,这次启动回到国服听到的语音就是英语配音。
    4. 80 |
    81 |
  4. 82 |
83 |
84 | 85 |
冲突的应对措施: 86 |
    87 |
  1. 对于资源版本:资源目录的路径存储在启动器同目录下的preference.json文件中,因此对于不同资源版本,启动器存储在不同的目录中。
  2. 88 |
  3. 对于存储的设置,按内容分: 89 |
      90 |
    1. 缓存的服务器选择:由于国服无需选择服务器,仅国际服需要,故分出两个选项,国服统一使用符号链接链接到专用的启动设置文件,国际服使用符号链接链接到另外的启动设置文件。
    2. 91 |
    3. 语言的选择:这部分根据玩家需求可能比较多样,因此提供对于每个服使用的游戏设置文件的自定义功能,使用符号链接实现切换。
    4. 92 |
    93 |
  4. 94 |
95 |
96 | 97 | ## 产品特点 98 | 99 |

统一入口、资源共享、硬盘友好、安全高效、可自定义

100 | 101 | 1. 提供共用的启动器入口,支持共用快捷方式,第三方平台(如:雷游(*Razor Cortex*)等监控游戏性能的软件)无需填写多个应用入口。 102 | 2. 支持国服和国际服共存(同系统账户下)。 103 | 3. 适配可能存在的测试服。 104 | 4. 支持官服和B服资源共享,无需重复下载。 105 | 5. 支持不同服使用不同语言设置,不串台。 106 | 6. 详尽且准确的输出信息和错误纠正提示。 107 | 108 | 更多:
109 | 110 | 7. 自动检测当前文件配置,高效安全。 111 | 8. 支持启动器控制台输出监控,可以了解启动器的运行情况。 112 | 9. 完全开源,大部分为脚本,完全透明安全。 113 | 10. 输出语言支持中文、英文。 114 | 115 | ## 下载安装 116 | 117 | 请转到Releases页面下载最新版本的安装包。[下载](https://github.com/LiuJiewenTT/Snowbreak_ServerSwitcher/releases) 118 | 119 | 下载后无需安装,将压缩包解压出来即可。(旧版本和特殊需求可能需要额外配置)
120 | *推荐的存储位置* 是原本尘白启动器的所在目录下,例如:`M:\Program Files\Snow\`(如果你玩过了,此处你应该还会看到一个`data`文件夹)。 121 | 122 | > [!TIP] 123 | > 124 | > 使用方法见[【使用说明】](#使用说明)。 125 | 126 | 版本说明: 127 | 128 | - 基础版:仅包含此核心,不包含GUI,且仅包含能运行的最小配置。 129 | - 完整版:包含此核心和GUI,并包含更加完整、更加接近开箱即用的配置。文件名中带有`GUI`标识。 130 | > - GUI目前仅有 *tkinter* 实现版本。 131 | > - GUI通常以 *BasicPack* 的形式提供,仅附带少量资源(为了尽可能避免纠纷)。如果需要美化,可以前往GUI项目主页,参照说明并自行配置。 132 | > - 发行包通常完成了基本配置,推荐使用附带GUI程序的版本。 133 | 134 | 135 | > [!TIP] 136 | > 137 | > 若需要尘白启动器,可以在[snow_launcher_downloader](.\tools\snow_launcher_downloader\snow_launcher_downloader.html)下载([备用](https://liujiewentt.github.io/snow_launcher_downloader/snow_launcher_downloader.html))。下载后建议根据服名分别重命名为`snow_launcher-bilibili.exe`, `snow_launcher-kingsoft.exe`, `snow_launcher-worldwide.exe`。
138 | >(本项目亦友情提供缓存的版本,可在[此处](https://github.com/LiuJiewenTT/Snowbreak_ServerSwitcher/releases/tag/v1.2.2)下载) 139 | 140 | ### 更新安装的版本 141 | 142 | 由于发行的压缩包内带有一些初始配置文件,如果你曾经修改过其中的内容,请注意备份旧文件,更新后,可以使用VSCode等编辑器进行比对和更改。部分配置同运行脚本在一起,更新的时候可能需要特别注意。 143 | 144 | ### 配置 145 | 146 | 配置主要分为本体配置和周边配置(例如:GUI配置),详细内容可以在[旧主页](old/)查看。 147 | 148 | 本体配置:新版通常无需修改**切服器的配置**,仅需完成一些适配工作(即其他配置工作)即可(需要执行的操作会在运行过程中提示,依据提示操作即可)。 149 | 150 | > [!NOTE] 151 | > 152 | > 1. 如果你使用旧版本,或者有特别的需求(例如:关闭国际服支持、切换为英文、使用测试服),那么一定要修改一些对应的配置信息。 153 | > 154 | > 2. 关于GUI的配置,可以前往[CBJQ_SS_FrontEnd-tk](https://github.com/LiuJiewenTT/CBJQ_SS_FrontEnd-tk)项目页查看。“过于高级/冷门”的功能配置就不表述了,在对应项目的文档中或许会有详细说明。 155 | 156 | 更多详细配置请参考[旧主页](old/),那里还有旧的介绍和指引系列视频(视频教程)的链接。 157 | 158 | ## 使用说明 159 | 160 | 此部分主要分为两部分,第一部分介绍项目本体的独立使用方法,第二部分额外介绍推荐的GUI套件发行包的使用方法。对于无编程基础的人,推荐直接跳过第一部分。每一部分,可能会额外划分基础内容和进阶内容,请自行选用。 161 | 162 | > [!NOTE] 163 | > 164 | > - 旧版本和特殊需求可能需要额外[配置](#配置)。 165 | > 166 | > - 部分情况可能需要管理员权限才能运行,比如安装在C盘特殊目录内。 167 | 168 |
第1部分:本体独立使用 169 | 由于本体无GUI程序,因此通常需要使用命令行环境进行操作。本项目做了一些简化,除进阶方法外,无需通过终端环境使用。
170 | 关于在命令行环境中使用,您可以选择cmd.exewt.exe(Windows Terminal / 终端),不推荐选择PowerShell。其中,第一项为推荐的执行程序。如果您使用终端(wt),也更推荐您使用“命令提示符”类型环境。 171 |
    172 |
  1. 基础使用方法I: 173 |
      174 | 在发行的压缩包中,您应当会看到一个名为CBJQ_SS.QS.exe的程序。在部分发行包中,您还会看到CBJQ_SS.QS.为前缀、.exe为后缀,中间为服名的程序副本。需要什么中间名的副本取决于您需要一键启动什么服。此外,也推荐您将常用的副本发送快捷方式到桌面。 175 |
    1. 双击运行准备好的CBJQ_SS.QS.*.exe此部分无需终端
      176 | 注:“*”的示例值:“bilibili”、“kingsoft”、“worldwide” 177 |
    2. 178 |
    179 |
  2. 180 |
  3. 基础使用方法II: 181 |
      182 |
    1. 双击运行准备好的“尘白禁区*服(*).bat”脚本。此部分无需终端
      183 | 解释: 184 |
        185 |
      1. “*服”指:B服、官服、国际服
      2. 186 |
      3. “(*)”指:“启动”、“切换”、“启动+切换”
      4. 187 |
      188 |
    2. 189 |
    190 |
  4. 191 |
  5. 进阶使用方法: 192 |
      此方法需要您启动一个命令行终端,输入命令触发程序执行。 193 |
    1. 打开命令行终端。
    2. 194 |
    3. 按需使用命令: 195 |
        196 |
      1. 命令解释: 197 |
          198 |
        1. 程序名:CBJQ_SS.main.bat。用CBJQ_SS.main(不带扩展名)也可。 199 | 程序启动时总会展示版本信息。 200 |
        2. 201 |
        3. 参数解释: 202 |
            203 |
          1. 服名,必须在所有选项之后。可选取值:bilibili, kingsoft, worldwide
            204 | 你还可以启动测试服,但这就需要额外配置了。 205 |
          2. 206 |
          3. -nostart:执行完毕时不启动启动器
          4. 207 |
          5. -noswitch:执行时不切换启动器
          6. 208 |
          7. -nopause:执行完毕时不触发暂停(“按下任意键继续”)
          8. 209 |
          210 |
        4. 211 |
        212 |
      2. 213 |
      3. 示例如下: 214 |
          215 |
        1. 切换并启动B服:CBJQ_SS.main.bat bilibili
        2. 216 |
        3. 切换并启动官服(不暂停):CBJQ_SS.main.bat -nopause kingsoft
        4. 217 |
        5. 不切换并直接启动国际服(不暂停):CBJQ_SS.main.bat -noswitch -nopause worldwide
          218 | (即:仅启动) 219 |
        6. 220 |
        7. 切换但不启动国际服(不暂停):CBJQ_SS.main.bat -nostart -nopause worldwide
          221 | (即:仅切换) 222 |
        8. 223 |
        9. 没什么意义的连续切服(不暂停)且不启动:CBJQ_SS.main.bat -nostart -nopause bilibili kingsoft worldwide
          224 | 如果启动,则会按最后且最新的一个为准。 225 |
        10. 226 |
        227 |
      4. 228 |
      229 |
    4. 230 |
    231 |
  6. 232 |
233 |
234 |
第2部分:配合GUI等周围设施使用 235 | 此部分以推荐的默认GUI程序为例,您需要使用带有GUI字样的发行包才能使用GUI。默认GUI发行版分为A版(单文件版)和B版(极速版),此项目发行通常使用的是B版,但您也可以改用A版。配置步骤不在此部分。
236 | 以下使用GUIs\CBJQ_SS_FrontEnd_tk-B-I2\CBJQ_SS_FrontEnd_tk-B-I2\CBJQ_SS_FrontEnd_tk-B-I2.exe示范。 237 |
    238 |
  1. 基础使用方法: 239 |
      240 |
    1. 双击运行准备好的CBJQ_SS_FrontEnd_tk-B-I2.exe推荐发送到桌面快捷方式,并使用管理员权限启动(可以在快捷方式的属性页的兼容性选项卡中勾选)。
    2. 241 |
    3. 在左侧选中你需要的服。
    4. 242 |
    5. 根据需要点击按钮:“切换”、“切换并启动”、“直接启动”。可以开启日志展示以观察运行状况。
    6. 243 |
    244 |
  2. 245 |
  3. 进阶使用方法: 246 | 此部分主要是调整一些配置,进而展现一些“高级”功能。详见GUI项目主页,那里有配置条目的说明,可以根据说明自行配置默认GUI程序使用的启动页和结果表情包。 247 |
  4. 248 |
  5. Live2DViewerEx一起使用: 249 | 您可以把启动入口添加到Live2DViewerEx的“桌面图标”小部件中,这样你可以以图标组的方式展现自己想要显示在桌面的入口。基础添加方法如下: 250 |
      251 |
    1. Live2DViewerEx的控制面板中,找到“小部件”,选择“桌面图标”,并点击右侧的电源样式的图标启用此小部件。
    2. 252 |
    3. 在右侧点击+号,添加图标组;或点击已有图标组右侧的设置按钮。
    4. 253 |
    5. 在弹出的窗口中输入名称,类型选择“文件”,点击加号选择程序入口文件。
    6. 254 |
    7. 点击“选择图标”,选择或先添加图标。添加图标时可以在切服器目录下找。
    8. 255 |
    9. 一切就绪,点击确定即可。
    10. 256 |
    257 |
    258 |

    [!CAUTION]

    259 |

    由于Live2DViewerEx对于启动方法的实现较为简单,它无法保证程序在合适的目录下启动,您启动部分程序时可能会遇到问题,如:找不到配置文件。

    260 | 261 |
    已知程序类别及现象: 262 |
      263 |
    1. 所有使用PyInstaller打包的非单文件程序:闪退、找不到配置文件。
    2. 264 |
    3. 所有默认读取配置文件时在当前工作目录下的程序:找不到配置文件。
    4. 265 |
    266 |
    267 |
    268 |
    269 |
  6. 270 |
271 |
272 | 273 |
不华而不实的另类使用方法,仅供爱折腾、炫技的人使用。 274 | 如果您满足以下任意一种情况: 275 |
    276 |
  1. 您原本使用尘白版安装包(非西山居版)安装过尘白禁区,使用的是尘白启动器,且桌面上有尘白启动器的快捷方式。
  2. 277 |
  3. 正常切换过启动器,有目标名为snow_launcher.exe的符号链接(文件资源管理器的详细信息查看模式下类型显示.symlink且,文件大小显示0字节)。
  4. 278 |
279 | 那么您可以为snow_launcher.exe创建桌面快捷方式,双击启动就是对应服的启动器(只是这种情况切服需要用bat脚本或调整配置的QS)。 280 |
281 | 282 | ## LICENSE 283 | 284 | 本项目遵循MIT开源协议。 285 | 286 | 本项目含子项目[`CBJQ_SS.StartWrapper` (`.\startwrapper`)](https://github.com/LiuJiewenTT/CBJQ_SS.StartWrapper)(MIT开源协议)实现管理员权限下符号链接解析,以确保使用的配置文件正确。构建产品应存储在`main`所在目录; 287 | 288 | 本项目含子项目[`CBJQ_SS.QS` (`.\quickstart`)](https://github.com/LiuJiewenTT/CBJQ_SS.QS)(MIT开源协议)实现一键切换并启动。构建产品推荐在`main`所在目录使用; 289 | 290 | 本项目内置[`IconFold` `v1.0.0` (`.\tools\IconFold\v1.0.0`)](https://github.com/LiuJiewenTT/IconFold)(MIT开源协议)实现文件夹图标的设置。可以删除此目录。 291 | 292 | 本项目内置[`snow_launcher_downloader` (`.\tools\snow_launcher_downloader`)](https://github.com/LiuJiewenTT/snow_launcher_downloader)(UNLICENSE协议)实现自动下载最新版本的启动器。可以删除此目录。 293 | 294 | 本项目或其组件含[cJSON @ 3249730](https://github.com/DaveGamble/cJSON/tree/324973008ced4ea03d1626a00915d0399ecbd9db),遵循其要求(MIT开源协议)。 295 | 296 | ### GUIs 297 | 298 | 可用GUI程序: 299 | 300 | 1. 项目:[CBJQ_SS_FrontEnd-tk](https://github.com/LiuJiewenTT/CBJQ_SS_FrontEnd-tk)。(目前仅支持中文) 301 | 302 | ## Copyrights 303 | 304 | 此部分主要列出使用的部分资源的版权声明。(排序不分先后) 305 | 306 | | 资源位置 | 版权所有者 | 备注 | 307 | | ------------------ | -------------------------------------------- | ---------------------------------------------- | 308 | | 辰星-云篆 团子.jpg | *魔法少女鱼鱼熏Kaori* (B站用户UID: 66874794) | | 309 | | icon1.ico | *魔法少女鱼鱼熏Kaori* (B站用户UID: 66874794) | 本项目第一作者自行从`辰星-云篆 团子.jpg`转换而来。 | 310 | 311 | 本项目无意冒犯,如有侵权,请联系本项目作者删除相关资源。项目作者不对资源的原始版权归属负责。 312 | 313 | ## 帮助 314 | 315 | 如果遇到任何问题,欢迎在项目页提交issue,或发送邮件至:`liuljwtt@163.com`。 316 | 317 | 以下是对于文档中部分内容的额外指南: 318 | 319 | ### 关于从西山居启动器迁移到尘白启动器,但不卸载西山居启动器和删除游戏资源 320 | 321 | 如果你已经安装了西山居启动器,但又不想卸载它,也不想删除游戏资源,那么可以尝试以下方法: 322 | 323 | > [!NOTE] 准备 324 | > 325 | > 你需要先行下载好尘白启动器。 326 | 327 | > [!TIP] 资源目录 328 | > 329 | > - 尘白启动器的资源目录默认为:启动器文件所在目录下的`data`目录。 330 | > > 如果你使用开服安装包安装的,这个路径应该是: `[盘符]\Snow\data`。 331 | > 332 | > - 西山居启动器的资源目录默认为:启动器文件所在目录下的`Game\cbjq`目录。 333 | > > 如果你使用不早于尘白一周年的安装包安装的,这个路径通常是: `[盘符]\SeasunCBJQos\Game\cbjq`。 334 | 335 | 336 | 1. 选好尘白启动器的存放目录,运行它,修改下方的游戏资源存档目录到当前西山居版的游戏资源目录。 337 | > [!TIP] 338 | > 339 | > 你也可以在右上角的设置(“齿轮”)图标内的界面更改资源存档目录。 340 | 2. 关闭启动器就会保存好设置(到同目录下的`preference.json`文件中)。 341 | 342 | > [!WARNING] 343 | > 344 | > 由于启动器会自动追加路径,所以可能会存成:`[盘符]\SeasunCBJQos\Game\cbjq\data`。这时候你可以使用“记事本”打开`preference.json`文件,删除后面的`\\data`部分,保存即可(操作前请先关闭启动器)。 345 | 346 | ### 原本使用西山居启动器,现在被顶号了登录不了了怎么办? 347 | 348 | 如果你曾经使用过西山居启动器**游玩游戏**(登录过),如果你: 349 | 1. 还在继续使用。 350 | 2. 没有完全卸载西山居启动器和它下载的游戏资源,直接改用尘白启动器。 351 | 352 | 当你被顶号时,你已经保存的登录信息就失效了,你需要重新登录,这是正常情况。不正常的情况是:你后来登录不上了,那么你需要删除已保存的登录信息,它过期了,这样才能重新登录。 353 | 354 | 1. 删除西山居版安装目录下的`xg_111111639`(你可以搜索一下,你可以选择不删除而是重命名)。 355 | 356 | 357 | ### 玩了一下国际服,结果国服进不了了怎么办? 358 | 359 | 这件事是国际服配置和国服冲突造成的,区服错误,导致卡在鉴权的环节上(国内网络通常连不上国际服)。 360 | 361 | 这件事只需要删除一项区服配置即可,或者直接把这项配置所在的文件整个删掉。为了简化这个操作,我做了个专门删除这文件的脚本(文件名:`CBJQ_KickoffWorldwideServerConfigConfliction.bat`),放在了`tools`目录下,你直接运行一下就可以了。如果你找不到这个文件,可以在这里下载:[CBJQ_KickoffWorldwideServerConfigConfliction.bat](https://gist.github.com/LiuJiewenTT/e3a346c4458012416ea7d182ded7c82c#file-cbjq_kickoffworldwideserverconfigconfliction-bat),或从以下代码块中复制: 362 | 363 | 364 | 365 | 冲突相关信息可见上述“冲突的主要成因”部分。如果想要更详细的信息,不妨了解一下我探索求解的日志:[国际服兼容研究](docs/国际服兼容研究/国际服兼容研究.md)。 366 | 367 | 368 | ### 怎么localization? 369 | 370 | 如果你说的是切服器的本地化,那么这是`LANG`或`mLANG`环境变量到`en`;如果你说的是游戏本体的,那么就是另一回事了,和本切服器无关。(不建议修改游戏本体的本地化,但如果想要学习和研究,可以参考这两个项目:[PC端的本地化测试工具](https://github.com/LiuJiewenTT/CBJQ_XiaoKaiGuan)、[安卓端的本地化测试工具-PC平台](https://github.com/LiuJiewenTT/CBJQ_HugFenny-PC)、[安卓端的本地化测试工具-安卓平台](https://github.com/LiuJiewenTT/CBJQ_HugFenny))。 371 | -------------------------------------------------------------------------------- /docs/国际服兼容研究/after-3.txt: -------------------------------------------------------------------------------- 1 | Volume in drive C is Windows 2 | Volume Serial Number is D297-3B1E 3 | 4 | Directory of C:\Users\HP\AppData\Local\Game\Saved 5 | 6 | 2024/02/05 13:11 . 7 | 2024/02/05 13:11 .. 8 | 2023/07/20 13:06 Config 9 | 2024/01/23 17:26 data 10 | 2024/02/05 13:11 Logs 11 | 2023/07/20 13:07 PersistentDownloadDir 12 | 2024/01/31 15:50 SaveGames 13 | 2023/07/20 13:06 webcache 14 | 2024/01/31 15:50 xg_111111639 15 | 2024/02/05 13:11 xg_111111680 16 | 2023/07/20 13:06 32 deviceid.kxy 17 | 1 File(s) 32 bytes 18 | 19 | Directory of C:\Users\HP\AppData\Local\Game\Saved\Config 20 | 21 | 2023/07/20 13:06 . 22 | 2023/07/20 13:06 .. 23 | 2024/02/05 13:11 CrashReportClient 24 | 2023/07/20 13:06 WindowsNoEditor 25 | 0 File(s) 0 bytes 26 | 27 | Directory of C:\Users\HP\AppData\Local\Game\Saved\Config\CrashReportClient 28 | 29 | 2024/02/05 13:11 . 30 | 2024/02/05 13:11 .. 31 | 2024/02/05 13:11 UE4CC-Windows-64EF1F0142C8972E85EDCBB6A65B23EF 32 | 0 File(s) 0 bytes 33 | 34 | Directory of C:\Users\HP\AppData\Local\Game\Saved\Config\CrashReportClient\UE4CC-Windows-64EF1F0142C8972E85EDCBB6A65B23EF 35 | 36 | 2024/02/05 13:11 . 37 | 2024/02/05 13:11 .. 38 | 2024/02/05 13:11 112 CrashReportClient.ini 39 | 1 File(s) 112 bytes 40 | 41 | Directory of C:\Users\HP\AppData\Local\Game\Saved\Config\WindowsNoEditor 42 | 43 | 2023/07/20 13:06 . 44 | 2023/07/20 13:06 .. 45 | 2024/02/05 13:11 2 ApexDestruction.ini 46 | 2023/07/20 13:06 2 Blindage.ini 47 | 2024/02/05 13:11 2 Compat.ini 48 | 2024/02/05 13:11 2 ConcertSyncCore.ini 49 | 2024/02/05 13:11 2 ControlRig.ini 50 | 2024/02/05 13:11 2 DeviceProfiles.ini 51 | 2024/02/05 13:11 2 DungeonArchitect.ini 52 | 2024/02/05 13:11 2 EditorScriptingUtilities.ini 53 | 2024/02/05 13:11 3,286 Engine.ini 54 | 2024/02/05 13:11 103 Game.ini 55 | 2024/02/05 13:11 2 GameplayTags.ini 56 | 2024/02/05 13:11 1,092 GameUserSettings.ini 57 | 2024/02/05 13:11 2 Hardware.ini 58 | 2024/02/05 13:11 12,692 Input.ini 59 | 2024/02/05 13:11 2 MagicLeap.ini 60 | 2024/02/05 13:11 2 MagicLeapLightEstimation.ini 61 | 2024/02/05 13:11 2 MotoSynth.ini 62 | 2024/02/05 13:11 2 Niagara.ini 63 | 2024/02/05 13:11 2 Paper2D.ini 64 | 2024/02/05 13:11 2 PhysXVehicles.ini 65 | 2024/02/05 13:11 2 RuntimeOptions.ini 66 | 2024/02/05 13:11 2 Scalability.ini 67 | 2024/02/05 13:11 2 Synthesis.ini 68 | 2024/02/05 13:11 2 VariantManagerContent.ini 69 | 24 File(s) 17,213 bytes 70 | 71 | Directory of C:\Users\HP\AppData\Local\Game\Saved\data 72 | 73 | 2024/01/23 17:26 . 74 | 2024/01/23 17:26 .. 75 | 2023/09/29 13:51 0 0482CBAE48410B361440FA8DE56159F5 76 | 2023/09/25 13:35 0 0778A2844A91BB0C1F31379CCDD735CF 77 | 2023/09/29 14:12 0 09A6153B4FC0406BC58C62A73BE5AF87 78 | 2023/09/29 13:53 0 0A7B0AB84D3269E32D40EFA53E897745 79 | 2023/09/29 13:58 0 0F3F08804D346AF0DF3742949AD28B77 80 | 2023/10/18 15:34 0 1087811D46B953A1ACBA6B8F4C939788 81 | 2023/10/18 15:34 0 122B22FA4E687C3D43553FB28429A357 82 | 2023/10/20 23:29 0 146772504164A09E6CA79C9C3FAFDEBF 83 | 2023/10/18 15:46 0 161371824FDE3707CC277EABE76A6B5C 84 | 2023/10/01 15:00 0 16B540AA427AA9B74B4232A13B75C1D6 85 | 2023/10/01 15:10 0 179EF9ED4BBAF117A49C32AC27CCF9D9 86 | 2023/11/01 11:12 0 17B398FB4BC1F39B155C5DA7541346F2 87 | 2023/10/18 15:46 0 17DEAC7A45B77CD432AC59897DC46F67 88 | 2023/10/01 15:47 0 18DFE87A442BDB1318A4D19F642EE061 89 | 2023/10/01 16:04 0 1AF764D7461EE8F49947D6BC355AD9FD 90 | 2023/09/29 13:53 0 1B1F9A124F100A9BC74CD0AE070D6C80 91 | 2023/09/21 18:40 0 1C1F85D24F48F0E7A129A2B17807FE07 92 | 2023/10/01 15:16 0 1C9C585A4F55D5FAA1489DBA06484DCB 93 | 2023/10/23 14:36 0 1F71D95247B77AFA1CEAB3B51DA1210C 94 | 2023/10/18 15:35 0 224740334D796E0E96CB298A53BAC612 95 | 2023/10/14 10:20 0 2361AC4244C05036B250B4BEE73604E3 96 | 2023/10/01 16:04 0 2B2C4C1541D8523CB05C34AA2263D8B2 97 | 2023/10/14 10:20 0 2BC5430F4A454FE272D29289597CF27A 98 | 2023/10/23 16:24 0 31A67A224077AFC6FACE32BAEAA0CF08 99 | 2023/09/26 20:41 0 342C163C4AD25807031ABBBE806B8ED4 100 | 2023/10/23 16:38 0 372B74E44E69AC2D822276A1064D6241 101 | 2023/10/14 10:20 0 37A2670C472BD77CF6FCC8B440FEBC1B 102 | 2023/10/14 10:19 0 396BE6BF4D175A3F04CCFB9012AE690F 103 | 2023/10/18 15:34 0 3AC284224BE65E5040E812AE0545659B 104 | 2023/10/26 11:26 0 3C8FC4564FD54872709299A50E9C4ECE 105 | 2023/09/29 13:57 0 410294CD4135F1BDFC0C6082448CDAC0 106 | 2023/09/29 13:57 0 448308AC49BFF18CC35E14AE4431C381 107 | 2023/10/20 23:02 0 45E974694F82CBD16774039BA1302FA4 108 | 2023/10/31 22:03 0 4788F4E041B0DFBC3CCB7C9F366CEB10 109 | 2023/10/01 15:12 0 482D86DD423428882A3AC3B93F2288DA 110 | 2023/09/29 14:29 0 5079540C41E53218A3B9D78B1D6EDC47 111 | 2023/09/22 19:33 0 5249A7EF460513C750D50EA0F8E6041E 112 | 2023/10/18 15:46 0 526CD741446FFEB1293A8EA97A99CD97 113 | 2023/10/18 15:34 0 53DE37414DFA9BFC6356F98A84255DC0 114 | 2023/09/29 13:57 0 54ECD2FF4FED939B7F4EE18BE39405B7 115 | 2023/10/18 15:33 0 5549F2EF46792CB610A311BD8502E978 116 | 2023/10/20 22:48 0 56B6CEDF4EAF3123DF6C629AA80AC360 117 | 2023/10/18 15:33 0 59CF39294D2B198937E4E597D481A87F 118 | 2023/10/14 10:18 0 5B9A4ED843A21EF83ABF3BAAAEFD2680 119 | 2023/09/21 17:40 0 5D496FD145DA71A1EC758CB0162E8D7C 120 | 2023/10/23 16:37 0 5F1C919842DD0A018610E6BE1E0EB9EB 121 | 2023/10/24 16:00 0 6010B3CC48A8E57EA8FEE1A017E5EDBE 122 | 2023/09/29 13:50 0 60D52B3E4A8A371CB42BE4ABD405884D 123 | 2023/10/14 10:19 0 61AB935649B9DE70606E65BA8EAA352C 124 | 2023/09/21 17:51 0 69543B9745A5E80A138F27A2ABED63C6 125 | 2023/11/01 11:30 0 69BB875C425685A0F3DCE184AE01780A 126 | 2023/10/20 23:41 0 7134DC984CF4031F4B8BCBAC542CC6E8 127 | 2023/10/14 10:22 0 726528504A694A1DE78CE78DE3F04CBC 128 | 2023/09/25 12:14 0 75F82CC74D0D42C3EB3879B0195E6E21 129 | 2023/10/14 10:22 0 76FA0A36457A8DCD2F3584AB92074A0D 130 | 2023/10/14 10:20 0 786D0FF14EADA723232127B34BE0DA99 131 | 2023/10/18 15:34 0 79256F414A9DC2B74B7971A8C9D0AA81 132 | 2023/09/29 13:56 0 7939A9F74CDFF85FFEDCB684C30E278C 133 | 2023/10/14 10:22 0 79EEB8C046544B4D0CE1F6AFF5E4CD95 134 | 2023/10/23 16:01 0 7DCC329A41324A0079001492ED677D8A 135 | 2023/10/01 15:33 0 7EF1AD2C412852F43D3CEE802767F885 136 | 2023/09/29 13:51 0 7F4EE5FE42D9834B3B1944B294089397 137 | 2023/09/29 14:53 0 7F85BDD8492DCEE3036DDB9E1C1384E8 138 | 2023/09/26 12:23 0 826A99B241206E7D6FB9AD9884BB53A5 139 | 2023/10/14 10:20 0 8270E18947455432EFD01F8CED3743AC 140 | 2023/09/22 19:23 0 82BC3EA04D89527BF27604A5000D16D0 141 | 2023/09/21 22:55 0 8397F19C4F8C9A7D8E7CABBD640AA499 142 | 2023/10/23 16:37 0 877641B546B2886657612E8893D6F955 143 | 2023/10/18 15:45 0 87CF640F442E47E3C42979BA4562A6F8 144 | 2023/09/29 14:13 0 89E4A6B24597B7260D990780CA3579E0 145 | 2023/10/01 16:36 0 8D1E2A8B4F6D9EFB635E619AC9681B1F 146 | 2023/10/25 00:49 0 908B77564C842EC5F5E41AA1AFB800BB 147 | 2023/09/29 14:11 0 913632BB45F61B9F4CB865B5173D6553 148 | 2023/10/25 15:16 0 91B493A743E6290A97254E826DD9981D 149 | 2023/10/14 10:21 0 957C4DE7490C3264C424309CDE38C2B7 150 | 2023/09/29 13:58 0 9723DCEC49CAE1B1B3D07BAAB124F58C 151 | 2023/09/22 00:05 0 9B8A464A4D6DE44FD12781B535EF09FA 152 | 2023/10/22 14:21 0 9E4BBFAF4AFB1402B89E5DADC08ED00E 153 | 2023/09/21 23:43 0 9F8FBF7B45A60C8BB595529F67716181 154 | 2023/10/18 15:45 0 A07CBD934A17BF6BAAA11699A346F8C9 155 | 2023/10/01 15:33 0 A17121914215B914EC902A9173923FB9 156 | 2023/10/22 13:50 0 A1C9217941FC164787BE609809A8EB78 157 | 2023/10/21 22:22 0 A36E4C5E495F6A90ED52609D6BE9F849 158 | 2023/09/21 19:42 0 A67481AB422C52A7A9CC61BC48CC69F9 159 | 2023/10/18 15:35 0 A6C436CD4128C65A16223C806EB5DCA3 160 | 2023/09/29 14:10 0 A7A3EE544E31EF64E064E3A8E927CE43 161 | 2023/09/29 14:54 0 A8A0BB7045BD0F169D8BDA923E10389A 162 | 2023/09/29 14:00 0 A8E3A84A41C841FC0B6C6DA8C3ED02A9 163 | 2023/10/18 15:35 0 A9851BBD4AB1A0C8CDE58EB31DAC01ED 164 | 2023/10/31 21:52 0 AB37C7F44EB127B871B02084BA9AFFEC 165 | 2023/10/14 10:18 0 ABEDBE8142A4A6BEAA8F6982100BF9F5 166 | 2023/10/14 10:20 0 B13490D7401D2E5BD2D29DB06A8DFB21 167 | 2023/10/23 15:17 0 B33B0E2F48479BECBD4C528F3ADDF4CC 168 | 2023/10/14 10:21 0 B629AA8B415B2F70D26D128F74B0BFE0 169 | 2023/09/29 14:29 0 BB8283BF47D029B72FC7F8BD42620BA1 170 | 2023/09/21 22:49 0 BCFC43F34E198D6F4056208A7C608096 171 | 2023/10/23 16:53 0 BD1502C249496369E40F948A0904145B 172 | 2023/09/29 13:54 0 BD9606D0431948B2878564AB5AAB7491 173 | 2023/10/14 10:18 0 C19E5F3F4DDE6D9B2DD9C58406A90552 174 | 2023/10/01 16:20 0 C1F475334584249808534095A47A2858 175 | 2023/09/26 00:54 0 C4D3E359444ED333BD64D4934E280F24 176 | 2023/10/01 14:55 0 C74C14D242CDF2B08AC197B3DD322A11 177 | 2023/09/29 14:11 0 C8845C2048F947A7A67CF7BFF3D031FF 178 | 2023/10/22 14:04 0 CB1CCF944F6234AC2E25ED93CAB2F265 179 | 2023/10/14 10:21 0 CD32D1CD4C9933B9DBC1719E07D74DBC 180 | 2023/10/14 10:21 0 CEBB40604A1D642ED4552DB485E689FC 181 | 2023/09/29 13:57 0 CF441FDA48D13EA7B8169CAAB07F53F9 182 | 2023/10/18 15:34 0 D380F86A424CE26E79C241ACC84D8870 183 | 2023/10/24 00:22 0 D381A536498F451B136562A56FFB1437 184 | 2023/10/14 10:18 0 D3BAED194249AC57C25CBAAC06678AE4 185 | 2023/09/29 14:41 0 D734D00C4078439671CDA4AB3A89F1DC 186 | 2023/10/14 10:19 0 DAE3CA8C4FE16D0B332447A6F2CFB008 187 | 2023/10/14 10:18 0 DBE0354F47A4AA786E170A966AF2414E 188 | 2023/10/14 10:19 0 E069FBEA40242E138C30F8B38A827F68 189 | 2023/10/18 15:33 0 E101A85645B973CAC9377AA7040BC8DD 190 | 2023/09/29 13:56 0 E349A31B4626F4D6277650A9100CFD32 191 | 2023/10/20 15:34 0 E3BAD7E24AA724C2608EE28D904F7BBC 192 | 2023/09/29 13:55 0 E4A942D2494ABA48C8C437AF18512E9F 193 | 2023/10/14 10:21 0 E54760C943EF1A4F0C7AAA8013CFEBBE 194 | 2023/09/22 19:33 0 E599280B4819A531A0B854BCADBDAD06 195 | 2023/09/26 20:29 0 E6433148482CE7E2AE3B3C9CC579F22C 196 | 2023/10/25 01:21 0 E64571CA472DFC18A3E2F0B5A6AEC6D3 197 | 2023/10/14 10:19 0 E6E394654F10500357319D803097C83F 198 | 2023/10/01 16:35 0 E963F753417955FDC2F0029741ED2F49 199 | 2023/10/18 15:35 0 E9BB111843EECDAC8D3D69852A84479F 200 | 2023/10/14 10:19 0 EA116D094407934BEEBA358223AF2EEB 201 | 2023/10/25 00:33 0 EB0796C5438C318E5FEAB0A6C6038333 202 | 2023/09/21 23:25 0 EBC6BB4D4CF8A10717F2BC9EB3DA5562 203 | 2023/10/31 21:37 0 ED489158414AC65572C6BAABFBFE1DD1 204 | 2023/10/21 22:38 0 ED8D215442026BEB7EF557835AF5A5C1 205 | 2023/09/29 13:50 0 EEF246F74DAFB8C51E6EFFAF0654F80A 206 | 2023/10/01 15:00 0 EF7E07C84042A181D8595BBACB9BCCBE 207 | 2023/10/23 14:58 0 F005FAD6427883946231B59A9643E998 208 | 2023/10/14 10:22 0 F87BF8044882363E6B2889BE40A3C1BD 209 | 2023/09/29 14:47 0 F930B613468F830EFA0C6D9C32C3C45D 210 | 2023/09/29 13:52 0 FA543BF44BDABC8FBF88809915B8E068 211 | 2023/09/29 14:30 0 FB158E8D4CC6457E5E994BA03108A194 212 | 2023/10/14 10:21 0 FCFE11904A3B6A603A5A3F8CF05713AE 213 | 138 File(s) 0 bytes 214 | 215 | Directory of C:\Users\HP\AppData\Local\Game\Saved\Logs 216 | 217 | 2024/02/05 13:11 . 218 | 2024/02/05 13:11 .. 219 | 2024/01/12 17:05 12,944 cef3.log 220 | 2024/02/05 13:11 371,423 Game.log 221 | 2023/09/09 17:58 194,191 Game_2.log 222 | 2023/07/31 18:36 603,921 Game_3.log 223 | 2024/01/31 15:48 471,327 Game-backup-2024.01.31-07.48.15.log 224 | 2024/01/31 16:04 1,930,085 Game-backup-2024.01.31-08.04.12.log 225 | 2024/01/31 17:36 6,222,261 Game-backup-2024.01.31-09.36.10.log 226 | 2024/01/31 18:32 10,937,240 Game-backup-2024.01.31-10.32.08.log 227 | 2024/01/31 21:45 5,547,839 Game-backup-2024.01.31-13.45.41.log 228 | 9 File(s) 26,291,231 bytes 229 | 230 | Directory of C:\Users\HP\AppData\Local\Game\Saved\PersistentDownloadDir 231 | 232 | 2023/07/20 13:07 . 233 | 2023/07/20 13:07 .. 234 | 2024/01/31 21:45 82 startup.settings 235 | 2024/02/05 13:11 34,325 User.settings 236 | 2 File(s) 34,407 bytes 237 | 238 | Directory of C:\Users\HP\AppData\Local\Game\Saved\SaveGames 239 | 240 | 2024/02/05 13:11 . 241 | 2024/02/05 13:11 .. 242 | 2023/08/14 15:30 1,290 PLOT_SAVE_GAME.sav 243 | 2023/07/20 13:06 1,303 XGSDK_BILIBILI_SAVE_DATA.sav 244 | 2024/01/31 20:59 1,809 XGSDK_LOGIN_USER.sav 245 | 2023/07/20 13:06 1,298 XGSDK_SAVE_DATA_MONITOR.sav 246 | 2024/02/05 13:11 1,268 XGSDK_SAVE_GAME.sav 247 | 5 File(s) 6,968 bytes 248 | 249 | Directory of C:\Users\HP\AppData\Local\Game\Saved\webcache 250 | 251 | 2023/07/20 13:06 . 252 | 2023/07/20 13:06 .. 253 | 2024/01/26 23:04 Cache 254 | 2023/07/20 13:06 GPUCache 255 | 2024/01/12 17:17 28,672 Cookies 256 | 2024/01/12 17:17 0 Cookies-journal 257 | 2024/01/31 21:02 131,072 Visited Links 258 | 3 File(s) 159,744 bytes 259 | 260 | Directory of C:\Users\HP\AppData\Local\Game\Saved\webcache\Cache 261 | 262 | 2024/01/26 23:04 . 263 | 2024/01/26 23:04 .. 264 | 2024/01/31 21:02 45,056 data_0 265 | 2024/01/31 21:45 270,336 data_1 266 | 2024/01/12 17:16 1,056,768 data_2 267 | 2024/01/31 21:02 4,202,496 data_3 268 | 2023/07/20 13:32 4,091,446 f_000002 269 | 2023/07/20 13:32 487,481 f_000008 270 | 2023/07/20 14:44 462,645 f_00000d 271 | 2023/07/20 14:44 538,795 f_000011 272 | 2023/07/20 14:44 535,829 f_000013 273 | 2023/07/20 15:05 487,481 f_000014 274 | 2023/07/20 15:05 487,481 f_000015 275 | 2023/07/20 16:20 191,224 f_000017 276 | 2023/07/20 16:20 173,135 f_000018 277 | 2023/07/20 16:20 33,718 f_000019 278 | 2023/07/20 16:23 63,455 f_00001b 279 | 2023/07/20 16:23 56,748 f_00001c 280 | 2023/07/20 16:23 43,439 f_00001d 281 | 2023/07/20 16:23 69,154 f_00001e 282 | 2023/07/20 16:23 51,508 f_00001f 283 | 2023/07/20 16:23 52,827 f_000020 284 | 2023/07/20 16:23 63,880 f_000021 285 | 2023/07/20 16:23 55,623 f_000022 286 | 2023/07/20 16:23 49,474 f_000023 287 | 2023/07/20 16:23 57,618 f_000024 288 | 2023/07/20 16:23 43,751 f_000025 289 | 2023/07/20 16:23 57,744 f_000026 290 | 2023/07/20 16:23 46,324 f_000027 291 | 2023/07/20 16:23 63,443 f_000028 292 | 2023/07/20 16:23 62,922 f_000029 293 | 2023/07/20 16:23 64,642 f_00002a 294 | 2023/07/20 16:23 53,029 f_00002b 295 | 2023/07/20 16:23 69,788 f_00002c 296 | 2023/07/21 16:33 17,656 f_000031 297 | 2023/07/28 13:31 18,640 f_00003f 298 | 2023/07/29 13:16 33,718 f_000042 299 | 2023/07/29 13:16 191,224 f_000043 300 | 2023/07/29 13:16 173,135 f_000044 301 | 2023/08/01 15:04 1,998,844 f_000046 302 | 2023/08/07 11:23 577,953 f_00004c 303 | 2023/08/07 11:26 553,616 f_00004d 304 | 2023/08/07 11:26 483,832 f_00004e 305 | 2023/08/07 11:26 647,486 f_00004f 306 | 2023/08/21 10:40 828,416 f_000059 307 | 2023/08/21 10:40 24,240 f_00005a 308 | 2023/08/21 10:40 18,196 f_00005b 309 | 2023/08/21 10:40 25,580 f_00005c 310 | 2023/08/21 10:41 33,718 f_00005d 311 | 2023/08/30 16:27 20,924 f_00006b 312 | 2023/08/30 16:27 19,460 f_000074 313 | 2023/09/20 17:55 920,174 f_000078 314 | 2023/09/20 17:55 27,972 f_00007d 315 | 2023/09/21 17:21 675,499 f_000083 316 | 2023/09/21 17:21 496,580 f_000084 317 | 2023/09/22 16:41 33,718 f_00008e 318 | 2023/09/25 11:37 487,481 f_0000a4 319 | 2023/10/12 10:08 669,611 f_0000b5 320 | 2023/10/12 10:08 28,632 f_0000b6 321 | 2023/10/20 15:30 39,456 f_0000cc 322 | 2023/10/24 23:54 773,253 f_0000ce 323 | 2023/10/31 21:24 589,782 f_0000cf 324 | 2023/10/31 21:24 19,748 f_0000d0 325 | 2023/11/03 12:51 460,958 f_0000d1 326 | 2023/11/03 12:51 463,472 f_0000d3 327 | 2023/11/03 12:51 693,614 f_0000d4 328 | 2023/11/03 12:51 535,522 f_0000d5 329 | 2023/11/03 12:51 586,503 f_0000d6 330 | 2023/11/03 12:51 30,392 f_0000da 331 | 2023/11/03 12:51 37,920 f_0000db 332 | 2023/11/03 12:51 23,256 f_0000dc 333 | 2023/11/03 12:51 22,432 f_0000dd 334 | 2023/11/03 12:51 675,982 f_0000de 335 | 2023/11/03 12:51 820,302 f_0000df 336 | 2023/11/03 12:52 463,472 f_0000e0 337 | 2023/11/03 12:52 937,398 f_0000e1 338 | 2023/11/20 14:32 937,249 f_0000e5 339 | 2023/11/20 14:33 23,052 f_0000e6 340 | 2023/11/22 15:29 535,522 f_0000e8 341 | 2023/11/29 00:52 460,958 f_0000ea 342 | 2023/12/13 03:08 21,488 f_0000ec 343 | 2023/12/14 19:02 397,332 f_0000ee 344 | 2023/12/14 19:02 16,580 f_0000ef 345 | 2023/12/14 19:02 573,065 f_0000f0 346 | 2023/12/14 19:02 552,441 f_0000f1 347 | 2023/12/14 19:02 28,364 f_0000f2 348 | 2023/12/14 19:02 550,491 f_0000f3 349 | 2023/12/14 19:02 25,060 f_0000f4 350 | 2023/12/14 19:02 484,073 f_0000f5 351 | 2023/12/14 19:02 900,626 f_0000f6 352 | 2023/12/14 19:02 332,090 f_0000f7 353 | 2023/12/14 19:02 565,888 f_0000f8 354 | 2023/12/14 19:02 608,085 f_0000f9 355 | 2023/12/14 19:02 552,441 f_0000fa 356 | 2023/12/14 19:03 397,332 f_0000fb 357 | 2023/12/28 12:52 573,065 f_000103 358 | 2023/12/28 12:52 484,073 f_000104 359 | 2024/01/12 17:05 33,718 f_000106 360 | 2024/01/12 17:06 17,093 f_000107 361 | 2024/01/12 17:16 37,730 f_000108 362 | 2024/01/18 02:22 22,511 f_000109 363 | 2024/01/18 02:22 797,163 f_00010a 364 | 2024/01/18 02:22 16,492 f_00010b 365 | 2024/01/18 23:45 462,245 f_000112 366 | 2024/01/18 23:45 671,860 f_000113 367 | 2024/01/18 23:45 599,945 f_000114 368 | 2024/01/18 23:45 752,541 f_000115 369 | 2024/01/18 23:46 32,808 f_000117 370 | 2024/01/18 23:46 361,535 f_00011f 371 | 2024/01/18 23:46 576,407 f_000121 372 | 2024/01/20 23:10 538,795 f_000123 373 | 2024/01/24 12:01 382,287 f_00012b 374 | 2024/01/24 23:30 29,244 f_00012c 375 | 2024/01/24 23:30 38,992 f_00012d 376 | 2024/01/24 23:30 36,808 f_00012e 377 | 2024/01/24 23:30 37,484 f_00012f 378 | 2024/01/24 23:30 40,268 f_000130 379 | 2024/01/24 23:30 33,376 f_000131 380 | 2024/01/24 23:30 35,684 f_000132 381 | 2024/01/24 23:30 39,576 f_000133 382 | 2024/01/24 23:30 37,552 f_000134 383 | 2024/01/24 23:30 40,340 f_000135 384 | 2024/01/24 23:30 41,552 f_000136 385 | 2024/01/24 23:30 41,004 f_000137 386 | 2024/01/24 23:30 39,084 f_000138 387 | 2024/01/24 23:30 27,812 f_000139 388 | 2024/01/24 23:30 40,168 f_00013a 389 | 2024/01/24 23:30 38,552 f_00013b 390 | 2024/01/26 23:04 361,535 f_00013c 391 | 2024/01/26 23:04 498,529 f_00013d 392 | 2024/01/26 23:04 41,108 f_00013e 393 | 2024/01/26 23:04 576,407 f_00013f 394 | 2024/01/26 23:04 797,051 f_000140 395 | 2024/01/26 23:04 672,083 f_000141 396 | 2024/01/26 23:04 593,190 f_000142 397 | 2023/07/20 13:06 524,656 index 398 | 134 File(s) 49,253,487 bytes 399 | 400 | Directory of C:\Users\HP\AppData\Local\Game\Saved\webcache\GPUCache 401 | 402 | 2023/07/20 13:06 . 403 | 2023/07/20 13:06 .. 404 | 2023/07/20 13:06 8,192 data_0 405 | 2024/01/31 21:07 270,336 data_1 406 | 2023/07/20 13:06 8,192 data_2 407 | 2023/07/20 13:06 8,192 data_3 408 | 2023/07/20 13:06 262,512 index 409 | 5 File(s) 557,424 bytes 410 | 411 | Directory of C:\Users\HP\AppData\Local\Game\Saved\xg_111111639 412 | 413 | 2024/01/31 15:50 . 414 | 2024/01/31 15:50 .. 415 | 2023/12/14 18:02 8,192 game_stat.db 416 | 2023/12/14 18:02 160 pc_bili.dat 417 | 2024/01/31 15:50 160 pc_jinshan.dat 418 | 3 File(s) 8,512 bytes 419 | 420 | Directory of C:\Users\HP\AppData\Local\Game\Saved\xg_111111680 421 | 422 | 2024/02/05 13:11 . 423 | 2024/02/05 13:11 .. 424 | 2024/02/05 13:11 8,192 game_stat.db 425 | 2024/02/05 13:11 160 pc_seasun.dat 426 | 2 File(s) 8,352 bytes 427 | 428 | Total Files Listed: 429 | 327 File(s) 76,337,482 bytes 430 | 41 Dir(s) 267,012,898,816 bytes free 431 | -------------------------------------------------------------------------------- /docs/国际服兼容研究/after-2.txt: -------------------------------------------------------------------------------- 1 | Volume in drive C is Windows 2 | Volume Serial Number is D297-3B1E 3 | 4 | Directory of C:\Users\HP\AppData\Local\Game\Saved 5 | 6 | 2023/12/14 18:02 . 7 | 2023/12/14 18:02 .. 8 | 2023/07/20 13:06 Config 9 | 2024/01/23 17:26 data 10 | 2024/01/31 20:59 Logs 11 | 2023/07/20 13:07 PersistentDownloadDir 12 | 2024/01/31 15:50 SaveGames 13 | 2023/07/20 13:06 webcache 14 | 2024/01/31 15:50 xg_111111639 15 | 2023/07/20 13:06 32 deviceid.kxy 16 | 1 File(s) 32 bytes 17 | 18 | Directory of C:\Users\HP\AppData\Local\Game\Saved\Config 19 | 20 | 2023/07/20 13:06 . 21 | 2023/07/20 13:06 .. 22 | 2024/01/31 20:59 CrashReportClient 23 | 2023/07/20 13:06 WindowsNoEditor 24 | 0 File(s) 0 bytes 25 | 26 | Directory of C:\Users\HP\AppData\Local\Game\Saved\Config\CrashReportClient 27 | 28 | 2024/01/31 20:59 . 29 | 2024/01/31 20:59 .. 30 | 2024/01/31 16:48 UE4CC-Windows-1D6607574EDCB81A3D2C31A5DBE283B2 31 | 2024/01/31 15:50 UE4CC-Windows-88005AF545E7A9FA32500BA0B9DA6B4E 32 | 2024/01/31 17:38 UE4CC-Windows-C3F2BFE24EFD558DDCF53ABC4D0B4B49 33 | 2024/01/31 15:47 UE4CC-Windows-DB77FC7D4EABD8EA249D5B8912E1049C 34 | 2024/01/31 20:59 UE4CC-Windows-F58A93724804F3552108C9825B501C4B 35 | 0 File(s) 0 bytes 36 | 37 | Directory of C:\Users\HP\AppData\Local\Game\Saved\Config\CrashReportClient\UE4CC-Windows-1D6607574EDCB81A3D2C31A5DBE283B2 38 | 39 | 2024/01/31 16:48 . 40 | 2024/01/31 16:48 .. 41 | 2024/01/31 16:48 112 CrashReportClient.ini 42 | 1 File(s) 112 bytes 43 | 44 | Directory of C:\Users\HP\AppData\Local\Game\Saved\Config\CrashReportClient\UE4CC-Windows-88005AF545E7A9FA32500BA0B9DA6B4E 45 | 46 | 2024/01/31 15:50 . 47 | 2024/01/31 15:50 .. 48 | 2024/01/31 15:50 112 CrashReportClient.ini 49 | 1 File(s) 112 bytes 50 | 51 | Directory of C:\Users\HP\AppData\Local\Game\Saved\Config\CrashReportClient\UE4CC-Windows-C3F2BFE24EFD558DDCF53ABC4D0B4B49 52 | 53 | 2024/01/31 17:38 . 54 | 2024/01/31 17:38 .. 55 | 2024/01/31 17:38 112 CrashReportClient.ini 56 | 1 File(s) 112 bytes 57 | 58 | Directory of C:\Users\HP\AppData\Local\Game\Saved\Config\CrashReportClient\UE4CC-Windows-DB77FC7D4EABD8EA249D5B8912E1049C 59 | 60 | 2024/01/31 15:47 . 61 | 2024/01/31 15:47 .. 62 | 2024/01/31 15:47 112 CrashReportClient.ini 63 | 1 File(s) 112 bytes 64 | 65 | Directory of C:\Users\HP\AppData\Local\Game\Saved\Config\CrashReportClient\UE4CC-Windows-F58A93724804F3552108C9825B501C4B 66 | 67 | 2024/01/31 20:59 . 68 | 2024/01/31 20:59 .. 69 | 2024/01/31 20:59 112 CrashReportClient.ini 70 | 1 File(s) 112 bytes 71 | 72 | Directory of C:\Users\HP\AppData\Local\Game\Saved\Config\WindowsNoEditor 73 | 74 | 2023/07/20 13:06 . 75 | 2023/07/20 13:06 .. 76 | 2024/01/31 20:59 2 ApexDestruction.ini 77 | 2023/07/20 13:06 2 Blindage.ini 78 | 2024/01/31 20:59 2 Compat.ini 79 | 2024/01/31 20:59 2 ConcertSyncCore.ini 80 | 2024/01/31 20:59 2 ControlRig.ini 81 | 2024/01/31 20:59 2 DeviceProfiles.ini 82 | 2024/01/31 20:59 2 DungeonArchitect.ini 83 | 2024/01/31 20:59 2 EditorScriptingUtilities.ini 84 | 2024/01/31 21:45 3,237 Engine.ini 85 | 2024/01/31 20:59 41 Game.ini 86 | 2024/01/31 20:59 2 GameplayTags.ini 87 | 2024/01/31 21:45 1,092 GameUserSettings.ini 88 | 2024/01/31 20:59 2 Hardware.ini 89 | 2024/01/31 21:45 12,692 Input.ini 90 | 2024/01/31 20:59 2 MagicLeap.ini 91 | 2024/01/31 20:59 2 MagicLeapLightEstimation.ini 92 | 2024/01/31 20:59 2 MotoSynth.ini 93 | 2024/01/31 20:59 2 Niagara.ini 94 | 2024/01/31 20:59 2 Paper2D.ini 95 | 2024/01/31 20:59 2 PhysXVehicles.ini 96 | 2024/01/31 20:59 2 RuntimeOptions.ini 97 | 2024/01/31 20:59 2 Scalability.ini 98 | 2024/01/31 20:59 2 Synthesis.ini 99 | 2024/01/31 20:59 2 VariantManagerContent.ini 100 | 24 File(s) 17,102 bytes 101 | 102 | Directory of C:\Users\HP\AppData\Local\Game\Saved\data 103 | 104 | 2024/01/23 17:26 . 105 | 2024/01/23 17:26 .. 106 | 2023/09/29 13:51 0 0482CBAE48410B361440FA8DE56159F5 107 | 2023/09/25 13:35 0 0778A2844A91BB0C1F31379CCDD735CF 108 | 2023/09/29 14:12 0 09A6153B4FC0406BC58C62A73BE5AF87 109 | 2023/09/29 13:53 0 0A7B0AB84D3269E32D40EFA53E897745 110 | 2023/09/29 13:58 0 0F3F08804D346AF0DF3742949AD28B77 111 | 2023/10/18 15:34 0 1087811D46B953A1ACBA6B8F4C939788 112 | 2023/10/18 15:34 0 122B22FA4E687C3D43553FB28429A357 113 | 2023/10/20 23:29 0 146772504164A09E6CA79C9C3FAFDEBF 114 | 2023/10/18 15:46 0 161371824FDE3707CC277EABE76A6B5C 115 | 2023/10/01 15:00 0 16B540AA427AA9B74B4232A13B75C1D6 116 | 2023/10/01 15:10 0 179EF9ED4BBAF117A49C32AC27CCF9D9 117 | 2023/11/01 11:12 0 17B398FB4BC1F39B155C5DA7541346F2 118 | 2023/10/18 15:46 0 17DEAC7A45B77CD432AC59897DC46F67 119 | 2023/10/01 15:47 0 18DFE87A442BDB1318A4D19F642EE061 120 | 2023/10/01 16:04 0 1AF764D7461EE8F49947D6BC355AD9FD 121 | 2023/09/29 13:53 0 1B1F9A124F100A9BC74CD0AE070D6C80 122 | 2023/09/21 18:40 0 1C1F85D24F48F0E7A129A2B17807FE07 123 | 2023/10/01 15:16 0 1C9C585A4F55D5FAA1489DBA06484DCB 124 | 2023/10/23 14:36 0 1F71D95247B77AFA1CEAB3B51DA1210C 125 | 2023/10/18 15:35 0 224740334D796E0E96CB298A53BAC612 126 | 2023/10/14 10:20 0 2361AC4244C05036B250B4BEE73604E3 127 | 2023/10/01 16:04 0 2B2C4C1541D8523CB05C34AA2263D8B2 128 | 2023/10/14 10:20 0 2BC5430F4A454FE272D29289597CF27A 129 | 2023/10/23 16:24 0 31A67A224077AFC6FACE32BAEAA0CF08 130 | 2023/09/26 20:41 0 342C163C4AD25807031ABBBE806B8ED4 131 | 2023/10/23 16:38 0 372B74E44E69AC2D822276A1064D6241 132 | 2023/10/14 10:20 0 37A2670C472BD77CF6FCC8B440FEBC1B 133 | 2023/10/14 10:19 0 396BE6BF4D175A3F04CCFB9012AE690F 134 | 2023/10/18 15:34 0 3AC284224BE65E5040E812AE0545659B 135 | 2023/10/26 11:26 0 3C8FC4564FD54872709299A50E9C4ECE 136 | 2023/09/29 13:57 0 410294CD4135F1BDFC0C6082448CDAC0 137 | 2023/09/29 13:57 0 448308AC49BFF18CC35E14AE4431C381 138 | 2023/10/20 23:02 0 45E974694F82CBD16774039BA1302FA4 139 | 2023/10/31 22:03 0 4788F4E041B0DFBC3CCB7C9F366CEB10 140 | 2023/10/01 15:12 0 482D86DD423428882A3AC3B93F2288DA 141 | 2023/09/29 14:29 0 5079540C41E53218A3B9D78B1D6EDC47 142 | 2023/09/22 19:33 0 5249A7EF460513C750D50EA0F8E6041E 143 | 2023/10/18 15:46 0 526CD741446FFEB1293A8EA97A99CD97 144 | 2023/10/18 15:34 0 53DE37414DFA9BFC6356F98A84255DC0 145 | 2023/09/29 13:57 0 54ECD2FF4FED939B7F4EE18BE39405B7 146 | 2023/10/18 15:33 0 5549F2EF46792CB610A311BD8502E978 147 | 2023/10/20 22:48 0 56B6CEDF4EAF3123DF6C629AA80AC360 148 | 2023/10/18 15:33 0 59CF39294D2B198937E4E597D481A87F 149 | 2023/10/14 10:18 0 5B9A4ED843A21EF83ABF3BAAAEFD2680 150 | 2023/09/21 17:40 0 5D496FD145DA71A1EC758CB0162E8D7C 151 | 2023/10/23 16:37 0 5F1C919842DD0A018610E6BE1E0EB9EB 152 | 2023/10/24 16:00 0 6010B3CC48A8E57EA8FEE1A017E5EDBE 153 | 2023/09/29 13:50 0 60D52B3E4A8A371CB42BE4ABD405884D 154 | 2023/10/14 10:19 0 61AB935649B9DE70606E65BA8EAA352C 155 | 2023/09/21 17:51 0 69543B9745A5E80A138F27A2ABED63C6 156 | 2023/11/01 11:30 0 69BB875C425685A0F3DCE184AE01780A 157 | 2023/10/20 23:41 0 7134DC984CF4031F4B8BCBAC542CC6E8 158 | 2023/10/14 10:22 0 726528504A694A1DE78CE78DE3F04CBC 159 | 2023/09/25 12:14 0 75F82CC74D0D42C3EB3879B0195E6E21 160 | 2023/10/14 10:22 0 76FA0A36457A8DCD2F3584AB92074A0D 161 | 2023/10/14 10:20 0 786D0FF14EADA723232127B34BE0DA99 162 | 2023/10/18 15:34 0 79256F414A9DC2B74B7971A8C9D0AA81 163 | 2023/09/29 13:56 0 7939A9F74CDFF85FFEDCB684C30E278C 164 | 2023/10/14 10:22 0 79EEB8C046544B4D0CE1F6AFF5E4CD95 165 | 2023/10/23 16:01 0 7DCC329A41324A0079001492ED677D8A 166 | 2023/10/01 15:33 0 7EF1AD2C412852F43D3CEE802767F885 167 | 2023/09/29 13:51 0 7F4EE5FE42D9834B3B1944B294089397 168 | 2023/09/29 14:53 0 7F85BDD8492DCEE3036DDB9E1C1384E8 169 | 2023/09/26 12:23 0 826A99B241206E7D6FB9AD9884BB53A5 170 | 2023/10/14 10:20 0 8270E18947455432EFD01F8CED3743AC 171 | 2023/09/22 19:23 0 82BC3EA04D89527BF27604A5000D16D0 172 | 2023/09/21 22:55 0 8397F19C4F8C9A7D8E7CABBD640AA499 173 | 2023/10/23 16:37 0 877641B546B2886657612E8893D6F955 174 | 2023/10/18 15:45 0 87CF640F442E47E3C42979BA4562A6F8 175 | 2023/09/29 14:13 0 89E4A6B24597B7260D990780CA3579E0 176 | 2023/10/01 16:36 0 8D1E2A8B4F6D9EFB635E619AC9681B1F 177 | 2023/10/25 00:49 0 908B77564C842EC5F5E41AA1AFB800BB 178 | 2023/09/29 14:11 0 913632BB45F61B9F4CB865B5173D6553 179 | 2023/10/25 15:16 0 91B493A743E6290A97254E826DD9981D 180 | 2023/10/14 10:21 0 957C4DE7490C3264C424309CDE38C2B7 181 | 2023/09/29 13:58 0 9723DCEC49CAE1B1B3D07BAAB124F58C 182 | 2023/09/22 00:05 0 9B8A464A4D6DE44FD12781B535EF09FA 183 | 2023/10/22 14:21 0 9E4BBFAF4AFB1402B89E5DADC08ED00E 184 | 2023/09/21 23:43 0 9F8FBF7B45A60C8BB595529F67716181 185 | 2023/10/18 15:45 0 A07CBD934A17BF6BAAA11699A346F8C9 186 | 2023/10/01 15:33 0 A17121914215B914EC902A9173923FB9 187 | 2023/10/22 13:50 0 A1C9217941FC164787BE609809A8EB78 188 | 2023/10/21 22:22 0 A36E4C5E495F6A90ED52609D6BE9F849 189 | 2023/09/21 19:42 0 A67481AB422C52A7A9CC61BC48CC69F9 190 | 2023/10/18 15:35 0 A6C436CD4128C65A16223C806EB5DCA3 191 | 2023/09/29 14:10 0 A7A3EE544E31EF64E064E3A8E927CE43 192 | 2023/09/29 14:54 0 A8A0BB7045BD0F169D8BDA923E10389A 193 | 2023/09/29 14:00 0 A8E3A84A41C841FC0B6C6DA8C3ED02A9 194 | 2023/10/18 15:35 0 A9851BBD4AB1A0C8CDE58EB31DAC01ED 195 | 2023/10/31 21:52 0 AB37C7F44EB127B871B02084BA9AFFEC 196 | 2023/10/14 10:18 0 ABEDBE8142A4A6BEAA8F6982100BF9F5 197 | 2023/10/14 10:20 0 B13490D7401D2E5BD2D29DB06A8DFB21 198 | 2023/10/23 15:17 0 B33B0E2F48479BECBD4C528F3ADDF4CC 199 | 2023/10/14 10:21 0 B629AA8B415B2F70D26D128F74B0BFE0 200 | 2023/09/29 14:29 0 BB8283BF47D029B72FC7F8BD42620BA1 201 | 2023/09/21 22:49 0 BCFC43F34E198D6F4056208A7C608096 202 | 2023/10/23 16:53 0 BD1502C249496369E40F948A0904145B 203 | 2023/09/29 13:54 0 BD9606D0431948B2878564AB5AAB7491 204 | 2023/10/14 10:18 0 C19E5F3F4DDE6D9B2DD9C58406A90552 205 | 2023/10/01 16:20 0 C1F475334584249808534095A47A2858 206 | 2023/09/26 00:54 0 C4D3E359444ED333BD64D4934E280F24 207 | 2023/10/01 14:55 0 C74C14D242CDF2B08AC197B3DD322A11 208 | 2023/09/29 14:11 0 C8845C2048F947A7A67CF7BFF3D031FF 209 | 2023/10/22 14:04 0 CB1CCF944F6234AC2E25ED93CAB2F265 210 | 2023/10/14 10:21 0 CD32D1CD4C9933B9DBC1719E07D74DBC 211 | 2023/10/14 10:21 0 CEBB40604A1D642ED4552DB485E689FC 212 | 2023/09/29 13:57 0 CF441FDA48D13EA7B8169CAAB07F53F9 213 | 2023/10/18 15:34 0 D380F86A424CE26E79C241ACC84D8870 214 | 2023/10/24 00:22 0 D381A536498F451B136562A56FFB1437 215 | 2023/10/14 10:18 0 D3BAED194249AC57C25CBAAC06678AE4 216 | 2023/09/29 14:41 0 D734D00C4078439671CDA4AB3A89F1DC 217 | 2023/10/14 10:19 0 DAE3CA8C4FE16D0B332447A6F2CFB008 218 | 2023/10/14 10:18 0 DBE0354F47A4AA786E170A966AF2414E 219 | 2023/10/14 10:19 0 E069FBEA40242E138C30F8B38A827F68 220 | 2023/10/18 15:33 0 E101A85645B973CAC9377AA7040BC8DD 221 | 2023/09/29 13:56 0 E349A31B4626F4D6277650A9100CFD32 222 | 2023/10/20 15:34 0 E3BAD7E24AA724C2608EE28D904F7BBC 223 | 2023/09/29 13:55 0 E4A942D2494ABA48C8C437AF18512E9F 224 | 2023/10/14 10:21 0 E54760C943EF1A4F0C7AAA8013CFEBBE 225 | 2023/09/22 19:33 0 E599280B4819A531A0B854BCADBDAD06 226 | 2023/09/26 20:29 0 E6433148482CE7E2AE3B3C9CC579F22C 227 | 2023/10/25 01:21 0 E64571CA472DFC18A3E2F0B5A6AEC6D3 228 | 2023/10/14 10:19 0 E6E394654F10500357319D803097C83F 229 | 2023/10/01 16:35 0 E963F753417955FDC2F0029741ED2F49 230 | 2023/10/18 15:35 0 E9BB111843EECDAC8D3D69852A84479F 231 | 2023/10/14 10:19 0 EA116D094407934BEEBA358223AF2EEB 232 | 2023/10/25 00:33 0 EB0796C5438C318E5FEAB0A6C6038333 233 | 2023/09/21 23:25 0 EBC6BB4D4CF8A10717F2BC9EB3DA5562 234 | 2023/10/31 21:37 0 ED489158414AC65572C6BAABFBFE1DD1 235 | 2023/10/21 22:38 0 ED8D215442026BEB7EF557835AF5A5C1 236 | 2023/09/29 13:50 0 EEF246F74DAFB8C51E6EFFAF0654F80A 237 | 2023/10/01 15:00 0 EF7E07C84042A181D8595BBACB9BCCBE 238 | 2023/10/23 14:58 0 F005FAD6427883946231B59A9643E998 239 | 2023/10/14 10:22 0 F87BF8044882363E6B2889BE40A3C1BD 240 | 2023/09/29 14:47 0 F930B613468F830EFA0C6D9C32C3C45D 241 | 2023/09/29 13:52 0 FA543BF44BDABC8FBF88809915B8E068 242 | 2023/09/29 14:30 0 FB158E8D4CC6457E5E994BA03108A194 243 | 2023/10/14 10:21 0 FCFE11904A3B6A603A5A3F8CF05713AE 244 | 138 File(s) 0 bytes 245 | 246 | Directory of C:\Users\HP\AppData\Local\Game\Saved\Logs 247 | 248 | 2024/01/31 20:59 . 249 | 2024/01/31 20:59 .. 250 | 2024/01/12 17:05 12,944 cef3.log 251 | 2024/01/31 21:45 5,547,839 Game.log 252 | 2023/09/09 17:58 194,191 Game_2.log 253 | 2023/07/31 18:36 603,921 Game_3.log 254 | 2024/01/26 23:19 1,964,501 Game-backup-2024.01.26-15.19.14.log 255 | 2024/01/31 15:48 471,327 Game-backup-2024.01.31-07.48.15.log 256 | 2024/01/31 16:04 1,930,085 Game-backup-2024.01.31-08.04.12.log 257 | 2024/01/31 17:36 6,222,261 Game-backup-2024.01.31-09.36.10.log 258 | 2024/01/31 18:32 10,937,240 Game-backup-2024.01.31-10.32.08.log 259 | 9 File(s) 27,884,309 bytes 260 | 261 | Directory of C:\Users\HP\AppData\Local\Game\Saved\PersistentDownloadDir 262 | 263 | 2023/07/20 13:07 . 264 | 2023/07/20 13:07 .. 265 | 2024/01/31 21:45 82 startup.settings 266 | 2024/01/31 21:44 34,325 User.settings 267 | 2 File(s) 34,407 bytes 268 | 269 | Directory of C:\Users\HP\AppData\Local\Game\Saved\SaveGames 270 | 271 | 2024/01/31 15:50 . 272 | 2024/01/31 15:50 .. 273 | 2023/08/14 15:30 1,290 PLOT_SAVE_GAME.sav 274 | 2023/07/20 13:06 1,303 XGSDK_BILIBILI_SAVE_DATA.sav 275 | 2024/01/31 20:59 1,809 XGSDK_LOGIN_USER.sav 276 | 2023/07/20 13:06 1,298 XGSDK_SAVE_DATA_MONITOR.sav 277 | 4 File(s) 5,700 bytes 278 | 279 | Directory of C:\Users\HP\AppData\Local\Game\Saved\webcache 280 | 281 | 2023/07/20 13:06 . 282 | 2023/07/20 13:06 .. 283 | 2024/01/26 23:04 Cache 284 | 2023/07/20 13:06 GPUCache 285 | 2024/01/12 17:17 28,672 Cookies 286 | 2024/01/12 17:17 0 Cookies-journal 287 | 2024/01/31 21:02 131,072 Visited Links 288 | 3 File(s) 159,744 bytes 289 | 290 | Directory of C:\Users\HP\AppData\Local\Game\Saved\webcache\Cache 291 | 292 | 2024/01/26 23:04 . 293 | 2024/01/26 23:04 .. 294 | 2024/01/31 21:02 45,056 data_0 295 | 2024/01/31 21:45 270,336 data_1 296 | 2024/01/12 17:16 1,056,768 data_2 297 | 2024/01/31 21:02 4,202,496 data_3 298 | 2023/07/20 13:32 4,091,446 f_000002 299 | 2023/07/20 13:32 487,481 f_000008 300 | 2023/07/20 14:44 462,645 f_00000d 301 | 2023/07/20 14:44 538,795 f_000011 302 | 2023/07/20 14:44 535,829 f_000013 303 | 2023/07/20 15:05 487,481 f_000014 304 | 2023/07/20 15:05 487,481 f_000015 305 | 2023/07/20 16:20 191,224 f_000017 306 | 2023/07/20 16:20 173,135 f_000018 307 | 2023/07/20 16:20 33,718 f_000019 308 | 2023/07/20 16:23 63,455 f_00001b 309 | 2023/07/20 16:23 56,748 f_00001c 310 | 2023/07/20 16:23 43,439 f_00001d 311 | 2023/07/20 16:23 69,154 f_00001e 312 | 2023/07/20 16:23 51,508 f_00001f 313 | 2023/07/20 16:23 52,827 f_000020 314 | 2023/07/20 16:23 63,880 f_000021 315 | 2023/07/20 16:23 55,623 f_000022 316 | 2023/07/20 16:23 49,474 f_000023 317 | 2023/07/20 16:23 57,618 f_000024 318 | 2023/07/20 16:23 43,751 f_000025 319 | 2023/07/20 16:23 57,744 f_000026 320 | 2023/07/20 16:23 46,324 f_000027 321 | 2023/07/20 16:23 63,443 f_000028 322 | 2023/07/20 16:23 62,922 f_000029 323 | 2023/07/20 16:23 64,642 f_00002a 324 | 2023/07/20 16:23 53,029 f_00002b 325 | 2023/07/20 16:23 69,788 f_00002c 326 | 2023/07/21 16:33 17,656 f_000031 327 | 2023/07/28 13:31 18,640 f_00003f 328 | 2023/07/29 13:16 33,718 f_000042 329 | 2023/07/29 13:16 191,224 f_000043 330 | 2023/07/29 13:16 173,135 f_000044 331 | 2023/08/01 15:04 1,998,844 f_000046 332 | 2023/08/07 11:23 577,953 f_00004c 333 | 2023/08/07 11:26 553,616 f_00004d 334 | 2023/08/07 11:26 483,832 f_00004e 335 | 2023/08/07 11:26 647,486 f_00004f 336 | 2023/08/21 10:40 828,416 f_000059 337 | 2023/08/21 10:40 24,240 f_00005a 338 | 2023/08/21 10:40 18,196 f_00005b 339 | 2023/08/21 10:40 25,580 f_00005c 340 | 2023/08/21 10:41 33,718 f_00005d 341 | 2023/08/30 16:27 20,924 f_00006b 342 | 2023/08/30 16:27 19,460 f_000074 343 | 2023/09/20 17:55 920,174 f_000078 344 | 2023/09/20 17:55 27,972 f_00007d 345 | 2023/09/21 17:21 675,499 f_000083 346 | 2023/09/21 17:21 496,580 f_000084 347 | 2023/09/22 16:41 33,718 f_00008e 348 | 2023/09/25 11:37 487,481 f_0000a4 349 | 2023/10/12 10:08 669,611 f_0000b5 350 | 2023/10/12 10:08 28,632 f_0000b6 351 | 2023/10/20 15:30 39,456 f_0000cc 352 | 2023/10/24 23:54 773,253 f_0000ce 353 | 2023/10/31 21:24 589,782 f_0000cf 354 | 2023/10/31 21:24 19,748 f_0000d0 355 | 2023/11/03 12:51 460,958 f_0000d1 356 | 2023/11/03 12:51 463,472 f_0000d3 357 | 2023/11/03 12:51 693,614 f_0000d4 358 | 2023/11/03 12:51 535,522 f_0000d5 359 | 2023/11/03 12:51 586,503 f_0000d6 360 | 2023/11/03 12:51 30,392 f_0000da 361 | 2023/11/03 12:51 37,920 f_0000db 362 | 2023/11/03 12:51 23,256 f_0000dc 363 | 2023/11/03 12:51 22,432 f_0000dd 364 | 2023/11/03 12:51 675,982 f_0000de 365 | 2023/11/03 12:51 820,302 f_0000df 366 | 2023/11/03 12:52 463,472 f_0000e0 367 | 2023/11/03 12:52 937,398 f_0000e1 368 | 2023/11/20 14:32 937,249 f_0000e5 369 | 2023/11/20 14:33 23,052 f_0000e6 370 | 2023/11/22 15:29 535,522 f_0000e8 371 | 2023/11/29 00:52 460,958 f_0000ea 372 | 2023/12/13 03:08 21,488 f_0000ec 373 | 2023/12/14 19:02 397,332 f_0000ee 374 | 2023/12/14 19:02 16,580 f_0000ef 375 | 2023/12/14 19:02 573,065 f_0000f0 376 | 2023/12/14 19:02 552,441 f_0000f1 377 | 2023/12/14 19:02 28,364 f_0000f2 378 | 2023/12/14 19:02 550,491 f_0000f3 379 | 2023/12/14 19:02 25,060 f_0000f4 380 | 2023/12/14 19:02 484,073 f_0000f5 381 | 2023/12/14 19:02 900,626 f_0000f6 382 | 2023/12/14 19:02 332,090 f_0000f7 383 | 2023/12/14 19:02 565,888 f_0000f8 384 | 2023/12/14 19:02 608,085 f_0000f9 385 | 2023/12/14 19:02 552,441 f_0000fa 386 | 2023/12/14 19:03 397,332 f_0000fb 387 | 2023/12/28 12:52 573,065 f_000103 388 | 2023/12/28 12:52 484,073 f_000104 389 | 2024/01/12 17:05 33,718 f_000106 390 | 2024/01/12 17:06 17,093 f_000107 391 | 2024/01/12 17:16 37,730 f_000108 392 | 2024/01/18 02:22 22,511 f_000109 393 | 2024/01/18 02:22 797,163 f_00010a 394 | 2024/01/18 02:22 16,492 f_00010b 395 | 2024/01/18 23:45 462,245 f_000112 396 | 2024/01/18 23:45 671,860 f_000113 397 | 2024/01/18 23:45 599,945 f_000114 398 | 2024/01/18 23:45 752,541 f_000115 399 | 2024/01/18 23:46 32,808 f_000117 400 | 2024/01/18 23:46 361,535 f_00011f 401 | 2024/01/18 23:46 576,407 f_000121 402 | 2024/01/20 23:10 538,795 f_000123 403 | 2024/01/24 12:01 382,287 f_00012b 404 | 2024/01/24 23:30 29,244 f_00012c 405 | 2024/01/24 23:30 38,992 f_00012d 406 | 2024/01/24 23:30 36,808 f_00012e 407 | 2024/01/24 23:30 37,484 f_00012f 408 | 2024/01/24 23:30 40,268 f_000130 409 | 2024/01/24 23:30 33,376 f_000131 410 | 2024/01/24 23:30 35,684 f_000132 411 | 2024/01/24 23:30 39,576 f_000133 412 | 2024/01/24 23:30 37,552 f_000134 413 | 2024/01/24 23:30 40,340 f_000135 414 | 2024/01/24 23:30 41,552 f_000136 415 | 2024/01/24 23:30 41,004 f_000137 416 | 2024/01/24 23:30 39,084 f_000138 417 | 2024/01/24 23:30 27,812 f_000139 418 | 2024/01/24 23:30 40,168 f_00013a 419 | 2024/01/24 23:30 38,552 f_00013b 420 | 2024/01/26 23:04 361,535 f_00013c 421 | 2024/01/26 23:04 498,529 f_00013d 422 | 2024/01/26 23:04 41,108 f_00013e 423 | 2024/01/26 23:04 576,407 f_00013f 424 | 2024/01/26 23:04 797,051 f_000140 425 | 2024/01/26 23:04 672,083 f_000141 426 | 2024/01/26 23:04 593,190 f_000142 427 | 2023/07/20 13:06 524,656 index 428 | 134 File(s) 49,253,487 bytes 429 | 430 | Directory of C:\Users\HP\AppData\Local\Game\Saved\webcache\GPUCache 431 | 432 | 2023/07/20 13:06 . 433 | 2023/07/20 13:06 .. 434 | 2023/07/20 13:06 8,192 data_0 435 | 2024/01/31 21:07 270,336 data_1 436 | 2023/07/20 13:06 8,192 data_2 437 | 2023/07/20 13:06 8,192 data_3 438 | 2023/07/20 13:06 262,512 index 439 | 5 File(s) 557,424 bytes 440 | 441 | Directory of C:\Users\HP\AppData\Local\Game\Saved\xg_111111639 442 | 443 | 2024/01/31 15:50 . 444 | 2024/01/31 15:50 .. 445 | 2023/12/14 18:02 8,192 game_stat.db 446 | 2023/12/14 18:02 160 pc_bili.dat 447 | 2024/01/31 15:50 160 pc_jinshan.dat 448 | 3 File(s) 8,512 bytes 449 | 450 | Total Files Listed: 451 | 328 File(s) 77,921,277 bytes 452 | 50 Dir(s) 267,048,300,544 bytes free 453 | -------------------------------------------------------------------------------- /CBJQ_SS.main.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | @REM # Global Scope 3 | 4 | @REM ---------------------------------------------- 5 | @REM Program Initialization Stage 1 6 | 7 | @REM Set codepage to UTF-8(65001) 8 | @for /F "tokens=2 delims=:" %%i in ('chcp') do @( set /A codepage=%%i ) 9 | @call :func_ensureACP 10 | REM 已设定代码页,如遇乱码请检查文件编码或终端字体,通常可以得到解决。 11 | REM 若仍有乱码,请检查文件是否是UTF-8编码,且换行符是CRLF模式。 12 | 13 | setlocal enabledelayedexpansion 14 | 15 | @REM ---------------------------------------------- 16 | @REM 运行环境注意(普通玩家) 17 | 18 | @REM 1. 使用前请确认“用户变量设定区”的已经设置好了启动器路径。 19 | @REM 2. 除了“用户变量设定区”,其它都不要动。 20 | @REM 3. 请确保路径中不包含这些符号:"[]" 21 | 22 | @REM ---------------------------------------------- 23 | @REM 运行环境注意(高级玩家) 24 | 25 | @REM 1. 从Powershell启动可能会存在LANG环境变量,缺省值优先从LANG选择。 26 | @REM 2. 启动参数必须选项在前服务器在后,指定多个服务器会依次触发相应操作。 27 | @REM 3. 关于上一节第三点的补充说明:目的路径字符串不得包含启动器储存路径字符串。 28 | 29 | @REM pause 30 | @REM ---------------------------------------------- 31 | @REM 用户变量预设值区 32 | 33 | @set launcher_none=none 34 | 35 | @REM ---------------------------------------------- 36 | @REM 用户变量设定区 37 | 38 | @REM 请确保以下六项的每一项(若有需要)都存在,不存在的目录请先行创建,否则程序无法正常运行。 39 | 40 | @REM 以下三行请填入启动器的储存路径(包含文件名,不加引号,不可以为空,建议使用绝对路径,没有就填“%launcher_none%”)。若移动了储存路径,可能会错误识别未存在,尝试切换或删除目的文件即可解决。 41 | @set launcher_worldwide=%~dp0Launchers\worldwide\snow_launcher-worldwide.exe 42 | @set launcher_bilibili=%~dp0Launchers\snow_launcher-bilibili.exe 43 | @set launcher_kingsoft=%~dp0Launchers\snow_launcher-kingsoft.exe 44 | 45 | @REM 以下三行请填入启动器的目的地址(即原地址,包含文件名,不加引号,不可以为空)。路径完全相同时仅能启动一个,启动器限制。 46 | @set launcher_worldwide_dest=..\snow_launcher.exe 47 | @set launcher_bilibili_dest=..\snow_launcher.exe 48 | @set launcher_kingsoft_dest=..\snow_launcher.exe 49 | 50 | @REM 以下两句最多启用一个。 51 | @set LANG_default=zh 52 | @REM @set LANG_default=en 53 | 54 | @REM 如果需要启用国际服支持,请取消下面两行的注释状态,否则请添加注释状态。 55 | @set StartupSettingsName_homeland=startup-homeland.settings 56 | @set StartupSettingsName_worldwide=startup-worldwide.settings 57 | 58 | @REM 如果要启用GameIni切换功能,请设置以下变量为true,并设置相应的GameIni文件名变量。 59 | @set flag_enable_GameIni_switching=true 60 | 61 | @REM 以下三行请填入启动器的GameIni文件路径(包含文件名,不加引号,不可以为空,且必须包含.ini扩展名)。 62 | @set launcher_worldwide_GameIniName=Game-worldwide.ini 63 | @set launcher_bilibili_GameIniName=Game-bilibili.ini 64 | @set launcher_kingsoft_GameIniName=Game-kingsoft.ini 65 | 66 | @REM 是否启用管理员权限自动检测,默认启用。 67 | @set flag_enable_admin_autodetect=true 68 | 69 | @REM ---------------------------------------------- 70 | @REM 预留的扩展选项槽,可匹配测试服渠道。 71 | 72 | @REM 用户区 73 | 74 | @set flag_enable_match_with_exslots=true 75 | 76 | @set launcher_exslot_1_nickname=slot1 77 | @set launcher_exslot_2_nickname=slot2 78 | @set launcher_exslot_3_nickname= 79 | 80 | @set launcher_exslot_1=%launcher_none% 81 | @set launcher_exslot_2=%~dp0Launchers\slot2\snow_launcher-slot2.exe 82 | @set launcher_exslot_3= 83 | 84 | @set launcher_exslot_1_dest=..\snow_launcher-test.exe 85 | @set launcher_exslot_2_dest=..\snow_launcher-test.exe 86 | @set launcher_exslot_3_dest= 87 | 88 | @set launcher_exslot_1_localization_type=homeland 89 | @set launcher_exslot_2_localization_type=homeland 90 | @set launcher_exslot_3_localization_type= 91 | 92 | @set launcher_exslot_1_GameIniName=Game-exslot_1.ini 93 | @set launcher_exslot_2_GameIniName=Game-exslot_2.ini 94 | @set launcher_exslot_3_GameIniName=Game-exslot_3.ini 95 | 96 | @REM 非用户区(高级) 97 | 98 | @set flag_allow_multimatch_on_exslots=false 99 | 100 | @REM ---------------------------------------------- 101 | @REM 程序初始化阶段2 102 | 103 | @ if not defined mLANG ( 104 | @REM mLANG: module's LANG 105 | if defined LANG ( 106 | @REM 使用环境变量选择语言 107 | for /f "tokens=1,* delims=_" %%i in ("%LANG%") do ( set mLANG=%%i) 108 | ) else ( 109 | @REM 使用预设默认语言 110 | set mLANG=%LANG_default% 111 | if not defined mLANG ( 112 | @REM 普通玩家不要动 113 | set mLANG=zh 114 | @REM set mLANG=en 115 | ) 116 | ) 117 | 118 | ) 119 | set mLANG 120 | 121 | @REM ---------------------------------------------- 122 | @REM 初始化已完成,正式进入程序。 123 | 124 | if /I "%mLANG%" EQU "zh" ( 125 | call :func_programinfo_zh_cn 126 | ) else ( 127 | call :func_programinfo_en_us 128 | ) 129 | 130 | @REM ---------------------------------------------- 131 | @REM 程序加载完成,开始工作。 132 | 133 | set flag_nostart=false 134 | set flag_noswitch=false 135 | set flag_nopause=false 136 | set flag_hasAdminPrivilege=false 137 | 138 | set threshold_abort=101 139 | set exit_value=0 140 | set retv_range_startup_start=6 141 | set retv_range_gameini_start=11 142 | 143 | set GameConfigsHome=%LOCALAPPDATA%\Game\Saved 144 | set StartupSettingsDir_path=%GameConfigsHome%\PersistentDownloadDir 145 | set GameIniDir_path=%GameConfigsHome%\Config\WindowsNoEditor 146 | set startwrapper=CBJQ_SS.StartWrapper.exe 147 | 148 | @REM # Dectect Admin Privilege 149 | if /I "%flag_enable_admin_autodetect%" == "true" ( 150 | call :detect_admin_privilege 151 | if /I "!flag_hasAdminPrivilege!" == "true" ( 152 | if /I "%mLANG%" == "zh" ( echo [INFO] 已检测到管理员权限。 ) else ( echo [INFO] Administrator privileges detected. ) 153 | @REM 不经过wrapper可以在GUI看到启动器运行信息。(当前版本) 154 | @REM set "startwrapper=" 155 | ) else ( 156 | if /I "%mLANG%" == "zh" ( echo [INFO] 未检测到管理员权限。 ) else ( echo [INFO] Administrator privileges not detected. ) 157 | ) 158 | ) 159 | 160 | if defined startwrapper ( 161 | set startwrapper="%startwrapper%" 162 | ) 163 | 164 | @REM # loop1 165 | :loop1 166 | 167 | @ if "%~1" == "" ( 168 | @REM 无参数,仅输出程序信息。 169 | goto:loop1_break 170 | ) else if "%~1" == "-nostart" ( 171 | set flag_nostart=true 172 | ) else if "%~1" == "-noswitch" ( 173 | set flag_noswitch=true 174 | ) else if "%~1" == "-nopause" ( 175 | set flag_nopause=true 176 | ) else ( 177 | @ if /I "%~1" == "worldwide" ( 178 | @REM ## 国际服启动条目 179 | if /I "%mLANG%" == "zh" ( echo [INFO] 启动国际服 ) else ( echo [INFO] Start Option: worldwide ) 180 | if /I "%flag_noswitch%" == "false" ( 181 | call :func_updateSymlink "%launcher_worldwide_dest%" "%launcher_worldwide%" 182 | if ERRORLEVEL %threshold_abort% ( 183 | if /I "%mLANG%" == "zh" ( echo [ERROR] 【终止】:程序异常终止! ) else ( echo [ERROR] [Abort]: Program Abort^^! ) 184 | goto:loop1_break 185 | ) 186 | 187 | call :switchStartupSetting "worldwide" 188 | if /I "!exit_value!" GEQ "%retv_range_startup_start%" if /I "!exit_value!" NEQ "7" ( 189 | shift /1 190 | goto:loop1 191 | ) 192 | 193 | call :func_switchGameIni "%GameIniDir_path%\%launcher_worldwide_GameIniName%" 194 | if /I "!exit_value!" GEQ "%retv_range_gameini_start%" if /I "!exit_value!" NEQ "12" ( 195 | shift /1 196 | goto:loop1 197 | ) 198 | ) 199 | if exist "%launcher_worldwide%" ( 200 | if /I "%mLANG%" == "zh" ( echo [INFO] 存在实际启动器文件。 ) else ( echo [INFO] The real launcher file exists. ) 201 | ) else ( 202 | if /I "%mLANG%" == "zh" ( echo [INFO] 不存在实际启动器文件。 ) else ( echo [INFO] The real launcher file does not exist. ) 203 | ) 204 | if /I "%flag_nostart%" == "false" ( 205 | call %startwrapper% "%launcher_worldwide_dest%" 206 | if ERRORLEVEL 1 ( 207 | if /I "%mLANG%" == "zh" ( echo [ERROR] 【已检测到】:不存在此服务器的可执行启动器! ) else ( echo [ERROR] [Detected]: Runnable launcher to this server does not exist^^! ) 208 | set exit_value=2 209 | if not exist "%launcher_worldwide%" ( 210 | if /I "%mLANG%" == "zh" ( echo [ERROR] 不存在实际启动器文件。 ) else ( echo [ERROR] The real launcher file does not exist. ) 211 | set exit_value=10 212 | ) 213 | ) 214 | ) 215 | 216 | ) else if /I "%~1" == "bilibili" ( 217 | @REM ## B服启动条目 218 | if /I "%mLANG%" == "zh" ( echo [INFO] 启动B服 ) else ( echo [INFO] Start Option: bilibili ) 219 | if /I "%flag_noswitch%" == "false" ( 220 | call :func_updateSymlink "%launcher_bilibili_dest%" "%launcher_bilibili%" 221 | if ERRORLEVEL %threshold_abort% ( 222 | if /I "%mLANG%" == "zh" ( echo [ERROR] 【终止】:程序异常终止! ) else ( echo [ERROR] [Abort]: Program Abort^^! ) 223 | goto:loop1_break 224 | ) 225 | 226 | call :switchStartupSetting "homeland" 227 | if /I "!exit_value!" GEQ "%retv_range_startup_start%" if /I "!exit_value!" NEQ "7" ( 228 | shift /1 229 | goto:loop1 230 | ) 231 | 232 | call :func_switchGameIni "%GameIniDir_path%\%launcher_bilibili_GameIniName%" 233 | if /I "!exit_value!" GEQ "%retv_range_gameini_start%" if /I "!exit_value!" NEQ "12" ( 234 | shift /1 235 | goto:loop1 236 | ) 237 | ) 238 | if exist "%launcher_bilibili%" ( 239 | if /I "%mLANG%" == "zh" ( echo [INFO] 存在实际启动器文件。 ) else ( echo [INFO] The real launcher file exists. ) 240 | ) else ( 241 | if /I "%mLANG%" == "zh" ( echo [INFO] 不存在实际启动器文件。 ) else ( echo [INFO] The real launcher file does not exist. ) 242 | ) 243 | if /I "%flag_nostart%" == "false" ( 244 | call %startwrapper% "%launcher_bilibili_dest%" 245 | if ERRORLEVEL 1 ( 246 | if /I "%mLANG%" == "zh" ( echo [ERROR] 【已检测到】:不存在此服务器的可执行启动器! ) else ( echo [ERROR] [Detected]: Runnable launcher to this server does not exist^^! ) 247 | set exit_value=2 248 | if not exist "%launcher_bilibili%" ( 249 | if /I "%mLANG%" == "zh" ( echo [ERROR] 不存在实际启动器文件。 ) else ( echo [ERROR] The real launcher file does not exist. ) 250 | set exit_value=10 251 | ) 252 | ) 253 | ) 254 | 255 | ) else if /I "%~1" == "kingsoft" ( 256 | @REM ## 官服启动条目 257 | if /I "%mLANG%" == "zh" ( echo [INFO] 启动官服 ) else ( echo [INFO] Start Option: kingsoft ) 258 | if /I "%flag_noswitch%" == "false" ( 259 | call :func_updateSymlink "%launcher_kingsoft_dest%" "%launcher_kingsoft%" 260 | if ERRORLEVEL %threshold_abort% ( 261 | if /I "%mLANG%" == "zh" ( echo [ERROR] 【终止】:程序异常终止! ) else ( echo [ERROR] [Abort]: Program Abort^^! ) 262 | goto:loop1_break 263 | ) 264 | 265 | call :switchStartupSetting "homeland" 266 | if /I "!exit_value!" GEQ "%retv_range_startup_start%" if /I "!exit_value!" NEQ "7" ( 267 | shift /1 268 | goto:loop1 269 | ) 270 | 271 | call :func_switchGameIni "%GameIniDir_path%\%launcher_kingsoft_GameIniName%" 272 | if /I "!exit_value!" GEQ "%retv_range_gameini_start%" if /I "!exit_value!" NEQ "12" ( 273 | shift /1 274 | goto:loop1 275 | ) 276 | ) 277 | if exist "%launcher_kingsoft%" ( 278 | if /I "%mLANG%" == "zh" ( echo [INFO] 存在实际启动器文件。 ) else ( echo [INFO] The real launcher file exists. ) 279 | ) else ( 280 | if /I "%mLANG%" == "zh" ( echo [INFO] 不存在实际启动器文件。 ) else ( echo [INFO] The real launcher file does not exist. ) 281 | ) 282 | if /I "%flag_nostart%" == "false" ( 283 | call %startwrapper% "%launcher_kingsoft_dest%" 284 | if ERRORLEVEL 1 ( 285 | if /I "%mLANG%" == "zh" ( echo [ERROR] 【已检测到】:不存在此服务器的可执行启动器! ) else ( echo [ERROR] [Detected]: Runnable launcher to this server does not exist^^! ) 286 | set exit_value=2 287 | if not exist "%launcher_kingsoft%" ( 288 | if /I "%mLANG%" == "zh" ( echo [ERROR] 不存在实际启动器文件。 ) else ( echo [ERROR] The real launcher file does not exist. ) 289 | set exit_value=10 290 | ) 291 | ) 292 | ) 293 | 294 | ) else ( 295 | set flag_matched_on_exslots=false 296 | set flag_exslot_match_loopbreak=false 297 | if /I "%flag_enable_match_with_exslots%" == "true" ( 298 | @REM ## 预留槽位匹配启动条目 299 | if /I "%mLANG%" == "zh" ( echo [INFO] 尝试在预留槽位匹配此服务器的启动器配置。【%~1】 ) else ( echo [INFO] Try to match the launcher of this server in the reserved slots. [%~1] ) 300 | 301 | for /L %%i in (1, 1, 3) do ( 302 | if /I "!flag_exslot_match_loopbreak!" == "false" ( 303 | if /I "%mLANG%" == "zh" ( echo [INFO] 尝试在预留槽位【%%i】匹配此服务器的启动器配置。 ) else ( echo [INFO] Try to match the launcher of this server in the reserved slot No.%%i. ) 304 | if "%~1" == "!launcher_exslot_%%i_nickname!" ( 305 | if /I "%mLANG%" == "zh" ( echo [INFO] 匹配成功。 ) else ( echo [INFO] The match was successful. ) 306 | set flag_matched_on_exslots=true 307 | if /I "%flag_allow_multimatch_on_exslots%" == "false" ( 308 | set flag_exslot_match_loopbreak=true 309 | ) 310 | 311 | if /I "%mLANG%" == "zh" ( echo [INFO] 启动!launcher_exslot_%%i_nickname! ) else ( echo [INFO] Start Option: !launcher_exslot_%%i_nickname! ) 312 | if /I "%flag_noswitch%" == "false" ( 313 | call :func_updateSymlink "!launcher_exslot_%%i_dest!" "!launcher_exslot_%%i!" 314 | if ERRORLEVEL %threshold_abort% ( 315 | if /I "%mLANG%" == "zh" ( echo [ERROR] 【终止】:程序异常终止! ) else ( echo [ERROR] [Abort]: Program Abort^^! ) 316 | goto:loop1_break 317 | ) 318 | 319 | call :switchStartupSetting "!launcher_exslot_%%i_localization_type!" 320 | if /I "!exit_value!" GEQ "%retv_range_startup_start%" if /I "!exit_value!" NEQ "7" ( 321 | shift /1 322 | goto:loop1 323 | ) 324 | 325 | call :func_switchGameIni "%GameIniDir_path%\!launcher_exslot_%%i_GameIniName!" 326 | if /I "!exit_value!" GEQ "%retv_range_gameini_start%" if /I "!exit_value!" NEQ "12" ( 327 | shift /1 328 | goto:loop1 329 | ) 330 | ) 331 | if exist "!launcher_exslot_%%i!" ( 332 | if /I "%mLANG%" == "zh" ( echo [INFO] 存在实际启动器文件。 ) else ( echo [INFO] The real launcher file exists. ) 333 | ) else ( 334 | if /I "%mLANG%" == "zh" ( echo [INFO] 不存在实际启动器文件。 ) else ( echo [INFO] The real launcher file does not exist. ) 335 | ) 336 | if /I "%flag_nostart%" == "false" ( 337 | call %startwrapper% "!launcher_exslot_%%i_dest!" 338 | if ERRORLEVEL 1 ( 339 | if /I "%mLANG%" == "zh" ( echo [ERROR] 【已检测到】:不存在此服务器的可执行启动器! ) else ( echo [ERROR] [Detected]: Runnable launcher to this server does not exist^^! ) 340 | set exit_value=2 341 | if not exist "!launcher_exslot_%%i!" ( 342 | if /I "%mLANG%" == "zh" ( echo [ERROR] 不存在实际启动器文件。 ) else ( echo [ERROR] The real launcher file does not exist. ) 343 | set exit_value=10 344 | ) 345 | ) 346 | ) 347 | 348 | ) 349 | ) 350 | 351 | ) 352 | ) 353 | 354 | if /I "!flag_matched_on_exslots!" == "false" ( 355 | if /I "%mLANG%" == "zh" ( echo [ERROR] 【未知】:未配置此服务器的启动器!【%~1】 ) else ( echo [ERROR] [Unknown]: Launcher to this server is not configured^^! [%~1] ) 356 | set exit_value=3 357 | ) 358 | ) 359 | ) 360 | shift /1 361 | 362 | goto:loop1 363 | :loop1_break 364 | 365 | @REM ---------------------------------------------- 366 | 367 | 368 | @REM # 程序退出 369 | @REM 程序退出 370 | echo exit_value=%exit_value% 371 | set "StartupSettingsName_homeland=" 372 | set "StartupSettingsName_worldwide=" 373 | if /I "%flag_nopause%" NEQ "true" ( pause ) 374 | @REM @endlocal 375 | @ EXIT /B %exit_value% 376 | 377 | @REM # exit_value含义 378 | @REM ---------------------------------------------- 379 | @REM exit_value含义 380 | @REM 备注:仅能返回最后的错误代码。 381 | 382 | @REM 1 指示未完成设定的错误,约等于未知错误。 383 | @REM 2 不存在可执行的启动器。 384 | @REM 3 切服器未找到此服务器启动选项的配置。 385 | @REM 4 目的地的启动器并非符号链接,非本程序创建。 386 | @REM 5 启动器链接失败。 387 | @REM 6 目的地的启动设置文件并非符号链接,非本程序创建。 388 | @REM 7 切服器未找到此服务器所需的启动配置实际文件。 389 | @REM 8 启动设置链接失败。 390 | @REM 9 在未启用国服国际服支持的情景下断开链接失败。 391 | @REM 10 不存在实际启动器文件。 392 | @REM 11 目的地的Game.ini文件并非符号链接,非本程序创建。 393 | @REM 12 切服器未找到此服务器所需的Game.ini实际文件。 394 | @REM 13 Game.ini链接失败。 395 | @REM 14 Game.ini链接断开失败。 396 | @REM 15 服务器对应的Game.ini条目文件名不合法。 397 | @REM ---------------------------------------------- 398 | 399 | @REM # func_ensureACP 400 | :func_ensureACP 401 | @if /I %codepage% NEQ 65001 ( 402 | echo "[LOG]: Active code page is not 65001(UTF-8). [%codepage%]" 403 | chcp 65001 404 | ) 405 | @ goto:eof 406 | 407 | @REM # func_programinfo_en_us 408 | :func_programinfo_en_us 409 | @echo Snowbreak_ServerSwitcher(CBJQ_SS) 410 | @echo Description: This is a server switcher for CBJQ(Snowbreak: Containment Zone) implemented with Windows bat script. 411 | @echo Author: LiuJiewenTT 412 | @echo Version: 1.3.0 413 | @echo File Version: 1.3.0 414 | @echo Date: 2024-12-14 415 | @echo Note:Github Repo:^ 416 | @echo Author's Email:^ 417 | @ goto:eof 418 | 419 | @REM # func_programinfo_zh_cn 420 | :func_programinfo_zh_cn 421 | @echo 尘白禁区服务器切换器(CBJQ_SS) 422 | @echo 描述: 这是一个使用Windows批处理脚本实现的尘白禁区服务器切换器。 423 | @echo 作者: LiuJiewenTT 424 | @echo 版本: 1.3.0 425 | @echo 文件版本: 1.3.0 426 | @echo 日期: 2024-12-14 427 | @echo 备注:Github项目链接:^ 428 | @echo 作者Email地址:^ 429 | @ goto:eof 430 | 431 | @REM # detect_admin_privilege 432 | :detect_admin_privilege 433 | @REM method 1 434 | net session >nul 2>&1 435 | @REM method 2 436 | @REM openfiles >nul 2>&1 437 | if ERRORLEVEL 1 ( 438 | set flag_hasAdminPrivilege=false 439 | ) else ( 440 | set flag_hasAdminPrivilege=true 441 | ) 442 | @ goto:eof 443 | 444 | @REM # func_updateSymlink 445 | :func_updateSymlink 446 | @REM param1: Name of launcher (It can be a path). 447 | @REM param2: Path to expected real launcher (It can be a relative path). 448 | 449 | set launcherpath=%~1 450 | set launchername=%~nx1 451 | set reallauncherpath=%~2 452 | set reallaunchername=%~nx2 453 | 454 | if /I "%mLANG%" == "zh" ( echo [INFO] 【启动器目的地路径】:%launcherpath% ) else ( echo [INFO] [Destination of Launcher]: %launcherpath% ) 455 | if /I "%mLANG%" == "zh" ( echo [INFO] 【启动器文件名】:%launchername% ) else ( echo [INFO] [Filename of Launcher]: %launchername% ) 456 | if /I "%mLANG%" == "zh" ( echo [INFO] 【启动器储存路径】:%reallauncherpath% ) else ( echo [INFO] [Store Path of Launcher]: %reallauncherpath% ) 457 | if /I "%mLANG%" == "zh" ( echo [INFO] 【启动器实际文件名】:%reallaunchername% ) else ( echo [INFO] [Filename of Real Launcher]: %reallaunchername% ) 458 | 459 | dir "%launcherpath%" 2>nul | findstr "" | findstr /E /C:"[%reallauncherpath%]" 460 | 461 | if ERRORLEVEL 1 ( 462 | if exist "%launcherpath%" ( 463 | for /f "delims=" %%i in ('dir "%launcherpath%" ^| findstr /C:"%launchername%"') do ( 464 | echo [INFO] [Existed, old] %%i 465 | ) 466 | dir "%launcherpath%" | findstr "" 467 | if ERRORLEVEL 1 ( 468 | set exit_value=4 469 | if /I "%mLANG%" == "zh" ( 470 | echo [ERROR] 目的地的启动器并非符号链接,非本程序创建。为保证真的启动器不被错删,程序终止。使用程序前,请按照说明做好准备。 471 | ) else ( 472 | echo ^ 473 | [ERROR] Launcher in destination is not a SYMLINK, which means it was not created by this program. ^ 474 | To avoid deleting real launcher by mistake, this program will be terminated. ^ 475 | Before using this program, please follow the instructions to set up. 476 | ) 477 | if /I "%flag_nopause%" NEQ "true" ( pause ) 478 | @REM endlocal 479 | @ EXIT /B %threshold_abort% 480 | ) 481 | if /I "%mLANG%" == "zh" ( echo [INFO] 删除旧符号链接 ) else ( echo [INFO] Deleting old SYMLINK... ) 482 | del "%launcherpath%" 483 | ) else ( 484 | if /I "%mLANG%" == "zh" ( echo [INFO] 目的地不存在启动器 ) else ( echo [INFO] Launcher does not exist in destination. ) 485 | ) 486 | if /I "%mLANG%" == "zh" ( echo [INFO] 准备替换 ) else ( echo [INFO] Replacing... ) 487 | mklink "%launcherpath%" "%reallauncherpath%" 488 | ) else ( 489 | if /I "%mLANG%" == "zh" ( echo [INFO] 新启动器链接已存在 ) else ( echo [INFO] Link to the new launcher has been ready. ) 490 | ) 491 | dir "%launcherpath%" | findstr "" | findstr /E /C:"[%reallauncherpath%]" 492 | if ERRORLEVEL 1 ( 493 | if /I "%mLANG%" == "zh" ( echo [ERROR] 链接失败 ) else ( echo [ERROR] Failed to link. ) 494 | set exit_value=5 495 | ) else ( 496 | if /I "%mLANG%" == "zh" ( echo [INFO] 启动器链接已完全准备好。 ) else ( echo [INFO] Everything about the link to the launcher is ready. ) 497 | ) 498 | @ goto:eof 499 | 500 | @REM # switchStartupSetting 501 | :switchStartupSetting 502 | if /I "%mLANG%" == "zh" ( echo [INFO] 【启动设置目录】:%StartupSettingsDir_path%。 ) else ( echo [INFO] [Directory]: %StartupSettingsDir_path%. ) 503 | 504 | @REM 出现此默认值表示运行错误 505 | set RealStartupSettingsName=Startup.Settings.none 506 | set flag_StartupSettings=none 507 | set flag_isHomeland=0 508 | set flag_isWorldwide=0 509 | set flag_all_exist=false 510 | 511 | if defined StartupSettingsName_homeland if defined StartupSettingsName_worldwide ( 512 | set flag_all_exist=true 513 | ) 514 | 515 | if /I "%mLANG%" == "zh" ( echo [INFO] 当前请求的启动设置拥有者:%~1。 ) else ( echo [INFO] Current requested owner of Startup Settings: %~1. ) 516 | if exist "%StartupSettingsDir_path%\startup.settings" ( 517 | dir "%StartupSettingsDir_path%\startup.settings" 2>nul | findstr "" 518 | if ERRORLEVEL 1 if /I "%flag_all_exist%" == "true" ( 519 | if /I "%mLANG%" == "zh" ( 520 | echo [ERROR] 当前启动设置文件并非符号链接,请继续配置。 521 | echo [INFO] 【目录】:%StartupSettingsDir_path% 522 | ) else ( 523 | echo [ERROR] Current Startup Settings file is not a link, please configure further. 524 | echo [INFO] [Directory]: %StartupSettingsDir_path% 525 | ) 526 | set exit_value=6 527 | goto:eof 528 | ) else ( 529 | if /I "%mLANG%" == "zh" ( echo [INFO] 国服国际服兼容支持特性未在程序配置中启用。 ) else ( echo [INFO] Support for playing both homeland and worldwide is not enabled in program configuration. ) 530 | goto:eof 531 | ) 532 | dir "%StartupSettingsDir_path%\startup.settings" 2>nul | findstr "" | findstr /E /C:"[.\%StartupSettingsName_homeland%]" 533 | if ERRORLEVEL 1 ( 534 | @ REM pass 535 | ) else ( 536 | set flag_isHomeland=1 537 | if /I "%mLANG%" == "zh" ( echo [INFO] 当前启动设置属于国服。 ) else ( echo [INFO] Current Startup Settings belong to homeland. ) 538 | set flag_StartupSettings=homeland 539 | ) 540 | dir "%StartupSettingsDir_path%\startup.settings" 2>nul | findstr "" | findstr /E /C:"[.\%StartupSettingsName_worldwide%]" 541 | if ERRORLEVEL 1 ( 542 | @ REM pass 543 | ) else ( 544 | set flag_isWorldwide=1 545 | if /I "%mLANG%" == "zh" ( echo [INFO] 当前启动设置属于国际服。 ) else ( echo [INFO] Current Startup Settings belong to worldwide. ) 546 | set flag_StartupSettings=worldwide 547 | ) 548 | ) 549 | @REM echo %RealStartupSettingsName% 550 | if "%~1" == "homeland" ( 551 | if defined StartupSettingsName_homeland set RealStartupSettingsName=%StartupSettingsName_homeland% 552 | ) else if "%~1" == "worldwide" ( 553 | if defined StartupSettingsName_worldwide set RealStartupSettingsName=%StartupSettingsName_worldwide% 554 | ) 555 | @REM echo %RealStartupSettingsName% 556 | if exist "%StartupSettingsDir_path%\%RealStartupSettingsName%" ( 557 | if /I "%mLANG%" == "zh" ( echo [INFO] 对应启动设置存在,可以继续。 ) else ( echo [INFO] Corresponding file exists, good to go. ) 558 | ) else ( 559 | if /I "%flag_all_exist%" == "true" ( 560 | set exit_value=7 561 | if /I "%mLANG%" == "zh" ( 562 | echo [ERROR] 对应的启动设置实际文件不存在,请做好重命名工作。 563 | echo [INFO] 【目录】:%StartupSettingsDir_path% 564 | echo [INFO] 【需要的文件名】:%RealStartupSettingsName% 565 | ) else ( 566 | echo [ERROR] Corresponding actual file does not exist, check your renaming work. 567 | echo [INFO] [Directory]: %StartupSettingsDir_path% 568 | echo [INFO] [Required Filename]: %RealStartupSettingsName% 569 | ) 570 | ) else ( 571 | if /I "%mLANG%" == "zh" ( echo [INFO] 国服国际服兼容支持特性未在程序配置中启用。 ) else ( echo [INFO] Support for playing both homeland and worldwide is not enabled in program configuration. ) 572 | if /I "%mLANG%" == "zh" ( echo [INFO] 正在断开启动设置链接。 ) else ( echo [INFO] Breaking link to old Startup Settings. ) 573 | del "%StartupSettingsDir_path%\startup.settings" 574 | if ERRORLEVEL 1 ( 575 | if /I "%mLANG%" == "zh" ( echo [INFO] 启动设置链接断开失败。 ) else ( echo [INFO] Fail to break the link to the Startup Settings. ) 576 | set exit_value=9 577 | ) else ( 578 | if /I "%mLANG%" == "zh" ( echo [INFO] 启动设置链接断开成功。 ) else ( echo [INFO] Succeed to break the link to the Startup Settings. ) 579 | ) 580 | goto:eof 581 | ) 582 | ) 583 | if "%~1" NEQ "%flag_StartupSettings%" ( 584 | if /I "%mLANG%" == "zh" ( echo [INFO] 准备切换启动设置。 ) else ( echo [INFO] Switching Startup Settings. ) 585 | set flag_delete_startupsettings=false 586 | if exist "%StartupSettingsDir_path%\startup.settings" set flag_delete_startupsettings=true 587 | if "%flag_StartupSettings%" NEQ "none" set flag_delete_startupsettings=true 588 | if /I "!flag_delete_startupsettings!" == "true" ( 589 | if /I "%mLANG%" == "zh" ( echo [INFO] 正在删除旧启动设置(或其链接)。 ) else ( echo [INFO] Deleting Old Startup Settings ^(or its link^). ) 590 | del "%StartupSettingsDir_path%\startup.settings" 591 | if ERRORLEVEL 1 ( 592 | if /I "%mLANG%" == "zh" ( echo [INFO] 删除失败。 ) else ( echo [INFO] Failed to delete. ) 593 | goto:eof 594 | ) 595 | ) else ( 596 | if /I "%mLANG%" == "zh" ( echo [INFO] 当前不存在启动设置链接。 ) else ( echo [INFO] There is no Startup Settings link existed for now. ) 597 | ) 598 | if /I "%mLANG%" == "zh" ( echo [INFO] 准备链接到新启动设置。 ) else ( echo [INFO] Linking to new Startup Settings. ) 599 | @REM mklink "%StartupSettingsDir_path%\startup.settings" "%StartupSettingsDir_path%\%RealStartupSettingsName%" 600 | mklink "%StartupSettingsDir_path%\startup.settings" ".\%RealStartupSettingsName%" 601 | if ERRORLEVEL 1 ( 602 | if /I "%mLANG%" == "zh" ( echo [INFO] 启动设置链接失败。 ) else ( echo [INFO] Fail to link Startup Settings. ) 603 | set exit_value=8 604 | ) else ( 605 | if /I "%mLANG%" == "zh" ( echo [INFO] 启动设置链接创建成功。 ) else ( echo [INFO] Succeed in creating Startup Settings link. ) 606 | ) 607 | ) else if /I "%exit_value%" LSS "6" ( 608 | if /I "%mLANG%" == "zh" ( echo [INFO] 启动设置已就绪,无需操作。 ) else ( echo [INFO] Startup Settings have been ready and need no further operation. ) 609 | ) 610 | @ goto:eof 611 | 612 | @REM # func_switchGameIni 613 | :func_switchGameIni 614 | @REM param1: source path of real game.ini 615 | 616 | set gameinipath=%GameIniDir_path%\Game.ini 617 | set gameininame=Game.ini 618 | set realgameinipath=%~1 619 | set realgameinidir=%~dp1 620 | set realgameininame=%~nx1 621 | 622 | set flag_switchGameIni_invalidRealGameIniName=false 623 | set flag_switchGameIni_skipMklink=false 624 | 625 | if /I "%flag_enable_GameIni_switching%" == "true" ( 626 | if /I "%mLANG%" == "zh" ( echo [INFO] Game.ini功能已启用。 ) else ( echo [INFO] Game.ini switching is enabled. ) 627 | 628 | if /I "%realgameininame%" == "" ( 629 | set flag_switchGameIni_invalidRealGameIniName=true 630 | if /I "%mLANG%" == "zh" ( echo [ERROR] 未指定Game.ini实际文件名。 ) else ( echo [ERROR] No Game.ini actual filename specified. ) 631 | ) else if /I "%~x1" NEQ ".ini" ( 632 | set flag_switchGameIni_invalidRealGameIniName=true 633 | if /I "%mLANG%" == "zh" ( echo [ERROR] 指定的Game.ini实际文件扩展名不匹配。 ) else ( echo [ERROR] Specified Game.ini actual file extension does not match. ) 634 | ) 635 | ) else ( 636 | if /I "%mLANG%" == "zh" ( echo [INFO] Game.ini功能出于禁用状态。 ) else ( echo [INFO] Game.ini switching is disabled. ) 637 | @ EXIT /B 0 638 | ) 639 | if /I "%flag_switchGameIni_invalidRealGameIniName%" == "true" ( 640 | @ EXIT /B 15 641 | ) 642 | 643 | if /I "%mLANG%" == "zh" ( echo [INFO] 【Game.ini目的地路径】:%gameinipath% ) else ( echo [INFO] [Destination of Game.ini]: %gameinipath% ) 644 | if /I "%mLANG%" == "zh" ( echo [INFO] 【Game.ini文件名】:%gameininame% ) else ( echo [INFO] [Filename of Real Game.ini]: %gameininame% ) 645 | if /I "%mLANG%" == "zh" ( echo [INFO] 【Game.ini储存路径】:%realgameinipath% ) else ( echo [INFO] [Store Path of Real Game.ini]: %realgameinipath% ) 646 | if /I "%mLANG%" == "zh" ( echo [INFO] 【Game.ini储存文件名】:%realgameininame% ) else ( echo [INFO] [Filename of Real Game.ini]: %realgameininame% ) 647 | 648 | if not exist "%realgameinipath%" ( 649 | set exit_value=12 650 | if /I "%mLANG%" == "zh" ( 651 | echo [ERROR] Game.ini实际文件不存在,请做好重命名工作(创建空文件也可)。 652 | echo [INFO] 【目录】:%realgameinidir% 653 | echo [INFO] 【需要的文件名】:%realgameininame% 654 | ) else ( 655 | echo [ERROR] Game.ini actual file does not exist, please check your renaming work ^(create an empty file also can^). 656 | echo [INFO] [Directory]: %realgameinidir% 657 | echo [INFO] [Required Filename]: %realgameininame% 658 | ) 659 | ) else ( 660 | if /I "%mLANG%" == "zh" ( echo [INFO] Game.ini实际文件存在。 ) else ( echo [INFO] Game.ini actual file exists. ) 661 | ) 662 | 663 | if not exist "%gameinipath%" ( 664 | if /I "%mLANG%" == "zh" ( echo [INFO] Game.ini不存在。 ) else ( echo [INFO] Game.ini does not exist. ) 665 | ) else ( 666 | if /I "%mLANG%" == "zh" ( echo [INFO] Game.ini已存在。 ) else ( echo [INFO] Game.ini already exists. ) 667 | 668 | dir "%gameinipath%" 2>nul | findstr "" 669 | if ERRORLEVEL 1 ( 670 | set exit_value=11 671 | if /I "%mLANG%" == "zh" ( 672 | echo [ERROR] Game.ini实际文件并非符号链接,非本程序创建。为保证真正的Game.ini不被错删,程序终止。使用程序前,请按照说明做好准备。 673 | ) else ( 674 | echo ^ 675 | [ERROR] Game.ini actual file is not a SYMLINK, which means it was not created by this program. ^ 676 | To avoid deleting real Game.ini by mistake, this program will be terminated. ^ 677 | Before using this program, please follow the instructions to set up. 678 | ) 679 | if /I "%flag_nopause%" NEQ "true" ( pause ) 680 | @ EXIT /B %threshold_abort% 681 | ) 682 | 683 | dir "%gameinipath%" 2>nul | findstr "" | findstr /E /C:"[%realgameinipath%]" >nul 684 | if ERRORLEVEL 1 ( 685 | if /I "%mLANG%" == "zh" ( echo [INFO] 已存在链接并非新Game.ini。 ) else ( echo [INFO] There is a link but it is not the new Game.ini. ) 686 | if /I "%mLANG%" == "zh" ( echo [INFO] 准备删除旧Game.ini。 ) else ( echo [INFO] Deleting old Game.ini. ) 687 | del "%gameinipath%" 688 | if ERRORLEVEL 1 ( 689 | set exit_value=14 690 | if /I "%mLANG%" == "zh" ( echo [ERROR] Game.ini链接文件删除失败。 ) else ( echo [ERROR] Fail to delete Game.ini link file. ) 691 | @ EXIT /B %threshold_abort% 692 | ) 693 | ) else ( 694 | set flag_switchGameIni_skipMklink=true 695 | if /I "%mLANG%" == "zh" ( echo [INFO] 新Game.ini链接已存在。 ) else ( echo [INFO] Link to the new Game.ini has been ready. ) 696 | ) 697 | ) 698 | 699 | if /I "%flag_switchGameIni_skipMklink%" == "false" ( 700 | if /I "%mLANG%" == "zh" ( echo [INFO] 准备替换 ) else ( echo [INFO] Replacing... ) 701 | mklink "%gameinipath%" "%realgameinipath%" 702 | if ERRORLEVEL 1 ( 703 | set exit_value=13 704 | if /I "%mLANG%" == "zh" ( echo [ERROR] Game.ini链接文件创建失败。 ) else ( echo [ERROR] Fail to create Game.ini link file. ) 705 | if /I "%flag_nopause%" NEQ "true" ( pause ) 706 | @ EXIT /B %threshold_abort% 707 | ) else ( 708 | if /I "%mLANG%" == "zh" ( echo [INFO] Game.ini链接文件创建成功。 ) else ( echo [INFO] Succeed in creating Game.ini link file. ) 709 | ) 710 | ) 711 | 712 | if /I "%mLANG%" == "zh" ( echo [INFO] Game.ini链接已完全准备好。 ) else ( echo [INFO] Everything about the link to the Game.ini is ready. ) 713 | 714 | @ goto:eof 715 | 716 | @REM # End of file 717 | --------------------------------------------------------------------------------