Compare commits
15 Commits
Author | SHA1 | Date |
---|---|---|
raphaeIl | 506ba719d2 | |
Raphael | 7e5a90b89c | |
挽歌歌吖 | 3db67118f9 | |
北野樱奈 | e2447b0af4 | |
北野樱奈 | 4a74c6e49e | |
挽歌歌吖 | b21a3de9aa | |
北野樱奈 | 9cb8561b1b | |
挽歌歌吖 | c3f628b094 | |
Raphael | 8b28682624 | |
xjkxjk | 58d6ba2312 | |
raphaeIl | 5479b8b3e8 | |
raphaeIl | 1fda0691d7 | |
Raphael | 7a722825c8 | |
挽歌歌吖 | 8a1a7b811c | |
Raphael | 40846cca3c |
|
@ -0,0 +1,25 @@
|
||||||
|
**How to Save and Load Your Official Account Data into SCHALE(EN)**
|
||||||
|
By Raphael
|
||||||
|
|
||||||
|
1. Use any Pcap program, turn it on, log into your official account, and capture the packets.
|
||||||
|
The Pcap file should look something like this:
|
||||||
|
[Example Pcap file](https://gist.github.com/raphaeIl/b85185098b6ef0d569c794f49c8f910c)
|
||||||
|
|
||||||
|
2. Save the file as a JSON and place it in the `Resources\account_data` folder. If the folder does not exist, create it.
|
||||||
|
Example file path: `Resources\account_data\accountdata_Raphael.json`
|
||||||
|
|
||||||
|
3. Start the server, log into the game, and run:
|
||||||
|
```
|
||||||
|
/loaddata list
|
||||||
|
```
|
||||||
|
If the log displays your JSON file name, the file is in the correct folder.
|
||||||
|
|
||||||
|
4. Run the following command to load the data:
|
||||||
|
```
|
||||||
|
/loaddata <your_json_filename.json>
|
||||||
|
```
|
||||||
|
This will load the data from your official server’s Pcap file into the PS. If successful, restart the client, and all your data should be loaded.
|
||||||
|
|
||||||
|
**Tip:** If your custom Pcap file doesn’t work, please try using my example JSON file first.
|
||||||
|
|
||||||
|
---
|
|
@ -0,0 +1,24 @@
|
||||||
|
**如何将官方账号数据保存并加载到 SCHALE (ZHCN)**
|
||||||
|
|
||||||
|
- CN-By 北野桜奈
|
||||||
|
|
||||||
|
1. 使用任何 Pcap 程序,打开它并登录到你的官方账号,抓取数据包。
|
||||||
|
Pcap 文件应类似于以下示例:
|
||||||
|
[示例 Pcap 文件](https://gist.github.com/raphaeIl/b85185098b6ef0d569c794f49c8f910c)
|
||||||
|
|
||||||
|
2. 将该文件保存为 JSON 格式,并放置到 `Resources\account_data` 文件夹中。如果文件夹不存在,请自行创建。
|
||||||
|
示例文件路径:`Resources\account_data\accountdata_Raphael.json`
|
||||||
|
|
||||||
|
3. 启动服务器,进入游戏并运行以下命令:
|
||||||
|
```
|
||||||
|
/loaddata list
|
||||||
|
```
|
||||||
|
如果日志显示了你的 JSON 文件名,说明该文件已正确放置。
|
||||||
|
|
||||||
|
4. 运行以下命令加载数据:
|
||||||
|
```
|
||||||
|
/loaddata <your_json_filename.json>
|
||||||
|
```
|
||||||
|
这将从官方服务器的 Pcap 数据加载到 PS。如果加载成功,请重启客户端,所有数据应该已加载。
|
||||||
|
|
||||||
|
**提示:** 如果你的自定义 Pcap 文件无法正常工作,请先尝试我的示例 JSON 文件。
|
|
@ -0,0 +1,480 @@
|
||||||
|
# 💻 蔚蓝档案命令手册
|
||||||
|
*📝 作者:阁主*
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📑 目录
|
||||||
|
- [📑 English version of Command](Command_EN.md)
|
||||||
|
- [🏰 咖啡厅命令 (Cafe)](#咖啡厅-cafe-命令)
|
||||||
|
- [👥 角色命令 (Character)](#角色-character-命令)
|
||||||
|
- [💎 货币命令 (Currency)](#货币-currency-命令)
|
||||||
|
- [❓ 帮助命令 (Help)](#帮助-help-命令)
|
||||||
|
- [📦 库存命令 (Inventory)](#库存-inventory-命令)
|
||||||
|
- [💾 加载数据命令 (LoadData)](#加载数据-loaddata-命令)
|
||||||
|
- [⚙️ 设置账号命令 (SetAccount)](#设置账号-setaccount-命令)
|
||||||
|
- [🔓 解锁全部命令 (UnlockAll)](#解锁全部-unlockall-命令)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# 🏰 咖啡厅 (Cafe) 命令
|
||||||
|
> 打造您的理想咖啡厅,创造独特的休憩空间
|
||||||
|
|
||||||
|
## ⌨️ 命令格式
|
||||||
|
```
|
||||||
|
/cafe <character|furniture> <add|addall|removeall> [id/amount]
|
||||||
|
```
|
||||||
|
## 🎯 功能说明
|
||||||
|
此命令用于管理游戏中的咖啡厅系统,让您能够自由布置角色和家具。
|
||||||
|
|
||||||
|
## 📋 可用子命令
|
||||||
|
|
||||||
|
### 👥 角色管理 (character)
|
||||||
|
|
||||||
|
#### 1. ➕ 添加单个角色
|
||||||
|
```
|
||||||
|
/cafe character add <角色ID>
|
||||||
|
```
|
||||||
|
- 💫 功能:向咖啡厅添加指定ID的角色
|
||||||
|
- 📝 示例:`/cafe character add 123`
|
||||||
|
- ℹ️ 说明:重复添加会收到提示
|
||||||
|
|
||||||
|
#### 2. ✨ 批量添加角色
|
||||||
|
```
|
||||||
|
/cafe character addall [数量]
|
||||||
|
```
|
||||||
|
- 💫 功能:向咖啡厅批量添加可用角色
|
||||||
|
- 📝 示例:
|
||||||
|
- `/cafe character addall` (添加50个角色)
|
||||||
|
- `/cafe character addall 100` (添加100个角色)
|
||||||
|
- ℹ️ 说明:仅添加满足条件的角色:
|
||||||
|
- ✅ 可玩角色
|
||||||
|
- ✅ 非NPC角色
|
||||||
|
- ✅ 已正式发布的角色
|
||||||
|
|
||||||
|
#### 3. 🗑️ 移除所有角色
|
||||||
|
```
|
||||||
|
/cafe character removeall
|
||||||
|
```
|
||||||
|
- 💫 功能:清空咖啡厅中的所有角色
|
||||||
|
- ⚠️ 注意:此操作不可撤销
|
||||||
|
|
||||||
|
## ⚡ 注意事项
|
||||||
|
1. 🔄 所有命令执行后自动保存
|
||||||
|
2. 📝 命令不区分大小写
|
||||||
|
3. ℹ️ 添加重复角色会收到提示
|
||||||
|
4. 🚧 家具功能尚在开发中
|
||||||
|
|
||||||
|
---
|
||||||
|
# 👥 角色 (Character) 命令
|
||||||
|
> 管理您的角色系统,打造完美的战斗团队
|
||||||
|
|
||||||
|
## ⌨️ 命令格式
|
||||||
|
```
|
||||||
|
/character <add|clear> [all|characterId]
|
||||||
|
```
|
||||||
|
|
||||||
|
## 🎯 功能说明
|
||||||
|
此命令用于管理玩家的角色系统,支持添加和清除角色功能。
|
||||||
|
|
||||||
|
## 📋 可用子命令
|
||||||
|
|
||||||
|
### ✨ 添加角色 (add)
|
||||||
|
|
||||||
|
#### 1. 🌟 添加所有角色
|
||||||
|
```
|
||||||
|
/character add all
|
||||||
|
```
|
||||||
|
- 💫 功能:添加所有可用角色
|
||||||
|
- ✨ 特点:角色将以最强状态添加
|
||||||
|
- ✅ 最大等级
|
||||||
|
- ✅ 完全培养
|
||||||
|
- ✅ 技能满级
|
||||||
|
|
||||||
|
#### 2. ➕ 添加指定角色
|
||||||
|
```
|
||||||
|
/character add <角色ID>
|
||||||
|
```
|
||||||
|
- 💫 功能:添加指定ID的角色
|
||||||
|
- 📝 示例:`/character add 1`
|
||||||
|
- ℹ️ 说明:角色将以最强状态添加
|
||||||
|
|
||||||
|
### 🗑️ 清除角色 (clear)
|
||||||
|
```
|
||||||
|
/character clear
|
||||||
|
```
|
||||||
|
- 💫 功能:清空所有角色
|
||||||
|
- ⚠️ 警告:此操作不可撤销
|
||||||
|
|
||||||
|
## ⚡ 注意事项
|
||||||
|
1. 🔄 操作自动保存
|
||||||
|
2. 📝 命令不区分大小写
|
||||||
|
3. ℹ️ 重复添加会提示
|
||||||
|
4. ⚠️ 清除操作需谨慎
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# 💎 货币 (Currency) 命令
|
||||||
|
> 自由调整各类货币数量,畅享游戏体验
|
||||||
|
|
||||||
|
## ⌨️ 命令格式
|
||||||
|
```
|
||||||
|
/currency <货币类型> <数量>
|
||||||
|
```
|
||||||
|
|
||||||
|
## 🎯 功能说明
|
||||||
|
此命令用于修改账号中各类货币的数量。
|
||||||
|
|
||||||
|
## 💰 可用货币类型
|
||||||
|
|
||||||
|
### 💫 基础货币
|
||||||
|
- `Gold` - 💰 金币
|
||||||
|
- `Gem` - 💎 青辉石(总数)
|
||||||
|
- `GemPaid` - 💳 付费青辉石
|
||||||
|
- `GemBonus` - 🎁 奖励青辉石
|
||||||
|
|
||||||
|
### 🎫 体力票券
|
||||||
|
- `ActionPoint` - ⚡ 体力值
|
||||||
|
- `AcademyTicket` - 📚 学院券
|
||||||
|
- `ArenaTicket` - ⚔️ 竞技场券
|
||||||
|
- `RaidTicket` - 🎯 总力战券
|
||||||
|
|
||||||
|
### 🗺️ 每周副本券
|
||||||
|
- `WeekDungeonChaserATicket` - 🏃♂️ 追击战A券
|
||||||
|
- `WeekDungeonChaserBTicket` - 🏃♀️ 追击战B券
|
||||||
|
- `WeekDungeonChaserCTicket` - 🏃 追击战C券
|
||||||
|
- `WeekDungeonFindGiftTicket` - 🎁 寻宝战券
|
||||||
|
- `WeekDungeonBloodTicket` - 🗡️ 血战券
|
||||||
|
- `ChaserTotalTicket` - 🎯 追击战总券
|
||||||
|
|
||||||
|
### 🏫 学院副本券
|
||||||
|
- `SchoolDungeonATicket` - 📘 学院副本A券
|
||||||
|
- `SchoolDungeonBTicket` - 📗 学院副本B券
|
||||||
|
- `SchoolDungeonCTicket` - 📙 学院副本C券
|
||||||
|
- `SchoolDungeonTotalTicket` - 📚 学院副本总券
|
||||||
|
|
||||||
|
### 🌟 特殊副本券
|
||||||
|
- `TimeAttackDungeonTicket` - ⏱️ 限时挑战券
|
||||||
|
- `WorldRaidTicketA` - 🌍 世界副本A券
|
||||||
|
- `WorldRaidTicketB` - 🌎 世界副本B券
|
||||||
|
- `WorldRaidTicketC` - 🌏 世界副本C券
|
||||||
|
|
||||||
|
### ⚔️ 清除战券
|
||||||
|
- `EliminateTicketA` - 🗡️ 清除战A券
|
||||||
|
- `EliminateTicketB` - ⚔️ 清除战B券
|
||||||
|
- `EliminateTicketC` - 🛡️ 清除战C券
|
||||||
|
- `EliminateTicketD` - 🔰 清除战D券
|
||||||
|
|
||||||
|
### 🏆 其他
|
||||||
|
- `MasterCoin` - 🎖️ 大师币
|
||||||
|
|
||||||
|
## 📝 使用示例
|
||||||
|
```
|
||||||
|
/currency Gem 99999 # 设置青辉石为99999
|
||||||
|
/currency ActionPoint 9999 # 设置体力值为9999
|
||||||
|
/currency Gold 99999999 # 设置金币为99999999
|
||||||
|
```
|
||||||
|
|
||||||
|
## ⚡ 注意事项
|
||||||
|
1. 📝 货币类型区分大小写
|
||||||
|
2. 🔢 数量必须为整数
|
||||||
|
3. 🔄 修改立即生效并保存
|
||||||
|
4. ⚠️ 无效输入将提示错误
|
||||||
|
5. 💡 请合理使用此功能
|
||||||
|
|
||||||
|
---
|
||||||
|
# ❓ 帮助 (Help) 命令
|
||||||
|
> 获取详细的命令使用说明,助您轻松上手
|
||||||
|
|
||||||
|
## ⌨️ 命令格式
|
||||||
|
```
|
||||||
|
/help [命令名称]
|
||||||
|
```
|
||||||
|
|
||||||
|
## 🎯 功能说明
|
||||||
|
此命令用于查看所有可用命令的帮助信息,或获取特定命令的详细说明。
|
||||||
|
|
||||||
|
## 📋 使用方法
|
||||||
|
|
||||||
|
### 1. 📑 查看所有命令
|
||||||
|
```
|
||||||
|
/help
|
||||||
|
```
|
||||||
|
- 💫 功能:显示完整命令列表
|
||||||
|
- 📝 显示格式:
|
||||||
|
- 命令名称
|
||||||
|
- 简要说明
|
||||||
|
- 基本用法
|
||||||
|
|
||||||
|
### 2. 🔍 查看特定命令
|
||||||
|
```
|
||||||
|
/help <命令名称>
|
||||||
|
```
|
||||||
|
- 💫 功能:显示指定命令的详细信息
|
||||||
|
- 📝 示例:`/help currency`
|
||||||
|
- ℹ️ 显示内容:
|
||||||
|
- 📌 命令说明
|
||||||
|
- ⌨️ 使用方法
|
||||||
|
- 📑 参数详解
|
||||||
|
|
||||||
|
## ⚡ 注意事项
|
||||||
|
1. 📝 命令名称不区分大小写
|
||||||
|
2. 🔤 仅支持英文命令名
|
||||||
|
3. ⚠️ 无效命令将提示错误
|
||||||
|
4. 💡 默认显示所有命令概览
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# 📦 库存 (Inventory) 命令
|
||||||
|
> 一键管理所有游戏物品,打造完美账号
|
||||||
|
|
||||||
|
## ⌨️ 命令格式
|
||||||
|
```
|
||||||
|
/inventory <addall|addallmax|removeall>
|
||||||
|
```
|
||||||
|
|
||||||
|
## 🎯 功能说明
|
||||||
|
此命令用于管理玩家的所有库存物品,包括角色、武器、装备等全部游戏内容。
|
||||||
|
|
||||||
|
## 📋 可用子命令
|
||||||
|
|
||||||
|
### 1. ✨ 添加所有物品(普通)
|
||||||
|
```
|
||||||
|
/inventory addall
|
||||||
|
```
|
||||||
|
- 💫 功能:添加所有游戏内容
|
||||||
|
- 📦 添加内容:
|
||||||
|
- 👥 所有角色(基础状态)
|
||||||
|
- ⚔️ 所有武器(基础状态)
|
||||||
|
- 🛡️ 所有装备
|
||||||
|
- 🎁 所有道具
|
||||||
|
- 🔧 所有装置
|
||||||
|
- 🏰 所有记忆大厅
|
||||||
|
- 📚 所有剧情
|
||||||
|
|
||||||
|
### 2. 🌟 添加所有物品(最大化)
|
||||||
|
```
|
||||||
|
/inventory addallmax
|
||||||
|
```
|
||||||
|
- 💫 功能:添加所有内容(最强状态)
|
||||||
|
- 📦 添加内容:
|
||||||
|
- 👥 所有角色(满级满培养)
|
||||||
|
- ⚔️ 所有武器(满级满突破)
|
||||||
|
- 🛡️ 所有装备
|
||||||
|
- 🎁 所有道具
|
||||||
|
- 🔧 所有装置(满级)
|
||||||
|
- 🏰 所有记忆大厅
|
||||||
|
- 📚 所有剧情
|
||||||
|
|
||||||
|
### 3. 🗑️ 移除所有物品
|
||||||
|
```
|
||||||
|
/inventory removeall
|
||||||
|
```
|
||||||
|
- 💫 功能:清空所有物品
|
||||||
|
- ⚠️ 移除内容:
|
||||||
|
- 👥 所有角色
|
||||||
|
- ⚔️ 所有武器
|
||||||
|
- 🛡️ 所有装备
|
||||||
|
- 🎁 所有道具
|
||||||
|
- 🔧 所有装置
|
||||||
|
- 🏰 所有记忆大厅
|
||||||
|
- 📚 所有剧情
|
||||||
|
|
||||||
|
## ⚡ 注意事项
|
||||||
|
1. 🔄 操作自动保存
|
||||||
|
2. 📝 命令不区分大小写
|
||||||
|
3. ⚠️ 清空操作不可撤销
|
||||||
|
4. ✨ 最大化会将可培养内容提升至最高等级
|
||||||
|
|
||||||
|
---
|
||||||
|
# 💾 加载数据 (LoadData) 命令
|
||||||
|
> 轻松导入存档数据,快速恢复游戏进度
|
||||||
|
|
||||||
|
## ⌨️ 命令格式
|
||||||
|
```
|
||||||
|
/loaddata <文件名|list>
|
||||||
|
```
|
||||||
|
|
||||||
|
## 🎯 功能说明
|
||||||
|
此命令用于从保存的数据文件中加载账号数据,包括角色、武器、装备等全部游戏内容。
|
||||||
|
|
||||||
|
## 📋 使用方法
|
||||||
|
|
||||||
|
### 1. 📑 查看可用数据文件
|
||||||
|
```
|
||||||
|
/loaddata list
|
||||||
|
```
|
||||||
|
- 💫 功能:显示可用存档列表
|
||||||
|
- 📂 位置:Resources/account_data/
|
||||||
|
- 📝 显示:所有可加载的存档文件
|
||||||
|
|
||||||
|
### 2. 📥 加载指定数据文件
|
||||||
|
```
|
||||||
|
/loaddata <文件名>
|
||||||
|
```
|
||||||
|
- 💫 功能:加载指定存档数据
|
||||||
|
- 📝 示例:`/loaddata save1.json`
|
||||||
|
- 📦 加载内容:
|
||||||
|
- 👤 账号信息(昵称、等级等)
|
||||||
|
- 👥 角色数据
|
||||||
|
- ⚔️ 武器数据
|
||||||
|
- 🎁 道具数据
|
||||||
|
- 🔧 装置数据
|
||||||
|
- 🛡️ 装备数据
|
||||||
|
- 🏰 记忆大厅数据
|
||||||
|
- ☕ 咖啡厅数据
|
||||||
|
- 👥 梯队编成数据
|
||||||
|
|
||||||
|
## ⚡ 注意事项
|
||||||
|
1. 📂 文件必须在指定目录
|
||||||
|
2. 📄 需包含文件扩展名
|
||||||
|
3. 🔄 会覆盖当前账号数据
|
||||||
|
4. 🔗 自动处理ID映射
|
||||||
|
5. ⚠️ 无效文件将提示错误
|
||||||
|
6. ✅ 成功后显示确认消息
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# ⚙️ 设置账号 (SetAccount) 命令
|
||||||
|
> 自定义您的账号信息,打造个性化体验
|
||||||
|
|
||||||
|
## ⌨️ 命令格式
|
||||||
|
```
|
||||||
|
/setaccount <属性名> <值>
|
||||||
|
```
|
||||||
|
|
||||||
|
## 🎯 功能说明
|
||||||
|
此命令用于修改玩家账号的各项属性数据。
|
||||||
|
|
||||||
|
## 📋 可用属性
|
||||||
|
|
||||||
|
### 👤 基础信息
|
||||||
|
- `Nickname` - 📝 昵称
|
||||||
|
- 类型:文本
|
||||||
|
- 示例:`/setaccount Nickname Sensei`
|
||||||
|
|
||||||
|
- `Level` - 📊 等级
|
||||||
|
- 类型:整数
|
||||||
|
- 示例:`/setaccount Level 75`
|
||||||
|
|
||||||
|
- `Exp` - ✨ 经验值
|
||||||
|
- 类型:整数
|
||||||
|
- 示例:`/setaccount Exp 999999`
|
||||||
|
|
||||||
|
### 🎨 个人设置
|
||||||
|
- `CallName` - 📢 称呼名称
|
||||||
|
- 类型:文本
|
||||||
|
- 示例:`/setaccount CallName Teacher`
|
||||||
|
|
||||||
|
- `Comment` - 📝 个人简介
|
||||||
|
- 类型:文本
|
||||||
|
- 示例:`/setaccount Comment "Hello World"`
|
||||||
|
|
||||||
|
- `LobbyMode` - 🏰 大厅模式
|
||||||
|
- 类型:整数
|
||||||
|
- 示例:`/setaccount LobbyMode 1`
|
||||||
|
|
||||||
|
### 🎭 展示相关
|
||||||
|
- `RepresentCharacterServerId` - 👥 代表角色ID
|
||||||
|
- 类型:整数
|
||||||
|
- 示例:`/setaccount RepresentCharacterServerId 10000`
|
||||||
|
|
||||||
|
- `MemoryLobbyUniqueId` - 🏰 记忆大厅ID
|
||||||
|
- 类型:整数
|
||||||
|
- 示例:`/setaccount MemoryLobbyUniqueId 1`
|
||||||
|
|
||||||
|
### 📊 账号状态
|
||||||
|
- `State` - 🔰 账号状态
|
||||||
|
- 类型:AccountState枚举
|
||||||
|
- 示例:`/setaccount State Normal`
|
||||||
|
|
||||||
|
- `VIPLevel` - 👑 VIP等级
|
||||||
|
- 类型:整数
|
||||||
|
- 示例:`/setaccount VIPLevel 5`
|
||||||
|
|
||||||
|
### ⏰ 时间相关
|
||||||
|
- `BirthDay` - 🎂 生日
|
||||||
|
- 类型:日期时间
|
||||||
|
- 示例:`/setaccount BirthDay 2024-01-01`
|
||||||
|
|
||||||
|
- `LastConnectTime` - 🔄 最后连接时间
|
||||||
|
- 类型:日期时间
|
||||||
|
- 示例:`/setaccount LastConnectTime "2024-01-01 12:00:00"`
|
||||||
|
|
||||||
|
## ⚡ 注意事项
|
||||||
|
1. 📝 属性名区分大小写
|
||||||
|
2. 🔢 值类型必须匹配
|
||||||
|
3. 🔄 修改立即生效
|
||||||
|
4. ⚠️ 无效输入将提示错误
|
||||||
|
5. 📅 日期格式需正确
|
||||||
|
6. 💡 谨慎修改重要属性
|
||||||
|
|
||||||
|
---
|
||||||
|
# 🔓 解锁全部 (UnlockAll) 命令
|
||||||
|
> 一键解锁所有游戏内容,畅玩无限可能
|
||||||
|
|
||||||
|
## ⌨️ 命令格式
|
||||||
|
```
|
||||||
|
/unlockall <内容类型>
|
||||||
|
```
|
||||||
|
|
||||||
|
## 🎯 功能说明
|
||||||
|
此命令用于解锁游戏中的各类关卡内容,包括主线剧情、每周副本、学院副本等。
|
||||||
|
|
||||||
|
## 📋 可用内容类型
|
||||||
|
|
||||||
|
### 1. 📚 主线剧情 (campaign)
|
||||||
|
```
|
||||||
|
/unlockall campaign
|
||||||
|
```
|
||||||
|
- 💫 功能:解锁所有主线关卡
|
||||||
|
- 📦 解锁内容:
|
||||||
|
- 🔰 普通难度关卡
|
||||||
|
- ⚔️ 困难难度关卡
|
||||||
|
- ✨ 额外关卡
|
||||||
|
- 🌟 超困难关卡
|
||||||
|
- ✅ 完成状态:
|
||||||
|
- 🎯 已通关
|
||||||
|
- ⭐ 获得全部三星
|
||||||
|
- 🎁 已领取首次通关奖励
|
||||||
|
- 🏆 已领取星级奖励
|
||||||
|
|
||||||
|
### 2. 🗺️ 每周副本 (weekdungeon)
|
||||||
|
```
|
||||||
|
/unlockall weekdungeon
|
||||||
|
```
|
||||||
|
- 💫 功能:解锁所有每周副本
|
||||||
|
- ✅ 完成状态:
|
||||||
|
- 🎯 关卡已完成
|
||||||
|
- ⭐ 星级目标达成
|
||||||
|
- 📦 宝箱收集最大值
|
||||||
|
|
||||||
|
### 3. 🏫 学院副本 (schooldungeon)
|
||||||
|
```
|
||||||
|
/unlockall schooldungeon
|
||||||
|
```
|
||||||
|
- 💫 功能:解锁所有学院副本
|
||||||
|
- ✅ 完成状态:
|
||||||
|
- 🎯 关卡已完成
|
||||||
|
- ⭐ 星级目标达成
|
||||||
|
|
||||||
|
## ⚡ 注意事项
|
||||||
|
1. 📝 类型名不区分大小写
|
||||||
|
2. 🔄 解锁立即生效并保存
|
||||||
|
3. ⚠️ 无效类型将提示错误
|
||||||
|
4. 💡 解锁后无法撤销
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📝 文档更新记录
|
||||||
|
|
||||||
|
### v1.0.0 (2025-01-20)
|
||||||
|
- ✨ 首次发布完整命令文档
|
||||||
|
- 📚 添加所有基础命令说明
|
||||||
|
- 🎨 优化文档排版和样式
|
||||||
|
- 🔍 补充详细使用示例
|
||||||
|
- 🐛 修复文档格式问题
|
||||||
|
- ✨ 添加更多使用示例
|
||||||
|
- 📝 完善注意事项说明
|
||||||
|
|
||||||
|
---
|
||||||
|
*💡 如有任何问题或建议,欢迎随时反馈!*
|
|
@ -0,0 +1,187 @@
|
||||||
|
# 💻 Blue Archive Command Manual
|
||||||
|
*📝 Author: Ge Zhu*
|
||||||
|
*📝 Translate: Kitano Sakura*
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📑 Table of Contents
|
||||||
|
- [🏰 Cafe Commands (Cafe)](#cafe-commands-cafe)
|
||||||
|
- [👥 Character Commands (Character)](#character-commands-character)
|
||||||
|
- [💎 Currency Commands (Currency)](#currency-commands-currency)
|
||||||
|
- [❓ Help Commands (Help)](#help-commands-help)
|
||||||
|
- [📦 Inventory Commands (Inventory)](#inventory-commands-inventory)
|
||||||
|
- [💾 Load Data Commands (LoadData)](#load-data-commands-loaddata)
|
||||||
|
- [⚙️ Set Account Commands (SetAccount)](#set-account-commands-setaccount)
|
||||||
|
- [🔓 Unlock All Commands (UnlockAll)](#unlock-all-commands-unlockall)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# 🏰 Cafe Commands (Cafe)
|
||||||
|
> Build your ideal cafe and create a unique relaxation space
|
||||||
|
|
||||||
|
## ⌨️ Command Format
|
||||||
|
```
|
||||||
|
/cafe <character|furniture> <add|addall|removeall> [id/amount]
|
||||||
|
```
|
||||||
|
|
||||||
|
## 🎯 Function Description
|
||||||
|
This command allows you to manage the in-game Cafe system, enabling you to freely arrange characters and furniture.
|
||||||
|
|
||||||
|
## 📋 Available Subcommands
|
||||||
|
|
||||||
|
### 👥 Character Management (character)
|
||||||
|
|
||||||
|
#### 1. ➕ Add a Single Character
|
||||||
|
```
|
||||||
|
/cafe character add <CharacterID>
|
||||||
|
```
|
||||||
|
- 💫 Function: Adds a specified character ID to the Cafe
|
||||||
|
- 📝 Example: `/cafe character add 123`
|
||||||
|
- ℹ️ Note: Adding a duplicate character will prompt a message
|
||||||
|
|
||||||
|
#### 2. ✨ Batch Add Characters
|
||||||
|
```
|
||||||
|
/cafe character addall [amount]
|
||||||
|
```
|
||||||
|
- 💫 Function: Adds multiple eligible characters to the Cafe
|
||||||
|
- 📝 Examples:
|
||||||
|
- `/cafe character addall` (Adds 50 characters)
|
||||||
|
- `/cafe character addall 100` (Adds 100 characters)
|
||||||
|
- ℹ️ Conditions for addition:
|
||||||
|
- ✅ Playable characters only
|
||||||
|
- ✅ Non-NPC characters
|
||||||
|
- ✅ Officially released characters
|
||||||
|
|
||||||
|
#### 3. 🗑️ Remove All Characters
|
||||||
|
```
|
||||||
|
/cafe character removeall
|
||||||
|
```
|
||||||
|
- 💫 Function: Clears all characters from the Cafe
|
||||||
|
- ⚠️ Warning: This action is irreversible
|
||||||
|
|
||||||
|
## ⚡ Notes
|
||||||
|
1. 🔄 All commands automatically save changes
|
||||||
|
2. 📝 Commands are case-insensitive
|
||||||
|
3. ℹ️ Duplicate characters cannot be added
|
||||||
|
4. 🚧 Furniture functionality is under development
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# 👥 Character Commands (Character)
|
||||||
|
> Manage your character system and build the perfect combat team
|
||||||
|
|
||||||
|
## ⌨️ Command Format
|
||||||
|
```
|
||||||
|
/character <add|clear> [all|characterId]
|
||||||
|
```
|
||||||
|
|
||||||
|
## 🎯 Function Description
|
||||||
|
This command manages the player’s character system, supporting the addition and clearing of characters.
|
||||||
|
|
||||||
|
## 📋 Available Subcommands
|
||||||
|
|
||||||
|
### ✨ Add Characters (add)
|
||||||
|
|
||||||
|
#### 1. 🌟 Add All Characters
|
||||||
|
```
|
||||||
|
/character add all
|
||||||
|
```
|
||||||
|
- 💫 Function: Adds all available characters
|
||||||
|
- ✨ Features: Characters are added in their strongest state:
|
||||||
|
- ✅ Max level
|
||||||
|
- ✅ Fully developed
|
||||||
|
- ✅ Skills maxed out
|
||||||
|
|
||||||
|
#### 2. ➕ Add a Specific Character
|
||||||
|
```
|
||||||
|
/character add <CharacterID>
|
||||||
|
```
|
||||||
|
- 💫 Function: Adds a specific character by ID
|
||||||
|
- 📝 Example: `/character add 1`
|
||||||
|
- ℹ️ Note: Characters are added in their strongest state
|
||||||
|
|
||||||
|
### 🗑️ Clear All Characters (clear)
|
||||||
|
```
|
||||||
|
/character clear
|
||||||
|
```
|
||||||
|
- 💫 Function: Clears all characters
|
||||||
|
- ⚠️ Warning: This action is irreversible
|
||||||
|
|
||||||
|
## ⚡ Notes
|
||||||
|
1. 🔄 Operations save automatically
|
||||||
|
2. 📝 Commands are case-insensitive
|
||||||
|
3. ℹ️ Duplicate additions prompt a message
|
||||||
|
4. ⚠️ Use clear commands with caution
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# 💎 Currency Commands (Currency)
|
||||||
|
> Freely adjust the amount of various currencies for a better gaming experience
|
||||||
|
|
||||||
|
## ⌨️ Command Format
|
||||||
|
```
|
||||||
|
/currency <currencyType> <amount>
|
||||||
|
```
|
||||||
|
|
||||||
|
## 🎯 Function Description
|
||||||
|
This command modifies the amounts of various currencies in your account.
|
||||||
|
|
||||||
|
## 💰 Available Currency Types
|
||||||
|
|
||||||
|
### 💫 Basic Currencies
|
||||||
|
- `Gold` - 💰 Gold
|
||||||
|
- `Gem` - 💎 Pyroxene (total)
|
||||||
|
- `GemPaid` - 💳 Paid Pyroxene
|
||||||
|
- `GemBonus` - 🎁 Bonus Pyroxene
|
||||||
|
|
||||||
|
### 🎫 Stamina Tickets
|
||||||
|
- `ActionPoint` - ⚡ Stamina
|
||||||
|
- `AcademyTicket` - 📚 Academy Tickets
|
||||||
|
- `ArenaTicket` - ⚔️ Arena Tickets
|
||||||
|
- `RaidTicket` - 🎯 Raid Tickets
|
||||||
|
|
||||||
|
### 🗺️ Weekly Dungeon Tickets
|
||||||
|
- `WeekDungeonChaserATicket` - 🏃♂️ Chase Battle A Ticket
|
||||||
|
- `WeekDungeonChaserBTicket` - 🏃♀️ Chase Battle B Ticket
|
||||||
|
- `WeekDungeonChaserCTicket` - 🏃 Chase Battle C Ticket
|
||||||
|
- `WeekDungeonFindGiftTicket` - 🎁 Treasure Hunt Ticket
|
||||||
|
- `WeekDungeonBloodTicket` - 🗡️ Blood Battle Ticket
|
||||||
|
- `ChaserTotalTicket` - 🎯 Total Chase Battle Ticket
|
||||||
|
|
||||||
|
### 🏫 Academy Dungeon Tickets
|
||||||
|
- `SchoolDungeonATicket` - 📘 Academy Dungeon A Ticket
|
||||||
|
- `SchoolDungeonBTicket` - 📗 Academy Dungeon B Ticket
|
||||||
|
- `SchoolDungeonCTicket` - 📙 Academy Dungeon C Ticket
|
||||||
|
- `SchoolDungeonTotalTicket` - 📚 Total Academy Dungeon Ticket
|
||||||
|
|
||||||
|
### 🌟 Special Dungeon Tickets
|
||||||
|
- `TimeAttackDungeonTicket` - ⏱️ Time Attack Dungeon Ticket
|
||||||
|
- `WorldRaidTicketA` - 🌍 World Raid A Ticket
|
||||||
|
- `WorldRaidTicketB` - 🌎 World Raid B Ticket
|
||||||
|
- `WorldRaidTicketC` - 🌏 World Raid C Ticket
|
||||||
|
|
||||||
|
### ⚔️ Elimination Tickets
|
||||||
|
- `EliminateTicketA` - 🗡️ Elimination A Ticket
|
||||||
|
- `EliminateTicketB` - ⚔️ Elimination B Ticket
|
||||||
|
- `EliminateTicketC` - 🛡️ Elimination C Ticket
|
||||||
|
- `EliminateTicketD` - 🔰 Elimination D Ticket
|
||||||
|
|
||||||
|
### 🏆 Others
|
||||||
|
- `MasterCoin` - 🎖️ Master Coin
|
||||||
|
|
||||||
|
## 📝 Usage Examples
|
||||||
|
```
|
||||||
|
/currency Gem 99999 # Set Pyroxene to 99999
|
||||||
|
/currency ActionPoint 9999 # Set Stamina to 9999
|
||||||
|
/currency Gold 99999999 # Set Gold to 99999999
|
||||||
|
```
|
||||||
|
|
||||||
|
## ⚡ Notes
|
||||||
|
1. 📝 Currency types are case-sensitive
|
||||||
|
2. 🔢 Amounts must be integers
|
||||||
|
3. 🔄 Changes are effective immediately
|
||||||
|
4. ⚠️ Invalid inputs will prompt an error
|
||||||
|
5. 💡 Use responsibly
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
(Translation continued upon request!)
|
|
@ -0,0 +1,128 @@
|
||||||
|
---
|
||||||
|
|
||||||
|
# 🌐 **Mitmproxy Usage Guide**
|
||||||
|
* (By Kitano Sakura)*
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🛠️ **Prerequisites**
|
||||||
|
- Download and install [**Mitmproxy**](https://mitmproxy.org/).
|
||||||
|
- Basic knowledge of **WireGuard** and **Python scripting**.
|
||||||
|
- Required devices:
|
||||||
|
- A host machine to run **Mitmproxy**.
|
||||||
|
- A client device (e.g., Android emulator or smartphone).
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📥 **Step 1: Install Mitmproxy**
|
||||||
|
|
||||||
|
### 📂 Installation
|
||||||
|
|
||||||
|
#### Linux / macOS
|
||||||
|
```bash
|
||||||
|
# Ubuntu/Debian
|
||||||
|
sudo apt update
|
||||||
|
sudo apt install mitmproxy
|
||||||
|
|
||||||
|
# macOS
|
||||||
|
brew install mitmproxy
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Windows
|
||||||
|
Download the `.exe` installer from [**mitmproxy.org**](https://mitmproxy.org/) and follow the setup instructions.
|
||||||
|
|
||||||
|
### ✅ Verify Installation
|
||||||
|
Run the following command to confirm successful installation:
|
||||||
|
```bash
|
||||||
|
mitmproxy --version
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🔑 **Step 2: Install the CA Certificate**
|
||||||
|
|
||||||
|
### 📜 Steps
|
||||||
|
|
||||||
|
1. Start `mitmproxy` to generate the CA certificate:
|
||||||
|
```bash
|
||||||
|
mitmdump
|
||||||
|
```
|
||||||
|
2. Locate the generated certificate:
|
||||||
|
- Certificate path:
|
||||||
|
- `C:\Users\<Username>\.mitmproxy\mitmproxy-ca-cert.crt` (Windows)
|
||||||
|
- `~/.mitmproxy/` (Linux / macOS)
|
||||||
|
3. Rename `mitmproxy-ca-cert.crt` to `c8750f0d.0`.
|
||||||
|
4. Move the certificate to the system CA directory and set permissions:
|
||||||
|
```bash
|
||||||
|
adb root
|
||||||
|
adb remount
|
||||||
|
adb shell mv /sdcard/c8750f0d.0 /system/etc/security/cacerts/
|
||||||
|
adb shell chmod 644 /system/etc/security/cacerts/c8750f0d.0
|
||||||
|
adb reboot
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🔧 **Step 3: Configure the Redirect Script**
|
||||||
|
|
||||||
|
Download `redirect_server.py` from the repository and modify the `SERVER_HOST` field:
|
||||||
|
|
||||||
|
```python
|
||||||
|
import gzip
|
||||||
|
import json
|
||||||
|
from mitmproxy import http
|
||||||
|
|
||||||
|
SERVER_HOST = 'Update here' # Replace with your server IP
|
||||||
|
SERVER_PORT = 80
|
||||||
|
|
||||||
|
REWRITE_HOST_LIST = [
|
||||||
|
'ba-jp-sdk.bluearchive.jp',
|
||||||
|
'prod-gateway.bluearchiveyostar.com',
|
||||||
|
'prod-game.bluearchiveyostar.com',
|
||||||
|
]
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🚀 **Step 4: Start Mitmproxy**
|
||||||
|
|
||||||
|
Run the following command to launch Mitmproxy with the redirect script:
|
||||||
|
```bash
|
||||||
|
mitmweb -m wireguard --no-http2 -s redirect_server.py --set termlog_verbosity=warn --ignore <your IP address>
|
||||||
|
```
|
||||||
|
|
||||||
|
### 📝 Parameter Explanation:
|
||||||
|
- `-m wireguard`: Use WireGuard as the network layer.
|
||||||
|
- `--no-http2`: Disable HTTP/2 for better compatibility.
|
||||||
|
- `-s redirect_server.py`: Load the redirect script.
|
||||||
|
- `--set termlog_verbosity=warn`: Show warnings only in logs.
|
||||||
|
|
||||||
|
Access the Mitmproxy web interface at `http://localhost:8081` to monitor traffic.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🔄 **Step 5: Install WireGuard**
|
||||||
|
|
||||||
|
### 📥 Installation
|
||||||
|
- **Android**: Download from [**Google Play**](https://play.google.com/store/apps/details?id=com.wireguard.android).
|
||||||
|
- **Other Platforms**: Refer to the [**official WireGuard installation guide**](https://www.wireguard.com/install/).
|
||||||
|
|
||||||
|
### ⚙️ Configuration
|
||||||
|
1. Open the WireGuard client and scan the QR code provided by Mitmproxy.
|
||||||
|
2. Apply the configuration to route all traffic through Mitmproxy.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🛠️ **Troubleshooting**
|
||||||
|
|
||||||
|
### ❌ Error: Client TLS handshake failed
|
||||||
|
- Ensure the same CA certificate is installed on both the host and client devices.
|
||||||
|
- Verify that the CA certificate is installed as a system certificate.
|
||||||
|
|
||||||
|
### ❌ Certificate disappears on Android
|
||||||
|
- Use MT Manager to grant SU permissions.
|
||||||
|
- Manually navigate to `/system/etc/security/cacerts/` and reset permissions to `644`.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
🎉 **Done!**
|
|
@ -0,0 +1,128 @@
|
||||||
|
---
|
||||||
|
|
||||||
|
# 🌐 **Mitmproxy 方案使用教程**
|
||||||
|
* (By 北野樱奈)*
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🛠️ **前置要求**
|
||||||
|
- 下载并安装 [**Mitmproxy**](https://mitmproxy.org/)。
|
||||||
|
- 熟悉 **WireGuard** 和 **Python 脚本**的基本操作。
|
||||||
|
- 准备以下设备:
|
||||||
|
- 一台运行 **Mitmproxy** 的主机。
|
||||||
|
- 一台客户端设备(如 Android 模拟器或手机)。
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📥 **第一步:安装 Mitmproxy**
|
||||||
|
|
||||||
|
### 📂 安装步骤
|
||||||
|
|
||||||
|
#### Linux / MacOS
|
||||||
|
```bash
|
||||||
|
# Ubuntu/Debian
|
||||||
|
sudo apt update
|
||||||
|
sudo apt install mitmproxy
|
||||||
|
|
||||||
|
# macOS
|
||||||
|
brew install mitmproxy
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Windows
|
||||||
|
从 [**mitmproxy.org**](https://mitmproxy.org/) 下载 `.exe` 安装程序并按说明完成安装。
|
||||||
|
|
||||||
|
### ✅ 验证安装
|
||||||
|
运行以下命令确保安装成功:
|
||||||
|
```bash
|
||||||
|
mitmproxy --version
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🔑 **第二步:安装 CA 证书**
|
||||||
|
|
||||||
|
### 📜 操作步骤
|
||||||
|
|
||||||
|
1. 启动 `mitmproxy` 并生成证书:
|
||||||
|
```bash
|
||||||
|
mitmdump
|
||||||
|
```
|
||||||
|
2. 找到生成的证书文件:
|
||||||
|
- 证书位于:
|
||||||
|
`C:\Users\<用户名>\.mitmproxy\mitmproxy-ca-cert.crt`(Windows)
|
||||||
|
`~/.mitmproxy/`(Linux / MacOS)
|
||||||
|
3. 将 `mitmproxy-ca-cert.crt` 重命名为 `c8750f0d.0`。
|
||||||
|
4. 使用以下命令将证书移动到系统 CA 目录并设置权限:
|
||||||
|
```bash
|
||||||
|
adb root
|
||||||
|
adb remount
|
||||||
|
adb shell mv /sdcard/c8750f0d.0 /system/etc/security/cacerts/
|
||||||
|
adb shell chmod 644 /system/etc/security/cacerts/c8750f0d.0
|
||||||
|
adb reboot
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🔧 **第三步:配置重定向脚本**
|
||||||
|
|
||||||
|
从仓库下载 `redirect_server.py` 并修改其中的 `SERVER_HOST`:
|
||||||
|
|
||||||
|
```python
|
||||||
|
import gzip
|
||||||
|
import json
|
||||||
|
from mitmproxy import http
|
||||||
|
|
||||||
|
SERVER_HOST = '修改这里' # 替换为你的服务器 IP
|
||||||
|
SERVER_PORT = 80
|
||||||
|
|
||||||
|
REWRITE_HOST_LIST = [
|
||||||
|
'ba-jp-sdk.bluearchive.jp',
|
||||||
|
'prod-gateway.bluearchiveyostar.com',
|
||||||
|
'prod-game.bluearchiveyostar.com',
|
||||||
|
]
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🚀 **第四步:启动 Mitmproxy**
|
||||||
|
|
||||||
|
使用以下命令加载重定向脚本并启动代理:
|
||||||
|
```bash
|
||||||
|
mitmweb -m wireguard --no-http2 -s redirect_server.py --set termlog_verbosity=warn --ignore <你的IP地址>
|
||||||
|
```
|
||||||
|
|
||||||
|
### 📝 参数说明:
|
||||||
|
- `-m wireguard`: 使用 WireGuard 作为网络层协议。
|
||||||
|
- `--no-http2`: 禁用 HTTP/2 提高兼容性。
|
||||||
|
- `-s redirect_server.py`: 加载重定向脚本。
|
||||||
|
- `--set termlog_verbosity=warn`: 仅显示警告级别日志。
|
||||||
|
|
||||||
|
访问 `http://localhost:8081` 查看 Mitmproxy 界面。
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🔄 **第五步:安装 WireGuard**
|
||||||
|
|
||||||
|
### 📥 安装步骤
|
||||||
|
- **Android**: 从 [**Google Play**](https://play.google.com/store/apps/details?id=com.wireguard.android) 下载。
|
||||||
|
- **其他平台**: 参考 [**WireGuard 官方安装指南**](https://www.wireguard.com/install/)。
|
||||||
|
|
||||||
|
### ⚙️ 配置步骤
|
||||||
|
1. 打开 WireGuard 客户端并扫描 Mitmproxy 提供的二维码。
|
||||||
|
2. 完成后启用该配置,将所有流量路由到 `Mitmproxy`。
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🛠️ **故障排查**
|
||||||
|
|
||||||
|
### ❌ 错误:Client TLS handshake failed
|
||||||
|
- 检查电脑与客户端是否安装了相同的 CA 证书。
|
||||||
|
- 确保 CA 证书安装为系统证书。
|
||||||
|
|
||||||
|
### ❌ 安卓端证书消失
|
||||||
|
- 使用 MT 管理器授予 SU 权限。
|
||||||
|
- 手动前往 `/system/etc/security/cacerts/`,重新设置权限为 `644`。
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
🎉 **完成!**
|
115
README.md
115
README.md
|
@ -1,68 +1,47 @@
|
||||||
# SCHALE.GameServer
|
|
||||||
|
# This Project is now Outdated and Archived, for the Newest Maintained version, Please Use https://git.fufufu.moe/KaniPS/
|
||||||
### [中文教程](README_zh.md) (by shunner114514)
|
|
||||||
|
# 此项目已停止维护,最新版本请用 https://git.fufufu.moe/KaniPS/
|
||||||
## Prerequisites
|
|
||||||
|
# 🌌 **SCHALE.GameServer** 🌟
|
||||||
- Some computer knowledge
|
|
||||||
- [.NET SDK 8.0](https://dotnet.microsoft.com/zh-cn/download/dotnet/8.0)
|
|
||||||
- [SQL Express](https://www.microsoft.com/zh-tw/sql-server/sql-server-downloads)
|
# 📚 Project Documentation Directory
|
||||||
- [SQL Server Management Studio (SSMS)](https://learn.microsoft.com/zh-tw/sql/ssms/download-sql-server-management-studio-ssms?view=sql-server-ver16)
|
|
||||||
- [LD Player 9](https://www.ldplayer.tw/)
|
## 📌 Directory
|
||||||
- [Python](https://www.python.org/)
|
|
||||||
- [Frida](https://frida.re/)
|
- [🔧 Environment Installation](#environment-installation)
|
||||||
- [frida-server-16.2.5-android-x86_64](https://github.com/frida/frida/releases)
|
- [🚀 Command List](Command.md)
|
||||||
|
- [📦 Mitmproxy Solution](Mitmproxy_Readme_ZH.md)
|
||||||
## Steps
|
- [🎟 Import Official Server Data](Account_Data_into_SCHALE.md)
|
||||||
|
- [📞 DISCORD](#DISCORD)
|
||||||
1. Start SQL server
|
|
||||||
2. Start private game server
|
---
|
||||||
3. Start LD Player
|
|
||||||
4. Start Frida server
|
## 🔧 Environment Installation
|
||||||
5. Start ブルアカ
|
|
||||||
6. Inject Frida script
|
### 1. Install [SQL Server Express 2022](https://go.microsoft.com/fwlink/p/?linkid=2216019&clcid=0x804&culture=zh-cn&country=cn)
|
||||||
7. Enjoy :smile:
|
* Open the downloaded installer
|
||||||
|
* Select "Basic"
|
||||||
### SQL server
|
* Choose your preferred installation path
|
||||||
|
* Start the installation
|
||||||
Use SSMS to connect with default settings except that you have to check "Trust server certificate".
|
|
||||||
|
### 2. Install [SSMS (SQL Server Management Studio 20)](https://aka.ms/ssmsfullsetup)
|
||||||
### Game server
|
* Keep the default installation path
|
||||||
|
* Install
|
||||||
```bash
|
|
||||||
# in this repo
|
### 3. Install [Microsoft Visual Studio 2022](https://visualstudio.microsoft.com/zh-hans/thank-you-downloading-visual-studio/?sku=Community&channel=Release&version=VS2022&source=VSLandingPage&cid=2030&passive=false)
|
||||||
cd SCHALE.GameServer
|
* Install the Community version
|
||||||
dotnet run
|
* Select all components related to C# and "Visual Studio Extensions Development" for the workload
|
||||||
```
|
* Install with the default path
|
||||||
|
|
||||||
### Frida server
|
### 4. Install [LDPlayer 9](https://lddl01.ldmnq.com/downloader/ldplayerinst9.exe?n=ldplayer9_ld_999_ld.exe)
|
||||||
|
* Download game updates normally after installation is complete
|
||||||
1. Extract `frida-server-16.2.5-android-x86_64.xz`
|
|
||||||
to `LDPlayer/frida-server-16.2.5-android-x86_64`.
|
### 5. Install [Python](https://www.python.org/ftp/python/3.12.3/python-3.12.3-amd64.exe)
|
||||||
2. Turn on LD Player
|
* Choose custom installation, leave other settings as default
|
||||||
3. Turn on root and adb in the settings of LD Player.
|
* Choose the installation path
|
||||||
4.
|
* Install and wait for completion
|
||||||
|
|
||||||
```bash
|
## 📞 DISCORD
|
||||||
# in LDPlayer
|
- [Discord](https://discord.gg/URaXJpS5gd)
|
||||||
cd LDPlayer9
|
|
||||||
./adb.exe push ../frida-server-16.2.5-android-x86_64 /data/local/tmp/frida-server
|
|
||||||
./adb.exe shell
|
|
||||||
su
|
|
||||||
cd /data/local/tmp
|
|
||||||
chmod 755 frida-server
|
|
||||||
./frida-server
|
|
||||||
```
|
|
||||||
|
|
||||||
### Inject Frida script
|
|
||||||
|
|
||||||
> [!NOTE]
|
|
||||||
> Edit line 5 of [ba.js](./ba.js) to your own server IP.
|
|
||||||
|
|
||||||
> [!WARNING]
|
|
||||||
> Do this fast when you open ブルアカ and see the Yostar logo.
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# in this repo
|
|
||||||
frida -U "ブルアカ" -l ba.js --realm=emulated
|
|
||||||
```
|
|
126
README_zh.md
126
README_zh.md
|
@ -1,89 +1,37 @@
|
||||||
# SCHALE.GameServer
|
# 🌌 **SCHALE.GameServer** 🌟
|
||||||
**本文基于[https://github.com/rafi1212122/SCHALE.GameServer](https://github.com/rafi1212122/SCHALE.GameServer)及个人操作经验编写,资源配置文件请到以上链接获取,若有任何疑问请到Discord社群询问**
|
|
||||||
## 安装准备阶段
|
# 📚 项目文档目录
|
||||||
### 1.安装[SQL Server Express 2022](https://go.microsoft.com/fwlink/p/?linkid=2216019&clcid=0x804&culture=zh-cn&country=cn)
|
|
||||||
* 打开你下载的安装程序
|
## 📌 目录
|
||||||
* 选择“基础”
|
|
||||||
* 选择你习惯的安装路径
|
- [🔧 环境安装](#环境安装)
|
||||||
* 开始安装
|
- [🚀 命令列表](Command.md)
|
||||||
### 2.安装[SSMS(SQL Server Management Studio 20)](https://aka.ms/ssmsfullsetup)
|
- [📦 Mitmproxy方案](Mitmproxy_Readme_ZH.md)
|
||||||
* 路径默认即可
|
- [🎟 导入官服数据](Account_Data_into_SCHALE_ZHCN.md)
|
||||||
* 安装
|
- [📞 DISCORD](#DISCORD)
|
||||||
### 3.安装[Microsoft Visual Studio 2022](https://visualstudio.microsoft.com/zh-hans/thank-you-downloading-visual-studio/?sku=Community&channel=Release&version=VS2022&source=VSLandingPage&cid=2030&passive=false)
|
|
||||||
* 安装Community版
|
---
|
||||||
* 工作负荷选择所有带有C#的组件以及“Visual Studio扩展开发”
|
|
||||||
* 直接默认路径安装
|
## 🔧 环境安装
|
||||||
### 4.安装[雷电模拟器9](https://lddl01.ldmnq.com/downloader/ldplayerinst9.exe?n=ldplayer9_ld_999_ld.exe)
|
|
||||||
### 5.安装[Python](https://www.python.org/ftp/python/3.12.3/python-3.12.3-amd64.exe)
|
### 1.安装[SQL Server Express 2022](https://go.microsoft.com/fwlink/p/?linkid=2216019&clcid=0x804&culture=zh-cn&country=cn)
|
||||||
* 选择自定义安装,其余默认
|
* 打开你下载的安装程序
|
||||||
* 选择安装路径
|
* 选择“基础”
|
||||||
* 安装,等待完成
|
* 选择你习惯的安装路径
|
||||||
### 6.安装Frida
|
* 开始安装
|
||||||
* win+R打开运行,键入cmd
|
### 2.安装[SSMS(SQL Server Management Studio 20)](https://aka.ms/ssmsfullsetup)
|
||||||
* 在cmd中输入`pip install frida`回车
|
* 路径默认即可
|
||||||
* 等待下载安装完成
|
* 安装
|
||||||
* 再输入`pip install frida-tools`回车
|
### 3.安装[Microsoft Visual Studio 2022](https://visualstudio.microsoft.com/zh-hans/thank-you-downloading-visual-studio/?sku=Community&channel=Release&version=VS2022&source=VSLandingPage&cid=2030&passive=false)
|
||||||
* 等待下载安装完成(时间可能较长)
|
* 安装Community版
|
||||||
### 7.推送Frida-server至模拟器
|
* 工作负荷选择所有带有C#的组件以及“Visual Studio扩展开发”
|
||||||
* 下载[frida-server-16.x.x-android-x86_64.xz](https://github.com/frida/frida/releases/download/16.3.1/frida-server-16.3.1-android-x86_64.xz)并解压
|
* 直接默认路径安装
|
||||||
* 把frida-server-16.x.x-android-x86_64放入`\leidian\LDPlayer9`路径下
|
### 4.安装[雷电模拟器9](https://lddl01.ldmnq.com/downloader/ldplayerinst9.exe?n=ldplayer9_ld_999_ld.exe)
|
||||||
* 打开模拟器并在设置中打开ADB调试和ROOT权限
|
* 安装完成后正常下载游戏更新
|
||||||
* 在(你安装时的盘):\leidian\LDPlayer9路径下的导航栏中输入cmd并回车
|
### 5.安装[Python](https://www.python.org/ftp/python/3.12.3/python-3.12.3-amd64.exe)
|
||||||
* 输入`adb push frida-server-16.x.x-android-x86_64 /data/local/tmp`
|
* 选择自定义安装,其余默认
|
||||||
* 等待传输完成
|
* 选择安装路径
|
||||||
## 资源配置阶段
|
* 安装,等待完成
|
||||||
* 打开并解压所下载的SCHALE.GameServer-master.zip
|
|
||||||
* 使用Microsoft Visual Studio 2022打开包中的SCHALE.GameServer.sln
|
## 📞 DISCORD
|
||||||
* 选择顶部菜单栏“视图”下拉“终端”
|
- [Discord](https://discord.gg/URaXJpS5gd)
|
||||||
* 若在`...\SCHALE.GameServer-master>`下,请输入`cd SCHALE.GameServer`转到以下路径
|
|
||||||
* 在`\SCHALE.GameServer-master\SCHALE.GameServer`路径下输入:
|
|
||||||
`dotnet publish -a x64 --use-current-runtime --self-contained false -p:InvariantGlobalization=false`
|
|
||||||
* ~~找到并在`\SCHALE.GameServer-master\SCHALE.GameServer\bin\Release\net8.0\win-x64`路径下创建Resources文件夹,再在其下创建excel文件夹,将Excel.zip解压至此文件夹~~(最新版该步骤已集成于`SCHALE.GameServer.exe`)
|
|
||||||
* 打开SSMS,默认连接(注意勾选信任服务器证书)
|
|
||||||
* 运行`\SCHALE.GameServer-master\SCHALE.GameServer\bin\Release\net8.0\win-x64\SCHALE.GameServer.exe` (后台挂起)(首次运行请允许通过防火墙)
|
|
||||||
* 找到ba.js文件使用记事本打开,修改第5行`REPLACE THIS WITH YOUR LOCAL IP`为你此时的IPV4地址(网络和Internet设置中可查看)
|
|
||||||
## 启动游戏阶段
|
|
||||||
*建议把ba.js放入\leidian\LDPlayer9路径下*
|
|
||||||
|
|
||||||
**以下操作每次启动都要执行!**
|
|
||||||
* 打开雷电模拟器
|
|
||||||
* 启动frida
|
|
||||||
* 在(你安装时的盘):\leidian\LDPlayer9路径下的导航栏中输入cmd并回车
|
|
||||||
* 在所打开的cmd中键入:
|
|
||||||
```
|
|
||||||
adb shell
|
|
||||||
su //超级管理员
|
|
||||||
cd /data/local/tmp //转到此路径下
|
|
||||||
chmod 755 frida-server-16.x.x-android-x86_64
|
|
||||||
./frida-server-16.x.x-android-x86_64 //启动frida
|
|
||||||
```
|
|
||||||
**!!!注意此步骤完成后不要关闭该cmd!!!**
|
|
||||||
|
|
||||||
* (PC)重新打开一个路径相同的cmd
|
|
||||||
* (模拟器)启动游戏 ブルアカ
|
|
||||||
* 在出现Yostar徽标时键入并回车:
|
|
||||||
`frida -U "ブルアカ" -l ba.js --realm=emulated`(后台挂起)
|
|
||||||
* 出现`Attatching...`并且SCHALE.GameServer.exe出现Ping时基本成功
|
|
||||||
|
|
||||||
**###进入私服前需要先连接官服下载资源并通过新手教程###**
|
|
||||||
|
|
||||||
**###首次登录设置完名称和发音档时会抛出错误,此时重启`SCHALE.GameServer.exe`、关闭游戏,从“启动游戏ブルアカ”步骤再次开始即可正常进入###**
|
|
||||||
|
|
||||||
## 注意事项
|
|
||||||
* 此项目还处于初期阶段,存在大量不可使用选项,出现问题请尝试重新登录或重启
|
|
||||||
* 若出现`SCHALE.GameServer.exe`没有Ping的情况,请检查ba.js中的IPV4地址与你当前地址是否一致
|
|
||||||
* 若已成功安装SQL Server Express,请不要轻易自行尝试卸载或删除它,否则可能无法再次成功安装
|
|
||||||
* 如果很不幸,你的电脑上已经多次无法成功安装SQL Server Express且不愿意重装系统,以下提供一个平替方案:
|
|
||||||
*需要较高性能的电脑和足够的硬盘存储*
|
|
||||||
* 安装[VMware Workstation Pro](https://blog.csdn.net/weixin_74195551/article/details/127288338)
|
|
||||||
* 网络搜索许可证密钥填入
|
|
||||||
* 前往Windows官网或其他正规渠道获取Windows 10/11镜像
|
|
||||||
* 创建并安装Windows虚拟机
|
|
||||||
参阅[VMware中安装win10教程_vmware安装win10-CSDN博客](https://blog.csdn.net/lvlheike/article/details/120398259)
|
|
||||||
* 创建完虚拟机需设置:
|
|
||||||
* 你的电脑:设置-系统-屏幕-显示卡-默认图形设置,启用“硬件加速GPU计划”
|
|
||||||
* (虚拟机设置)处理器:勾选虚拟化Intel VT-x/EPT或AMD-V/RVI(V)
|
|
||||||
* (虚拟机设置)显示器:勾选“加速3D图形”,选择“指定监视器设置”,监视器数量为1个,图形内存改为所给**内存**的一半
|
|
||||||
* 启动虚拟机
|
|
||||||
* 使用[KMS](https://github.com/zbezj/HEU_KMS_Activator/releases/tag/42.0.4)激活Windows
|
|
||||||
* 完成后即可开始安装
|
|
|
@ -11,7 +11,6 @@ using SCHALE.Common.NetworkProtocol;
|
||||||
|
|
||||||
namespace SCHALE.Common.Database
|
namespace SCHALE.Common.Database
|
||||||
{
|
{
|
||||||
|
|
||||||
public abstract class HexaCommand
|
public abstract class HexaCommand
|
||||||
{
|
{
|
||||||
public long CommandId { get; set; }
|
public long CommandId { get; set; }
|
||||||
|
@ -19,22 +18,22 @@ namespace SCHALE.Common.Database
|
||||||
}
|
}
|
||||||
|
|
||||||
public enum HexaCommandType
|
public enum HexaCommandType
|
||||||
{
|
{
|
||||||
None = 0,
|
None = 0,
|
||||||
UnitSpawn = 1,
|
UnitSpawn = 1,
|
||||||
PlayScenario = 2,
|
PlayScenario = 2,
|
||||||
StrategySpawn = 3,
|
StrategySpawn = 3,
|
||||||
TileSpawn = 4,
|
TileSpawn = 4,
|
||||||
TileHide = 5,
|
TileHide = 5,
|
||||||
EndBattle = 6,
|
EndBattle = 6,
|
||||||
WaitTurn = 7,
|
WaitTurn = 7,
|
||||||
StrategyHide = 8,
|
StrategyHide = 8,
|
||||||
UnitDie = 9,
|
UnitDie = 9,
|
||||||
UnitMove = 10,
|
UnitMove = 10,
|
||||||
CharacterEmoji = 11,
|
CharacterEmoji = 11,
|
||||||
}
|
}
|
||||||
|
|
||||||
public abstract class HexaCondition
|
public abstract class HexaCondition
|
||||||
{
|
{
|
||||||
public long ConditionId { get; set; }
|
public long ConditionId { get; set; }
|
||||||
public abstract HexaConditionType Type { get; }
|
public abstract HexaConditionType Type { get; }
|
||||||
|
@ -407,7 +406,7 @@ namespace SCHALE.Common.Database
|
||||||
public class CampaignMainStageSaveDB : ContentSaveDB
|
public class CampaignMainStageSaveDB : ContentSaveDB
|
||||||
{
|
{
|
||||||
public override ContentType ContentType { get => ContentType.CampaignMainStage; }
|
public override ContentType ContentType { get => ContentType.CampaignMainStage; }
|
||||||
public CampaignState CampaignState { get; set; }
|
public CampaignState CampaignState { get; set; }
|
||||||
public int CurrentTurn { get; set; }
|
public int CurrentTurn { get; set; }
|
||||||
public int EnemyClearCount { get; set; }
|
public int EnemyClearCount { get; set; }
|
||||||
public int LastEnemyEntityId { get; set; }
|
public int LastEnemyEntityId { get; set; }
|
||||||
|
@ -1530,6 +1529,7 @@ namespace SCHALE.Common.Database
|
||||||
|
|
||||||
public class SingleRaidLobbyInfoDB : RaidLobbyInfoDB
|
public class SingleRaidLobbyInfoDB : RaidLobbyInfoDB
|
||||||
{
|
{
|
||||||
|
public List<Difficulty> ClearDifficulty { get; set; }
|
||||||
}
|
}
|
||||||
|
|
||||||
public class EliminateRaidLobbyInfoDB : RaidLobbyInfoDB
|
public class EliminateRaidLobbyInfoDB : RaidLobbyInfoDB
|
||||||
|
@ -4849,7 +4849,7 @@ namespace SCHALE.Common.Database
|
||||||
public int PassiveSkillLevel { get; set; }
|
public int PassiveSkillLevel { get; set; }
|
||||||
public int ExtraPassiveSkillLevel { get; set; }
|
public int ExtraPassiveSkillLevel { get; set; }
|
||||||
public int FavorRank { get; set; }
|
public int FavorRank { get; set; }
|
||||||
public StatSnapshotCollection StatSnapshotCollection { get; set; }
|
public List<StatSnapshot> StatSnapshotCollection { get; set; }
|
||||||
public long HPRateBefore { get; set; }
|
public long HPRateBefore { get; set; }
|
||||||
public long HPRateAfter { get; set; }
|
public long HPRateAfter { get; set; }
|
||||||
public int CrowdControlCount { get; set; }
|
public int CrowdControlCount { get; set; }
|
||||||
|
@ -4883,7 +4883,7 @@ namespace SCHALE.Common.Database
|
||||||
|
|
||||||
[JsonIgnore]
|
[JsonIgnore]
|
||||||
public int ExSkillUseCount { get; }
|
public int ExSkillUseCount { get; }
|
||||||
public KillLogCollection KillLog { get; set; }
|
public Dictionary<long, int> KillLog { get; set; }
|
||||||
|
|
||||||
[JsonIgnore]
|
[JsonIgnore]
|
||||||
public int KillCount { get; }
|
public int KillCount { get; }
|
||||||
|
@ -4901,7 +4901,7 @@ namespace SCHALE.Common.Database
|
||||||
public class SkillCostSummary
|
public class SkillCostSummary
|
||||||
{
|
{
|
||||||
public float InitialCost { get; set; }
|
public float InitialCost { get; set; }
|
||||||
public CostRegenSnapshotCollection CostPerFrameSnapshots { get; set; }
|
public List<SkillCostRegenSnapshot> CostPerFrameSnapshots { get; set; }
|
||||||
public List<SkillCostAddSnapshot> CostAddSnapshots { get; set; }
|
public List<SkillCostAddSnapshot> CostAddSnapshots { get; set; }
|
||||||
public List<SkillCostUseSnapshot> CostUseSnapshots { get; set; }
|
public List<SkillCostUseSnapshot> CostUseSnapshots { get; set; }
|
||||||
}
|
}
|
||||||
|
@ -5167,6 +5167,7 @@ namespace SCHALE.Common.Database
|
||||||
private int CurrentCount { get; set; }
|
private int CurrentCount { get; set; }
|
||||||
public LogicEffect LogicEffectToDispel { get; }
|
public LogicEffect LogicEffectToDispel { get; }
|
||||||
public bool IsDispellable { get; }
|
public bool IsDispellable { get; }
|
||||||
|
public EntityId DotInvokerEntityId { get; set; }
|
||||||
public Func<bool> ExpirationCheck { get; set; }
|
public Func<bool> ExpirationCheck { get; set; }
|
||||||
public Entity ExpirationCheckOwner { get; set; }
|
public Entity ExpirationCheckOwner { get; set; }
|
||||||
public int StackSameEffectCount { get; }
|
public int StackSameEffectCount { get; }
|
||||||
|
@ -5192,6 +5193,12 @@ namespace SCHALE.Common.Database
|
||||||
public abstract class SkillCard : IDisposable
|
public abstract class SkillCard : IDisposable
|
||||||
{
|
{
|
||||||
private EventHandler<EventArgs> StateChanged;
|
private EventHandler<EventArgs> StateChanged;
|
||||||
|
private EventHandler<UpdateEvent> CardCopyUpdated;
|
||||||
|
public LogicEffectValue[] CopyApplyLogicEffectValues;
|
||||||
|
public SkillSpecification CopySkillSpecification;
|
||||||
|
public bool DeductRedrawGaugeWhenHandExist;
|
||||||
|
public int CopyUseMaxCount;
|
||||||
|
public int CopyUseCount;
|
||||||
private static int SkillUniqueIndex;
|
private static int SkillUniqueIndex;
|
||||||
public int SkillCardUniqueId;
|
public int SkillCardUniqueId;
|
||||||
public int Cost;
|
public int Cost;
|
||||||
|
@ -5200,6 +5207,14 @@ namespace SCHALE.Common.Database
|
||||||
public int ExtraEnemyCost;
|
public int ExtraEnemyCost;
|
||||||
public int NPCCost;
|
public int NPCCost;
|
||||||
public int ExtraNPCCost;
|
public int ExtraNPCCost;
|
||||||
|
public BattleEntity CastOwnerEntity { get; }
|
||||||
|
public long CastCharacterId { get; }
|
||||||
|
public long CastOwnerCostumeId { get; }
|
||||||
|
public SkillDataPack CastSkillData { get; }
|
||||||
|
public string CastSkillGroupId { get; }
|
||||||
|
public CharacterSkillListKey CastSkillListKey { get; }
|
||||||
|
public TargetCandidateRule CastCandidateRule { get; }
|
||||||
|
public SkillSlot CastSkillSlot { get; }
|
||||||
public abstract BattleEntity OwnerEntity { get; }
|
public abstract BattleEntity OwnerEntity { get; }
|
||||||
public abstract long OwnerCostumeId { get; }
|
public abstract long OwnerCostumeId { get; }
|
||||||
public SkillDataPack SkillData { get; }
|
public SkillDataPack SkillData { get; }
|
||||||
|
@ -5222,10 +5237,14 @@ namespace SCHALE.Common.Database
|
||||||
public bool IsAutoUse { get; set; }
|
public bool IsAutoUse { get; set; }
|
||||||
public abstract EntityId OwnerEntityId { get; }
|
public abstract EntityId OwnerEntityId { get; }
|
||||||
public abstract long CharacterId { get; }
|
public abstract long CharacterId { get; }
|
||||||
public int OriginalCost { get; }
|
public string CopyLogicEffectGroupId { get; set; }
|
||||||
|
public SkillCard CopyCard { get; set; }
|
||||||
|
public List<SkillCard> CopiedCard { get; set; }
|
||||||
|
public int OriginalCost { get; set; }
|
||||||
public int CostUsed { get; set; }
|
public int CostUsed { get; set; }
|
||||||
public bool IsNPCCard { get; set; }
|
public bool IsNPCCard { get; set; }
|
||||||
public int SkillRemainCount { get; set; }
|
public int SkillRemainCount { get; set; }
|
||||||
|
public bool IsCopyCard { get; }
|
||||||
public void Dispose()
|
public void Dispose()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
@ -5420,6 +5439,7 @@ namespace SCHALE.Common.Database
|
||||||
|
|
||||||
public class Circle : Shape, IEquatable<Circle>
|
public class Circle : Shape, IEquatable<Circle>
|
||||||
{
|
{
|
||||||
|
private Vector2 forward;
|
||||||
public static Circle Empty { get; }
|
public static Circle Empty { get; }
|
||||||
public static Circle Default { get; }
|
public static Circle Default { get; }
|
||||||
|
|
||||||
|
@ -5430,6 +5450,8 @@ namespace SCHALE.Common.Database
|
||||||
public override ValueTuple<float, float> Size { get; }
|
public override ValueTuple<float, float> Size { get; }
|
||||||
public override Vector2 Center { get; set; }
|
public override Vector2 Center { get; set; }
|
||||||
public float Radius { get; set; }
|
public float Radius { get; set; }
|
||||||
|
public override Vector2 Right { get; set; }
|
||||||
|
public override Vector2 Forward { get; set; }
|
||||||
public bool Equals(Circle other)
|
public bool Equals(Circle other)
|
||||||
{
|
{
|
||||||
return default;
|
return default;
|
||||||
|
@ -5607,6 +5629,7 @@ namespace SCHALE.Common.Database
|
||||||
public TagConstraint TagConstraint { get; }
|
public TagConstraint TagConstraint { get; }
|
||||||
public HPRateConstraint HPRateConstraint { get; }
|
public HPRateConstraint HPRateConstraint { get; }
|
||||||
public TacticRoleConstraint TacticRoleConstraint { get; }
|
public TacticRoleConstraint TacticRoleConstraint { get; }
|
||||||
|
public bool IsPlayerSquadConstraint { get; }
|
||||||
public CoverState CoverState { get; }
|
public CoverState CoverState { get; }
|
||||||
public bool NeedSearchTarget { get; }
|
public bool NeedSearchTarget { get; }
|
||||||
public bool Equals(TargetCandidateRule other)
|
public bool Equals(TargetCandidateRule other)
|
||||||
|
@ -6988,7 +7011,7 @@ namespace SCHALE.Common.Database
|
||||||
|
|
||||||
public class BattleNumericLog : IEquatable<BattleNumericLog>
|
public class BattleNumericLog : IEquatable<BattleNumericLog>
|
||||||
{
|
{
|
||||||
public BattleEntityType EntityType { get; set; }
|
public string EntityType { get; set; } // original type: BattleEntityType, too lazy to write Enum to string converter
|
||||||
public BattleLogCategory Category { get; set; }
|
public BattleLogCategory Category { get; set; }
|
||||||
public BattleLogSourceType Source { get; set; }
|
public BattleLogSourceType Source { get; set; }
|
||||||
public long CalculatedSum { get; set; }
|
public long CalculatedSum { get; set; }
|
||||||
|
@ -7264,6 +7287,14 @@ namespace SCHALE.Common.Database
|
||||||
public bool IsDisabled { get; }
|
public bool IsDisabled { get; }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public enum UpdateEvent
|
||||||
|
{
|
||||||
|
New = 0,
|
||||||
|
Modify = 1,
|
||||||
|
Dispell = 2,
|
||||||
|
Remove = 3,
|
||||||
|
}
|
||||||
|
|
||||||
public class SkillDataPack
|
public class SkillDataPack
|
||||||
{
|
{
|
||||||
public NewSkillAction Action { get; }
|
public NewSkillAction Action { get; }
|
||||||
|
@ -8557,6 +8588,7 @@ namespace SCHALE.Common.Database
|
||||||
public bool Dispellable { get; }
|
public bool Dispellable { get; }
|
||||||
public string UIPath { get; }
|
public string UIPath { get; }
|
||||||
public List<AttackLogicEffectType> LogicEffectTypeReduceGauge { get; }
|
public List<AttackLogicEffectType> LogicEffectTypeReduceGauge { get; }
|
||||||
|
public GaugeTraceType GaugeTraceElement { get; }
|
||||||
public override bool IsDurationChangedByStat { get; }
|
public override bool IsDurationChangedByStat { get; }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -8594,6 +8626,7 @@ namespace SCHALE.Common.Database
|
||||||
public CoverState CoverState;
|
public CoverState CoverState;
|
||||||
public HPRateConstraint HPRateConstraint;
|
public HPRateConstraint HPRateConstraint;
|
||||||
public TacticRoleConstraint TacticRoleConstraint;
|
public TacticRoleConstraint TacticRoleConstraint;
|
||||||
|
public bool IsPlayerSquadConstraint;
|
||||||
public bool Equals(OptionalCandidateRule other)
|
public bool Equals(OptionalCandidateRule other)
|
||||||
{
|
{
|
||||||
return default;
|
return default;
|
||||||
|
@ -8639,7 +8672,6 @@ namespace SCHALE.Common.Database
|
||||||
public abstract class ExpressionContainer
|
public abstract class ExpressionContainer
|
||||||
{
|
{
|
||||||
protected Expression expression;
|
protected Expression expression;
|
||||||
public Stack<string> StackTrace { get; }
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public abstract class BehaviorNode
|
public abstract class BehaviorNode
|
||||||
|
@ -8732,6 +8764,13 @@ namespace SCHALE.Common.Database
|
||||||
public bool Dispellable { get; }
|
public bool Dispellable { get; }
|
||||||
public List<AttackLogicEffectType> LogicEffectTypeReduceGauge { get; }
|
public List<AttackLogicEffectType> LogicEffectTypeReduceGauge { get; }
|
||||||
public string UIPath { get; }
|
public string UIPath { get; }
|
||||||
|
public GaugeTraceType GaugeTraceElement { get; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public enum GaugeTraceType
|
||||||
|
{
|
||||||
|
None = 0,
|
||||||
|
HPRate = 1,
|
||||||
}
|
}
|
||||||
|
|
||||||
public enum DiffOperatorType
|
public enum DiffOperatorType
|
||||||
|
@ -8753,14 +8792,12 @@ namespace SCHALE.Common.Database
|
||||||
private EvaluateFunctionHandler EvaluateFunction;
|
private EvaluateFunctionHandler EvaluateFunction;
|
||||||
private EvaluateParameterHandler EvaluateParameter;
|
private EvaluateParameterHandler EvaluateParameter;
|
||||||
private Dictionary<string, object> _parameters;
|
private Dictionary<string, object> _parameters;
|
||||||
private Stack<string> stackTrace;
|
|
||||||
public EvaluateOptions Options { get; set; }
|
public EvaluateOptions Options { get; set; }
|
||||||
protected string OriginalExpression { get; }
|
protected string OriginalExpression { get; }
|
||||||
public static bool CacheEnabled { get; set; }
|
public static bool CacheEnabled { get; set; }
|
||||||
public string Error { get; set; }
|
public string Error { get; set; }
|
||||||
public LogicalExpression ParsedExpression { get; set; }
|
public LogicalExpression ParsedExpression { get; set; }
|
||||||
public Dictionary<string, object> Parameters { get; set; }
|
public Dictionary<string, object> Parameters { get; set; }
|
||||||
public Stack<string> StackTrace { get; }
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public sealed class EvaluateFunctionHandler
|
public sealed class EvaluateFunctionHandler
|
||||||
|
|
|
@ -9891,7 +9891,7 @@ namespace SCHALE.Common.NetworkProtocol
|
||||||
public IEnumerable<RaidDamage> RaidBossDamages { get; }
|
public IEnumerable<RaidDamage> RaidBossDamages { get; }
|
||||||
|
|
||||||
[JsonIgnore]
|
[JsonIgnore]
|
||||||
public RaidBossResultCollection RaidBossResults { get; }
|
public List<RaidBossResult> RaidBossResults { get; }
|
||||||
public BattleSummary Summary { get; set; }
|
public BattleSummary Summary { get; set; }
|
||||||
public ClanAssistUseInfo AssistUseInfo { get; set; }
|
public ClanAssistUseInfo AssistUseInfo { get; set; }
|
||||||
}
|
}
|
||||||
|
|
|
@ -28,7 +28,7 @@ namespace SCHALE.GameServer.Managers
|
||||||
ReceiveRewardIds = targetSeasonData.SeasonRewardId,
|
ReceiveRewardIds = targetSeasonData.SeasonRewardId,
|
||||||
PlayableHighestDifficulty = new()
|
PlayableHighestDifficulty = new()
|
||||||
{
|
{
|
||||||
{ targetSeasonData.OpenRaidBossGroup.FirstOrDefault(), Difficulty.Torment }
|
{ targetSeasonData.OpenRaidBossGroup.FirstOrDefault(), Difficulty.Lunatic }
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -14,7 +14,7 @@ namespace SCHALE.GameServer.Utils
|
||||||
public string IRCAddress { get; set; } = "127.0.0.1";
|
public string IRCAddress { get; set; } = "127.0.0.1";
|
||||||
public int IRCPort { get; set; } = 6667;
|
public int IRCPort { get; set; } = 6667;
|
||||||
|
|
||||||
public string VersionId { get; set; } = "r76_odfuvebzfonktr6yf71a/";
|
public string VersionId { get; set; } = "r76_odfuvebzfonktr6yf71a";
|
||||||
|
|
||||||
public static void Load()
|
public static void Load()
|
||||||
{
|
{
|
||||||
|
|
Reference in New Issue