From 6c93eb93c58c108c8b897ec4980fa2c539b9d58f Mon Sep 17 00:00:00 2001 From: zhushenwudi <55681140@163.com> Date: Wed, 22 Jan 2025 17:42:18 +0800 Subject: [PATCH] add multi language --- .vitepress/config.mts | 54 - .vitepress/config/en.ts | 51 + .vitepress/config/index.ts | 12 + .vitepress/config/shared.ts | 22 + .vitepress/config/zh.ts | 64 + docs/{ => en}/dev_guide/WebUI.md | 8 +- docs/{ => en}/dev_guide/assets_docs.md | 4 +- .../{ => en}/dev_guide/installation/docker.md | 0 docs/{ => en}/dev_guide/installation/linux.md | 0 .../dev_guide/installation/windows.md | 0 docs/{ => en}/dev_guide/introduction.md | 0 docs/{ => en}/dev_guide/variable-argument.md | 0 docs/en/index.md | 18 + docs/{ => en}/user_guide/client_docs.md | 44 +- docs/{ => en}/user_guide/game_info.md | 7 +- .../user_guide/installation/android.md | 6 +- docs/{ => en}/user_guide/installation/ios.md | 6 +- docs/{ => en}/user_guide/user_webui.md | 16 +- docs/zh/dev_guide/WebUI.md | 124 ++ docs/zh/dev_guide/assets_docs.md | 123 ++ docs/zh/dev_guide/installation/docker.md | 43 + docs/zh/dev_guide/installation/linux.md | 77 ++ docs/zh/dev_guide/installation/windows.md | 69 + docs/zh/dev_guide/introduction.md | 5 + docs/zh/dev_guide/variable-argument.md | 95 ++ index.md => docs/zh/index.md | 4 +- docs/zh/user_guide/client_docs.md | 114 ++ docs/zh/user_guide/game_info.md | 31 + docs/zh/user_guide/installation/android.md | 47 + docs/zh/user_guide/installation/ios.md | 49 + docs/zh/user_guide/user_webui.md | 51 + package.json | 1 + public/logo.png | Bin 0 -> 61160 bytes yarn.lock | 1167 +++++++++++++++++ 34 files changed, 2214 insertions(+), 98 deletions(-) delete mode 100644 .vitepress/config.mts create mode 100644 .vitepress/config/en.ts create mode 100644 .vitepress/config/index.ts create mode 100644 .vitepress/config/shared.ts create mode 100644 .vitepress/config/zh.ts rename docs/{ => en}/dev_guide/WebUI.md (93%) rename docs/{ => en}/dev_guide/assets_docs.md (97%) rename docs/{ => en}/dev_guide/installation/docker.md (100%) rename docs/{ => en}/dev_guide/installation/linux.md (100%) rename docs/{ => en}/dev_guide/installation/windows.md (100%) rename docs/{ => en}/dev_guide/introduction.md (100%) rename docs/{ => en}/dev_guide/variable-argument.md (100%) create mode 100644 docs/en/index.md rename docs/{ => en}/user_guide/client_docs.md (76%) rename docs/{ => en}/user_guide/game_info.md (75%) rename docs/{ => en}/user_guide/installation/android.md (94%) rename docs/{ => en}/user_guide/installation/ios.md (89%) rename docs/{ => en}/user_guide/user_webui.md (86%) create mode 100644 docs/zh/dev_guide/WebUI.md create mode 100644 docs/zh/dev_guide/assets_docs.md create mode 100644 docs/zh/dev_guide/installation/docker.md create mode 100644 docs/zh/dev_guide/installation/linux.md create mode 100644 docs/zh/dev_guide/installation/windows.md create mode 100644 docs/zh/dev_guide/introduction.md create mode 100644 docs/zh/dev_guide/variable-argument.md rename index.md => docs/zh/index.md (76%) create mode 100644 docs/zh/user_guide/client_docs.md create mode 100644 docs/zh/user_guide/game_info.md create mode 100644 docs/zh/user_guide/installation/android.md create mode 100644 docs/zh/user_guide/installation/ios.md create mode 100644 docs/zh/user_guide/user_webui.md create mode 100644 public/logo.png create mode 100644 yarn.lock diff --git a/.vitepress/config.mts b/.vitepress/config.mts deleted file mode 100644 index 92925e0..0000000 --- a/.vitepress/config.mts +++ /dev/null @@ -1,54 +0,0 @@ -import { defineConfig } from 'vitepress' - -// https://vitepress.dev/reference/site-config -export default defineConfig({ - title: "Sif 2", - description: "A Sif2 Server and Client Documents", - ignoreDeadLinks: true, - themeConfig: { - // https://vitepress.dev/reference/default-theme-config - nav: [ - { text: '用户指南', link: '/docs/user_guide/client_docs' }, - { text: '服务器指南', link: '/docs/dev_guide/introduction' } - ], - - sidebar: { - '/docs/user_guide/': [ - { - text: '游戏用户指南', - items: [ - { - text: '安装', - items: [ - { text: 'IOS', link: '/docs/user_guide/installation/ios' }, - { text: 'Android', link: '/docs/user_guide/installation/android' }, - ], - }, - { text: '游戏内使用说明', link: '/docs/user_guide/client_docs' }, - { text: 'WebUI使用说明', link: '/docs/user_guide/user_webui' }, - { text: '游戏相关信息', link: '/docs/user_guide/game_info' }, - ] - } - ], - '/docs/dev_guide/': [ - { - text: '服务器指南', - items: [ - { text: '介绍', link: '/docs/dev_guide/introduction' }, - { - text: '安装', - items: [ - { text: 'Windows', link: '/docs/dev_guide/installation/windows' }, - { text: 'Linux', link: '/docs/dev_guide/installation/linux' }, - { text: 'docker', link: '/docs/dev_guide/installation/docker' }, - ], - }, - { text: 'WebUI', link: '/docs/dev_guide/WebUI' }, - { text: '游戏资源服务器配置', link: '/docs/dev_guide/assets_docs' }, - { text: '环境变量和命令行参数', link: '/docs/dev_guide/variable-argument' }, - ] - } - ] - }, - } -}) diff --git a/.vitepress/config/en.ts b/.vitepress/config/en.ts new file mode 100644 index 0000000..793dbc3 --- /dev/null +++ b/.vitepress/config/en.ts @@ -0,0 +1,51 @@ +import {defineConfig} from "vitepress"; + +export const en = defineConfig({ + lang: 'en-US', + + themeConfig: { + nav: [ + {text: 'User guide', link: '/docs/en/user_guide/client_docs'}, + {text: 'Server guide', link: '/docs/en/dev_guide/introduction'} + ], + + sidebar: { + '/docs/en/user_guide/': [ + { + text: 'Game user guide', + items: [ + { + text: 'Installation', + items: [ + {text: 'IOS', link: '/docs/en/user_guide/installation/ios'}, + {text: 'Android', link: '/docs/en/user_guide/installation/android'}, + ], + }, + {text: '游戏内使用说明', link: '/docs/en/user_guide/client_docs'}, + {text: 'WebUI使用说明', link: '/docs/en/user_guide/user_webui'}, + {text: '游戏相关信息', link: '/docs/en/user_guide/game_info'}, + ] + } + ], + '/docs/en/dev_guide/': [ + { + text: '服务器指南', + items: [ + {text: '介绍', link: '/docs/en/dev_guide/introduction'}, + { + text: '安装', + items: [ + {text: 'Windows', link: '/docs/en/dev_guide/installation/windows'}, + {text: 'Linux', link: '/docs/en/dev_guide/installation/linux'}, + {text: 'docker', link: '/docs/en/dev_guide/installation/docker'}, + ], + }, + {text: 'WebUI', link: '/docs/en/dev_guide/WebUI'}, + {text: '游戏资源服务器配置', link: '/docs/en/dev_guide/assets_docs'}, + {text: '环境变量和命令行参数', link: '/docs/en/dev_guide/variable-argument'}, + ] + } + ] + }, + } +}); \ No newline at end of file diff --git a/.vitepress/config/index.ts b/.vitepress/config/index.ts new file mode 100644 index 0000000..2501351 --- /dev/null +++ b/.vitepress/config/index.ts @@ -0,0 +1,12 @@ +import {defineConfig} from 'vitepress' +import {en} from './en' +import {zh} from './zh' +import {shared} from "./shared"; + +export default defineConfig({ + ...shared, + locales: { + root: {label: "简体中文", ...zh}, + en: {label: 'English', link: '/docs/en/', ...en} + } +}) \ No newline at end of file diff --git a/.vitepress/config/shared.ts b/.vitepress/config/shared.ts new file mode 100644 index 0000000..7cb6db1 --- /dev/null +++ b/.vitepress/config/shared.ts @@ -0,0 +1,22 @@ +import {defineConfig} from 'vitepress' + +export const shared = defineConfig({ + title: "Sif 2", + description: "A Sif2 Server and Client Documents", + ignoreDeadLinks: true, + themeConfig: { + logo: '/logo.png', + socialLinks: [ + {icon: 'github', link: 'https://git.zhushenwudi.top/zhushenwudi/ew'} + ] + }, + markdown: { + image: { + // 默认禁用;设置为 true 可为所有图片启用懒加载。 + lazyLoading: true + } + }, + rewrites: { + 'docs/zh/:rest*': ':rest*' + } +}); \ No newline at end of file diff --git a/.vitepress/config/zh.ts b/.vitepress/config/zh.ts new file mode 100644 index 0000000..58e3031 --- /dev/null +++ b/.vitepress/config/zh.ts @@ -0,0 +1,64 @@ +import {defineConfig} from "vitepress"; + +export const zh = defineConfig({ + lang: 'zh-Hans', + + themeConfig: { + nav: [ + {text: '用户指南', link: '/docs/zh/user_guide/client_docs'}, + {text: '服务器指南', link: '/docs/zh/dev_guide/introduction'} + ], + + sidebar: { + '/docs/zh/user_guide/': [ + { + text: '游戏用户指南', + items: [ + { + text: '安装', + items: [ + {text: 'IOS', link: '/docs/zh/user_guide/installation/ios'}, + {text: 'Android', link: '/docs/zh/user_guide/installation/android'}, + ], + }, + {text: '游戏内使用说明', link: '/docs/zh/user_guide/client_docs'}, + {text: 'WebUI使用说明', link: '/docs/zh/user_guide/user_webui'}, + {text: '游戏相关信息', link: '/docs/zh/user_guide/game_info'}, + ] + } + ], + '/docs/zh/dev_guide/': [ + { + text: '服务器指南', + items: [ + {text: '介绍', link: '/docs/zh/dev_guide/introduction'}, + { + text: '安装', + items: [ + {text: 'Windows', link: '/docs/zh/dev_guide/installation/windows'}, + {text: 'Linux', link: '/docs/zh/dev_guide/installation/linux'}, + {text: 'docker', link: '/docs/zh/dev_guide/installation/docker'}, + ], + }, + {text: 'WebUI', link: '/docs/zh/dev_guide/WebUI'}, + {text: '游戏资源服务器配置', link: '/docs/zh/dev_guide/assets_docs'}, + {text: '环境变量和命令行参数', link: '/docs/zh/dev_guide/variable-argument'}, + ] + } + ] + }, + + docFooter: { + prev: '上一页', + next: '下一页' + }, + + langMenuLabel: '多语言', + returnToTopLabel: '回到顶部', + sidebarMenuLabel: '菜单', + darkModeSwitchLabel: '主题', + lightModeSwitchTitle: '切换到浅色模式', + darkModeSwitchTitle: '切换到深色模式', + skipToContentLabel: '跳转到内容' + } +}); \ No newline at end of file diff --git a/docs/dev_guide/WebUI.md b/docs/en/dev_guide/WebUI.md similarity index 93% rename from docs/dev_guide/WebUI.md rename to docs/en/dev_guide/WebUI.md index 4a446e5..93eea5f 100644 --- a/docs/dev_guide/WebUI.md +++ b/docs/en/dev_guide/WebUI.md @@ -110,13 +110,15 @@ docker run -d \ ### 帮助页面 帮助页面如下图所示: -![帮助页面](../image/webui_help.jpeg) +![帮助页面](../../image/webui_help.jpeg) 帮助页面包括服务器的相关介绍和应用的下载和相关配置。 ::: tip 参考 1. 使用命令行参数`--global-android `、`--japan-android `、`--global-ios `、`--japan-ios `或环境变量`ANDROID_GLOABL`、`ANDROID_JAPAN`、`IOS_GLOBAL`、`IOS_JAPAN`设置帮助界面中的应用下载地址。 2. 使用命令行参数`--assets-url `或环境变量`ASSET_URL`设置帮助页面中显示的“Assets URL”。 -![帮助页面注意事项](../image/webui_help_info.png) -3. 如何获取预打补丁的apk安装包和ios安装包,请参考[获取和安装预打补丁的游戏安装包](patch_client.md#patch) +![帮助页面注意事项](../../image/webui_help_info.png) +3. 如何获取预打补丁的apk安装包和ios安装包,请参考 +- [Android安装教程](../user_guide/installation/android) +- [iOS安装教程](../user_guide/installation/ios) ::: \ No newline at end of file diff --git a/docs/dev_guide/assets_docs.md b/docs/en/dev_guide/assets_docs.md similarity index 97% rename from docs/dev_guide/assets_docs.md rename to docs/en/dev_guide/assets_docs.md index 9a47183..d46d15f 100644 --- a/docs/dev_guide/assets_docs.md +++ b/docs/en/dev_guide/assets_docs.md @@ -51,7 +51,7 @@ docker run -d \ iOS客户端的游戏资源为`ios-final.7z`。 -![lovelive-sif2-jp-assets](../image/28.png) +![lovelive-sif2-jp-assets](../../image/28.png) - 国际服 @@ -61,7 +61,7 @@ iOS客户端的游戏资源为`ios-final.7z`。 iOS客户端的游戏资源为`EN-iOS.7z`、`KR-iOS.7z`和`ZH-iOS.7z`。分别对应英文、韩文和中文游戏资源。 -![lovelive-sif2-gl-assets](../image/29.png) +![lovelive-sif2-gl-assets](../../image/29.png) ### 游戏资源放置位置 diff --git a/docs/dev_guide/installation/docker.md b/docs/en/dev_guide/installation/docker.md similarity index 100% rename from docs/dev_guide/installation/docker.md rename to docs/en/dev_guide/installation/docker.md diff --git a/docs/dev_guide/installation/linux.md b/docs/en/dev_guide/installation/linux.md similarity index 100% rename from docs/dev_guide/installation/linux.md rename to docs/en/dev_guide/installation/linux.md diff --git a/docs/dev_guide/installation/windows.md b/docs/en/dev_guide/installation/windows.md similarity index 100% rename from docs/dev_guide/installation/windows.md rename to docs/en/dev_guide/installation/windows.md diff --git a/docs/dev_guide/introduction.md b/docs/en/dev_guide/introduction.md similarity index 100% rename from docs/dev_guide/introduction.md rename to docs/en/dev_guide/introduction.md diff --git a/docs/dev_guide/variable-argument.md b/docs/en/dev_guide/variable-argument.md similarity index 100% rename from docs/dev_guide/variable-argument.md rename to docs/en/dev_guide/variable-argument.md diff --git a/docs/en/index.md b/docs/en/index.md new file mode 100644 index 0000000..6ae5cac --- /dev/null +++ b/docs/en/index.md @@ -0,0 +1,18 @@ +--- +# https://vitepress.dev/reference/default-theme-home-page +layout: home + +hero: + name: "Love Live! School idol festival 2\nMIRACLE LIVE!" + text: "User guide and server guide" + tagline: + actions: + - theme: brand + text: User guide + link: /docs/en/user_guide/client_docs + - theme: alt + text: Server guide + link: /docs/en/dev_guide/introduction + + + diff --git a/docs/user_guide/client_docs.md b/docs/en/user_guide/client_docs.md similarity index 76% rename from docs/user_guide/client_docs.md rename to docs/en/user_guide/client_docs.md index 812871c..f4536c2 100644 --- a/docs/user_guide/client_docs.md +++ b/docs/en/user_guide/client_docs.md @@ -8,15 +8,15 @@ outline: deep 1. 打开手机设置,下滑找到APP。
- 设置 + 设置
2. 进入APP,下滑找到スクフェス2。
- APP + APP
3. 进入スクフェス2,下滑找到Server URL和Assets URL。
- スクフェス2 + スクフェス2
4. 填入服务器网址和资源服务器网址。 @@ -27,7 +27,7 @@ outline: deep ## 通用操作 {#general-use} ### 下载资源包时发生异常 {#assets-error} -![资源异常](../image/assets_error.png) +![资源异常](../../image/assets_error.png) 因为Assets URL是国外CDN,中国大陆地区的访问链接不是很好 - 有条件的话,可以通过科学上网的方式 - 使用[本地搭建资源服务器](../dev_guide/assets_docs.md)的方式 @@ -37,23 +37,23 @@ outline: deep ### 查看Sif2 ID {#sif2-id} 1. 在游戏主界面,点击右上角的菜单。 - ![主界面](../image/1.png) + ![主界面](../../image/1.png) 2. 点击 **プロフィール** 。 - ![菜单界面](../image/2.png) + ![菜单界面](../../image/2.png) 3. 页面下方的即为Sif2 ID。 - ![profile](../image/3.png) + ![profile](../../image/3.png) ### 设置数据迁移密钥 {#key} 1. 在游戏主界面,点击右上角的菜单。 -![主界面](../image/1.png) +![主界面](../../image/1.png) 2. 点击 **データ引き継ぎ** 。 -![菜单](../image/4.png) +![菜单](../../image/4.png) 3. 点击 **データ引き継ぎ** 。 -![データ引き継ぎ](../image/5.png) +![データ引き継ぎ](../../image/5.png) 4. 上面的 **引き継ぎID** 为数据迁移ID,下面的 **パスワード** 即为需要设置的数据迁移密钥。 -![引き継ぎID](../image/6.png) +![引き継ぎID](../../image/6.png) 5. 点击 **次へ** 确定。 ### 迁移数据 {#migration} @@ -62,13 +62,13 @@ outline: deep 1. 确保不同设备使用的服务器为同一服务器。 2. 打开游戏,点击右上角的菜单。 -![待机界面](../image/13.png) +![待机界面](../../image/13.png) 3. 点击 **データ引き継ぎ** 。 -![菜单](../image/14.png) +![菜单](../../image/14.png) 4. 点击 **データ引き継ぎ** 。 -![データ引き継ぎ](../image/15.png) +![データ引き継ぎ](../../image/15.png) 5. 在上面的 **引き継ぎID** 输入数据迁移ID,在下面的 **パスワード** 输入数据迁移密钥。 -![引き継ぎID](../image/16.png) +![引き継ぎID](../../image/16.png) 6. 点击 **次へ** 确定。 #### 跨服迁移数据 {#different-server} @@ -80,22 +80,22 @@ outline: deep 以下操作会使游戏数据初始化,会使游戏账号丢失。请谨慎操作。 ::: 1. 打开游戏,点击右上角的菜单。 -![待机界面](../image/13.png) +![待机界面](../../image/13.png) 2. 点击 **ゲームデータ削除**。 -![菜单](../image/25.png) +![菜单](../../image/25.png) 3. 点击 **OK**。 -![ゲームデータ削除](../image/26.png) +![ゲームデータ削除](../../image/26.png) ### 获得Loveca、金币等道具的方式 {#gift} 1. 在游戏主界面,点击右上角的菜单。 -![主界面](../image/1.png) +![主界面](../../image/1.png) 2. 点击 **シリアルコード** 。 -![菜单](../image/7.png) +![菜单](../../image/7.png) 3. 点击 **シリアルコード入力** 。 -![シリアルコード](../image/8.png) +![シリアルコード](../../image/8.png) 4. 输入兑换码点击OK即可兑换。 -![シリアルコード入力](../image/9.png) +![シリアルコード入力](../../image/9.png) ::: tip 注意 兑换码格式为兑换码种类+数量,例如: diff --git a/docs/user_guide/game_info.md b/docs/en/user_guide/game_info.md similarity index 75% rename from docs/user_guide/game_info.md rename to docs/en/user_guide/game_info.md index 951183b..2c4b939 100644 --- a/docs/user_guide/game_info.md +++ b/docs/en/user_guide/game_info.md @@ -23,4 +23,9 @@ outline: deep 游戏活动的开始和结束时间可以参考[LLwiki](https://llwiki.org/zh/LoveLive!%E5%AD%A6%E5%9B%AD%E5%81%B6%E5%83%8F%E7%A5%AD2_MIRACLE_LIVE!%E6%B4%BB%E5%8A%A8%E5%88%97%E8%A1%A8)。 ## 生日招募一览 -生日招募的开始时间和结束时间可以参考[ラブライブ!スクールアイドルフェスティバル2 MIRACLE LIVE!攻略Wiki](https://gamerch.com/lovelivesif2/808233#outline__%E8%AA%95%E7%94%9F%E6%97%A5%E5%8B%A7%E8%AA%98%E4%B8%80%E8%A6%A7)(该时间为东京时间GMT+9) \ No newline at end of file +生日招募的开始时间和结束时间可以参考[ラブライブ!スクールアイドルフェスティバル2 MIRACLE LIVE!攻略Wiki](https://gamerch.com/lovelivesif2/808233#outline__%E8%AA%95%E7%94%9F%E6%97%A5%E5%8B%A7%E8%AA%98%E4%B8%80%E8%A6%A7)(该时间为东京时间GMT+9) + +## 其他查卡器网站 +- [wazzia](https://sif2.wazzia.com) +- [idol.st](https://idol.st) +- [LLwiki](https://llwiki.org/zh/LoveLive!%E5%AD%A6%E5%9B%AD%E5%81%B6%E5%83%8F%E7%A5%AD2_MIRACLE_LIVE!%E5%8D%A1%E7%89%8C%E5%88%97%E8%A1%A8) \ No newline at end of file diff --git a/docs/user_guide/installation/android.md b/docs/en/user_guide/installation/android.md similarity index 94% rename from docs/user_guide/installation/android.md rename to docs/en/user_guide/installation/android.md index 7231c3f..a94c17a 100644 --- a/docs/user_guide/installation/android.md +++ b/docs/en/user_guide/installation/android.md @@ -28,20 +28,20 @@ outline: deep Server URL的获取请咨询服主 ::: -![patch](../../image/27.png) +![patch](../../../image/27.png) ### 给修补好的安装包文件签名 使用[uber-apk-signer](https://github.com/patrickfav/uber-apk-signer/releases/download/v1.3.0/uber-apk-signer-1.3.0.jar)给安装包签名。 1. 安装[JDK8+](https://adoptium.net/temurin/releases/) -![JDK](../../image/32.png) +![JDK](../../../image/32.png) ```shell java -jar uber-apk-signer-1.3.0.jar --apks sif2_patched.apk ``` :::tip 注意 jar和apk路径位置请根据自己的情况修改 ::: -![打包](../../image/33.png) +![打包](../../../image/33.png) ### 传入手机安装 基本操作,不展开说明 \ No newline at end of file diff --git a/docs/user_guide/installation/ios.md b/docs/en/user_guide/installation/ios.md similarity index 89% rename from docs/user_guide/installation/ios.md rename to docs/en/user_guide/installation/ios.md index fe7ea44..2b130a0 100644 --- a/docs/user_guide/installation/ios.md +++ b/docs/en/user_guide/installation/ios.md @@ -19,7 +19,7 @@ outline: deep ::: ### 安装包下载 -得益于Discord的Triangle,你只需下载对应的ipa文件即可。然后将该ipa文件侧载安装手机上即可。 +得益于Discord的Triangle,你只需下载对应的ipa文件,然后将该ipa文件侧载安装手机上即可。 - [国际服](https://arasfon.ru/direct/lovelive/sif2/patched-clients/ios/sif2_gl.ipa) - [日服](https://arasfon.ru/direct/lovelive/sif2/patched-clients/ios/sif2_jp.ipa) :::tip 注意 @@ -29,9 +29,9 @@ outline: deep ### 使用Sideloadly(IOS17+使用——7天需电脑重新签名) 推荐 [下载地址](https://sideloadly.io/) 1. 按照电脑平台选择下载链接。 -![Sideloadly URL](../../image/30.png) +![Sideloadly URL](../../../image/30.png) 2. 打开Sideloadly -![安装](../../image/31.png) +![安装](../../../image/31.png) - Step1:拖入准备好的ipa文件。 - Step2:使用USB连接苹果设备。 - Step3:输入你的苹果ID。 diff --git a/docs/user_guide/user_webui.md b/docs/en/user_guide/user_webui.md similarity index 86% rename from docs/user_guide/user_webui.md rename to docs/en/user_guide/user_webui.md index 94445cf..66d493e 100644 --- a/docs/user_guide/user_webui.md +++ b/docs/en/user_guide/user_webui.md @@ -11,20 +11,20 @@ outline: deep ### 主界面 {#main-interface } WebUI的界面如下图所示: -![WebUI](../image/17.png) +![WebUI](../../image/17.png) 其中包括个人账户登录和导入用户数据和查看帮助等相关信息。 ### 个人账户登录 {#account-login} 在主页面输入[SIF2 ID](./client_docs.md#sif2-id)和[数据迁移密钥](./client_docs.md#key)即可登录到个人账户设置页面。界面如下图所示: -![WebUI_user](../image/18.png) +![WebUI_user](../../image/18.png) ### 更改登录奖励 {#login-bonus} 在WebUI个人设置界面的 **当前登录奖励列表** 中添加登录奖励的id即可,登录奖励id的信息请自行查阅。 -![登录奖励](../image/19.png) +![登录奖励](../../image/19.png) ### 更改游戏服务器时间 {#server-time} 在WebUI个人设置界面的 **服务器时间** 中输入时间,即可更改服务器时间,跳转到指定活动或卡池。 -![服务器时间](../image/20.png) +![服务器时间](../../image/20.png) 服务器时间的格式为yyyy/MM/dd HH:mm:ss。 例如输入2023/12/01 22:30:30,表示服务器时间更改为2023年12月1日23时30分30秒。 @@ -41,11 +41,11 @@ WebUI的界面如下图所示: 1. 确保服务器开启了 **WebUI**、**导出用户数据** 和 **导入用户数据**。 2. 在导出服务器上进入个人账户设置界面。 3. 在导出服务器上的个人账户设置界面点击右上角的 **导出用户数据**。 -![导出用户数据](../image/21.png) +![导出用户数据](../../image/21.png) 4. 你会获得四个文件,这四个文件即为用户数据文件。 -![用户数据文件](../image/22.png) +![用户数据文件](../../image/22.png) 5. 在导入服务器的WebUI主页面点击 **导入用户数据**。 -![导入用户数据](../image/23.png) +![导入用户数据](../../image/23.png) 6. 选择导出的四个文件,输入数据迁移密钥,点击提交,即可导入用户数据。 -![导入数据](../image/24.png) +![导入数据](../../image/24.png) 1. 在游戏中进行数据迁移,方法为[同一服务器不同设备迁移数据](./client_docs#same-server)。 \ No newline at end of file diff --git a/docs/zh/dev_guide/WebUI.md b/docs/zh/dev_guide/WebUI.md new file mode 100644 index 0000000..93eea5f --- /dev/null +++ b/docs/zh/dev_guide/WebUI.md @@ -0,0 +1,124 @@ +--- +outline: deep +--- +# WebUI + +本节对服务器的WebUI进行介绍。 + +## 启用和禁用WebUI + +如需禁用WebUI,请在服务器启动时添加如下参数: + +- Windows在命令行启动时使用`--hidden`,如下所示: +``` +ew.exe --port 8080 --path ./data/ --hidden +``` +- Linux在命令行启动时使用`--hidden`,如下所示: +``` +ew --port 8080 --path ./data/ --hidden +``` + +- Docker在启动时将`HIDDEN`环境变量设置为`true`,如下所示: +``` +docker run -d \ + --name sif2 \ + -p 8080:8080 \ + -p 8000:8000 \ + -e HIDDEN=true \ + -v ./data:/data \ + -v ./asset:/asset \ + zhushenwudi/lovelive-sif2:1.0.1 +``` + +## WebUI的使用 + +WebUI的使用可以参照[WebUI使用说明](../user_guide/user_webui#WebUI-operation) + +### 端口号 +WebUI的默认端口号为`8080`。 + +如需更改其端口号,请在服务器启动时使用如下参数。 + +- Windows在命令行启动时使用`--port `,如将端口号改为`12345`,如下所示: +``` +ew.exe --port 12345 --path ./data/ +``` +- Linux在命令行启动时使用`--port `,如将端口号改为`12345`,如下所示: +``` +ew --port 12345 --path ./data/ +``` + +- Docker在启动时将端口映射修改为所需端口号,如将端口号改为`12345`,如下所示: +``` +docker run \ + --name sif2 \ + -p 12345:8080 \ + -p 8000:8000 \ + -v ./data:/data \ + -v ./asset:/asset \ + zhushenwudi/lovelive-sif2 +``` + +### 导入数据 +如需禁用导入数据,请在服务器启动时添加如下参数: + +- Windows在命令行启动时使用`--disable-imports`,如下所示: +``` +ew.exe --port 8080 --path ./data/ --disable-imports +``` +- Linux在命令行启动时使用`--disable-imports`,如下所示: +``` +ew --port 8080 --path ./data/ --disable-imports +``` + +- Docker在启动时将`DISABLE_IMPORTS`环境变量设置为`true`,如下所示: +``` +docker run -d \ + --name sif2 \ + -p 8080:8080 \ + -p 8000:8000 \ + -e DISABLE_IMPORTS=true \ + -v ./data:/data \ + -v ./asset:/asset \ + zhushenwudi/lovelive-sif2 +``` + +### 导出数据 +如需禁用导出数据,请在服务器启动时添加如下参数: + +- Windows在命令行启动时使用`--disable-exports`,如下所示: +``` +ew.exe --port 8080 --path ./data/ --disable-exports +``` +- Linux在命令行启动时使用`--disable-exports`,如下所示: +``` +ew --port 8080 --path ./data/ --disable-exports +``` + +- Docker在启动时将`DISABLE_EXPORTS`环境变量设置为`true`,如下所示: +``` +docker run -d \ + --name sif2 \ + -p 8080:8080 \ + -p 8000:8000 \ + -e DISABLE_EXPORTS=true \ + -v ./data:/data \ + -v ./asset:/asset \ + zhushenwudi/lovelive-sif2 +``` + +### 帮助页面 +帮助页面如下图所示: + +![帮助页面](../../image/webui_help.jpeg) + +帮助页面包括服务器的相关介绍和应用的下载和相关配置。 + +::: tip 参考 +1. 使用命令行参数`--global-android `、`--japan-android `、`--global-ios `、`--japan-ios `或环境变量`ANDROID_GLOABL`、`ANDROID_JAPAN`、`IOS_GLOBAL`、`IOS_JAPAN`设置帮助界面中的应用下载地址。 +2. 使用命令行参数`--assets-url `或环境变量`ASSET_URL`设置帮助页面中显示的“Assets URL”。 +![帮助页面注意事项](../../image/webui_help_info.png) +3. 如何获取预打补丁的apk安装包和ios安装包,请参考 +- [Android安装教程](../user_guide/installation/android) +- [iOS安装教程](../user_guide/installation/ios) +::: \ No newline at end of file diff --git a/docs/zh/dev_guide/assets_docs.md b/docs/zh/dev_guide/assets_docs.md new file mode 100644 index 0000000..d46d15f --- /dev/null +++ b/docs/zh/dev_guide/assets_docs.md @@ -0,0 +1,123 @@ +--- +outline: deep +--- +# 游戏资源服务器配置 {#asset} +本节为如何配置环境服务器。 + +## 开启资源服务器 + +### Windows和Linux +使用命令行参数`--enable-asset-server`开启资源服务器,使用`--asset-port `指定资源服务器端口(默认为8000),使用`--asset-path `指定游戏资源位置(默认为`./asset/`)。 + +一个启动游戏资源服务器的典型命令为: +- Windows +::: warning 注意 +需要先下载[ew](./installation/windows.md)二进制文件 +::: +``` +ew.exe --enable-asset-server --port 8080 --path ./data/ --asset-port 8000 --asset-path ./asset/ --max_time 1736076211 +``` +- Linux +::: warning 注意 +需要先下载[ew](./installation/linux.md)二进制文件 +::: +``` +./ew --enable-asset-server --port 8080 --path ./data/ --asset-port 8000 --asset-path ./asset/ --max_time 1736076211 +``` + +### Docker +使用环境变量`ENABLE_ASSET_SERVER`开启资源服务器,并设置资源服务器端口映射,和游戏资源存储位置。 + +一个启动游戏资源服务器的典型命令为: +``` +docker run -d \ + --name sif2 \ + -p 8080:8080 \ + -p 8000:8000 \ + -v ./data:/data \ + -v ./asset:/asset \ + -e ENABLE_ASSET_SERVER=true \ + zhushenwudi/lovelive-sif2 +``` + +## 使用资源服务器 + +### 下载游戏资源 +- 日服 + +日服的游戏资源可以在[lovelive-sif2-jp-assets](https://archive.org/download/lovelive-sif2-jp-assets)下载。 + +安卓客户端的游戏资源为`android-final.7z`。 + +iOS客户端的游戏资源为`ios-final.7z`。 + +![lovelive-sif2-jp-assets](../../image/28.png) + +- 国际服 + +国际服的游戏资源可以在[lovelive-sif2-gl-assets](https://archive.org/download/lovelive-sif2-gl-assets)下载。 + +安卓客户端的游戏资源为`EN-Android.7z`、`KR-Android.7z`和`ZH-Android.7z`。分别对应英文、韩文和中文游戏资源。 + +iOS客户端的游戏资源为`EN-iOS.7z`、`KR-iOS.7z`和`ZH-iOS.7z`。分别对应英文、韩文和中文游戏资源。 + +![lovelive-sif2-gl-assets](../../image/29.png) + + +### 游戏资源放置位置 + +游戏资源根目录由`--asset-path `指定,默认为`./asset/`。以下说明的根目录均为`./asset/`。 + +将游戏资源压缩包解压。按照下列方式进行放置。 + +- 日服 +``` +asset/ +├── maintenance/ +│ ├── maintenance.json +├── {iOS,Android}/ +│ ├── 00a065ad8d01f2ecfd5530fc4d8df7e9 +│ ├── 00adc3ff560d26aaeb237a09d93a7f15 +│ ├── 00b7cb7d74ebf78d9876bf6a13617368 +│ ├── ... +``` + +- 国际服 +``` +asset/ +├── maintenance/ +│ ├── maintenance.json +├── {iOS,Android}/ +│ ├── {EN, KR, ZH} +│ │ ├── 000c6b576d2f4ab80f90f1eba5858971 +│ │ ├── 00c32b6c388145f46694a95dc1a00167 +│ │ ├── 00c47e80ba847813d63d81aaea1b72aa +│ │ ├── ... +``` + +::: tip 注意 +`maintenance.json`文件内容为 +```json +{ + "opened_at": "2024-02-05 02:00:00", + "closed_at": "2024-02-05 04:00:00", + "message": "Love Live! SIF2 MIRACLE LIVE! will undergo maintenance on (UTC+0) February 5, 02:00~04:00, you won't be able to log into the game. Please make sure to complete any ongoing activities before the update to avoid interruptions that may result in incomplete actions or unclaimed rewards", + "server": 1, + "gamelib": 0 +} +``` +::: + +::: tip 信息 +这里给出了日服游戏资源的百度云下载地址: + +[安卓](https://pan.baidu.com/s/1ktVSFlwCjH2vtx6VlnZzPg?pwd=LLMP) + +[iOS](https://pan.baidu.com/s/1-eHPCerXytL28FT2y-sF_Q?pwd=LLMP) + +[安卓和iOS](https://pan.baidu.com/s/1QdJmV_ZbHAvY3oWdZ-cY5g?pwd=LLMP) +::: + + + + diff --git a/docs/zh/dev_guide/installation/docker.md b/docs/zh/dev_guide/installation/docker.md new file mode 100644 index 0000000..5457c80 --- /dev/null +++ b/docs/zh/dev_guide/installation/docker.md @@ -0,0 +1,43 @@ +--- +outline: deep +--- +# Docker +Docker镜像中继承了ew服务器,因此无需额外安装ew服务器。 +::: tip 注意 +Docker 是一个开源的平台,用于开发、交付和运行应用程序。在使用Docker部署时,以假定使用者已经掌握如何运维一台服务器,同时对容器化的概念和Docker的基础操作有一定了解。否则,请使用其他更加简单的部署方式。 +::: +:::tip 注意 +本节并未提及如何配置游戏资源服务器,如需配置资源服务器请参考[游戏资源服务器配置](../assets_docs#asset)。 +::: + +## 获取镜像 +``` +docker pull zhushenwudi/lovelive-sif2 +``` + +## 运行ew服务器 + +::: tip 注意 +1. ew服务器的游戏端口默认为`8080`,资源服务器端口默认为`8000`。 +2. ew服务器的数据存储位置默认为`/data`,本地路径默认为`./data`。 +3. ew服务器的游戏资源存储位置默认为`/asset`,本地路径默认为`./asset`。 +::: +使用docker运行ew服务器,以下是一个典型的示例: +``` +docker run -d \ + --name sif2 \ + -p 8080:8080 \ + -p 8000:8000 \ + -v ./data:/data \ + -v ./asset:/asset \ + zhushenwudi/lovelive-sif2 +``` + +查看状态: +``` +docker container stats sif2 +``` + +::: tip 参考 +docker的环境变量请参考[环境变量和命令行参数](../variable-argument#variable) +::: \ No newline at end of file diff --git a/docs/zh/dev_guide/installation/linux.md b/docs/zh/dev_guide/installation/linux.md new file mode 100644 index 0000000..9c172f9 --- /dev/null +++ b/docs/zh/dev_guide/installation/linux.md @@ -0,0 +1,77 @@ +--- +outline: deep +--- +# Linux +本节介绍如何在Linux上安装ew。 + +:::tip 注意 +本节并未提及如何配置游戏资源服务器,如需配置资源服务器请参考[游戏资源服务器配置](../assets_docs#asset)。 +::: + +## 方式一:使用二进制程序 + +### 下载二进制程序 +从[ew](https://pan.baidu.com/s/1z00zlPtrFtRmwLLoZjvc4w?pwd=yi7r)下载适用于Linux的二进制文件`ew`。 + +### 运行ew +在当前目录下使用命令行,以下是一个典型的运行示例: +``` +./ew --port 8080 --path ./data/ --max_time 1736076211 +``` +::: tip 注意 +具体的命令行参数可以在[环境变量和命令行参数](../variable-argument#variable)或者使用 +``` +./ew --help +``` +查看。 +::: + +## 方式二:从源代码编译 + +### 下载源代码 +从[ew](https://git.zhushenwudi.top/zhushenwudi/ew)下载或git克隆源代码。 + +### 编译源代码 +#### 构建说明 +1. 安装以下依赖 +- [Perl](https://www.perl.org/) +- [Rust](https://www.rust-lang.org/) +- [Node.js](https://nodejs.org/) +- libssl-dev + +:::tip 注意 +在Ubuntu发行版中安装 **Perl** 和 **libssl-dev** 可以使用以下命令安装: +``` +apt install -y perl libssl-dev +``` +其他的Linux发行版请参照其包管理说明或者自行编译安装。 +::: +1. 构建WebUI +``` +cd webui +npm install +npm run build +``` + +1. 构建ew服务器 +- Debug模式 +``` +cargo build +``` +- Release模式 +``` +cargo build --release +``` +构建完成的二进制文件`ew`在源代码根目录下的`target/debug`或`target/release`中。可以将其移动到你想存储的位置。 +### 运行ew +在当前目录下使用命令行,以下是一个典型的运行示例: +``` +./ew --port 8080 --path ./data/ --max_time 1736076211 +``` +::: tip 注意 +具体的命令行参数可以在[环境变量和命令行参数](../variable-argument#variable)或者使用 +``` +./ew --help +``` +查看。 +::: diff --git a/docs/zh/dev_guide/installation/windows.md b/docs/zh/dev_guide/installation/windows.md new file mode 100644 index 0000000..1ba066d --- /dev/null +++ b/docs/zh/dev_guide/installation/windows.md @@ -0,0 +1,69 @@ +--- +outline: deep +--- +# Windows +本节介绍如何在Windows上安装ew。 + +:::tip 注意 +本节并未提及如何配置游戏资源服务器,如需配置资源服务器请参考[游戏资源服务器配置](../assets_docs#asset)。 +::: + +## 方式一:使用二进制程序 + +### 下载二进制程序 +从[ew](https://pan.baidu.com/s/1z00zlPtrFtRmwLLoZjvc4w?pwd=yi7r)下载适用于Windows的二进制文件`ew.exe`。 + +### 运行ew +在当前目录下打开CMD或者PowerShell,以下是一个典型的运行示例: +``` +ew.exe --port 8080 --path ./data/ --max_time 1736076211 +``` +::: tip 注意 +具体的命令行参数可以在[环境变量和命令行参数](../variable-argument#variable)或者使用 +``` +ew.exe --help +``` +查看。 +::: + +## 方式二:从源代码编译 + +### 下载源代码 +从[ew](https://git.zhushenwudi.top/zhushenwudi/ew)下载或git克隆源代码。 + +### 编译源代码 +#### 构建说明 +1. 安装以下依赖 +- [Perl (StrawberryPerl)](https://strawberryperl.com/) +- [Rust](https://www.rust-lang.org/) +- [Node.js](https://nodejs.org/) + +1. 构建WebUI +``` +cd webui +npm install +npm run build +``` + +1. 构建ew服务器 +- Debug模式 +``` +cargo build +``` +- Release模式 +``` +cargo build --release +``` +构建完成的二进制文件`ew.exe`在源代码根目录下的`target/debug`或`target/release`中。可以将其移动到你想存储的位置。 +### 运行ew +在当前目录下打开CMD或者PowerShell,以下是一个典型的运行示例: +``` +ew.exe --port 8080 --path ./data/ --max_time 1736076211 +``` +::: tip 注意 +具体的命令行参数可以在[环境变量和命令行参数](../variable-argument#variable)或者使用 +``` +ew.exe --help +``` +查看。 +::: diff --git a/docs/zh/dev_guide/introduction.md b/docs/zh/dev_guide/introduction.md new file mode 100644 index 0000000..8799179 --- /dev/null +++ b/docs/zh/dev_guide/introduction.md @@ -0,0 +1,5 @@ +# 介绍 +本用户文档对如何搭建和使用 **Love Live! 学园偶像祭2 MIRACLE LIVE!** 的服务器,以及对如何使用其客户端进行说明。 + +你可以通过本节对该用户文档的内容进行快速浏览。 + diff --git a/docs/zh/dev_guide/variable-argument.md b/docs/zh/dev_guide/variable-argument.md new file mode 100644 index 0000000..8cb6a99 --- /dev/null +++ b/docs/zh/dev_guide/variable-argument.md @@ -0,0 +1,95 @@ +--- +outline: deep +--- +# 环境变量和命令行参数 {#variable} + +## 介绍 + +### Docker环境变量 + +`HTTPS`:是否开启https(默认: false)。 + +`ENABLE_ASSET_SERVER`:是否开启资源服务器。 + +`NPPS4_ADDRESS`:Sif NPPS4服务器地址(默认: “127.0.0.1:51376”)。 + +`MAXTIME`:服务器默认时间(默认: 1736076211),(该时间最大不可超过官方停服时间)。 + +`HIDDEN`:隐藏WeiUI(默认: false)。 + +`DISABLE_IMPORTS`:禁止导入账户(默认:false)。 + +`DISABLE_EXPORTS`:禁止导出账户(默认:false)。 + +`ANDROID_JAPAN`:帮助页面显示链接到该服务器的日服android应用下载地址。 + +`ANDROID_GLOABL`:帮助页面显示链接到该服务器的国际服android应用下载地址。 + +`IOS_JAPAN`:帮助页面显示链接到该服务器的的日服ios应用下载地址。 + +`IOS_GLOBAL`:帮助页面显示链接到该服务器的国际服ios应用下载地址。 + +`ASSET_URL`:帮助页面显示的游戏资源下载地址。 + +### 命令行参数 +::: tip 注意 +本节所列的变量有可能已经过时,可以通过`ew --help`查看所支持的参数,环境变量与之对应。 +::: + +`--port `: 服务器监听端口(默认: 8080) + +`--asset-port `: 资源服务器监听端口(默认: 8000) + +`--path `: 数据库存放位置(默认: "./data/") + +`--asset-path `: 游戏资源存放位置(默认: "./asset/") + +`--enable-asset-server`: 开启资源服务器。 + +`--https`: 开启https。 + +`--npps4 `: Sif NPPS4服务器地址,用于sif的账户连接(默认:"127.0.0.1:51376") + +`--global-android `: 帮助页面显示链接到该服务器的国际服android应用下载地址。 + +`--japan-android `: 帮助页面显示链接到该服务器的日服android应用下载地址。 + +`--global-ios `: 帮助页面显示链接到该服务器的国际服ios应用下载地址。 + +`--japan-ios `: 帮助页面显示链接到该服务器的的日服ios应用下载地址。 + +`--assets-url `: 帮助页面显示的游戏资源下载地址。 + +`--max-time `: 服务器默认的初始时间,以时间戳形式返回。(该时间最大不可超过官方停服时间) + +`--hidden`: 隐藏Web界面。 + +`--purge`: 在启动服务器时,清理死亡账户。(死亡账户为账户中无任何卡片) + +`--disable-imports`: 禁止账户导入功能。 + +`--disable-exports`: 禁止账户导出功能。 + +`--en-ios-asset-hash `: 国际服ios客户端资源的hash。 + +`--jp-ios-asset-hash `: 日服ios客户端资源的hash。 + +`--en-android-asset-hash `: 国际服android客户端资源的hash。 + +`--jp-android-asset-hash `: 日服android客户端资源的hash。 + + +## 如何设置 + +### Docker +使用`-e`指定环境变量,下例为设置服务器默认时间为1736076200: +``` +docker run -d \ + --name sif2 \ + -p 8080:8080 \ + -p 8000:8000 \ + -e MAXTIME=1736076200 \ + -v ./data:/data \ + -v ./asset:/asset \ + zhushenwudi/lovelive-sif2:1.0.1 +``` diff --git a/index.md b/docs/zh/index.md similarity index 76% rename from index.md rename to docs/zh/index.md index 4916939..56fb0ce 100644 --- a/index.md +++ b/docs/zh/index.md @@ -9,10 +9,10 @@ hero: actions: - theme: brand text: 用户指南 - link: /docs/user_guide/client_docs + link: /docs/zh/user_guide/client_docs - theme: alt text: 服务器指南 - link: /docs/dev_guide/introduction + link: /docs/zh/dev_guide/introduction diff --git a/docs/zh/user_guide/client_docs.md b/docs/zh/user_guide/client_docs.md new file mode 100644 index 0000000..f4536c2 --- /dev/null +++ b/docs/zh/user_guide/client_docs.md @@ -0,0 +1,114 @@ +--- +outline: deep +--- +# 游戏内使用说明 {#game-use} + +## iOS准备工作 {#ios-prep} +安装应用后需要进行一定的设置才可以进入游戏。 + +1. 打开手机设置,下滑找到APP。 +
+ 设置 +
+2. 进入APP,下滑找到スクフェス2。 +
+ APP +
+3. 进入スクフェス2,下滑找到Server URL和Assets URL。 +
+ スクフェス2 +
+4. 填入服务器网址和资源服务器网址。 + +::: danger 警告 +图片中的Server URL仅作为示例,使用时请咨询你的服主具体怎么填写 +::: + +## 通用操作 {#general-use} + +### 下载资源包时发生异常 {#assets-error} +![资源异常](../../image/assets_error.png) +因为Assets URL是国外CDN,中国大陆地区的访问链接不是很好 +- 有条件的话,可以通过科学上网的方式 +- 使用[本地搭建资源服务器](../dev_guide/assets_docs.md)的方式 +::: danger 警告 +方法2中,由于游戏内资源是动态加载的,所以切歌等一系列操作如果在非本地环境下仍然会出现此问题 +::: + +### 查看Sif2 ID {#sif2-id} +1. 在游戏主界面,点击右上角的菜单。 + ![主界面](../../image/1.png) +2. 点击 **プロフィール** 。 + ![菜单界面](../../image/2.png) +3. 页面下方的即为Sif2 ID。 + ![profile](../../image/3.png) + + +### 设置数据迁移密钥 {#key} + +1. 在游戏主界面,点击右上角的菜单。 +![主界面](../../image/1.png) +2. 点击 **データ引き継ぎ** 。 +![菜单](../../image/4.png) +3. 点击 **データ引き継ぎ** 。 +![データ引き継ぎ](../../image/5.png) +4. 上面的 **引き継ぎID** 为数据迁移ID,下面的 **パスワード** 即为需要设置的数据迁移密钥。 +![引き継ぎID](../../image/6.png) +5. 点击 **次へ** 确定。 + +### 迁移数据 {#migration} + +#### 同一服务器不同设备迁移数据 {#same-server} + +1. 确保不同设备使用的服务器为同一服务器。 +2. 打开游戏,点击右上角的菜单。 +![待机界面](../../image/13.png) +3. 点击 **データ引き継ぎ** 。 +![菜单](../../image/14.png) +4. 点击 **データ引き継ぎ** 。 +![データ引き継ぎ](../../image/15.png) +5. 在上面的 **引き継ぎID** 输入数据迁移ID,在下面的 **パスワード** 输入数据迁移密钥。 +![引き継ぎID](../../image/16.png) +6. 点击 **次へ** 确定。 + +#### 跨服迁移数据 {#different-server} +跨服迁移数据需要原服务器开启导出用户数据,目标服务器开启导入用户数据。具体操作如下: +[跨服迁移数据](./user_webui#different-server) + +### 游戏数据清除 +::: danger 警告 +以下操作会使游戏数据初始化,会使游戏账号丢失。请谨慎操作。 +::: +1. 打开游戏,点击右上角的菜单。 +![待机界面](../../image/13.png) +2. 点击 **ゲームデータ削除**。 +![菜单](../../image/25.png) +3. 点击 **OK**。 +![ゲームデータ削除](../../image/26.png) + +### 获得Loveca、金币等道具的方式 {#gift} + +1. 在游戏主界面,点击右上角的菜单。 +![主界面](../../image/1.png) +2. 点击 **シリアルコード** 。 +![菜单](../../image/7.png) +3. 点击 **シリアルコード入力** 。 +![シリアルコード](../../image/8.png) +4. 输入兑换码点击OK即可兑换。 +![シリアルコード入力](../../image/9.png) +::: tip 注意 +兑换码格式为兑换码种类+数量,例如: + +coins5000:表示兑换5000金币。 +::: +::: danger 注意 +输入任何兑换码后,兑换完成显示的图标均为金币图标。 +::: + +#### 兑换码详情 {#gift-info} +- coins:金币。 +- gems:Loveca。 +- training:课程笔记(大)和技能书(大)。 +- UR:活动UR。 +- PT:招募pt。 + diff --git a/docs/zh/user_guide/game_info.md b/docs/zh/user_guide/game_info.md new file mode 100644 index 0000000..2c4b939 --- /dev/null +++ b/docs/zh/user_guide/game_info.md @@ -0,0 +1,31 @@ +--- +outline: deep +--- +# 游戏相关信息 + +本页面提供了游戏的相关信息,以供参考。 + +## 游戏开服时间和停服时间 +- 日服: + + **开服时间** :2023年4月15日 + + **停服时间** :2024年3月31日 + +- 国际服: + + **开服时间** :2024年2月1日 + + **停服时间** :2024年5月31日 + +## 游戏活动列表 + +游戏活动的开始和结束时间可以参考[LLwiki](https://llwiki.org/zh/LoveLive!%E5%AD%A6%E5%9B%AD%E5%81%B6%E5%83%8F%E7%A5%AD2_MIRACLE_LIVE!%E6%B4%BB%E5%8A%A8%E5%88%97%E8%A1%A8)。 + +## 生日招募一览 +生日招募的开始时间和结束时间可以参考[ラブライブ!スクールアイドルフェスティバル2 MIRACLE LIVE!攻略Wiki](https://gamerch.com/lovelivesif2/808233#outline__%E8%AA%95%E7%94%9F%E6%97%A5%E5%8B%A7%E8%AA%98%E4%B8%80%E8%A6%A7)(该时间为东京时间GMT+9) + +## 其他查卡器网站 +- [wazzia](https://sif2.wazzia.com) +- [idol.st](https://idol.st) +- [LLwiki](https://llwiki.org/zh/LoveLive!%E5%AD%A6%E5%9B%AD%E5%81%B6%E5%83%8F%E7%A5%AD2_MIRACLE_LIVE!%E5%8D%A1%E7%89%8C%E5%88%97%E8%A1%A8) \ No newline at end of file diff --git a/docs/zh/user_guide/installation/android.md b/docs/zh/user_guide/installation/android.md new file mode 100644 index 0000000..a94c17a --- /dev/null +++ b/docs/zh/user_guide/installation/android.md @@ -0,0 +1,47 @@ +--- +outline: deep +--- +# Android +本节介绍如何在Android上安装sif2。 + +:::tip 注意 +服主为方便国内群侑游玩,已建立了私服,可免去后续所有操作,需要加QQ群:671605906。 +::: + +### 获取原版游戏安装包(可选) + +你需要先获取原版的游戏安装包,你可以从下面的链接中获取原版的游戏安装包。 +- [国际服](https://arasfon.ru/direct/lovelive/sif2/server-patcher/base-apks/sif2_gl_base_hlow.apk) +- [日服](https://arasfon.ru/direct/lovelive/sif2/server-patcher/base-apks/sif2_jp_base_hlow.apk) + +### 给原版安装包打补丁 +1. 打开[LLSIF2 Server Patcher](https://arasfon.ru/sif2/patcher/)。 +2. 打开使用自定义apk,将apk拖入上传框中。(可选) +3. 将Server URL输入到API URL中。 +4. 将资源服务器URL输入到Assets URL中,一个可选的资源服务器为https://sif2.sif.moe 。 +5. 选择游戏版本。 +6. 更改头部格式(Header format)为Lowercase。 +7. 点击修补(Patch)。 +8. 下载修补好的安装包文件。 + +:::tip 注意 +Server URL的获取请咨询服主 +::: + +![patch](../../../image/27.png) + +### 给修补好的安装包文件签名 + +使用[uber-apk-signer](https://github.com/patrickfav/uber-apk-signer/releases/download/v1.3.0/uber-apk-signer-1.3.0.jar)给安装包签名。 +1. 安装[JDK8+](https://adoptium.net/temurin/releases/) +![JDK](../../../image/32.png) +```shell +java -jar uber-apk-signer-1.3.0.jar --apks sif2_patched.apk +``` +:::tip 注意 +jar和apk路径位置请根据自己的情况修改 +::: +![打包](../../../image/33.png) + +### 传入手机安装 +基本操作,不展开说明 \ No newline at end of file diff --git a/docs/zh/user_guide/installation/ios.md b/docs/zh/user_guide/installation/ios.md new file mode 100644 index 0000000..2b130a0 --- /dev/null +++ b/docs/zh/user_guide/installation/ios.md @@ -0,0 +1,49 @@ +--- +outline: deep +--- +# iOS +本节介绍如何在iOS上安装sif2。 + +:::danger 警告 +目前已知仅iPhone11数字型号无法打开游戏内设置窗口,导致体验不佳,请使用此设备的玩家慎重考虑 +::: + +:::tip 注意 +使用自己的id自签,每7天需要重新签名安装。 + +当提示APP不可用时,切忌删除APP,一旦误删则数据丢失产生的后果由用户自己承担。 + +服主为方便国内群侑游玩,已建立了私服,需要加QQ群:671605906。 + +服主提供开发者超级签服务,每个设备10rmb,可一年内免复签操作,需要加QQ群:765206475。 +::: + +### 安装包下载 +得益于Discord的Triangle,你只需下载对应的ipa文件,然后将该ipa文件侧载安装手机上即可。 +- [国际服](https://arasfon.ru/direct/lovelive/sif2/patched-clients/ios/sif2_gl.ipa) +- [日服](https://arasfon.ru/direct/lovelive/sif2/patched-clients/ios/sif2_jp.ipa) +:::tip 注意 +下面的安装以日服为例 +::: + +### 使用Sideloadly(IOS17+使用——7天需电脑重新签名) 推荐 +[下载地址](https://sideloadly.io/) +1. 按照电脑平台选择下载链接。 +![Sideloadly URL](../../../image/30.png) +2. 打开Sideloadly +![安装](../../../image/31.png) +- Step1:拖入准备好的ipa文件。 +- Step2:使用USB连接苹果设备。 +- Step3:输入你的苹果ID。 +- Step4:打开高级选项(可选)。 +- Step5:如果设备中存在官服Sif2 APP,这里需要填写一个与官服包名相异的字符串,这里推荐使用。 +```markdown +com.bushiroad.lovelive.sif2 +``` +- Step6:点击Start执行安装。 + +### 使用巨魔商店(IOS17-使用) 推荐 +待补充 + +### 使用SideStore(IOS17+使用——7天手机自动续签) +目前SideStore部分手机不可用,bug较多,暂不对应教程,可自行研究。 \ No newline at end of file diff --git a/docs/zh/user_guide/user_webui.md b/docs/zh/user_guide/user_webui.md new file mode 100644 index 0000000..66d493e --- /dev/null +++ b/docs/zh/user_guide/user_webui.md @@ -0,0 +1,51 @@ +--- +outline: deep +--- +# WebUI使用说明 {#WebUI-operation} + +## 进入WebUI {#enter-WebUI} +1. 确保服务器已开启WebUI(是否开启可询问服主)。 +2. 使用服主提供的服务器网址即可进入WebUI。 + +## WebUI使用 {#WebUI-use} + +### 主界面 {#main-interface } +WebUI的界面如下图所示: +![WebUI](../../image/17.png) +其中包括个人账户登录和导入用户数据和查看帮助等相关信息。 + +### 个人账户登录 {#account-login} +在主页面输入[SIF2 ID](./client_docs.md#sif2-id)和[数据迁移密钥](./client_docs.md#key)即可登录到个人账户设置页面。界面如下图所示: +![WebUI_user](../../image/18.png) + +### 更改登录奖励 {#login-bonus} +在WebUI个人设置界面的 **当前登录奖励列表** 中添加登录奖励的id即可,登录奖励id的信息请自行查阅。 +![登录奖励](../../image/19.png) + +### 更改游戏服务器时间 {#server-time} +在WebUI个人设置界面的 **服务器时间** 中输入时间,即可更改服务器时间,跳转到指定活动或卡池。 +![服务器时间](../../image/20.png) +服务器时间的格式为yyyy/MM/dd HH:mm:ss。 + +例如输入2023/12/01 22:30:30,表示服务器时间更改为2023年12月1日23时30分30秒。 + +::: tip 注意 +服务器时间可以只输入到日期,这时默认为该日期0时0分0秒。 + +时间的输入请使用24小时制。 + +活动及卡池信息请自行在wiki查找。 +::: + +### 跨服迁移数据 {#different-server} +1. 确保服务器开启了 **WebUI**、**导出用户数据** 和 **导入用户数据**。 +2. 在导出服务器上进入个人账户设置界面。 +3. 在导出服务器上的个人账户设置界面点击右上角的 **导出用户数据**。 +![导出用户数据](../../image/21.png) +4. 你会获得四个文件,这四个文件即为用户数据文件。 +![用户数据文件](../../image/22.png) +5. 在导入服务器的WebUI主页面点击 **导入用户数据**。 +![导入用户数据](../../image/23.png) +6. 选择导出的四个文件,输入数据迁移密钥,点击提交,即可导入用户数据。 +![导入数据](../../image/24.png) +1. 在游戏中进行数据迁移,方法为[同一服务器不同设备迁移数据](./client_docs#same-server)。 \ No newline at end of file diff --git a/package.json b/package.json index a87dcd0..4a6ae05 100644 --- a/package.json +++ b/package.json @@ -1,4 +1,5 @@ { + "type": "module", "scripts": { "docs:dev": "vitepress dev", "docs:build": "vitepress build", diff --git a/public/logo.png b/public/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..48595dc24780175fb5d46321bd3327b1f7a3d192 GIT binary patch literal 61160 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 hpc$I568o