Compare commits
68 Commits
Author | SHA1 | Date | |
---|---|---|---|
90deaa84b4 | |||
403cc3fe52 | |||
dd4eb36c17 | |||
2645e16bee | |||
82668c4c6a | |||
8fce4a8995 | |||
![]() |
4cfbebcc5a | ||
40db4236ba | |||
eef4687ed6 | |||
e9a3f4014e | |||
749aae02ca | |||
fc3fd10081 | |||
65e664f35f | |||
ab9a617619 | |||
f629bc9993 | |||
dc7f48139e | |||
da8c511d60 | |||
eb60f402a4 | |||
c82ce1ea35 | |||
9524ea5ab4 | |||
caf18eaa7a | |||
2cdcb4a599 | |||
![]() |
3407ca61fd | ||
964b7ced8b | |||
![]() |
702267003b | ||
abf970b783 | |||
6855b6299f | |||
b77d242bd9 | |||
01016b1fa1 | |||
b2b656b6cb | |||
aabe6664b4 | |||
![]() |
5869a72645 | ||
df3ab12165 | |||
03fe8909d0 | |||
2ec4bc9333 | |||
c1b89a2b9a | |||
6706525e77 | |||
981b8377d8 | |||
945329d109 | |||
304f3484e3 | |||
47ad6dae6a | |||
0448bb0ea9 | |||
![]() |
5009d148a1 | ||
![]() |
8427103a7e | ||
2767cb44d7 | |||
![]() |
416ffd6435 | ||
ff554ce369 | |||
0698671c05 | |||
67468cf28b | |||
058a6b7ab2 | |||
1ccb3656c2 | |||
6da7e1d4d0 | |||
119c8c87ee | |||
2758b4d896 | |||
d8c7f0ad56 | |||
0d8b51f199 | |||
6e296edf11 | |||
072066ac87 | |||
a359dea603 | |||
29decd4899 | |||
92a5d53d35 | |||
40e33dcb1c | |||
![]() |
2b2757ccff | ||
f57f4097ac | |||
5865441074 | |||
2d916392c1 | |||
dec3b2261f | |||
5b0cb912e4 |
BIN
Doc/Screenshots-en/20-ActivityEditor.png
Normal file
After Width: | Height: | Size: 48 KiB |
BIN
Doc/Screenshots-en/21-HotKey.png
Normal file
After Width: | Height: | Size: 24 KiB |
Before Width: | Height: | Size: 36 KiB After Width: | Height: | Size: 49 KiB |
Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 54 KiB |
BIN
Doc/Screenshots-ru/20-ActivityEditor.png
Normal file
After Width: | Height: | Size: 50 KiB |
BIN
Doc/Screenshots-tw/20-ActivityEditor.png
Normal file
After Width: | Height: | Size: 57 KiB |
Before Width: | Height: | Size: 42 KiB After Width: | Height: | Size: 50 KiB |
BIN
Doc/Screenshots/20-ActivityEditor.png
Normal file
After Width: | Height: | Size: 62 KiB |
BIN
Doc/Screenshots/21-HotKey.png
Normal file
After Width: | Height: | Size: 25 KiB |
Before Width: | Height: | Size: 42 KiB After Width: | Height: | Size: 48 KiB |
49
README.md
@@ -5,7 +5,7 @@
|
||||
[](https://github.com/jie65535/GrasscutterCommandGenerator/releases)
|
||||
[](https://github.com/jie65535/GrasscutterCommandGenerator/releases/latest)
|
||||
[](https://github.com/jie65535/GrasscutterCommandGenerator/actions/workflows/build.yml)
|
||||
[](https://qm.qq.com/cgi-bin/qm/qr?k=PdS9--b-n8LEAmYjX8fNFXtKDcsp4NHN&jump_from=webapi&authKey=7ty3ZCKYMKLGWLmO8O84qiNAZ0EuCnSGF+acP+74xuDMKYXXNjuPP7iUzffHz4r2)
|
||||
[](http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=fBizzp6RwJsIY7gFlmd4L-WG0V3aF8X3&authKey=mTjf%2B7jCIZess1HTRi05e5yi%2FHKA1auMwE8%2FJ960PFWk8WMATST654gWPi4OTHTZ&noverify=0&group_code=835489603)
|
||||
|
||||
English | [简体中文](README_zh-cn.md) | [繁體中文](README_zh-tw.md) | [Русский](README_ru-RU.md)
|
||||
|
||||
@@ -17,8 +17,40 @@ Support 简体中文, 繁體中文, English and Русский languages.
|
||||
|
||||
> **Warning**: app look may be different rather than on screenshots. It may also contain translation errors and a lack of certain resources. **We're welcome everyone to contribute to their [improvement](/Source/GrasscutterTools/Resources/en-us)**
|
||||
|
||||
## Remote command
|
||||
|
||||
The server require [gc-opencommand-plugin](https://github.com/jie65535/gc-opencommand-plugin) support
|
||||
|
||||

|
||||
|
||||
> If you cannot connect to the server, please make sure the server address is correct.
|
||||
>
|
||||
> It is recommended to configure the server to HTTP mode, as shown in the figure(config.json):
|
||||
> 
|
||||
>
|
||||
> You can visit http://127.0.0.1/status/server with a browser to test whether the service is working properly.
|
||||
>
|
||||
> If you are not using port `80`, specify the port number to access in the url: http://127.0.0.1:443
|
||||
|
||||
## Update log
|
||||
|
||||
### GrasscutterTools-v1.11
|
||||

|
||||
|
||||
Commandline Usages:
|
||||
```bash
|
||||
GcTools.exe -help
|
||||
GcTools.exe -version
|
||||
GcTools.exe -c "cmd arg"
|
||||
GcTools.exe -c "cmd1 arg" && GcTools -c "cmd2 arg1 arg2"
|
||||
GcTools.exe -host http://127.0.0.1:443 -token 123456 -c "cmd1 arg1 arg2 | cmd2 | cmd3 arg"
|
||||
```
|
||||
|
||||
### GrasscutterTools-v1.10
|
||||

|
||||
|
||||

|
||||
|
||||
### GrasscutterTools-v1.9
|
||||

|
||||
|
||||
@@ -46,21 +78,6 @@ Added [AttackModifier](https://github.com/NotThorny/AttackModifier), [AttackInfu
|
||||
|
||||

|
||||
|
||||
## Remote command
|
||||
|
||||
The server require [gc-opencommand-plugin](https://github.com/jie65535/gc-opencommand-plugin) support
|
||||
|
||||

|
||||
|
||||
> If you cannot connect to the server, please make sure the server address is correct.
|
||||
>
|
||||
> It is recommended to configure the server to HTTP mode, as shown in the figure(config.json):
|
||||
> 
|
||||
>
|
||||
> You can visit http://127.0.0.1/status/server with a browser to test whether the service is working properly.
|
||||
>
|
||||
> If you are not using port `80`, specify the port number to access in the url: http://127.0.0.1:443
|
||||
|
||||
---
|
||||
|
||||
|
||||
|
@@ -16,8 +16,42 @@ GCG поддерживает 简体中文 (китайский упр.), 繁體
|
||||
|
||||
> **Warning**: вид приложения может отличаться от скриншотов. Также в нём могут присутствовать ошибки в переводе и отсутсвие некоторых ресурсов. **Мы приглашаем всех сделать вклад в их [улучшение](/Source/GrasscutterTools/Resources/ru-ru)**
|
||||
|
||||
## Удаленная команда (OpenCommand)
|
||||
|
||||
Чтобы использовать команды прямо из GCG, серверу требуется плагин [gc-opencommand-plugin](https://github.com/jie65535/gc-opencommand-plugin).
|
||||
|
||||

|
||||
|
||||
> Если вы не можете подключиться к серверу, проверьте правильность написания его URL-адреса.
|
||||
>
|
||||
> Рекомендуется изменить секцию HTTP в конфиге как на скриншоте ниже (конфиг - файл config.json):
|
||||
>
|
||||
> 
|
||||
>
|
||||
> Для проверки можете посетить http://127.0.0.1/status/server в браузере, чтобы проверить работоспособность OpenCommand.
|
||||
>
|
||||
> Если вы не указали порт `80` в конфиге, вам нужно указать свой порт в URL-адресе (например, http://127.0.0.1:443)
|
||||
|
||||
|
||||
## Лог обновлений
|
||||
|
||||
### GrasscutterTools-v1.11
|
||||

|
||||
|
||||
Commandline Usages:
|
||||
```bash
|
||||
GcTools.exe -help
|
||||
GcTools.exe -version
|
||||
GcTools.exe -c "cmd arg"
|
||||
GcTools.exe -c "cmd1 arg" && GcTools -c "cmd2 arg1 arg2"
|
||||
GcTools.exe -host http://127.0.0.1:443 -token 123456 -c "cmd1 arg1 arg2 | cmd2 | cmd3 arg"
|
||||
```
|
||||
|
||||
### GrasscutterTools-v1.10
|
||||

|
||||
|
||||

|
||||
|
||||
### GrasscutterTools-v1.9
|
||||

|
||||
|
||||
@@ -45,22 +79,6 @@ GCG поддерживает 简体中文 (китайский упр.), 繁體
|
||||
|
||||

|
||||
|
||||
## Удаленная команда (OpenCommand)
|
||||
|
||||
Чтобы использовать команды прямо из GCG, серверу требуется плагин [gc-opencommand-plugin](https://github.com/jie65535/gc-opencommand-plugin).
|
||||
|
||||

|
||||
|
||||
> Если вы не можете подключиться к серверу, проверьте правильность написания его URL-адреса.
|
||||
>
|
||||
> Рекомендуется изменить секцию HTTP в конфиге как на скриншоте ниже (конфиг - файл config.json):
|
||||
>
|
||||
> 
|
||||
>
|
||||
> Для проверки можете посетить http://127.0.0.1/status/server в браузере, чтобы проверить работоспособность OpenCommand.
|
||||
>
|
||||
> Если вы не указали порт `80` в конфиге, вам нужно указать свой порт в URL-адресе (например, http://127.0.0.1:443)
|
||||
|
||||
---
|
||||
|
||||
## Скриншоты
|
||||
|
@@ -5,7 +5,7 @@
|
||||
[](https://github.com/jie65535/GrasscutterCommandGenerator/releases)
|
||||
[](https://github.com/jie65535/GrasscutterCommandGenerator/releases/latest)
|
||||
[](https://github.com/jie65535/GrasscutterCommandGenerator/actions/workflows/build.yml)
|
||||
[](https://qm.qq.com/cgi-bin/qm/qr?k=PdS9--b-n8LEAmYjX8fNFXtKDcsp4NHN&jump_from=webapi&authKey=7ty3ZCKYMKLGWLmO8O84qiNAZ0EuCnSGF+acP+74xuDMKYXXNjuPP7iUzffHz4r2)
|
||||
[](http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=fBizzp6RwJsIY7gFlmd4L-WG0V3aF8X3&authKey=mTjf%2B7jCIZess1HTRi05e5yi%2FHKA1auMwE8%2FJ960PFWk8WMATST654gWPi4OTHTZ&noverify=0&group_code=835489603)
|
||||
|
||||
[English](README.md) | 简体中文 | [繁體中文](README_zh-tw.md) | [Русский](README_ru-RU.md)
|
||||
|
||||
@@ -17,7 +17,40 @@
|
||||
|
||||
> **Warning**: 应用程序的外观可能与截图上的不同。它也可能包含翻译错误和缺乏某些资源。**我们欢迎各位为此工具做出贡献并<a href="./Source/GrasscutterTools/Resources/zh-cn">改进</a> : )**
|
||||
|
||||
## Update log
|
||||
## 远程执行
|
||||
|
||||
服务端需要 [gc-opencommand-plugin](https://github.com/jie65535/gc-opencommand-plugin) 插件支持
|
||||
|
||||

|
||||
|
||||
> 如果你无法连接到服务器,请确认填写的服务器地址是否正确。
|
||||
>
|
||||
> 建议配置服务器为HTTP模式,如图所示(config.json):
|
||||
> 
|
||||
>
|
||||
> 你可以用浏览器访问 http://127.0.0.1/status/server 来测试服务是否正常工作。
|
||||
>
|
||||
> 如果使用的不是`80`端口,则要在url中指定访问的端口号:http://127.0.0.1:443
|
||||
|
||||
|
||||
## 更新概要
|
||||
|
||||
### GrasscutterTools-v1.11
|
||||

|
||||
|
||||
命令行用法:
|
||||
```bash
|
||||
GcTools.exe -help
|
||||
GcTools.exe -version
|
||||
GcTools.exe -c "cmd arg"
|
||||
GcTools.exe -c "cmd1 arg" && GcTools -c "cmd2 arg1 arg2"
|
||||
GcTools.exe -host http://127.0.0.1:443 -token 123456 -c "cmd1 arg1 arg2 | cmd2 | cmd3 arg"
|
||||
```
|
||||
|
||||
### GrasscutterTools-v1.10
|
||||

|
||||
|
||||

|
||||
|
||||
### GrasscutterTools-v1.9
|
||||

|
||||
@@ -50,21 +83,6 @@
|
||||
|
||||

|
||||
|
||||
## 远程执行
|
||||
|
||||
服务端需要 [gc-opencommand-plugin](https://github.com/jie65535/gc-opencommand-plugin) 插件支持
|
||||
|
||||

|
||||
|
||||
> 如果你无法连接到服务器,请确认填写的服务器地址是否正确。
|
||||
>
|
||||
> 建议配置服务器为HTTP模式,如图所示(config.json):
|
||||
> 
|
||||
>
|
||||
> 你可以用浏览器访问 http://127.0.0.1/status/server 来测试服务是否正常工作。
|
||||
>
|
||||
> 如果使用的不是`80`端口,则要在url中指定访问的端口号:http://127.0.0.1:443
|
||||
|
||||
---
|
||||
|
||||
## 软件截图
|
||||
|
@@ -5,7 +5,7 @@
|
||||
[](https://github.com/jie65535/GrasscutterCommandGenerator/releases)
|
||||
[](https://github.com/jie65535/GrasscutterCommandGenerator/releases/latest)
|
||||
[](https://github.com/jie65535/GrasscutterCommandGenerator/actions/workflows/build.yml)
|
||||
[](https://qm.qq.com/cgi-bin/qm/qr?k=PdS9--b-n8LEAmYjX8fNFXtKDcsp4NHN&jump_from=webapi&authKey=7ty3ZCKYMKLGWLmO8O84qiNAZ0EuCnSGF+acP+74xuDMKYXXNjuPP7iUzffHz4r2)
|
||||
[](http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=fBizzp6RwJsIY7gFlmd4L-WG0V3aF8X3&authKey=mTjf%2B7jCIZess1HTRi05e5yi%2FHKA1auMwE8%2FJ960PFWk8WMATST654gWPi4OTHTZ&noverify=0&group_code=835489603)
|
||||
|
||||
[English](README.md) | [简体中文](README_zh-cn.md) | 繁體中文 | [Русский](README_ru-RU.md)
|
||||
|
||||
@@ -17,8 +17,40 @@
|
||||
|
||||
> **Warning**: 程式中的實際外觀可能會與截圖中的內容不同。其中也可能包含翻譯錯誤及缺乏特定資源。**我們歡迎各位為此工具做出貢獻並[改進](/Source/GrasscutterTools/Resources/zh-tw)**
|
||||
|
||||
## 遠端控制
|
||||
|
||||
伺服器需要安裝 [gc-opencommand-plugin](https://github.com/jie65535/gc-opencommand-plugin) 插件
|
||||
|
||||

|
||||
|
||||
> 如果你無法連接至伺服器,請確認輸入的伺服器位址是否正確。
|
||||
>
|
||||
> 建議將伺服器調整為HTTP模式,如下圖所示(config.json):
|
||||
> 
|
||||
>
|
||||
> 你可藉由任何瀏覽器輸入網址 http://127.0.0.1/status/server 以測試伺服器是否正常運作。
|
||||
>
|
||||
> 如果你並非使用`80`端口, 則須在網址後輸入指定端口: http://127.0.0.1:443
|
||||
|
||||
## 更新日誌
|
||||
|
||||
### GrasscutterTools-v1.11
|
||||

|
||||
|
||||
Commandline Usages:
|
||||
```bash
|
||||
GcTools.exe -help
|
||||
GcTools.exe -version
|
||||
GcTools.exe -c "cmd arg"
|
||||
GcTools.exe -c "cmd1 arg" && GcTools -c "cmd2 arg1 arg2"
|
||||
GcTools.exe -host http://127.0.0.1:443 -token 123456 -c "cmd1 arg1 arg2 | cmd2 | cmd3 arg"
|
||||
```
|
||||
|
||||
### GrasscutterTools-v1.10
|
||||

|
||||
|
||||

|
||||
|
||||
### GrasscutterTools-v1.9
|
||||

|
||||
|
||||
@@ -50,21 +82,6 @@
|
||||
|
||||

|
||||
|
||||
## 遠端控制
|
||||
|
||||
伺服器需要安裝 [gc-opencommand-plugin](https://github.com/jie65535/gc-opencommand-plugin) 插件
|
||||
|
||||

|
||||
|
||||
> 如果你無法連接至伺服器,請確認輸入的伺服器位址是否正確。
|
||||
>
|
||||
> 建議將伺服器調整為HTTP模式,如下圖所示(config.json):
|
||||
> 
|
||||
>
|
||||
> 你可藉由任何瀏覽器輸入網址 http://127.0.0.1/status/server 以測試伺服器是否正常運作。
|
||||
>
|
||||
> 如果你並非使用`80`端口, 則須在網址後輸入指定端口: http://127.0.0.1:443
|
||||
|
||||
---
|
||||
|
||||
|
||||
|
@@ -70,6 +70,12 @@
|
||||
<setting name="ActivityConfigJsonPath" serializeAs="String">
|
||||
<value />
|
||||
</setting>
|
||||
<setting name="ProjectResourcePath" serializeAs="String">
|
||||
<value />
|
||||
</setting>
|
||||
<setting name="IsUpgraded" serializeAs="String">
|
||||
<value>False</value>
|
||||
</setting>
|
||||
</GrasscutterTools.Properties.Settings>
|
||||
</userSettings>
|
||||
</configuration>
|
@@ -36,7 +36,7 @@ namespace GrasscutterTools.Forms
|
||||
{
|
||||
#region - 成员 -
|
||||
|
||||
private List<ActivityConfigItem> ActivityConfigItems;
|
||||
private List<ActivityConfigItem> ActivityConfigItems = new List<ActivityConfigItem>();
|
||||
|
||||
#endregion - 成员 -
|
||||
|
||||
@@ -231,19 +231,22 @@ namespace GrasscutterTools.Forms
|
||||
private async void BtnAddOrUpdate_Click(object sender, EventArgs e)
|
||||
{
|
||||
var activityId = (int)NUDActivityId.Value;
|
||||
var isNew = false;
|
||||
var item = ActivityConfigItems.Find(it => it.ActivityId == activityId);
|
||||
if (item == null)
|
||||
{
|
||||
item = new ActivityConfigItem();
|
||||
ActivityConfigItems.Add(item);
|
||||
ListActivityConfigItems.Items.Add(Convert(item));
|
||||
isNew = true;
|
||||
}
|
||||
|
||||
item.ActivityId = activityId;
|
||||
item.ActivityType = (int)NUDActivityType.Value;
|
||||
item.ScheduleId = (int)NUDScheduleId.Value;
|
||||
try
|
||||
{
|
||||
item.MeetCondList = TxtMeetCondList.Text.Split(',').Select(it => int.Parse(it.Trim())).ToList();
|
||||
item.MeetCondList = !string.IsNullOrEmpty(TxtMeetCondList.Text)
|
||||
? TxtMeetCondList.Text.Split(',').Select(it => int.Parse(it.Trim())).ToList()
|
||||
: new List<int>();
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
@@ -258,6 +261,12 @@ namespace GrasscutterTools.Forms
|
||||
item.BeginTime = DTPBeginTime.Value.Date;
|
||||
item.EndTime = DTPEndTime.Value.Date.AddDays(1).AddSeconds(-1);
|
||||
|
||||
if (isNew)
|
||||
{
|
||||
ActivityConfigItems.Add(item);
|
||||
ListActivityConfigItems.Items.Add(Convert(item));
|
||||
}
|
||||
|
||||
BtnDelete.Enabled = true;
|
||||
await UIUtil.ButtonComplete(BtnAddOrUpdate);
|
||||
}
|
||||
|
@@ -30,10 +30,10 @@ namespace GrasscutterTools.Forms
|
||||
private void InitializeComponent()
|
||||
{
|
||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FormGachaBannersEditor3));
|
||||
System.Windows.Forms.DataVisualization.Charting.ChartArea chartArea9 = new System.Windows.Forms.DataVisualization.Charting.ChartArea();
|
||||
System.Windows.Forms.DataVisualization.Charting.Legend legend9 = new System.Windows.Forms.DataVisualization.Charting.Legend();
|
||||
System.Windows.Forms.DataVisualization.Charting.Series series17 = new System.Windows.Forms.DataVisualization.Charting.Series();
|
||||
System.Windows.Forms.DataVisualization.Charting.Series series18 = new System.Windows.Forms.DataVisualization.Charting.Series();
|
||||
System.Windows.Forms.DataVisualization.Charting.ChartArea chartArea2 = new System.Windows.Forms.DataVisualization.Charting.ChartArea();
|
||||
System.Windows.Forms.DataVisualization.Charting.Legend legend2 = new System.Windows.Forms.DataVisualization.Charting.Legend();
|
||||
System.Windows.Forms.DataVisualization.Charting.Series series3 = new System.Windows.Forms.DataVisualization.Charting.Series();
|
||||
System.Windows.Forms.DataVisualization.Charting.Series series4 = new System.Windows.Forms.DataVisualization.Charting.Series();
|
||||
this.GrpBannerValues = new System.Windows.Forms.GroupBox();
|
||||
this.BtnAddOrUpdate = new System.Windows.Forms.Button();
|
||||
this.CmbTitlePath = new System.Windows.Forms.ComboBox();
|
||||
@@ -59,7 +59,6 @@ namespace GrasscutterTools.Forms
|
||||
this.LblSortId = new System.Windows.Forms.Label();
|
||||
this.NUDGachaType = new System.Windows.Forms.NumericUpDown();
|
||||
this.NUDSortId = new System.Windows.Forms.NumericUpDown();
|
||||
this.LblGachaTypeTip = new System.Windows.Forms.Label();
|
||||
this.LblEndTime = new System.Windows.Forms.Label();
|
||||
this.LblScheduleId = new System.Windows.Forms.Label();
|
||||
this.LblBeginTime = new System.Windows.Forms.Label();
|
||||
@@ -93,6 +92,7 @@ namespace GrasscutterTools.Forms
|
||||
this.LblPoolWeight5 = new System.Windows.Forms.Label();
|
||||
this.ChartWeights = new System.Windows.Forms.DataVisualization.Charting.Chart();
|
||||
this.GrpBanners = new System.Windows.Forms.GroupBox();
|
||||
this.LnkCheckLatestBanners = new System.Windows.Forms.LinkLabel();
|
||||
this.ListBanners = new System.Windows.Forms.ListBox();
|
||||
this.FLPBannersControl = new System.Windows.Forms.FlowLayoutPanel();
|
||||
this.BtnDelete = new System.Windows.Forms.Button();
|
||||
@@ -145,7 +145,6 @@ namespace GrasscutterTools.Forms
|
||||
this.GrpBannerValues.Controls.Add(this.LblSortId);
|
||||
this.GrpBannerValues.Controls.Add(this.NUDGachaType);
|
||||
this.GrpBannerValues.Controls.Add(this.NUDSortId);
|
||||
this.GrpBannerValues.Controls.Add(this.LblGachaTypeTip);
|
||||
this.GrpBannerValues.Controls.Add(this.LblEndTime);
|
||||
this.GrpBannerValues.Controls.Add(this.LblScheduleId);
|
||||
this.GrpBannerValues.Controls.Add(this.LblBeginTime);
|
||||
@@ -345,11 +344,6 @@ namespace GrasscutterTools.Forms
|
||||
0,
|
||||
0});
|
||||
//
|
||||
// LblGachaTypeTip
|
||||
//
|
||||
resources.ApplyResources(this.LblGachaTypeTip, "LblGachaTypeTip");
|
||||
this.LblGachaTypeTip.Name = "LblGachaTypeTip";
|
||||
//
|
||||
// LblEndTime
|
||||
//
|
||||
resources.ApplyResources(this.LblEndTime, "LblEndTime");
|
||||
@@ -569,44 +563,52 @@ namespace GrasscutterTools.Forms
|
||||
// ChartWeights
|
||||
//
|
||||
resources.ApplyResources(this.ChartWeights, "ChartWeights");
|
||||
chartArea9.AxisX.Minimum = 0D;
|
||||
chartArea9.AxisY.Maximum = 100D;
|
||||
chartArea9.AxisY.Minimum = 0D;
|
||||
chartArea9.AxisY.Title = "%";
|
||||
chartArea9.Name = "ChartArea1";
|
||||
this.ChartWeights.ChartAreas.Add(chartArea9);
|
||||
legend9.Name = "Legend1";
|
||||
this.ChartWeights.Legends.Add(legend9);
|
||||
chartArea2.AxisX.Minimum = 0D;
|
||||
chartArea2.AxisY.Maximum = 100D;
|
||||
chartArea2.AxisY.Minimum = 0D;
|
||||
chartArea2.AxisY.Title = "%";
|
||||
chartArea2.Name = "ChartArea1";
|
||||
this.ChartWeights.ChartAreas.Add(chartArea2);
|
||||
legend2.Name = "Legend1";
|
||||
this.ChartWeights.Legends.Add(legend2);
|
||||
this.ChartWeights.Name = "ChartWeights";
|
||||
series17.ChartArea = "ChartArea1";
|
||||
series17.ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Line;
|
||||
series17.Color = System.Drawing.Color.OrangeRed;
|
||||
series17.Label = "(#VALX, #VAL)";
|
||||
series17.Legend = "Legend1";
|
||||
series17.LegendText = "5*";
|
||||
series17.Name = "SeriesWeight5";
|
||||
series17.XValueType = System.Windows.Forms.DataVisualization.Charting.ChartValueType.Int32;
|
||||
series17.YValueType = System.Windows.Forms.DataVisualization.Charting.ChartValueType.Double;
|
||||
series18.ChartArea = "ChartArea1";
|
||||
series18.ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Line;
|
||||
series18.Color = System.Drawing.Color.Purple;
|
||||
series18.Label = "(#VALX, #VAL)";
|
||||
series18.Legend = "Legend1";
|
||||
series18.LegendText = "4*";
|
||||
series18.Name = "SeriesWeight4";
|
||||
series18.XValueType = System.Windows.Forms.DataVisualization.Charting.ChartValueType.Int32;
|
||||
series18.YValueType = System.Windows.Forms.DataVisualization.Charting.ChartValueType.Double;
|
||||
this.ChartWeights.Series.Add(series17);
|
||||
this.ChartWeights.Series.Add(series18);
|
||||
series3.ChartArea = "ChartArea1";
|
||||
series3.ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Line;
|
||||
series3.Color = System.Drawing.Color.OrangeRed;
|
||||
series3.Label = "(#VALX, #VAL)";
|
||||
series3.Legend = "Legend1";
|
||||
series3.LegendText = "5*";
|
||||
series3.Name = "SeriesWeight5";
|
||||
series3.XValueType = System.Windows.Forms.DataVisualization.Charting.ChartValueType.Int32;
|
||||
series3.YValueType = System.Windows.Forms.DataVisualization.Charting.ChartValueType.Double;
|
||||
series4.ChartArea = "ChartArea1";
|
||||
series4.ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Line;
|
||||
series4.Color = System.Drawing.Color.Purple;
|
||||
series4.Label = "(#VALX, #VAL)";
|
||||
series4.Legend = "Legend1";
|
||||
series4.LegendText = "4*";
|
||||
series4.Name = "SeriesWeight4";
|
||||
series4.XValueType = System.Windows.Forms.DataVisualization.Charting.ChartValueType.Int32;
|
||||
series4.YValueType = System.Windows.Forms.DataVisualization.Charting.ChartValueType.Double;
|
||||
this.ChartWeights.Series.Add(series3);
|
||||
this.ChartWeights.Series.Add(series4);
|
||||
//
|
||||
// GrpBanners
|
||||
//
|
||||
resources.ApplyResources(this.GrpBanners, "GrpBanners");
|
||||
this.GrpBanners.Controls.Add(this.LnkCheckLatestBanners);
|
||||
this.GrpBanners.Controls.Add(this.ListBanners);
|
||||
this.GrpBanners.Controls.Add(this.FLPBannersControl);
|
||||
this.GrpBanners.Name = "GrpBanners";
|
||||
this.GrpBanners.TabStop = false;
|
||||
//
|
||||
// LnkCheckLatestBanners
|
||||
//
|
||||
resources.ApplyResources(this.LnkCheckLatestBanners, "LnkCheckLatestBanners");
|
||||
this.LnkCheckLatestBanners.Name = "LnkCheckLatestBanners";
|
||||
this.LnkCheckLatestBanners.TabStop = true;
|
||||
this.LnkCheckLatestBanners.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.LnkCheckLatestBanners_LinkClicked);
|
||||
//
|
||||
// ListBanners
|
||||
//
|
||||
resources.ApplyResources(this.ListBanners, "ListBanners");
|
||||
@@ -693,6 +695,7 @@ namespace GrasscutterTools.Forms
|
||||
this.GrpBalance.PerformLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.ChartWeights)).EndInit();
|
||||
this.GrpBanners.ResumeLayout(false);
|
||||
this.GrpBanners.PerformLayout();
|
||||
this.FLPBannersControl.ResumeLayout(false);
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
@@ -708,7 +711,6 @@ namespace GrasscutterTools.Forms
|
||||
private System.Windows.Forms.Label LblSortId;
|
||||
private System.Windows.Forms.NumericUpDown NUDGachaType;
|
||||
private System.Windows.Forms.NumericUpDown NUDSortId;
|
||||
private System.Windows.Forms.Label LblGachaTypeTip;
|
||||
private System.Windows.Forms.Label LblEndTime;
|
||||
private System.Windows.Forms.Label LblScheduleId;
|
||||
private System.Windows.Forms.Label LblBeginTime;
|
||||
@@ -767,5 +769,6 @@ namespace GrasscutterTools.Forms
|
||||
private System.Windows.Forms.ComboBox CmbTitlePath;
|
||||
private System.Windows.Forms.Label LblTitlePath;
|
||||
private System.Windows.Forms.Button BtnClear;
|
||||
private System.Windows.Forms.LinkLabel LnkCheckLatestBanners;
|
||||
}
|
||||
}
|
@@ -28,6 +28,7 @@ using System.Windows.Forms;
|
||||
using GrasscutterTools.Game;
|
||||
using GrasscutterTools.Game.Gacha;
|
||||
using GrasscutterTools.Properties;
|
||||
using GrasscutterTools.Utils;
|
||||
|
||||
using Newtonsoft.Json;
|
||||
|
||||
@@ -259,6 +260,11 @@ namespace GrasscutterTools.Forms
|
||||
|
||||
#region - 卡池 -
|
||||
|
||||
private void LnkCheckLatestBanners_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
|
||||
{
|
||||
UIUtil.OpenURL("https://github.com/Zhaokugua/Grasscutter_Banners");
|
||||
}
|
||||
|
||||
private void InitCheckedListBoxs()
|
||||
{
|
||||
ListFallbackItems.BeginUpdate();
|
||||
|
@@ -206,12 +206,6 @@
|
||||
<data name="LblSortId.Text" xml:space="preserve">
|
||||
<value>Sort</value>
|
||||
</data>
|
||||
<data name="LblGachaTypeTip.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>123, 17</value>
|
||||
</data>
|
||||
<data name="LblGachaTypeTip.Text" xml:space="preserve">
|
||||
<value>Increment from 400</value>
|
||||
</data>
|
||||
<data name="LblEndTime.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>62, 17</value>
|
||||
</data>
|
||||
@@ -443,6 +437,15 @@
|
||||
<data name="GrpBanners.Text" xml:space="preserve">
|
||||
<value>Banners</value>
|
||||
</data>
|
||||
<data name="LnkCheckLatestBanners.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>141, -1</value>
|
||||
</data>
|
||||
<data name="LnkCheckLatestBanners.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>129, 17</value>
|
||||
</data>
|
||||
<data name="LnkCheckLatestBanners.Text" xml:space="preserve">
|
||||
<value>Check latest Banners</value>
|
||||
</data>
|
||||
<data name="BtnDelete.Text" xml:space="preserve">
|
||||
<value>Delete</value>
|
||||
</data>
|
||||
|
@@ -144,6 +144,9 @@
|
||||
<data name=">>ChkRemoveC6FormPool.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name="LblEventChance4.Text" xml:space="preserve">
|
||||
<value>4星活动爆率</value>
|
||||
</data>
|
||||
<data name=">>DTPEndTime.Parent" xml:space="preserve">
|
||||
<value>GrpBannerValues</value>
|
||||
</data>
|
||||
@@ -166,25 +169,25 @@
|
||||
<value>34, 28</value>
|
||||
</data>
|
||||
<data name=">>LblSortIdTip.ZOrder" xml:space="preserve">
|
||||
<value>31</value>
|
||||
<value>30</value>
|
||||
</data>
|
||||
<data name="ColUpId.Width" type="System.Int32, mscorlib">
|
||||
<value>65</value>
|
||||
</data>
|
||||
<data name=">>LblGachaTypeTip.ZOrder" xml:space="preserve">
|
||||
<value>24</value>
|
||||
</data>
|
||||
<data name="LblCostItemAmount1.Text" xml:space="preserve">
|
||||
<value>单抽消耗</value>
|
||||
</data>
|
||||
<data name=">>LblSortIdTip.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>LnkCheckLatestBanners.Parent" xml:space="preserve">
|
||||
<value>GrpBanners</value>
|
||||
</data>
|
||||
<data name="LblCostItem.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>56, 17</value>
|
||||
</data>
|
||||
<data name=">>NUDEventChance5.Name" xml:space="preserve">
|
||||
<value>NUDEventChance5</value>
|
||||
<data name="GrpBannerValues.Text" xml:space="preserve">
|
||||
<value>卡池参数</value>
|
||||
</data>
|
||||
<data name=">>NUDGachaType.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
@@ -222,8 +225,8 @@
|
||||
<data name=">>LblBeginTime.Name" xml:space="preserve">
|
||||
<value>LblBeginTime</value>
|
||||
</data>
|
||||
<data name=">>ColUpName.Name" xml:space="preserve">
|
||||
<value>ColUpName</value>
|
||||
<data name="LnkCheckLatestBanners.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>3</value>
|
||||
</data>
|
||||
<data name="ListBanners.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>270, 512</value>
|
||||
@@ -246,6 +249,9 @@
|
||||
<data name="LblCostItem.AutoSize" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
</data>
|
||||
<data name=">>LnkCheckLatestBanners.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.LinkLabel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name="ListFallbackItems.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
||||
<value>Fill</value>
|
||||
</data>
|
||||
@@ -343,9 +349,6 @@
|
||||
<data name="GrpBalance.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>294, 504</value>
|
||||
</data>
|
||||
<data name=">>GrpWeights.ZOrder" xml:space="preserve">
|
||||
<value>7</value>
|
||||
</data>
|
||||
<data name="RbCostItem223.Text" xml:space="preserve">
|
||||
<value>纠缠之缘</value>
|
||||
</data>
|
||||
@@ -385,6 +388,9 @@
|
||||
<data name=">>LblBannersJson.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>LnkCheckLatestBanners.ZOrder" xml:space="preserve">
|
||||
<value>0</value>
|
||||
</data>
|
||||
<data name=">>BtnClear.Name" xml:space="preserve">
|
||||
<value>BtnClear</value>
|
||||
</data>
|
||||
@@ -400,8 +406,11 @@
|
||||
<data name="LblWeight5.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>55, 32</value>
|
||||
</data>
|
||||
<data name="NUDEventChance5.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>63, 23</value>
|
||||
</data>
|
||||
<data name=">>LblScheduleIdTip.ZOrder" xml:space="preserve">
|
||||
<value>29</value>
|
||||
<value>28</value>
|
||||
</data>
|
||||
<data name="ChkRemoveC6FormPool.AutoSize" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
@@ -439,8 +448,8 @@
|
||||
<data name="TxtWeight4.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>300, 23</value>
|
||||
</data>
|
||||
<data name=">>NUDGachaType.ZOrder" xml:space="preserve">
|
||||
<value>22</value>
|
||||
<data name=">>LnkOpenOldEditor.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.LinkLabel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>NUDCostItemAmount10.Parent" xml:space="preserve">
|
||||
<value>GrpBannerValues</value>
|
||||
@@ -466,6 +475,9 @@
|
||||
<data name=">>ListBanners.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.ListBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>BtnLoad.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name="LblCostItemAmount10.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>17</value>
|
||||
</data>
|
||||
@@ -559,6 +571,9 @@
|
||||
<data name=">>LblCostItemAmount10.Name" xml:space="preserve">
|
||||
<value>LblCostItemAmount10</value>
|
||||
</data>
|
||||
<data name="BtnSave.Text" xml:space="preserve">
|
||||
<value>保存</value>
|
||||
</data>
|
||||
<data name="LblCostItemAmount1.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>15</value>
|
||||
</data>
|
||||
@@ -579,7 +594,7 @@
|
||||
<value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>LblBeginTime.ZOrder" xml:space="preserve">
|
||||
<value>27</value>
|
||||
<value>26</value>
|
||||
</data>
|
||||
<data name=">>NUDSortId.Name" xml:space="preserve">
|
||||
<value>NUDSortId</value>
|
||||
@@ -632,7 +647,7 @@
|
||||
<value>ChartWeights</value>
|
||||
</data>
|
||||
<data name=">>RbCostItem224.ZOrder" xml:space="preserve">
|
||||
<value>33</value>
|
||||
<value>32</value>
|
||||
</data>
|
||||
<data name="GrpUpPool.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>210, 351</value>
|
||||
@@ -653,7 +668,7 @@
|
||||
<value>740, 401</value>
|
||||
</data>
|
||||
<data name=">>FLPBannersControl.ZOrder" xml:space="preserve">
|
||||
<value>1</value>
|
||||
<value>2</value>
|
||||
</data>
|
||||
<data name=">>FLPBannersControl.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.FlowLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
@@ -673,6 +688,9 @@
|
||||
<data name="LnkWeightHelp.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>402, 0</value>
|
||||
</data>
|
||||
<data name=">>NUDGachaType.ZOrder" xml:space="preserve">
|
||||
<value>22</value>
|
||||
</data>
|
||||
<data name=">>LblOptions.ZOrder" xml:space="preserve">
|
||||
<value>8</value>
|
||||
</data>
|
||||
@@ -691,8 +709,8 @@
|
||||
<data name="BtnDelete.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>100, 23</value>
|
||||
</data>
|
||||
<data name=">>BtnDelete.Name" xml:space="preserve">
|
||||
<value>BtnDelete</value>
|
||||
<data name="GrpFallbackPool.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>962, 41</value>
|
||||
</data>
|
||||
<data name="LblWeight5.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>0</value>
|
||||
@@ -718,20 +736,20 @@
|
||||
<data name="LblOptions.AutoSize" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
</data>
|
||||
<data name="LblGachaTypeTip.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>125, 17</value>
|
||||
</data>
|
||||
<data name="BtnAddOrUpdate.Text" xml:space="preserve">
|
||||
<value>√ 添加或更新</value>
|
||||
</data>
|
||||
<data name="NUDCostItemAmount10.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>110, 23</value>
|
||||
</data>
|
||||
<data name=">>NUDEventChance5.Name" xml:space="preserve">
|
||||
<value>NUDEventChance5</value>
|
||||
</data>
|
||||
<data name="CmbPrefab.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>9</value>
|
||||
</data>
|
||||
<data name="GrpFallbackPool.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>962, 41</value>
|
||||
<data name=">>GrpWeights.ZOrder" xml:space="preserve">
|
||||
<value>7</value>
|
||||
</data>
|
||||
<data name=">>ListFallbackItems.Name" xml:space="preserve">
|
||||
<value>ListFallbackItems</value>
|
||||
@@ -761,7 +779,7 @@
|
||||
<value>204, 329</value>
|
||||
</data>
|
||||
<data name=">>LblPrefabPath.ZOrder" xml:space="preserve">
|
||||
<value>35</value>
|
||||
<value>34</value>
|
||||
</data>
|
||||
<data name=">>LblSortIdTip.Name" xml:space="preserve">
|
||||
<value>LblSortIdTip</value>
|
||||
@@ -779,7 +797,7 @@
|
||||
<value>29</value>
|
||||
</data>
|
||||
<data name=">>LblCostItem.ZOrder" xml:space="preserve">
|
||||
<value>34</value>
|
||||
<value>33</value>
|
||||
</data>
|
||||
<data name=">>ColFallbackName.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.ColumnHeader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
@@ -796,9 +814,6 @@
|
||||
<data name="ListFallbackItems.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>204, 329</value>
|
||||
</data>
|
||||
<data name=">>LblGachaTypeTip.Parent" xml:space="preserve">
|
||||
<value>GrpBannerValues</value>
|
||||
</data>
|
||||
<data name=">>LblSortId.Name" xml:space="preserve">
|
||||
<value>LblSortId</value>
|
||||
</data>
|
||||
@@ -835,25 +850,12 @@
|
||||
<data name="LblTitlePath.Text" xml:space="preserve">
|
||||
<value>封面标题</value>
|
||||
</data>
|
||||
<data name=">>$this.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.Form, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>LblBannerType.ZOrder" xml:space="preserve">
|
||||
<value>32</value>
|
||||
<value>31</value>
|
||||
</data>
|
||||
<data name="GrpBannerValues.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Top, Bottom, Right</value>
|
||||
</data>
|
||||
<data name="ListUpItems.Groups1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>
|
||||
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
|
||||
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACJTeXN0
|
||||
ZW0uV2luZG93cy5Gb3Jtcy5MaXN0Vmlld0dyb3VwBAAAAAZIZWFkZXIPSGVhZGVyQWxpZ25tZW50A1Rh
|
||||
ZwROYW1lAQQCAShTeXN0ZW0uV2luZG93cy5Gb3Jtcy5Ib3Jpem9udGFsQWxpZ25tZW50AgAAAAIAAAAG
|
||||
AwAAAAo15pif5q2m5ZmoBfz///8oU3lzdGVtLldpbmRvd3MuRm9ybXMuSG9yaXpvbnRhbEFsaWdubWVu
|
||||
dAEAAAAHdmFsdWVfXwAIAgAAAAAAAAAKBgUAAAAJR3JvdXBVcFc1Cw==
|
||||
</value>
|
||||
</data>
|
||||
<data name="LblEventChance5.Text" xml:space="preserve">
|
||||
<value>5星活动爆率</value>
|
||||
</data>
|
||||
@@ -873,7 +875,7 @@
|
||||
<value>RbCostItem223</value>
|
||||
</data>
|
||||
<data name=">>LblEndTime.ZOrder" xml:space="preserve">
|
||||
<value>25</value>
|
||||
<value>24</value>
|
||||
</data>
|
||||
<data name=">>BtnDelete.ZOrder" xml:space="preserve">
|
||||
<value>0</value>
|
||||
@@ -884,8 +886,8 @@
|
||||
<data name="LblEventChance5.AutoSize" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
</data>
|
||||
<data name="TxtPoolWeight5.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>112, 29</value>
|
||||
<data name="LnkCheckLatestBanners.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>80, 17</value>
|
||||
</data>
|
||||
<data name="GrpFallbackPool.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>210, 351</value>
|
||||
@@ -921,8 +923,8 @@
|
||||
<data name=">>NUDEventChance4.Parent" xml:space="preserve">
|
||||
<value>GrpBannerValues</value>
|
||||
</data>
|
||||
<data name=">>RbCostItem223.Parent" xml:space="preserve">
|
||||
<value>GrpBannerValues</value>
|
||||
<data name="BtnClear.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>100, 23</value>
|
||||
</data>
|
||||
<data name=">>BtnSave.Name" xml:space="preserve">
|
||||
<value>BtnSave</value>
|
||||
@@ -939,9 +941,6 @@
|
||||
<data name=">>LblWeight4.Name" xml:space="preserve">
|
||||
<value>LblWeight4</value>
|
||||
</data>
|
||||
<data name="LblTitlePath.AutoSize" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
</data>
|
||||
<data name="ChkAutoStripRateUpFromFallback.AutoSize" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
</data>
|
||||
@@ -954,8 +953,8 @@
|
||||
<data name="NUDSortId.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>24</value>
|
||||
</data>
|
||||
<data name="LblEventChance4Tip.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
||||
<value>NoControl</value>
|
||||
<data name=">>GrpBannerValues.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name="GrpBannerValues.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>5</value>
|
||||
@@ -976,7 +975,7 @@
|
||||
<value>2</value>
|
||||
</data>
|
||||
<data name=">>ListBanners.ZOrder" xml:space="preserve">
|
||||
<value>0</value>
|
||||
<value>1</value>
|
||||
</data>
|
||||
<data name=">>LnkOpenOldEditor.ZOrder" xml:space="preserve">
|
||||
<value>10</value>
|
||||
@@ -1002,9 +1001,6 @@
|
||||
<data name="LblBeginTime.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>56, 17</value>
|
||||
</data>
|
||||
<data name="ListFallbackItems.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>0</value>
|
||||
</data>
|
||||
<data name="ChkRemoveC6FormPool.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>33</value>
|
||||
</data>
|
||||
@@ -1044,8 +1040,8 @@
|
||||
<data name="LblWeight4.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>55, 61</value>
|
||||
</data>
|
||||
<data name=">>LnkOpenOldEditor.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.LinkLabel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
<data name="LblEventChance4Tip.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
||||
<value>NoControl</value>
|
||||
</data>
|
||||
<data name="LblPoolWeight4.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>2</value>
|
||||
@@ -1080,8 +1076,8 @@
|
||||
<data name="LblCostItemAmount1.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>50, 175</value>
|
||||
</data>
|
||||
<data name="GrpBanners.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>276, 563</value>
|
||||
<data name="ChkAutoStripRateUpFromFallback.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>151, 21</value>
|
||||
</data>
|
||||
<data name=">>BtnSave.ZOrder" xml:space="preserve">
|
||||
<value>1</value>
|
||||
@@ -1113,11 +1109,8 @@
|
||||
<data name=">>CmbTitlePath.Parent" xml:space="preserve">
|
||||
<value>GrpBannerValues</value>
|
||||
</data>
|
||||
<data name=">>GrpBannerValues.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>NUDScheduleId.ZOrder" xml:space="preserve">
|
||||
<value>28</value>
|
||||
<value>27</value>
|
||||
</data>
|
||||
<data name=">>LblPoolWeight4.Parent" xml:space="preserve">
|
||||
<value>GrpBalance</value>
|
||||
@@ -1125,6 +1118,9 @@
|
||||
<data name="BtnLoad.Text" xml:space="preserve">
|
||||
<value>加载</value>
|
||||
</data>
|
||||
<data name="LnkCheckLatestBanners.Text" xml:space="preserve">
|
||||
<value>查看最新卡池</value>
|
||||
</data>
|
||||
<data name="NUDSortId.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>100, 23</value>
|
||||
</data>
|
||||
@@ -1146,6 +1142,9 @@
|
||||
<data name=">>LblEventChance4.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name="LnkCheckLatestBanners.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>190, 0</value>
|
||||
</data>
|
||||
<data name=">>LblPoolWeight5.Parent" xml:space="preserve">
|
||||
<value>GrpBalance</value>
|
||||
</data>
|
||||
@@ -1170,8 +1169,8 @@
|
||||
<data name="LblEventChance5Tip.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>28</value>
|
||||
</data>
|
||||
<data name=">>LblCostItemAmount1.Parent" xml:space="preserve">
|
||||
<value>GrpBannerValues</value>
|
||||
<data name="LblSortIdTip.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>218, 233</value>
|
||||
</data>
|
||||
<data name=">>LnkWeightHelp.Name" xml:space="preserve">
|
||||
<value>LnkWeightHelp</value>
|
||||
@@ -1182,6 +1181,9 @@
|
||||
<data name=">>RbCostItem224.Name" xml:space="preserve">
|
||||
<value>RbCostItem224</value>
|
||||
</data>
|
||||
<data name="TxtPoolWeight5.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>112, 29</value>
|
||||
</data>
|
||||
<data name=">>ChkRemoveC6FormPool.Name" xml:space="preserve">
|
||||
<value>ChkRemoveC6FormPool</value>
|
||||
</data>
|
||||
@@ -1239,6 +1241,9 @@
|
||||
<data name="LblBannersJson.AutoSize" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
</data>
|
||||
<data name=">>RbCostItem223.Parent" xml:space="preserve">
|
||||
<value>GrpBannerValues</value>
|
||||
</data>
|
||||
<data name=">>LblEventChance4Tip.ZOrder" xml:space="preserve">
|
||||
<value>14</value>
|
||||
</data>
|
||||
@@ -1368,6 +1373,9 @@
|
||||
<data name="GrpUpPool.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Top, Bottom, Right</value>
|
||||
</data>
|
||||
<data name="LnkCheckLatestBanners.AutoSize" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
</data>
|
||||
<data name="BtnLoad.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>100, 23</value>
|
||||
</data>
|
||||
@@ -1383,8 +1391,8 @@
|
||||
<data name="LblPoolWeight5.AutoSize" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
</data>
|
||||
<data name="LblGachaTypeTip.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>218, 28</value>
|
||||
<data name="GrpBalance.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>440, 100</value>
|
||||
</data>
|
||||
<data name="CmbBannerType.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>112, 84</value>
|
||||
@@ -1392,14 +1400,11 @@
|
||||
<data name="LblBannerType.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>50, 87</value>
|
||||
</data>
|
||||
<data name="LblScheduleId.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>72, 17</value>
|
||||
</data>
|
||||
<data name=">>GrpUpPool.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name="LblEventChance4.Text" xml:space="preserve">
|
||||
<value>4星活动爆率</value>
|
||||
<data name=">>LnkWeightHelp.Parent" xml:space="preserve">
|
||||
<value>GrpWeights</value>
|
||||
</data>
|
||||
<data name="LblEventChance4.AutoSize" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
@@ -1410,8 +1415,8 @@
|
||||
<data name=">>BtnClear.ZOrder" xml:space="preserve">
|
||||
<value>1</value>
|
||||
</data>
|
||||
<data name="ChkAutoStripRateUpFromFallback.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>151, 21</value>
|
||||
<data name=">>BtnDelete.Name" xml:space="preserve">
|
||||
<value>BtnDelete</value>
|
||||
</data>
|
||||
<data name=">>LnkOpenOldEditor.Name" xml:space="preserve">
|
||||
<value>LnkOpenOldEditor</value>
|
||||
@@ -1425,8 +1430,8 @@
|
||||
<data name=">>RbCostItem224.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.RadioButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>BtnLoad.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
<data name="LblScheduleIdTip.Text" xml:space="preserve">
|
||||
<value>ID要求唯一</value>
|
||||
</data>
|
||||
<data name="LblWeight4.Text" xml:space="preserve">
|
||||
<value>4星权重</value>
|
||||
@@ -1467,30 +1472,27 @@
|
||||
<data name="NUDCostItemAmount1.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>112, 173</value>
|
||||
</data>
|
||||
<data name="NUDEventChance5.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>63, 23</value>
|
||||
<data name=">>LblCostItemAmount1.Parent" xml:space="preserve">
|
||||
<value>GrpBannerValues</value>
|
||||
</data>
|
||||
<data name=">>LnkWeightHelp.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.LinkLabel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name="$this.Font" type="System.Drawing.Font, System.Drawing">
|
||||
<value>微软雅黑, 9pt</value>
|
||||
<data name=">>LblCostItemAmount1.Name" xml:space="preserve">
|
||||
<value>LblCostItemAmount1</value>
|
||||
</data>
|
||||
<data name="GrpBanners.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>12, 41</value>
|
||||
</data>
|
||||
<data name=">>CmbBannerType.ZOrder" xml:space="preserve">
|
||||
<value>29</value>
|
||||
</data>
|
||||
<data name=">>GrpWeights.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>LblCostItemAmount1.ZOrder" xml:space="preserve">
|
||||
<value>6</value>
|
||||
</data>
|
||||
<data name=">>LblGachaTypeTip.Name" xml:space="preserve">
|
||||
<value>LblGachaTypeTip</value>
|
||||
</data>
|
||||
<data name=">>LblCostItemAmount1.Name" xml:space="preserve">
|
||||
<value>LblCostItemAmount1</value>
|
||||
</data>
|
||||
<data name="$this.MinimumSize" type="System.Drawing.Size, System.Drawing">
|
||||
<value>1200, 655</value>
|
||||
</data>
|
||||
@@ -1542,14 +1544,14 @@
|
||||
<data name=">>ListFallbackItems.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.ListView, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>LblPoolWeight4.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
<data name="$this.Font" type="System.Drawing.Font, System.Drawing">
|
||||
<value>微软雅黑, 9pt</value>
|
||||
</data>
|
||||
<data name="LblPoolWeight5.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>43, 32</value>
|
||||
</data>
|
||||
<data name="LblGachaTypeTip.Text" xml:space="preserve">
|
||||
<value>从400开始,顺序递增</value>
|
||||
<data name=">>ChkAutoStripRateUpFromFallback.ZOrder" xml:space="preserve">
|
||||
<value>7</value>
|
||||
</data>
|
||||
<data name="LblTitlePath.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>56, 17</value>
|
||||
@@ -1560,8 +1562,8 @@
|
||||
<data name=">>LblCostItemAmount1.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name="FLPBannersControl.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>270, 29</value>
|
||||
<data name=">>ColUpName.Name" xml:space="preserve">
|
||||
<value>ColUpName</value>
|
||||
</data>
|
||||
<data name=">>TxtWeight4.ZOrder" xml:space="preserve">
|
||||
<value>1</value>
|
||||
@@ -1614,9 +1616,6 @@
|
||||
<data name="BtnAddOrUpdate.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>150, 23</value>
|
||||
</data>
|
||||
<data name="LblScheduleIdTip.Text" xml:space="preserve">
|
||||
<value>ID要求唯一</value>
|
||||
</data>
|
||||
<data name=">>LblEventChance5.ZOrder" xml:space="preserve">
|
||||
<value>20</value>
|
||||
</data>
|
||||
@@ -1656,14 +1655,11 @@
|
||||
<data name=">>GrpBalance.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name="LblGachaTypeTip.AutoSize" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
</data>
|
||||
<data name="BtnDelete.Text" xml:space="preserve">
|
||||
<value>删除</value>
|
||||
</data>
|
||||
<data name="LblGachaTypeTip.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>2</value>
|
||||
<data name="ListFallbackItems.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>0</value>
|
||||
</data>
|
||||
<data name="NUDCostItemAmount1.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>16</value>
|
||||
@@ -1674,8 +1670,8 @@
|
||||
<data name=">>LblPoolWeight4.Name" xml:space="preserve">
|
||||
<value>LblPoolWeight4</value>
|
||||
</data>
|
||||
<data name=">>ChkAutoStripRateUpFromFallback.ZOrder" xml:space="preserve">
|
||||
<value>7</value>
|
||||
<data name="FLPBannersControl.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>270, 29</value>
|
||||
</data>
|
||||
<data name="LblPrefabPath.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>56, 17</value>
|
||||
@@ -1704,9 +1700,6 @@
|
||||
<data name="ChkAutoStripRateUpFromFallback.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>34</value>
|
||||
</data>
|
||||
<data name=">>LblGachaTypeTip.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name="LblEventChance5Tip.Text" xml:space="preserve">
|
||||
<value>%</value>
|
||||
</data>
|
||||
@@ -1737,14 +1730,14 @@
|
||||
<data name=">>LblBannersJson.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>LnkWeightHelp.Parent" xml:space="preserve">
|
||||
<value>GrpWeights</value>
|
||||
<data name=">>$this.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.Form, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name="LblEventChance4.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>221, 262</value>
|
||||
</data>
|
||||
<data name="GrpBalance.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>440, 100</value>
|
||||
<data name="GrpBanners.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>276, 563</value>
|
||||
</data>
|
||||
<data name="LblGachaType.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>0</value>
|
||||
@@ -1759,7 +1752,7 @@
|
||||
<value>8</value>
|
||||
</data>
|
||||
<data name=">>RbCostItem223.ZOrder" xml:space="preserve">
|
||||
<value>36</value>
|
||||
<value>35</value>
|
||||
</data>
|
||||
<data name=">>LblWeight5.Parent" xml:space="preserve">
|
||||
<value>GrpWeights</value>
|
||||
@@ -1800,8 +1793,8 @@
|
||||
<data name="LblEventChance4.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>75, 17</value>
|
||||
</data>
|
||||
<data name="LblSortIdTip.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>218, 233</value>
|
||||
<data name="LblScheduleId.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>72, 17</value>
|
||||
</data>
|
||||
<data name="NUDScheduleId.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>100, 23</value>
|
||||
@@ -1824,8 +1817,8 @@
|
||||
<data name=">>NUDCostItemAmount10.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name="BtnClear.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>100, 23</value>
|
||||
<data name=">>LnkCheckLatestBanners.Name" xml:space="preserve">
|
||||
<value>LnkCheckLatestBanners</value>
|
||||
</data>
|
||||
<data name="NUDEventChance4.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>63, 23</value>
|
||||
@@ -1834,7 +1827,7 @@
|
||||
<value>CmbPrefab</value>
|
||||
</data>
|
||||
<data name=">>LblScheduleId.ZOrder" xml:space="preserve">
|
||||
<value>26</value>
|
||||
<value>25</value>
|
||||
</data>
|
||||
<data name="GrpBannerValues.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>294, 41</value>
|
||||
@@ -1869,14 +1862,21 @@
|
||||
<data name=">>LblEventChance4Tip.Parent" xml:space="preserve">
|
||||
<value>GrpBannerValues</value>
|
||||
</data>
|
||||
<data name="BtnSave.Text" xml:space="preserve">
|
||||
<value>保存</value>
|
||||
<data name="ListUpItems.Groups1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>
|
||||
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
|
||||
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACJTeXN0
|
||||
ZW0uV2luZG93cy5Gb3Jtcy5MaXN0Vmlld0dyb3VwBAAAAAZIZWFkZXIPSGVhZGVyQWxpZ25tZW50A1Rh
|
||||
ZwROYW1lAQQCAShTeXN0ZW0uV2luZG93cy5Gb3Jtcy5Ib3Jpem9udGFsQWxpZ25tZW50AgAAAAIAAAAG
|
||||
AwAAAAo15pif5q2m5ZmoBfz///8oU3lzdGVtLldpbmRvd3MuRm9ybXMuSG9yaXpvbnRhbEFsaWdubWVu
|
||||
dAEAAAAHdmFsdWVfXwAIAgAAAAAAAAAKBgUAAAAJR3JvdXBVcFc1Cw==
|
||||
</value>
|
||||
</data>
|
||||
<data name="GrpBannerValues.Text" xml:space="preserve">
|
||||
<value>卡池参数</value>
|
||||
<data name=">>LblPoolWeight4.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>CmbBannerType.ZOrder" xml:space="preserve">
|
||||
<value>30</value>
|
||||
<data name="LblTitlePath.AutoSize" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
</data>
|
||||
<data name="ListUpItems.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>3, 19</value>
|
||||
|
@@ -217,12 +217,6 @@
|
||||
<data name="LblSortId.Text" xml:space="preserve">
|
||||
<value>Сорт.</value>
|
||||
</data>
|
||||
<data name="LblGachaTypeTip.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>116, 17</value>
|
||||
</data>
|
||||
<data name="LblGachaTypeTip.Text" xml:space="preserve">
|
||||
<value>Увеличение с 400</value>
|
||||
</data>
|
||||
<data name="LblEndTime.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>249, 204</value>
|
||||
</data>
|
||||
@@ -466,6 +460,15 @@
|
||||
<data name="GrpBanners.Text" xml:space="preserve">
|
||||
<value>Banners</value>
|
||||
</data>
|
||||
<data name="LnkCheckLatestBanners.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>73, 0</value>
|
||||
</data>
|
||||
<data name="LnkCheckLatestBanners.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>203, 17</value>
|
||||
</data>
|
||||
<data name="LnkCheckLatestBanners.Text" xml:space="preserve">
|
||||
<value>Проверьте последние баннеры</value>
|
||||
</data>
|
||||
<data name="BtnDelete.Text" xml:space="preserve">
|
||||
<value>- Удалить</value>
|
||||
</data>
|
||||
|
@@ -144,9 +144,6 @@
|
||||
<data name="LblSortId.Text" xml:space="preserve">
|
||||
<value>順序</value>
|
||||
</data>
|
||||
<data name="LblGachaTypeTip.Text" xml:space="preserve">
|
||||
<value>從400開始,順序遞增</value>
|
||||
</data>
|
||||
<data name="LblEndTime.Text" xml:space="preserve">
|
||||
<value>結束時間</value>
|
||||
</data>
|
||||
@@ -178,9 +175,6 @@
|
||||
<data name="GrpBannerValues.Text" xml:space="preserve">
|
||||
<value>卡池參數</value>
|
||||
</data>
|
||||
<data name="GrpFallbackPool.Text" xml:space="preserve">
|
||||
<value>基礎池</value>
|
||||
</data>
|
||||
<data name="ListFallbackItems.Groups" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>
|
||||
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
|
||||
@@ -231,6 +225,9 @@
|
||||
dAEAAAAHdmFsdWVfXwAIAgAAAAAAAAAKBgUAAAAHR3JvdXBXMws=
|
||||
</value>
|
||||
</data>
|
||||
<data name="GrpFallbackPool.Text" xml:space="preserve">
|
||||
<value>基礎池</value>
|
||||
</data>
|
||||
<data name="ListUpItems.Groups" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>
|
||||
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
|
||||
@@ -271,9 +268,6 @@
|
||||
dAEAAAAHdmFsdWVfXwAIAgAAAAAAAAAKBgUAAAAJR3JvdXBVcFc0Cw==
|
||||
</value>
|
||||
</data>
|
||||
<data name="GrpWeights.Text" xml:space="preserve">
|
||||
<value>卡池權重與保底機制</value>
|
||||
</data>
|
||||
<data name="LnkWeightHelp.Text" xml:space="preserve">
|
||||
<value>幫助</value>
|
||||
</data>
|
||||
@@ -283,8 +277,8 @@
|
||||
<data name="LblWeight5.Text" xml:space="preserve">
|
||||
<value>5星權重</value>
|
||||
</data>
|
||||
<data name="GrpBalance.Text" xml:space="preserve">
|
||||
<value>角色和武器平衡機制(僅混合池有效)</value>
|
||||
<data name="GrpWeights.Text" xml:space="preserve">
|
||||
<value>卡池權重與保底機制</value>
|
||||
</data>
|
||||
<data name="LblPoolWeight4.Text" xml:space="preserve">
|
||||
<value>4星池權重</value>
|
||||
@@ -292,12 +286,12 @@
|
||||
<data name="LblPoolWeight5.Text" xml:space="preserve">
|
||||
<value>5星池權重</value>
|
||||
</data>
|
||||
<data name="GrpBalance.Text" xml:space="preserve">
|
||||
<value>角色和武器平衡機制(僅混合池有效)</value>
|
||||
</data>
|
||||
<data name="BtnDelete.Text" xml:space="preserve">
|
||||
<value>刪除</value>
|
||||
</data>
|
||||
<data name="label1.Text" xml:space="preserve">
|
||||
<value>Banners.json 路徑:</value>
|
||||
</data>
|
||||
<data name="BtnLoad.Text" xml:space="preserve">
|
||||
<value>加載</value>
|
||||
</data>
|
||||
|
@@ -44,6 +44,22 @@ namespace GrasscutterTools.Forms
|
||||
|
||||
if (DesignMode) return;
|
||||
|
||||
Common.KeyGo = new KeyGo(Handle);
|
||||
Common.KeyGo.HotKeyTriggerEvent += OnHotKeyTrigger;
|
||||
|
||||
try
|
||||
{
|
||||
if (!Settings.Default.IsUpgraded)
|
||||
{
|
||||
Settings.Default.Upgrade();
|
||||
Settings.Default.IsUpgraded = true;
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Logger.W(TAG, "Upgrade Settings failed.", ex);
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
var location = Settings.Default.MainFormLocation;
|
||||
@@ -94,7 +110,21 @@ namespace GrasscutterTools.Forms
|
||||
ph.OnLanguageChanged = () => FormMain_Load(this, EventArgs.Empty);
|
||||
var poc = CreatePage<PageOpenCommand>();
|
||||
poc.ShowTipInRunButton = msg => ShowTip(msg, BtnInvokeOpenCommand);
|
||||
CreatePage<PageCustomCommands>();
|
||||
var pcc = CreatePage<PageCustomCommands>();
|
||||
var phk = CreatePage<PageHotKey>();
|
||||
pcc.OnAddHotKey = tag =>
|
||||
{
|
||||
phk.AddNewHotKey(tag);
|
||||
// 跳转到快捷键界面
|
||||
for (var i = 0; i < TCMain.Controls.Count; i++)
|
||||
{
|
||||
if (TCMain.Controls[i].Controls[0] == phk)
|
||||
{
|
||||
ListPages.SelectedIndex = i;
|
||||
break;
|
||||
}
|
||||
}
|
||||
};
|
||||
CreatePage<PageGiveArtifact>();
|
||||
CreatePage<PageSpawn>();
|
||||
CreatePage<PageGiveItem>();
|
||||
@@ -108,7 +138,9 @@ namespace GrasscutterTools.Forms
|
||||
CreatePage<PageAchievement>();
|
||||
CreatePage<PageSetProp>();
|
||||
CreatePage<PageAbout>();
|
||||
//AddPageToGui(CreatePage<PageTools>("Tools"));
|
||||
#if DEBUG
|
||||
CreatePage<PageTools>();
|
||||
#endif
|
||||
TCMain.ResumeLayout();
|
||||
Logger.I(TAG, "InitPages completed");
|
||||
}
|
||||
@@ -124,6 +156,7 @@ namespace GrasscutterTools.Forms
|
||||
Resources.PageHomeTitle,
|
||||
Resources.PageOpenCommandTitle,
|
||||
Resources.PageCustomCommandsTitle,
|
||||
Resources.PageHotKey,
|
||||
Resources.PageGetArtifactTitle,
|
||||
Resources.PageSpawnTitle,
|
||||
Resources.PageGiveItemTitle,
|
||||
@@ -137,6 +170,9 @@ namespace GrasscutterTools.Forms
|
||||
Resources.PageAchievementTitle,
|
||||
Resources.PageSetPropTitle,
|
||||
Resources.PageAboutTitle,
|
||||
#if DEBUG
|
||||
"Tools",
|
||||
#endif
|
||||
});
|
||||
}
|
||||
|
||||
@@ -186,7 +222,7 @@ namespace GrasscutterTools.Forms
|
||||
tp.Controls.Add(page);
|
||||
return page;
|
||||
}
|
||||
|
||||
|
||||
private void ListPages_SelectedIndexChanged(object sender, EventArgs e)
|
||||
{
|
||||
TCMain.SelectedIndex = ListPages.SelectedIndex;
|
||||
@@ -269,6 +305,32 @@ namespace GrasscutterTools.Forms
|
||||
|
||||
#endregion - 初始化 Init -
|
||||
|
||||
#region - 快捷键执行 HotKey -
|
||||
|
||||
/// <summary>
|
||||
/// 快捷键触发时执行
|
||||
/// </summary>
|
||||
private void OnHotKeyTrigger(object sender, HotKeyTriggerEventArgs e)
|
||||
{
|
||||
BeginInvoke(new Func<Task>(() => RunRawCommands(e.HotKeyItem.Commands)));
|
||||
e.Handle = true;
|
||||
}
|
||||
|
||||
private const int WM_HOTKEY = 0x312;
|
||||
|
||||
protected override void WndProc(ref Message m)
|
||||
{
|
||||
base.WndProc(ref m);
|
||||
switch (m.Msg)
|
||||
{
|
||||
case WM_HOTKEY:
|
||||
Common.KeyGo.ProcessHotKey(m.WParam.ToInt32());
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
#endregion - 快捷键执行 HotKey -
|
||||
|
||||
#region - 命令 Command -
|
||||
|
||||
/// <summary>
|
||||
@@ -370,10 +432,20 @@ namespace GrasscutterTools.Forms
|
||||
ShowTip(Resources.CommandContentCannotBeEmpty, CmbCommand);
|
||||
return;
|
||||
}
|
||||
if (cmd.IndexOf('|') == -1)
|
||||
await RunCommands(FormatCommand(cmd));
|
||||
else
|
||||
await RunCommands(cmd.Split('|').Select(it => FormatCommand(it)).ToArray());
|
||||
|
||||
await RunRawCommands(cmd);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 运行原始命令
|
||||
/// </summary>
|
||||
/// <param name="commands">命令字符串</param>
|
||||
/// <returns>是否执行成功</returns>
|
||||
private async Task<bool> RunRawCommands(string commands)
|
||||
{
|
||||
if (commands.IndexOf('|') == -1)
|
||||
return await RunCommands(FormatCommand(commands));
|
||||
return await RunCommands(commands.Split('|').Select(FormatCommand).ToArray());
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -470,11 +542,11 @@ namespace GrasscutterTools.Forms
|
||||
{
|
||||
if (WindowState == FormWindowState.Maximized)
|
||||
WindowState = FormWindowState.Normal;
|
||||
TCMain.Anchor &= ~AnchorStyles.Bottom;
|
||||
NavContainer.Anchor &= ~AnchorStyles.Bottom;
|
||||
GrpCommand.Anchor |= AnchorStyles.Top;
|
||||
Size = new Size(Width, Height + TxtCommandRunLogMinHeight);
|
||||
MinimumSize = new Size(MinimumSize.Width, MinimumSize.Height + TxtCommandRunLogMinHeight);
|
||||
TCMain.Anchor |= AnchorStyles.Bottom;
|
||||
NavContainer.Anchor |= AnchorStyles.Bottom;
|
||||
GrpCommand.Anchor &= ~AnchorStyles.Top;
|
||||
}
|
||||
|
||||
@@ -509,6 +581,13 @@ namespace GrasscutterTools.Forms
|
||||
// F5 为执行命令
|
||||
OnOpenCommandInvoke();
|
||||
}
|
||||
else if (e.Alt && e.KeyCode >= Keys.D0 && e.KeyCode <= Keys.D9)
|
||||
{
|
||||
// Alt+数字键 = 跳转到对应页面
|
||||
var i = e.KeyCode == Keys.D0 ? 9 : e.KeyCode - Keys.D1;
|
||||
if (i < ListPages.Items.Count)
|
||||
ListPages.SelectedIndex = i;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -523,10 +602,14 @@ namespace GrasscutterTools.Forms
|
||||
/// <param name="control">控件</param>
|
||||
private void ShowTip(string message, Control control)
|
||||
{
|
||||
if (InvokeRequired)
|
||||
{
|
||||
BeginInvoke(new Action(() => ShowTip(message, control)));
|
||||
return;
|
||||
}
|
||||
TTip.Show(message, control, 0, control.Size.Height, 3000);
|
||||
}
|
||||
|
||||
#endregion - 通用 General -
|
||||
|
||||
}
|
||||
}
|
@@ -62,4 +62,4 @@ namespace GrasscutterTools.Game.Activity
|
||||
[JsonProperty("endTime")]
|
||||
public DateTime EndTime { get; set; }
|
||||
}
|
||||
}
|
||||
}
|
32
Source/GrasscutterTools/Game/Activity/NewActivityItem.cs
Normal file
@@ -0,0 +1,32 @@
|
||||
/**
|
||||
* Grasscutter Tools
|
||||
* Copyright (C) 2023 jie65535
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as published
|
||||
* by the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*
|
||||
**/
|
||||
|
||||
using Newtonsoft.Json;
|
||||
|
||||
namespace GrasscutterTools.Game.Activity
|
||||
{
|
||||
internal class NewActivityItem
|
||||
{
|
||||
[JsonProperty("activityId")]
|
||||
public int ActivityId { get; set; }
|
||||
|
||||
[JsonProperty("nameTextMapHash")]
|
||||
public string NameTextMapHash { get; set; }
|
||||
}
|
||||
}
|
@@ -142,11 +142,36 @@ namespace GrasscutterTools.Game
|
||||
/// </summary>
|
||||
public static readonly Version V1_5_0 = new Version(1, 5, 0);
|
||||
|
||||
/// <summary>
|
||||
/// 2023/6/1
|
||||
/// </summary>
|
||||
public static readonly Version V1_6_0 = new Version(1, 6, 0);
|
||||
|
||||
/// <summary>
|
||||
/// 2023/6/2
|
||||
/// </summary>
|
||||
public static readonly Version V1_6_1 = new Version(1, 6, 1);
|
||||
|
||||
/// <summary>
|
||||
/// 2023/7/1
|
||||
/// </summary>
|
||||
public static readonly Version V1_6_2 = new Version(1, 6, 2);
|
||||
|
||||
/// <summary>
|
||||
/// 2023/8/1
|
||||
/// </summary>
|
||||
public static readonly Version V1_6_3 = new Version(1, 6, 3);
|
||||
|
||||
/// <summary>
|
||||
/// 2023/??
|
||||
/// </summary>
|
||||
public static readonly Version V1_7_0 = new Version(1, 7, 0);
|
||||
|
||||
// More...
|
||||
/// <summary>
|
||||
/// Date
|
||||
/// </summary>
|
||||
//public static readonly Version V1_4_4 = new Version(1, 4, 4);
|
||||
//public static readonly Version V1_6_3 = new Version(1, 6, 3);
|
||||
|
||||
public static Version[] List { get; } = new Version[] {
|
||||
V1_2_1,
|
||||
@@ -160,7 +185,11 @@ namespace GrasscutterTools.Game
|
||||
V1_4_3,
|
||||
V1_4_7,
|
||||
V1_5_0,
|
||||
//V1_5_1,
|
||||
V1_6_0,
|
||||
V1_6_1,
|
||||
V1_6_2,
|
||||
V1_6_3,
|
||||
V1_7_0,
|
||||
};
|
||||
|
||||
#endregion - 版本列表 Version List -
|
||||
|
32
Source/GrasscutterTools/Game/CutScene/CutSceneItem.cs
Normal file
@@ -0,0 +1,32 @@
|
||||
/**
|
||||
* Grasscutter Tools
|
||||
* Copyright (C) 2023 jie65535
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as published
|
||||
* by the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*
|
||||
**/
|
||||
|
||||
using Newtonsoft.Json;
|
||||
|
||||
namespace GrasscutterTools.Game.CutScene
|
||||
{
|
||||
internal class CutSceneItem
|
||||
{
|
||||
[JsonProperty("id")]
|
||||
public int Id { get; set; }
|
||||
|
||||
[JsonProperty("path")]
|
||||
public string Path { get; set; }
|
||||
}
|
||||
}
|
13
Source/GrasscutterTools/Game/Data/Excels/AchievementData.cs
Normal file
@@ -0,0 +1,13 @@
|
||||
using Newtonsoft.Json;
|
||||
|
||||
namespace GrasscutterTools.Game.Data.Excels
|
||||
{
|
||||
[ResourceType("AchievementExcelConfigData.json")]
|
||||
internal class AchievementData : GameResource
|
||||
{
|
||||
[JsonProperty("isDisuse")]
|
||||
public bool IsDisuse { get; set; }
|
||||
|
||||
public bool IsUsed => !IsDisuse;
|
||||
}
|
||||
}
|
14
Source/GrasscutterTools/Game/Data/Excels/AvatarData.cs
Normal file
@@ -0,0 +1,14 @@
|
||||
using GrasscutterTools.Game.Props;
|
||||
|
||||
using Newtonsoft.Json;
|
||||
using Newtonsoft.Json.Converters;
|
||||
|
||||
namespace GrasscutterTools.Game.Data.Excels
|
||||
{
|
||||
[ResourceType("AvatarExcelConfigData.json")]
|
||||
internal class AvatarData : GameResource
|
||||
{
|
||||
[JsonProperty("qualityType"), JsonConverter(typeof(StringEnumConverter))]
|
||||
public QualityType QualityType { get; set; }
|
||||
}
|
||||
}
|
7
Source/GrasscutterTools/Game/Data/Excels/DungeonData.cs
Normal file
@@ -0,0 +1,7 @@
|
||||
namespace GrasscutterTools.Game.Data.Excels
|
||||
{
|
||||
[ResourceType("DungeonExcelConfigData.json")]
|
||||
internal class DungeonData : GameResource
|
||||
{
|
||||
}
|
||||
}
|
13
Source/GrasscutterTools/Game/Data/Excels/GadgetData.cs
Normal file
@@ -0,0 +1,13 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace GrasscutterTools.Game.Data.Excels
|
||||
{
|
||||
[ResourceType("GadgetExcelConfigData.json")]
|
||||
internal class GadgetData
|
||||
{
|
||||
}
|
||||
}
|
14
Source/GrasscutterTools/Game/Data/Excels/HomeWorldBgmData.cs
Normal file
@@ -0,0 +1,14 @@
|
||||
using Newtonsoft.Json;
|
||||
|
||||
namespace GrasscutterTools.Game.Data.Excels
|
||||
{
|
||||
[ResourceType("HomeWorldBgmExcelConfigData.json")]
|
||||
internal class HomeWorldBgmData : GameResource
|
||||
{
|
||||
[JsonProperty("homeBgmId")]
|
||||
public override int Id { get; set; }
|
||||
|
||||
[JsonProperty("bgmNameTextMapHash")]
|
||||
public long BgmNameTextMapHash { get; set; }
|
||||
}
|
||||
}
|
@@ -0,0 +1,7 @@
|
||||
namespace GrasscutterTools.Game.Data.Excels
|
||||
{
|
||||
[ResourceType("HomeWorldFurnitureExcelConfigData.json")]
|
||||
internal class HomeWorldFurnitureData : GameResource
|
||||
{
|
||||
}
|
||||
}
|
@@ -0,0 +1,9 @@
|
||||
using Newtonsoft.Json;
|
||||
|
||||
namespace GrasscutterTools.Game.Data.Excels
|
||||
{
|
||||
[ResourceType("MainQuestExcelConfigData.json")]
|
||||
internal class MainQuestData : GameResource
|
||||
{
|
||||
}
|
||||
}
|
22
Source/GrasscutterTools/Game/Data/Excels/MaterialData.cs
Normal file
@@ -0,0 +1,22 @@
|
||||
using System.Collections.Generic;
|
||||
using GrasscutterTools.Game.Inventory;
|
||||
using GrasscutterTools.Game.Props;
|
||||
|
||||
using Newtonsoft.Json;
|
||||
using Newtonsoft.Json.Converters;
|
||||
|
||||
namespace GrasscutterTools.Game.Data.Excels
|
||||
{
|
||||
[ResourceType("MaterialExcelConfigData.json")]
|
||||
internal class MaterialData : GameResource
|
||||
{
|
||||
[JsonProperty("itemType"), JsonConverter(typeof(StringEnumConverter))]
|
||||
public ItemType ItemType { get; set; }
|
||||
|
||||
[JsonProperty("materialType"), JsonConverter(typeof(StringEnumConverter))]
|
||||
public MaterialType MaterialType { get; set; }
|
||||
|
||||
[JsonProperty("itemUse")]
|
||||
public List<ItemUseData> ItemUse { get; set; }
|
||||
}
|
||||
}
|
15
Source/GrasscutterTools/Game/Data/Excels/MonsterData.cs
Normal file
@@ -0,0 +1,15 @@
|
||||
using GrasscutterTools.Game.Props;
|
||||
using Newtonsoft.Json;
|
||||
|
||||
namespace GrasscutterTools.Game.Data.Excels
|
||||
{
|
||||
[ResourceType("MonsterExcelConfigData.json")]
|
||||
internal class MonsterData : GameResource
|
||||
{
|
||||
[JsonProperty("monsterName")]
|
||||
public string MonsterName { get; set; }
|
||||
|
||||
[JsonProperty("type")]
|
||||
public MonsterType Type { get; set; }
|
||||
}
|
||||
}
|
17
Source/GrasscutterTools/Game/Data/Excels/QuestData.cs
Normal file
@@ -0,0 +1,17 @@
|
||||
using Newtonsoft.Json;
|
||||
|
||||
namespace GrasscutterTools.Game.Data.Excels
|
||||
{
|
||||
[ResourceType("QuestExcelConfigData.json")]
|
||||
internal class QuestData : GameResource
|
||||
{
|
||||
[JsonProperty("subId")]
|
||||
public override int Id { get; set; }
|
||||
|
||||
[JsonProperty("mainId")]
|
||||
public int MainId { get; set; }
|
||||
|
||||
[JsonProperty("order")]
|
||||
public int Order { get; set; }
|
||||
}
|
||||
}
|
@@ -0,0 +1,7 @@
|
||||
namespace GrasscutterTools.Game.Data.Excels
|
||||
{
|
||||
[ResourceType("ReliquaryExcelConfigData.json")]
|
||||
internal class ReliquaryData : GameResource
|
||||
{
|
||||
}
|
||||
}
|
15
Source/GrasscutterTools/Game/Data/Excels/SceneData.cs
Normal file
@@ -0,0 +1,15 @@
|
||||
using GrasscutterTools.Game.Props;
|
||||
using Newtonsoft.Json;
|
||||
|
||||
namespace GrasscutterTools.Game.Data.Excels
|
||||
{
|
||||
[ResourceType("SceneExcelConfigData.json")]
|
||||
internal class SceneData : GameResource
|
||||
{
|
||||
[JsonProperty("type")]
|
||||
public SceneType SceneType { get; set; }
|
||||
|
||||
[JsonProperty("scriptData")]
|
||||
public string ScriptData { get; set; }
|
||||
}
|
||||
}
|
11
Source/GrasscutterTools/Game/Data/Excels/WeaponData.cs
Normal file
@@ -0,0 +1,11 @@
|
||||
using Newtonsoft.Json;
|
||||
|
||||
namespace GrasscutterTools.Game.Data.Excels
|
||||
{
|
||||
[ResourceType("WeaponExcelConfigData.json")]
|
||||
internal class WeaponData : GameResource
|
||||
{
|
||||
[JsonProperty("rankLevel")]
|
||||
public int RankLevel { get; set; }
|
||||
}
|
||||
}
|
19
Source/GrasscutterTools/Game/Data/GameResource.cs
Normal file
@@ -0,0 +1,19 @@
|
||||
using Newtonsoft.Json;
|
||||
|
||||
namespace GrasscutterTools.Game.Data
|
||||
{
|
||||
internal abstract class GameResource
|
||||
{
|
||||
[JsonProperty("id")]
|
||||
public virtual int Id { get; set; }
|
||||
|
||||
[JsonProperty("nameTextMapHash")]
|
||||
public long NameTextMapHash { get; set; }
|
||||
|
||||
[JsonProperty("titleTextMapHash")]
|
||||
public string TitleTextMapHash { get; set; }
|
||||
|
||||
[JsonProperty("descTextMapHash")]
|
||||
public long DescTextMapHash { get; set; }
|
||||
}
|
||||
}
|
269
Source/GrasscutterTools/Game/Data/GameResources.cs
Normal file
@@ -0,0 +1,269 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using System.Globalization;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading;
|
||||
using GrasscutterTools.Game.Data.Excels;
|
||||
using GrasscutterTools.Game.Inventory;
|
||||
using GrasscutterTools.Game.Props;
|
||||
using GrasscutterTools.GOOD;
|
||||
using GrasscutterTools.Utils;
|
||||
|
||||
using Newtonsoft.Json;
|
||||
|
||||
namespace GrasscutterTools.Game.Data
|
||||
{
|
||||
internal class GameResources
|
||||
{
|
||||
public Dictionary<int, AchievementData> AchievementData { get; set; }
|
||||
|
||||
public Dictionary<int, AvatarData> AvatarData { get; set; }
|
||||
|
||||
public Dictionary<int, HomeWorldBgmData> HomeWorldBgmData { get; set; }
|
||||
|
||||
public Dictionary<int, DungeonData> DungeonData { get; set; }
|
||||
|
||||
public Dictionary<int, HomeWorldFurnitureData> HomeWorldFurnitureData { get; set; }
|
||||
|
||||
public Dictionary<int, MainQuestData> MainQuestData { get; set; }
|
||||
|
||||
public Dictionary<int, QuestData> QuestData { get; set; }
|
||||
|
||||
public Dictionary<int, MaterialData> MaterialData { get; set; }
|
||||
|
||||
public Dictionary<int, MonsterData> MonsterData { get; set; }
|
||||
|
||||
public Dictionary<int, ReliquaryData> ReliquaryData { get; set; }
|
||||
|
||||
public Dictionary<int, SceneData> SceneData { get; set; }
|
||||
|
||||
public Dictionary<int, WeaponData> WeaponData { get; set; }
|
||||
|
||||
public TextMapData TextMapData { get; set; }
|
||||
|
||||
|
||||
|
||||
public GameResources(string resourcesDirPath, TextMapData textMapData)
|
||||
{
|
||||
TextMapData = textMapData;
|
||||
|
||||
var properties = typeof(GameResources).GetProperties();
|
||||
foreach (var property in properties)
|
||||
{
|
||||
var type = property.PropertyType;
|
||||
if (!type.IsGenericType) continue;
|
||||
var gameResourceType = type.GetGenericArguments()[1];
|
||||
var attributes = (ResourceTypeAttribute[])gameResourceType.GetCustomAttributes(typeof(ResourceTypeAttribute), true);
|
||||
if (attributes.Length < 1) continue;
|
||||
var dataFile = Path.Combine(resourcesDirPath, "ExcelBinOutput", attributes[0].Name);
|
||||
var data = LoadDataFile(gameResourceType, dataFile);
|
||||
property.SetValue(this, data, null);
|
||||
}
|
||||
|
||||
|
||||
var illegalWeaponIds = new SparseSet(
|
||||
"10000-10008, 11411, 11506-11508, 12505, 12506, 12508, 12509," +
|
||||
"13503, 13506, 14411, 14503, 14505, 14508, 15504-15506, 20001");
|
||||
foreach (var id in WeaponData.Keys.Where(id => illegalWeaponIds.Contains(id)).ToList())
|
||||
WeaponData.Remove(id);
|
||||
|
||||
var illegalRelicIds = new SparseSet(
|
||||
"20002, 20004, 23300-24825"
|
||||
);
|
||||
//var illegalRelicIds = new SparseSet(
|
||||
// "20001, 23300-23340, 23383-23385, 78310-78554, 99310-99554"
|
||||
//);
|
||||
foreach (var id in ReliquaryData.Keys.Where(id => illegalRelicIds.Contains(id)).ToList())
|
||||
ReliquaryData.Remove(id);
|
||||
|
||||
var illegalItemIds = new SparseSet(
|
||||
"3004-3008, 3018-3022"
|
||||
);
|
||||
//var illegalItemIds = new SparseSet(
|
||||
// "3004-3008, 3018-3022, 100086, 100087, 100100-101000, 101106-101110, 101306, 101500-104000," +
|
||||
// "105001, 105004, 106000-107000, 107011, 108000, 109000-110000," +
|
||||
// "115000-130000, 200200-200899, 220050, 220054"
|
||||
//);
|
||||
foreach (var id in MaterialData.Keys.Where(id => illegalItemIds.Contains(id)).ToList())
|
||||
MaterialData.Remove(id);
|
||||
|
||||
foreach (var id in AvatarData.Keys.Where(id => id < 10000002 || id >= 11000000).ToList())
|
||||
AvatarData.Remove(id);
|
||||
}
|
||||
|
||||
private static object LoadDataFile(Type type, string path)
|
||||
{
|
||||
var list = (IList)JsonConvert.DeserializeObject(File.ReadAllText(path), typeof(List<>).MakeGenericType(type));
|
||||
if (list == null) return null;
|
||||
|
||||
var dicType = typeof(Dictionary<,>).MakeGenericType(typeof(int), type);
|
||||
var dic = (IDictionary)Activator.CreateInstance(dicType);
|
||||
foreach (GameResource gameResource in list)
|
||||
dic.Add(gameResource.Id, gameResource);
|
||||
return dic;
|
||||
}
|
||||
|
||||
private Dictionary<string, string> Languages = new Dictionary<string, string>
|
||||
{
|
||||
["zh-cn"] = "TextMapCHS",
|
||||
["zh-tw"] = "TextMapCHT",
|
||||
["en-us"] = "TextMapEN",
|
||||
["ru-ru"] = "TextMapRU",
|
||||
};
|
||||
|
||||
public void ConvertResources(string projectResourcesDir)
|
||||
{
|
||||
var currentCultureInfo = Thread.CurrentThread.CurrentUICulture;
|
||||
try
|
||||
{
|
||||
var sb = new StringBuilder(MaterialData.Count * 24);
|
||||
foreach (var language in Languages)
|
||||
{
|
||||
var dir = Path.Combine(projectResourcesDir, language.Key);
|
||||
TextMapData.LoadTextMap(TextMapData.TextMapFilePaths[Array.IndexOf(TextMapData.TextMapFiles, language.Value)]);
|
||||
|
||||
Thread.CurrentThread.CurrentUICulture = new CultureInfo(language.Key);
|
||||
GameData.LoadResources();
|
||||
|
||||
File.WriteAllLines(
|
||||
Path.Combine(dir, "Achievement.txt"),
|
||||
AchievementData.Values.Where(it => it.IsUsed)
|
||||
.Select(it => $"{it.Id}:{TextMapData.GetText(it.TitleTextMapHash.ToString())} - {TextMapData.GetText(it.DescTextMapHash.ToString())}"),
|
||||
Encoding.UTF8);
|
||||
|
||||
File.WriteAllLines(
|
||||
Path.Combine(dir, "Artifact.txt"),
|
||||
ReliquaryData.Values.OrderBy(it => it.Id).Select(it => $"{it.Id}:{TextMapData.GetText(it.NameTextMapHash.ToString())}"),
|
||||
Encoding.UTF8);
|
||||
|
||||
File.WriteAllLines(
|
||||
Path.Combine(dir, "Avatar.txt"),
|
||||
MaterialData.Values
|
||||
.Where(it => it.MaterialType == MaterialType.MATERIAL_AVATAR)
|
||||
.Select(it => $"{it.Id}:{TextMapData.GetText(it.NameTextMapHash.ToString())}"),
|
||||
Encoding.UTF8);
|
||||
|
||||
File.WriteAllLines(
|
||||
Path.Combine(dir, "Dungeon.txt"),
|
||||
DungeonData.Values.Select(it => $"{it.Id}:{TextMapData.GetText(it.NameTextMapHash.ToString())}"),
|
||||
Encoding.UTF8);
|
||||
|
||||
sb.Clear();
|
||||
foreach (var itemTypes in MaterialData.Values.GroupBy(it => it.ItemType))
|
||||
{
|
||||
sb.Append("// ").AppendLine(itemTypes.Key.ToTranslatedString(language.Key));
|
||||
if (itemTypes.Key == ItemType.ITEM_MATERIAL)
|
||||
{
|
||||
foreach (var m in itemTypes
|
||||
.GroupBy(it => it.MaterialType)
|
||||
.Where(it => it.Key != MaterialType.MATERIAL_NONE)
|
||||
.OrderBy(it => it.Average(m => m.Id)))
|
||||
{
|
||||
sb.Append("// ").AppendLine(m.Key.ToTranslatedString(language.Key));
|
||||
|
||||
if (m.Key == MaterialType.MATERIAL_BGM)
|
||||
{
|
||||
foreach (var materialData in m)
|
||||
sb.AppendFormat("{0}:{1} - {2}",
|
||||
materialData.Id,
|
||||
TextMapData.GetText(materialData.NameTextMapHash.ToString()),
|
||||
TextMapData.GetText(HomeWorldBgmData[int.Parse(materialData.ItemUse[0].UseParam[0])].BgmNameTextMapHash.ToString())
|
||||
).AppendLine();
|
||||
}
|
||||
else
|
||||
{
|
||||
foreach (var materialData in m)
|
||||
sb.AppendFormat("{0}:{1}", materialData.Id, TextMapData.GetText(materialData.NameTextMapHash.ToString())).AppendLine();
|
||||
}
|
||||
sb.AppendLine();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
foreach (var materialData in itemTypes)
|
||||
sb.AppendFormat("{0}:{1}", materialData.Id, TextMapData.GetText(materialData.NameTextMapHash.ToString())).AppendLine();
|
||||
sb.AppendLine();
|
||||
}
|
||||
}
|
||||
|
||||
sb.Append("// ").AppendLine(ItemType.ITEM_FURNITURE.ToTranslatedString(language.Key));
|
||||
foreach (var value in HomeWorldFurnitureData.Values)
|
||||
sb.AppendFormat("{0}:{1}", value.Id, TextMapData.GetText(value.NameTextMapHash.ToString())).AppendLine();
|
||||
|
||||
File.WriteAllText(Path.Combine(dir, "Item.txt"), sb.ToString(), Encoding.UTF8);
|
||||
|
||||
|
||||
sb.Clear();
|
||||
foreach (var monsterType in MonsterData.Values.OrderBy(it => it.Id)
|
||||
.GroupBy(it => it.Type)
|
||||
.OrderBy(it => it.Key))
|
||||
{
|
||||
sb.Append("// ").AppendLine(monsterType.Key.ToTranslatedString(language.Key));
|
||||
foreach (var monsterData in monsterType)
|
||||
{
|
||||
if (TextMapData.TryGetText(monsterData.NameTextMapHash.ToString(), out var text))
|
||||
{
|
||||
sb.AppendFormat("{0}:{1}", monsterData.Id, text);
|
||||
}
|
||||
else
|
||||
{
|
||||
var name = GameData.Monsters[monsterData.Id];
|
||||
if (name == ItemMap.EmptyName)
|
||||
sb.AppendFormat("{0}:{1} - {2}", monsterData.Id, monsterData.MonsterName, text);
|
||||
else
|
||||
sb.AppendFormat("{0}:{1}", monsterData.Id, name);
|
||||
}
|
||||
sb.AppendLine();
|
||||
}
|
||||
sb.AppendLine();
|
||||
}
|
||||
File.WriteAllText(
|
||||
Path.Combine(dir, "Monsters.txt"),
|
||||
sb.ToString(),
|
||||
Encoding.UTF8);
|
||||
|
||||
File.WriteAllLines(
|
||||
Path.Combine(dir, "Quest.txt"),
|
||||
QuestData.Values.OrderBy(it => it.Id).Select(it => $"{it.Id}:{TextMapData.GetText(MainQuestData[it.MainId].TitleTextMapHash)} - {TextMapData.GetText(it.DescTextMapHash.ToString())}"),
|
||||
Encoding.UTF8);
|
||||
|
||||
|
||||
sb.Clear();
|
||||
foreach (var it in SceneData.Values.OrderBy(it => it.Id))
|
||||
{
|
||||
var name = GameData.Scenes[it.Id];
|
||||
sb.AppendLine($"{it.Id}:{(name == ItemMap.EmptyName ? it.ScriptData : name)}");
|
||||
}
|
||||
File.WriteAllText(
|
||||
Path.Combine(dir, "Scene.txt"),
|
||||
sb.ToString(),
|
||||
Encoding.UTF8);
|
||||
|
||||
File.WriteAllLines(
|
||||
Path.Combine(dir, "Weapon.txt"),
|
||||
WeaponData.Values.Select(it => $"{it.Id}:{TextMapData.GetText(it.NameTextMapHash.ToString())}"),
|
||||
Encoding.UTF8);
|
||||
}
|
||||
|
||||
|
||||
File.WriteAllLines(
|
||||
Path.Combine(projectResourcesDir, "AvatarColor.txt"),
|
||||
AvatarData.Values.Select(it => $"{it.Id % 1000 + 1000}:{(int)it.QualityType}"),
|
||||
Encoding.UTF8);
|
||||
|
||||
File.WriteAllLines(
|
||||
Path.Combine(projectResourcesDir, "WeaponColor.txt"),
|
||||
WeaponData.Values.Select(it => $"{it.Id}:{(it.RankLevel >= 5 ? "yellow" : it.RankLevel >= 4 ? "purple" : "blue")}"),
|
||||
Encoding.UTF8);
|
||||
|
||||
}
|
||||
finally
|
||||
{
|
||||
Thread.CurrentThread.CurrentUICulture = currentCultureInfo;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
15
Source/GrasscutterTools/Game/Data/ResourceTypeAttribute.cs
Normal file
@@ -0,0 +1,15 @@
|
||||
using System;
|
||||
|
||||
namespace GrasscutterTools.Game.Data
|
||||
{
|
||||
[AttributeUsage(AttributeTargets.Class, Inherited = false)]
|
||||
public class ResourceTypeAttribute : Attribute
|
||||
{
|
||||
public string Name { get; set; }
|
||||
|
||||
public ResourceTypeAttribute(string name)
|
||||
{
|
||||
Name = name;
|
||||
}
|
||||
}
|
||||
}
|
32
Source/GrasscutterTools/Game/Dungeon/DungeonItem.cs
Normal file
@@ -0,0 +1,32 @@
|
||||
/**
|
||||
* Grasscutter Tools
|
||||
* Copyright (C) 2023 jie65535
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as published
|
||||
* by the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*
|
||||
**/
|
||||
|
||||
using Newtonsoft.Json;
|
||||
|
||||
namespace GrasscutterTools.Game.Dungeon
|
||||
{
|
||||
internal class DungeonItem
|
||||
{
|
||||
[JsonProperty("id")]
|
||||
public int Id { get; set; }
|
||||
|
||||
[JsonProperty("nameTextMapHash")]
|
||||
public string NameTextMapHash { get; set; }
|
||||
}
|
||||
}
|
@@ -33,6 +33,7 @@ namespace GrasscutterTools.Game
|
||||
ArtifactSubAttribution = new ItemMap(Resources.ArtifactSubAttribution);
|
||||
Avatars = new ItemMap(Resources.Avatar);
|
||||
AvatarColors = new ItemMap(Resources.AvatarColor);
|
||||
CutScenes = new ItemMap(Resources.Cutscene);
|
||||
Items = new ItemMapGroup(Resources.Item);
|
||||
Monsters = new ItemMapGroup(Resources.Monsters);
|
||||
Gadgets = new ItemMapGroup(Resources.Gadget);
|
||||
@@ -62,6 +63,8 @@ namespace GrasscutterTools.Game
|
||||
|
||||
public static ItemMap AvatarColors { get; private set; }
|
||||
|
||||
public static ItemMap CutScenes { get; private set; }
|
||||
|
||||
public static ItemMapGroup Items { get; private set; }
|
||||
|
||||
public static ItemMapGroup Monsters { get; private set; }
|
||||
|
48
Source/GrasscutterTools/Game/Inventory/ItemType.cs
Normal file
@@ -0,0 +1,48 @@
|
||||
|
||||
// ReSharper disable InconsistentNaming
|
||||
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace GrasscutterTools.Game.Inventory
|
||||
{
|
||||
internal enum ItemType
|
||||
{
|
||||
ITEM_NONE = 0,
|
||||
ITEM_VIRTUAL = 1,
|
||||
ITEM_MATERIAL = 2,
|
||||
ITEM_RELIQUARY = 3,
|
||||
ITEM_WEAPON = 4,
|
||||
ITEM_DISPLAY = 5,
|
||||
ITEM_FURNITURE = 6,
|
||||
}
|
||||
|
||||
|
||||
internal static class ItemTypeExtension
|
||||
{
|
||||
private static readonly Dictionary<ItemType, string> TextMapCHS = new Dictionary<ItemType, string>
|
||||
{
|
||||
[ItemType.ITEM_NONE] = "未分类",
|
||||
[ItemType.ITEM_VIRTUAL] = "虚拟道具",
|
||||
[ItemType.ITEM_MATERIAL] = "材料",
|
||||
[ItemType.ITEM_RELIQUARY] = "圣遗物",
|
||||
[ItemType.ITEM_WEAPON] = "物品",
|
||||
[ItemType.ITEM_DISPLAY] = "任务",
|
||||
[ItemType.ITEM_FURNITURE] = "尘歌壶摆设",
|
||||
};
|
||||
private static readonly Dictionary<ItemType, string> TextMapEN = new Dictionary<ItemType, string>
|
||||
{
|
||||
[ItemType.ITEM_NONE] = "None",
|
||||
[ItemType.ITEM_VIRTUAL] = "Virtual",
|
||||
[ItemType.ITEM_MATERIAL] = "Material",
|
||||
[ItemType.ITEM_RELIQUARY] = "Reliquary",
|
||||
[ItemType.ITEM_WEAPON] = "Weapon",
|
||||
[ItemType.ITEM_DISPLAY] = "Display",
|
||||
[ItemType.ITEM_FURNITURE] = "Furniture",
|
||||
};
|
||||
|
||||
public static string ToTranslatedString(this ItemType materialType, string language)
|
||||
{
|
||||
return language.StartsWith("zh") ? TextMapCHS[materialType] : TextMapEN[materialType];
|
||||
}
|
||||
}
|
||||
}
|
175
Source/GrasscutterTools/Game/Inventory/MaterialType.cs
Normal file
@@ -0,0 +1,175 @@
|
||||
|
||||
// ReSharper disable InconsistentNaming
|
||||
// ReSharper disable IdentifierTypo
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace GrasscutterTools.Game.Inventory
|
||||
{
|
||||
/// <summary>
|
||||
/// 材料类型
|
||||
/// </summary>
|
||||
internal enum MaterialType
|
||||
{
|
||||
MATERIAL_NONE = 0,
|
||||
MATERIAL_FOOD = 1,
|
||||
MATERIAL_QUEST = 2,
|
||||
MATERIAL_EXCHANGE = 4,
|
||||
MATERIAL_CONSUME = 5,
|
||||
MATERIAL_EXP_FRUIT = 6,
|
||||
MATERIAL_AVATAR = 7,
|
||||
MATERIAL_ADSORBATE = 8,
|
||||
MATERIAL_CRICKET = 9,
|
||||
MATERIAL_ELEM_CRYSTAL = 10,
|
||||
MATERIAL_WEAPON_EXP_STONE = 11,
|
||||
MATERIAL_CHEST = 12,
|
||||
MATERIAL_RELIQUARY_MATERIAL = 13,
|
||||
MATERIAL_AVATAR_MATERIAL = 14,
|
||||
MATERIAL_NOTICE_ADD_HP = 15,
|
||||
MATERIAL_SEA_LAMP = 16,
|
||||
MATERIAL_SELECTABLE_CHEST = 17,
|
||||
MATERIAL_FLYCLOAK = 18,
|
||||
MATERIAL_NAMECARD = 19,
|
||||
MATERIAL_TALENT = 20,
|
||||
MATERIAL_WIDGET = 21,
|
||||
MATERIAL_CHEST_BATCH_USE = 22,
|
||||
MATERIAL_FAKE_ABSORBATE = 23,
|
||||
MATERIAL_CONSUME_BATCH_USE = 24,
|
||||
MATERIAL_WOOD = 25,
|
||||
MATERIAL_FURNITURE_FORMULA = 27,
|
||||
MATERIAL_CHANNELLER_SLAB_BUFF = 28,
|
||||
MATERIAL_FURNITURE_SUITE_FORMULA = 29,
|
||||
MATERIAL_COSTUME = 30,
|
||||
MATERIAL_HOME_SEED = 31,
|
||||
MATERIAL_FISH_BAIT = 32,
|
||||
MATERIAL_FISH_ROD = 33,
|
||||
MATERIAL_SUMO_BUFF = 34, // sumo 活动道具,never appear
|
||||
MATERIAL_FIREWORKS = 35,
|
||||
MATERIAL_BGM = 36,
|
||||
MATERIAL_SPICE_FOOD = 37,
|
||||
MATERIAL_ACTIVITY_ROBOT = 38,
|
||||
MATERIAL_ACTIVITY_GEAR = 39,
|
||||
MATERIAL_ACTIVITY_JIGSAW = 40,
|
||||
MATERIAL_ARANARA = 41,
|
||||
MATERIAL_GCG_CARD = 42,
|
||||
MATERIAL_GCG_CARD_FACE = 43, // 影幻卡面
|
||||
MATERIAL_GCG_CARD_BACK = 44,
|
||||
MATERIAL_GCG_FIELD = 45,
|
||||
MATERIAL_DESHRET_MANUAL = 46,
|
||||
MATERIAL_RENAME_ITEM = 47,
|
||||
MATERIAL_GCG_EXCHANGE_ITEM = 48,
|
||||
MATERIAL_QUEST_EVENT_BOOK = 49,
|
||||
}
|
||||
|
||||
internal static class MaterialTypeExtension
|
||||
{
|
||||
private static readonly Dictionary<MaterialType, string> TextMapCHS = new Dictionary<MaterialType, string>
|
||||
{
|
||||
[MaterialType.MATERIAL_NONE] = "空",
|
||||
[MaterialType.MATERIAL_FOOD] = "食物",
|
||||
[MaterialType.MATERIAL_QUEST] = "任务",
|
||||
[MaterialType.MATERIAL_EXCHANGE] = "收集物",
|
||||
[MaterialType.MATERIAL_CONSUME] = "消耗品",
|
||||
[MaterialType.MATERIAL_EXP_FRUIT] = "经验书",
|
||||
[MaterialType.MATERIAL_AVATAR] = "角色",
|
||||
[MaterialType.MATERIAL_ADSORBATE] = "能量球",
|
||||
[MaterialType.MATERIAL_CRICKET] = "蛐蛐",
|
||||
[MaterialType.MATERIAL_ELEM_CRYSTAL] = "神瞳",
|
||||
[MaterialType.MATERIAL_WEAPON_EXP_STONE] = "武器锻造矿",
|
||||
[MaterialType.MATERIAL_CHEST] = "宝箱",
|
||||
[MaterialType.MATERIAL_RELIQUARY_MATERIAL] = "圣遗物经验瓶",
|
||||
[MaterialType.MATERIAL_AVATAR_MATERIAL] = "角色天赋材料",
|
||||
[MaterialType.MATERIAL_NOTICE_ADD_HP] = "回血食物",
|
||||
[MaterialType.MATERIAL_SEA_LAMP] = "海灯节",
|
||||
[MaterialType.MATERIAL_SELECTABLE_CHEST] = "自选礼包",
|
||||
[MaterialType.MATERIAL_FLYCLOAK] = "风之翼",
|
||||
[MaterialType.MATERIAL_NAMECARD] = "名片卡",
|
||||
[MaterialType.MATERIAL_TALENT] = "天赋材料",
|
||||
[MaterialType.MATERIAL_WIDGET] = "装饰物",
|
||||
[MaterialType.MATERIAL_CHEST_BATCH_USE] = "礼包",
|
||||
[MaterialType.MATERIAL_FAKE_ABSORBATE] = "MATERIAL_FAKE_ABSORBATE",
|
||||
[MaterialType.MATERIAL_CONSUME_BATCH_USE] = "树脂",
|
||||
[MaterialType.MATERIAL_WOOD] = "树木",
|
||||
[MaterialType.MATERIAL_FURNITURE_FORMULA] = "尘歌壶室内摆设",
|
||||
[MaterialType.MATERIAL_CHANNELLER_SLAB_BUFF] = "增益Buff",
|
||||
[MaterialType.MATERIAL_FURNITURE_SUITE_FORMULA] = "尘歌壶摆设套装",
|
||||
[MaterialType.MATERIAL_COSTUME] = "皮肤",
|
||||
[MaterialType.MATERIAL_HOME_SEED] = "种子",
|
||||
[MaterialType.MATERIAL_FISH_BAIT] = "鱼饵",
|
||||
[MaterialType.MATERIAL_FISH_ROD] = "鱼竿",
|
||||
[MaterialType.MATERIAL_SUMO_BUFF] = "MATERIAL_SUMO_BUFF",
|
||||
[MaterialType.MATERIAL_FIREWORKS] = "烟花",
|
||||
[MaterialType.MATERIAL_BGM] = "旋曜玉帛",
|
||||
[MaterialType.MATERIAL_SPICE_FOOD] = "香气四溢的食物",
|
||||
[MaterialType.MATERIAL_ACTIVITY_ROBOT] = "活动-兑换券",
|
||||
[MaterialType.MATERIAL_ACTIVITY_GEAR] = "活动-齿轮",
|
||||
[MaterialType.MATERIAL_ACTIVITY_JIGSAW] = "活动-部件",
|
||||
[MaterialType.MATERIAL_ARANARA] = "兰纳罗",
|
||||
[MaterialType.MATERIAL_GCG_CARD] = "七圣召唤-卡片",
|
||||
[MaterialType.MATERIAL_GCG_CARD_FACE] = "七圣召唤-卡片-正面",
|
||||
[MaterialType.MATERIAL_GCG_CARD_BACK] = "七圣召唤-卡片-背面",
|
||||
[MaterialType.MATERIAL_GCG_FIELD] = "七圣召唤-卡片-场地",
|
||||
[MaterialType.MATERIAL_DESHRET_MANUAL] = "沙漠书",
|
||||
[MaterialType.MATERIAL_RENAME_ITEM] = "改名卡",
|
||||
[MaterialType.MATERIAL_GCG_EXCHANGE_ITEM] = "七圣召唤-特殊卡",
|
||||
[MaterialType.MATERIAL_QUEST_EVENT_BOOK] = "案件记录册",
|
||||
};
|
||||
private static readonly Dictionary<MaterialType, string> TextMapEN = new Dictionary<MaterialType, string>
|
||||
{
|
||||
[MaterialType.MATERIAL_NONE] = "None",
|
||||
[MaterialType.MATERIAL_FOOD] = "Food",
|
||||
[MaterialType.MATERIAL_QUEST] = "Quest",
|
||||
[MaterialType.MATERIAL_EXCHANGE] = "Exchange",
|
||||
[MaterialType.MATERIAL_CONSUME] = "Consume",
|
||||
[MaterialType.MATERIAL_EXP_FRUIT] = "Exp_fruit",
|
||||
[MaterialType.MATERIAL_AVATAR] = "Avatar",
|
||||
[MaterialType.MATERIAL_ADSORBATE] = "Adsorbate",
|
||||
[MaterialType.MATERIAL_CRICKET] = "Cricket",
|
||||
[MaterialType.MATERIAL_ELEM_CRYSTAL] = "Elem_crystal",
|
||||
[MaterialType.MATERIAL_WEAPON_EXP_STONE] = "Weapon_exp_stone",
|
||||
[MaterialType.MATERIAL_CHEST] = "Chest",
|
||||
[MaterialType.MATERIAL_RELIQUARY_MATERIAL] = "Reliquary_material",
|
||||
[MaterialType.MATERIAL_AVATAR_MATERIAL] = "Avatar_material",
|
||||
[MaterialType.MATERIAL_NOTICE_ADD_HP] = "Notice_add_hp",
|
||||
[MaterialType.MATERIAL_SEA_LAMP] = "Sea_lamp",
|
||||
[MaterialType.MATERIAL_SELECTABLE_CHEST] = "Selectable_chest",
|
||||
[MaterialType.MATERIAL_FLYCLOAK] = "Flycloak",
|
||||
[MaterialType.MATERIAL_NAMECARD] = "Namecard",
|
||||
[MaterialType.MATERIAL_TALENT] = "Talent",
|
||||
[MaterialType.MATERIAL_WIDGET] = "Widget",
|
||||
[MaterialType.MATERIAL_CHEST_BATCH_USE] = "Chest_batch_use",
|
||||
[MaterialType.MATERIAL_FAKE_ABSORBATE] = "Fake_absorbate",
|
||||
[MaterialType.MATERIAL_CONSUME_BATCH_USE] = "Consume_batch_use",
|
||||
[MaterialType.MATERIAL_WOOD] = "Wood",
|
||||
[MaterialType.MATERIAL_FURNITURE_FORMULA] = "Furniture_formula",
|
||||
[MaterialType.MATERIAL_CHANNELLER_SLAB_BUFF] = "Channeller_slab_buff",
|
||||
[MaterialType.MATERIAL_FURNITURE_SUITE_FORMULA] = "Furniture_suite_formula",
|
||||
[MaterialType.MATERIAL_COSTUME] = "Costume",
|
||||
[MaterialType.MATERIAL_HOME_SEED] = "Home_seed",
|
||||
[MaterialType.MATERIAL_FISH_BAIT] = "Fish_bait",
|
||||
[MaterialType.MATERIAL_FISH_ROD] = "Fish_rod",
|
||||
[MaterialType.MATERIAL_SUMO_BUFF] = "Sumo_buff",
|
||||
[MaterialType.MATERIAL_FIREWORKS] = "Fireworks",
|
||||
[MaterialType.MATERIAL_BGM] = "Bgm",
|
||||
[MaterialType.MATERIAL_SPICE_FOOD] = "Spice_food",
|
||||
[MaterialType.MATERIAL_ACTIVITY_ROBOT] = "Activity_robot",
|
||||
[MaterialType.MATERIAL_ACTIVITY_GEAR] = "Activity_gear",
|
||||
[MaterialType.MATERIAL_ACTIVITY_JIGSAW] = "Activity_jigsaw",
|
||||
[MaterialType.MATERIAL_ARANARA] = "Aranara",
|
||||
[MaterialType.MATERIAL_GCG_CARD] = "Gcg_card",
|
||||
[MaterialType.MATERIAL_GCG_CARD_FACE] = "Gcg_card_face",
|
||||
[MaterialType.MATERIAL_GCG_CARD_BACK] = "Gcg_card_back",
|
||||
[MaterialType.MATERIAL_GCG_FIELD] = "Gcg_field",
|
||||
[MaterialType.MATERIAL_DESHRET_MANUAL] = "Deshret_manual",
|
||||
[MaterialType.MATERIAL_RENAME_ITEM] = "Rename_item",
|
||||
[MaterialType.MATERIAL_GCG_EXCHANGE_ITEM] = "Gcg_exchange_item",
|
||||
[MaterialType.MATERIAL_QUEST_EVENT_BOOK] = "Quest_event_book",
|
||||
};
|
||||
|
||||
public static string ToTranslatedString(this MaterialType materialType, string language)
|
||||
{
|
||||
return language.StartsWith("zh") ? TextMapCHS[materialType] : TextMapEN[materialType];
|
||||
}
|
||||
}
|
||||
}
|
@@ -71,7 +71,8 @@ namespace GrasscutterTools.Game
|
||||
{
|
||||
get
|
||||
{
|
||||
foreach (var map in Values) {
|
||||
foreach (var map in Values)
|
||||
{
|
||||
var n = map[id];
|
||||
if (n != ItemMap.EmptyName)
|
||||
return n;
|
||||
|
10
Source/GrasscutterTools/Game/Props/ItemUseData.cs
Normal file
@@ -0,0 +1,10 @@
|
||||
using Newtonsoft.Json;
|
||||
|
||||
namespace GrasscutterTools.Game.Props
|
||||
{
|
||||
internal class ItemUseData
|
||||
{
|
||||
[JsonProperty("useParam")]
|
||||
public string[] UseParam { get; set; }
|
||||
}
|
||||
}
|
51
Source/GrasscutterTools/Game/Props/MonsterType.cs
Normal file
@@ -0,0 +1,51 @@
|
||||
|
||||
// ReSharper disable InconsistentNaming
|
||||
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace GrasscutterTools.Game.Props
|
||||
{
|
||||
/// <summary>
|
||||
/// 怪物种类
|
||||
/// </summary>
|
||||
internal enum MonsterType
|
||||
{
|
||||
MONSTER_NONE = 0,
|
||||
MONSTER_ORDINARY = 1,
|
||||
MONSTER_BOSS = 2,
|
||||
MONSTER_ENV_ANIMAL = 3,
|
||||
MONSTER_LITTLE_MONSTER = 4,
|
||||
MONSTER_FISH = 5,
|
||||
MONSTER_PARTNER = 6,
|
||||
}
|
||||
|
||||
|
||||
internal static class ItemTypeExtension
|
||||
{
|
||||
private static readonly Dictionary<MonsterType, string> TextMapCHS = new Dictionary<MonsterType, string>
|
||||
{
|
||||
[MonsterType.MONSTER_NONE] = "未分类",
|
||||
[MonsterType.MONSTER_ORDINARY] = "普通怪物",
|
||||
[MonsterType.MONSTER_BOSS] = "BOSS",
|
||||
[MonsterType.MONSTER_ENV_ANIMAL] = "动物",
|
||||
[MonsterType.MONSTER_LITTLE_MONSTER] = "小怪",
|
||||
[MonsterType.MONSTER_FISH] = "鱼",
|
||||
[MonsterType.MONSTER_PARTNER] = "友军",
|
||||
};
|
||||
private static readonly Dictionary<MonsterType, string> TextMapEN = new Dictionary<MonsterType, string>
|
||||
{
|
||||
[MonsterType.MONSTER_NONE] = "None",
|
||||
[MonsterType.MONSTER_ORDINARY] = "Ordinary",
|
||||
[MonsterType.MONSTER_BOSS] = "Boss",
|
||||
[MonsterType.MONSTER_ENV_ANIMAL] = "Env_animal",
|
||||
[MonsterType.MONSTER_LITTLE_MONSTER] = "Little_monster",
|
||||
[MonsterType.MONSTER_FISH] = "Fish",
|
||||
[MonsterType.MONSTER_PARTNER] = "Partner",
|
||||
};
|
||||
|
||||
public static string ToTranslatedString(this MonsterType materialType, string language)
|
||||
{
|
||||
return language.StartsWith("zh") ? TextMapCHS[materialType] : TextMapEN[materialType];
|
||||
}
|
||||
}
|
||||
}
|
44
Source/GrasscutterTools/Game/Props/QualityType.cs
Normal file
@@ -0,0 +1,44 @@
|
||||
|
||||
// ReSharper disable InconsistentNaming
|
||||
|
||||
namespace GrasscutterTools.Game.Props
|
||||
{
|
||||
internal enum QualityType
|
||||
{
|
||||
/// <summary>
|
||||
/// 无
|
||||
/// </summary>
|
||||
QUALITY_NONE = 0,
|
||||
|
||||
/// <summary>
|
||||
/// 一星
|
||||
/// </summary>
|
||||
QUALITY_WHITE = 1,
|
||||
|
||||
/// <summary>
|
||||
/// 二星
|
||||
/// </summary>
|
||||
QUALITY_GREEN = 2,
|
||||
|
||||
/// <summary>
|
||||
/// 三星
|
||||
/// </summary>
|
||||
QUALITY_BLUE = 3,
|
||||
|
||||
/// <summary>
|
||||
/// 四星
|
||||
/// </summary>
|
||||
QUALITY_PURPLE = 4,
|
||||
|
||||
/// <summary>
|
||||
/// 五星
|
||||
/// </summary>
|
||||
QUALITY_ORANGE = 5,
|
||||
|
||||
/// <summary>
|
||||
/// 限定五星
|
||||
/// </summary>
|
||||
//QUALITY_ORANGE_SP = 105,
|
||||
QUALITY_ORANGE_SP = 5,
|
||||
}
|
||||
}
|
16
Source/GrasscutterTools/Game/Props/SceneType.cs
Normal file
@@ -0,0 +1,16 @@
|
||||
|
||||
// ReSharper disable InconsistentNaming
|
||||
|
||||
namespace GrasscutterTools.Game.Props
|
||||
{
|
||||
public enum SceneType
|
||||
{
|
||||
SCENE_NONE = 0,
|
||||
SCENE_WORLD = 1,
|
||||
SCENE_DUNGEON = 2,
|
||||
SCENE_ROOM = 3,
|
||||
SCENE_HOME_WORLD = 4,
|
||||
SCENE_HOME_ROOM = 5,
|
||||
SCENE_ACTIVITY = 6,
|
||||
}
|
||||
}
|
@@ -17,6 +17,7 @@
|
||||
*
|
||||
**/
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
@@ -31,15 +32,20 @@ namespace GrasscutterTools.Game
|
||||
{
|
||||
LoadManualTextMap(Path.Combine(resourcesDirPath, "ExcelBinOutput", "ManualTextMapConfigData.json"));
|
||||
LoadTextMaps(Path.Combine(resourcesDirPath, "TextMap"));
|
||||
LoadTextMap(TextMapFilePaths[Array.IndexOf(TextMapFiles, "TextMapCHS")]);
|
||||
DefaultTextMap = TextMap;
|
||||
}
|
||||
|
||||
public Dictionary<string, string> ManualTextMap;
|
||||
public Dictionary<string, string> DefaultTextMap;
|
||||
public Dictionary<string, string> TextMap;
|
||||
public string[] TextMapFilePaths;
|
||||
public string[] TextMapFiles;
|
||||
|
||||
private void LoadManualTextMap(string manualTextMapPath)
|
||||
{
|
||||
if (!File.Exists(manualTextMapPath)) return;
|
||||
|
||||
using (var fs = File.OpenRead(manualTextMapPath))
|
||||
using (var sr = new StreamReader(fs))
|
||||
using (var reader = new JsonTextReader(sr))
|
||||
@@ -81,5 +87,31 @@ namespace GrasscutterTools.Game
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public bool Contains(string textMapPath) => TextMap.ContainsKey(textMapPath) || DefaultTextMap.ContainsKey(textMapPath);
|
||||
|
||||
public string GetText(string textMapHash)
|
||||
{
|
||||
return TextMap.TryGetValue(textMapHash, out var text) ? text
|
||||
: DefaultTextMap.TryGetValue(textMapHash, out text) ? "[CHS] - " + text
|
||||
: "[N/A] " + textMapHash;
|
||||
}
|
||||
|
||||
public bool TryGetText(string textMapHash, out string text)
|
||||
{
|
||||
if (TextMap.TryGetValue(textMapHash, out text))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
if (DefaultTextMap.TryGetValue(textMapHash, out text))
|
||||
{
|
||||
text = "[CHS] - " + text;
|
||||
return true;
|
||||
}
|
||||
|
||||
text = "[N/A] " + textMapHash;
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
@@ -136,21 +136,46 @@
|
||||
<DependentUpon>FormTextMapBrowser.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Game\Activity\ActivityConfigItem.cs" />
|
||||
<Compile Include="Game\Activity\NewActivityItem.cs" />
|
||||
<Compile Include="Game\CommandVersion.cs" />
|
||||
<Compile Include="Game\CutScene\CutSceneItem.cs" />
|
||||
<Compile Include="Game\Data\Excels\AvatarData.cs" />
|
||||
<Compile Include="Game\Data\Excels\AchievementData.cs" />
|
||||
<Compile Include="Game\Data\Excels\DungeonData.cs" />
|
||||
<Compile Include="Game\Data\Excels\GadgetData.cs" />
|
||||
<Compile Include="Game\Data\Excels\HomeWorldBgmData.cs" />
|
||||
<Compile Include="Game\Data\Excels\HomeWorldFurnitureData.cs" />
|
||||
<Compile Include="Game\Data\Excels\MaterialData.cs" />
|
||||
<Compile Include="Game\Data\Excels\MainQuestData.cs" />
|
||||
<Compile Include="Game\Data\Excels\QuestData.cs" />
|
||||
<Compile Include="Game\Data\Excels\ReliquaryData.cs" />
|
||||
<Compile Include="Game\Data\Excels\MonsterData.cs" />
|
||||
<Compile Include="Game\Data\Excels\SceneData.cs" />
|
||||
<Compile Include="Game\Data\GameResource.cs" />
|
||||
<Compile Include="Game\Data\GameResources.cs" />
|
||||
<Compile Include="Game\Data\ResourceTypeAttribute.cs" />
|
||||
<Compile Include="Game\Drop\DropData.cs" />
|
||||
<Compile Include="Game\Drop\DropInfo.cs" />
|
||||
<Compile Include="Game\Dungeon\DungeonItem.cs" />
|
||||
<Compile Include="Game\Gacha\GachaBanner3.cs" />
|
||||
<Compile Include="Game\Gacha\GachaBanner2.cs" />
|
||||
<Compile Include="Game\GameCommand.cs" />
|
||||
<Compile Include="Game\Gacha\BannerType.cs" />
|
||||
<Compile Include="Game\Gacha\GachaBanner.cs" />
|
||||
<Compile Include="Game\GameData.cs" />
|
||||
<Compile Include="Game\Inventory\ItemType.cs" />
|
||||
<Compile Include="Game\Inventory\MaterialType.cs" />
|
||||
<Compile Include="Game\Data\Excels\WeaponData.cs" />
|
||||
<Compile Include="Game\ItemMap.cs" />
|
||||
<Compile Include="Game\ItemMapGroup.cs" />
|
||||
<Compile Include="Game\Mail\Mail.cs" />
|
||||
<Compile Include="Game\Mail\MailItem.cs" />
|
||||
<Compile Include="Game\Player\PlayerData.cs" />
|
||||
<Compile Include="Game\Props\ItemUseData.cs" />
|
||||
<Compile Include="Game\Props\MonsterType.cs" />
|
||||
<Compile Include="Game\Props\PlayerProperty.cs" />
|
||||
<Compile Include="Game\Props\QualityType.cs" />
|
||||
<Compile Include="Game\Props\SceneType.cs" />
|
||||
<Compile Include="Game\SetStatsCommand.cs" />
|
||||
<Compile Include="Game\Shop\ItemParamData.cs" />
|
||||
<Compile Include="Game\Shop\ShopGoodsData.cs" />
|
||||
@@ -216,6 +241,12 @@
|
||||
<Compile Include="Pages\PageHome.Designer.cs">
|
||||
<DependentUpon>PageHome.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Pages\PageHotKey.cs">
|
||||
<SubType>UserControl</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Pages\PageHotKey.Designer.cs">
|
||||
<DependentUpon>PageHotKey.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Pages\PageMail.cs">
|
||||
<SubType>UserControl</SubType>
|
||||
</Compile>
|
||||
@@ -277,11 +308,17 @@
|
||||
<AutoGen>True</AutoGen>
|
||||
<DesignTime>True</DesignTime>
|
||||
</Compile>
|
||||
<Compile Include="Utils\AppHotKey.cs" />
|
||||
<Compile Include="Utils\ArtifactUtils.cs" />
|
||||
<Compile Include="Utils\Common.cs" />
|
||||
<Compile Include="Utils\GuiRedirect.cs" />
|
||||
<Compile Include="Utils\KeyGo.cs" />
|
||||
<Compile Include="Utils\HotKeyItem.cs" />
|
||||
<Compile Include="Utils\HttpHelper.cs" />
|
||||
<Compile Include="Utils\Logger.cs" />
|
||||
<Compile Include="Utils\GithubHelper.cs" />
|
||||
<Compile Include="Utils\SparseSet.cs" />
|
||||
<Compile Include="Utils\ToggleParser.cs" />
|
||||
<Compile Include="Utils\UIUtil.cs" />
|
||||
<EmbeddedResource Include="Forms\FormActivityEditor.en-US.resx">
|
||||
<DependentUpon>FormActivityEditor.cs</DependentUpon>
|
||||
@@ -437,6 +474,7 @@
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="Pages\PageGiveArtifact.resx">
|
||||
<DependentUpon>PageGiveArtifact.cs</DependentUpon>
|
||||
<SubType>Designer</SubType>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="Pages\PageGiveArtifact.ru-RU.resx">
|
||||
<DependentUpon>PageGiveArtifact.cs</DependentUpon>
|
||||
@@ -481,6 +519,18 @@
|
||||
<EmbeddedResource Include="Pages\PageHome.zh-TW.resx">
|
||||
<DependentUpon>PageHome.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="Pages\PageHotKey.en-US.resx">
|
||||
<DependentUpon>PageHotKey.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="Pages\PageHotKey.resx">
|
||||
<DependentUpon>PageHotKey.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="Pages\PageHotKey.ru-RU.resx">
|
||||
<DependentUpon>PageHotKey.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="Pages\PageHotKey.zh-TW.resx">
|
||||
<DependentUpon>PageHotKey.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="Pages\PageMail.en-US.resx">
|
||||
<DependentUpon>PageMail.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
@@ -635,6 +685,7 @@
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="Resources\en-us\Achievement.txt" />
|
||||
<Content Include="Resources\en-us\Activity.txt" />
|
||||
<Content Include="Resources\en-us\Artifact.txt" />
|
||||
<Content Include="Resources\en-us\ArtifactCat.txt" />
|
||||
<Content Include="Resources\en-us\ArtifactMainAttribution.txt" />
|
||||
@@ -642,6 +693,7 @@
|
||||
<Content Include="Resources\en-us\Avatar.txt" />
|
||||
<Content Include="Resources\en-us\CustomCommands.txt" />
|
||||
<None Include="Resources\en-us\Dungeon.txt" />
|
||||
<Content Include="Resources\en-us\Cutscene.txt" />
|
||||
<Content Include="Resources\en-us\GachaBennerTitle.txt" />
|
||||
<Content Include="Resources\en-us\GachaBennerPrefab.txt" />
|
||||
<Content Include="Resources\en-us\Gadget.txt" />
|
||||
@@ -655,6 +707,7 @@
|
||||
<None Include="Resources\Newtonsoft.Json.dll" />
|
||||
<Content Include="Resources\MyTools.java" />
|
||||
<Content Include="Resources\ru-ru\Achievement.txt" />
|
||||
<Content Include="Resources\ru-ru\Activity.txt" />
|
||||
<Content Include="Resources\ru-ru\Artifact.txt" />
|
||||
<Content Include="Resources\ru-ru\ArtifactCat.txt" />
|
||||
<Content Include="Resources\ru-ru\ArtifactMainAttribution.txt" />
|
||||
@@ -662,6 +715,7 @@
|
||||
<Content Include="Resources\ru-ru\Avatar.txt" />
|
||||
<Content Include="Resources\ru-ru\CustomCommands.txt" />
|
||||
<None Include="Resources\ru-ru\Dungeon.txt" />
|
||||
<Content Include="Resources\ru-ru\Cutscene.txt" />
|
||||
<Content Include="Resources\ru-ru\GachaBennerTitle.txt" />
|
||||
<Content Include="Resources\ru-ru\GachaBennerPrefab.txt" />
|
||||
<Content Include="Resources\ru-ru\Gadget.txt" />
|
||||
@@ -687,6 +741,7 @@
|
||||
<Content Include="Resources\zh-cn\CustomCommands.txt" />
|
||||
<Content Include="Resources\AvatarColor.txt" />
|
||||
<None Include="Resources\zh-cn\Dungeon.txt" />
|
||||
<Content Include="Resources\zh-cn\Cutscene.txt" />
|
||||
<Content Include="Resources\zh-cn\GachaBannerTitle.txt" />
|
||||
<Content Include="Resources\zh-cn\GachaBennerPrefab.txt" />
|
||||
<Content Include="Resources\zh-cn\Gadget.txt" />
|
||||
@@ -698,6 +753,7 @@
|
||||
<Content Include="Resources\zh-cn\ShopType.txt" />
|
||||
<Content Include="Resources\zh-cn\Weapon.txt" />
|
||||
<Content Include="Resources\zh-tw\Achievement.txt" />
|
||||
<Content Include="Resources\zh-tw\Activity.txt" />
|
||||
<Content Include="Resources\zh-tw\ArtifactCat.txt" />
|
||||
<Content Include="Resources\zh-tw\ArtifactMainAttribution.txt" />
|
||||
<Content Include="Resources\zh-tw\Artifact.txt" />
|
||||
@@ -705,6 +761,7 @@
|
||||
<Content Include="Resources\zh-tw\Avatar.txt" />
|
||||
<Content Include="Resources\zh-tw\CustomCommands.txt" />
|
||||
<None Include="Resources\zh-tw\Dungeon.txt" />
|
||||
<Content Include="Resources\zh-tw\Cutscene.txt" />
|
||||
<Content Include="Resources\zh-tw\GachaBennerTitle.txt" />
|
||||
<Content Include="Resources\zh-tw\GachaBennerPrefab.txt" />
|
||||
<Content Include="Resources\zh-tw\Item.txt" />
|
||||
@@ -731,9 +788,6 @@
|
||||
<PackageReference Include="Resource.Embedder">
|
||||
<Version>2.2.0</Version>
|
||||
</PackageReference>
|
||||
<PackageReference Include="System.IO.Compression.ZipFile">
|
||||
<Version>4.3.0</Version>
|
||||
</PackageReference>
|
||||
</ItemGroup>
|
||||
<ItemGroup />
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||
|
@@ -46,15 +46,15 @@ namespace GrasscutterTools.OpenCommand
|
||||
|
||||
public async Task<bool> Ping()
|
||||
{
|
||||
try
|
||||
{
|
||||
var response = await DoRequest("ping");
|
||||
return response.RetCode == 200;
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
//try
|
||||
//{
|
||||
var response = await DoRequest("ping");
|
||||
return response.RetCode == 200;
|
||||
//}
|
||||
//catch (Exception)
|
||||
//{
|
||||
// return false;
|
||||
//}
|
||||
}
|
||||
|
||||
public async Task SendCode(int playerId)
|
||||
|
@@ -141,7 +141,7 @@
|
||||
如果愿意请我喝一杯奶茶,那就更好了 : )
|
||||
指令生成有问题,或者有新的功能请求,都可以来Github提出
|
||||
|
||||
欢迎加入内测Q群: 457427536 (需要回答正确答案)</value>
|
||||
欢迎加入内测Q群: 835489603 (需要回答正确答案)</value>
|
||||
</data>
|
||||
<data name=">>GrasscutterToolsSupport.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
@@ -268,4 +268,4 @@
|
||||
<metadata name="$this.Language" type="System.Globalization.CultureInfo, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>ru-RU</value>
|
||||
</metadata>
|
||||
</root>
|
||||
</root>
|
||||
|
@@ -1,6 +1,7 @@
|
||||
using System;
|
||||
using System.Linq;
|
||||
using System.Windows.Forms;
|
||||
|
||||
using GrasscutterTools.Game;
|
||||
using GrasscutterTools.Properties;
|
||||
using GrasscutterTools.Utils;
|
||||
@@ -98,4 +99,4 @@ namespace GrasscutterTools.Pages
|
||||
GenSelected("/achievement progress", NUDProgress.Text);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@@ -38,6 +38,7 @@
|
||||
this.BtnRemoveCustomCommand = new System.Windows.Forms.Button();
|
||||
this.BtnSaveCustomCommand = new System.Windows.Forms.Button();
|
||||
this.TxtCustomName = new System.Windows.Forms.TextBox();
|
||||
this.BtnAddHotKey = new System.Windows.Forms.Button();
|
||||
this.GrpCustomCommands.SuspendLayout();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
@@ -100,10 +101,18 @@
|
||||
this.TxtCustomName.Name = "TxtCustomName";
|
||||
this.TxtCustomName.KeyDown += new System.Windows.Forms.KeyEventHandler(this.TxtCustomName_KeyDown);
|
||||
//
|
||||
// BtnAddHotKey
|
||||
//
|
||||
resources.ApplyResources(this.BtnAddHotKey, "BtnAddHotKey");
|
||||
this.BtnAddHotKey.Name = "BtnAddHotKey";
|
||||
this.BtnAddHotKey.UseVisualStyleBackColor = true;
|
||||
this.BtnAddHotKey.Click += new System.EventHandler(this.BtnAddHotKey_Click);
|
||||
//
|
||||
// PageCustomCommands
|
||||
//
|
||||
resources.ApplyResources(this, "$this");
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.Controls.Add(this.BtnAddHotKey);
|
||||
this.Controls.Add(this.BtnExportCustomCommands);
|
||||
this.Controls.Add(this.BtnLoadCustomCommands);
|
||||
this.Controls.Add(this.LblCustomName);
|
||||
@@ -130,5 +139,6 @@
|
||||
private System.Windows.Forms.Button BtnRemoveCustomCommand;
|
||||
private System.Windows.Forms.Button BtnSaveCustomCommand;
|
||||
private System.Windows.Forms.TextBox TxtCustomName;
|
||||
private System.Windows.Forms.Button BtnAddHotKey;
|
||||
}
|
||||
}
|
||||
|
@@ -248,5 +248,18 @@ namespace GrasscutterTools.Pages
|
||||
LoadCustomCommandControls(Resources.CustomCommands);
|
||||
}
|
||||
}
|
||||
|
||||
public Action<string> OnAddHotKey;
|
||||
|
||||
private void BtnAddHotKey_Click(object sender, EventArgs e)
|
||||
{
|
||||
var name = TxtCustomName.Text.Trim();
|
||||
if (string.IsNullOrEmpty(name))
|
||||
{
|
||||
MessageBox.Show(Resources.CommandTagCannotBeEmpty, Resources.Error, MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
return;
|
||||
}
|
||||
OnAddHotKey?.Invoke(name);
|
||||
}
|
||||
}
|
||||
}
|
@@ -119,19 +119,19 @@
|
||||
</resheader>
|
||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
<data name="BtnExportCustomCommands.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>573, 209</value>
|
||||
<value>573, 206</value>
|
||||
</data>
|
||||
<data name="BtnExportCustomCommands.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>70, 23</value>
|
||||
<value>70, 30</value>
|
||||
</data>
|
||||
<data name="BtnExportCustomCommands.Text" xml:space="preserve">
|
||||
<value>Export</value>
|
||||
</data>
|
||||
<data name="BtnLoadCustomCommands.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>497, 209</value>
|
||||
<value>497, 206</value>
|
||||
</data>
|
||||
<data name="BtnLoadCustomCommands.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>70, 23</value>
|
||||
<value>70, 30</value>
|
||||
</data>
|
||||
<data name="BtnLoadCustomCommands.Text" xml:space="preserve">
|
||||
<value>Load</value>
|
||||
@@ -155,24 +155,30 @@
|
||||
<value>Restore</value>
|
||||
</data>
|
||||
<data name="BtnRemoveCustomCommand.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>421, 209</value>
|
||||
<value>421, 206</value>
|
||||
</data>
|
||||
<data name="BtnRemoveCustomCommand.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>70, 23</value>
|
||||
<value>70, 30</value>
|
||||
</data>
|
||||
<data name="BtnRemoveCustomCommand.Text" xml:space="preserve">
|
||||
<value>× Delete</value>
|
||||
</data>
|
||||
<data name="BtnSaveCustomCommand.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>345, 209</value>
|
||||
<value>345, 206</value>
|
||||
</data>
|
||||
<data name="BtnSaveCustomCommand.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>70, 23</value>
|
||||
<value>70, 30</value>
|
||||
</data>
|
||||
<data name="BtnSaveCustomCommand.Text" xml:space="preserve">
|
||||
<value>√ Save</value>
|
||||
</data>
|
||||
<data name="TxtCustomName.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>298, 23</value>
|
||||
<value>217, 23</value>
|
||||
</data>
|
||||
<data name="BtnAddHotKey.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>264, 206</value>
|
||||
</data>
|
||||
<data name="BtnAddHotKey.Text" xml:space="preserve">
|
||||
<value>HotKey</value>
|
||||
</data>
|
||||
</root>
|
@@ -117,283 +117,310 @@
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||
<data name="BtnExportCustomCommands.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Bottom, Right</value>
|
||||
</data>
|
||||
<data name="BtnExportCustomCommands.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
||||
<value>NoControl</value>
|
||||
</data>
|
||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
<data name="BtnExportCustomCommands.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>590, 209</value>
|
||||
</data>
|
||||
<data name="BtnExportCustomCommands.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>50, 23</value>
|
||||
</data>
|
||||
<assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||
<data name="BtnExportCustomCommands.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>14</value>
|
||||
</data>
|
||||
<data name="BtnExportCustomCommands.Text" xml:space="preserve">
|
||||
<value>导出</value>
|
||||
</data>
|
||||
<data name=">>BtnExportCustomCommands.Name" xml:space="preserve">
|
||||
<value>BtnExportCustomCommands</value>
|
||||
</data>
|
||||
<data name=">>BtnExportCustomCommands.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>BtnExportCustomCommands.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>BtnExportCustomCommands.ZOrder" xml:space="preserve">
|
||||
<value>0</value>
|
||||
</data>
|
||||
<data name="BtnLoadCustomCommands.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Bottom, Right</value>
|
||||
</data>
|
||||
<data name="BtnLoadCustomCommands.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
||||
<value>NoControl</value>
|
||||
</data>
|
||||
<data name="BtnLoadCustomCommands.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>534, 209</value>
|
||||
</data>
|
||||
<data name="BtnLoadCustomCommands.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>50, 23</value>
|
||||
</data>
|
||||
<data name="BtnLoadCustomCommands.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>13</value>
|
||||
</data>
|
||||
<data name="BtnLoadCustomCommands.Text" xml:space="preserve">
|
||||
<value>载入</value>
|
||||
</data>
|
||||
<data name=">>BtnLoadCustomCommands.Name" xml:space="preserve">
|
||||
<value>BtnLoadCustomCommands</value>
|
||||
</data>
|
||||
<data name=">>BtnLoadCustomCommands.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>BtnLoadCustomCommands.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>BtnLoadCustomCommands.ZOrder" xml:space="preserve">
|
||||
<value>1</value>
|
||||
</data>
|
||||
<data name="LblCustomName.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Bottom, Left</value>
|
||||
</data>
|
||||
<data name="LblCustomName.AutoSize" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
</data>
|
||||
<data name="LblCustomName.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
||||
<value>NoControl</value>
|
||||
</data>
|
||||
<data name="LblCustomName.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>3, 212</value>
|
||||
</data>
|
||||
<data name="LblCustomName.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>32, 17</value>
|
||||
</data>
|
||||
<data name="LblCustomName.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>9</value>
|
||||
</data>
|
||||
<data name="LblCustomName.Text" xml:space="preserve">
|
||||
<value>标签</value>
|
||||
</data>
|
||||
<data name=">>LblCustomName.Name" xml:space="preserve">
|
||||
<value>LblCustomName</value>
|
||||
</data>
|
||||
<data name=">>LblCustomName.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>LblCustomName.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>LblCustomName.ZOrder" xml:space="preserve">
|
||||
<value>2</value>
|
||||
</data>
|
||||
<data name="GrpCustomCommands.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Top, Bottom, Left, Right</value>
|
||||
</data>
|
||||
<data name="LnkResetCustomCommands.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Top, Right</value>
|
||||
</data>
|
||||
<data name="LnkResetCustomCommands.AutoSize" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
</data>
|
||||
<data name="LnkResetCustomCommands.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
||||
<value>NoControl</value>
|
||||
</data>
|
||||
<data name="LnkResetCustomCommands.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>602, -1</value>
|
||||
</data>
|
||||
<data name="LnkResetCustomCommands.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>32, 17</value>
|
||||
</data>
|
||||
<data name="LnkResetCustomCommands.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>8</value>
|
||||
<data name="BtnAddHotKey.Text" xml:space="preserve">
|
||||
<value>快捷键</value>
|
||||
</data>
|
||||
<data name="LnkResetCustomCommands.Text" xml:space="preserve">
|
||||
<value>重置</value>
|
||||
</data>
|
||||
<data name=">>LnkResetCustomCommands.Name" xml:space="preserve">
|
||||
<value>LnkResetCustomCommands</value>
|
||||
</data>
|
||||
<data name=">>LnkResetCustomCommands.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.LinkLabel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>LnkResetCustomCommands.Parent" xml:space="preserve">
|
||||
<value>GrpCustomCommands</value>
|
||||
</data>
|
||||
<data name=">>LnkResetCustomCommands.ZOrder" xml:space="preserve">
|
||||
<value>0</value>
|
||||
</data>
|
||||
<data name="FLPCustomCommands.AutoScroll" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
</data>
|
||||
<data name="FLPCustomCommands.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
||||
<value>Fill</value>
|
||||
</data>
|
||||
<data name="FLPCustomCommands.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>3, 19</value>
|
||||
</data>
|
||||
<data name="FLPCustomCommands.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>634, 174</value>
|
||||
</data>
|
||||
<data name="FLPCustomCommands.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>0</value>
|
||||
</data>
|
||||
<data name=">>FLPCustomCommands.Name" xml:space="preserve">
|
||||
<value>FLPCustomCommands</value>
|
||||
</data>
|
||||
<data name=">>FLPCustomCommands.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.FlowLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>FLPCustomCommands.Parent" xml:space="preserve">
|
||||
<value>GrpCustomCommands</value>
|
||||
</data>
|
||||
<data name=">>FLPCustomCommands.ZOrder" xml:space="preserve">
|
||||
<value>1</value>
|
||||
</data>
|
||||
<data name="GrpCustomCommands.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>3, 7</value>
|
||||
</data>
|
||||
<data name="GrpCustomCommands.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>640, 196</value>
|
||||
</data>
|
||||
<data name="GrpCustomCommands.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>8</value>
|
||||
</data>
|
||||
<data name="GrpCustomCommands.Text" xml:space="preserve">
|
||||
<value>列表</value>
|
||||
</data>
|
||||
<data name=">>GrpCustomCommands.Name" xml:space="preserve">
|
||||
<value>GrpCustomCommands</value>
|
||||
</data>
|
||||
<data name=">>GrpCustomCommands.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>GrpCustomCommands.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>GrpCustomCommands.ZOrder" xml:space="preserve">
|
||||
<value>3</value>
|
||||
</data>
|
||||
<data name="BtnRemoveCustomCommand.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Bottom, Right</value>
|
||||
</data>
|
||||
<data name="BtnRemoveCustomCommand.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
||||
<value>NoControl</value>
|
||||
</data>
|
||||
<data name="BtnRemoveCustomCommand.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>468, 209</value>
|
||||
</data>
|
||||
<data name="BtnRemoveCustomCommand.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>60, 23</value>
|
||||
</data>
|
||||
<data name="BtnRemoveCustomCommand.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>12</value>
|
||||
</data>
|
||||
<data name="BtnRemoveCustomCommand.Text" xml:space="preserve">
|
||||
<value>× 删除</value>
|
||||
</data>
|
||||
<data name=">>BtnRemoveCustomCommand.Name" xml:space="preserve">
|
||||
<value>BtnRemoveCustomCommand</value>
|
||||
</data>
|
||||
<data name=">>BtnRemoveCustomCommand.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>BtnRemoveCustomCommand.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>BtnRemoveCustomCommand.ZOrder" xml:space="preserve">
|
||||
<value>4</value>
|
||||
</data>
|
||||
<data name="BtnSaveCustomCommand.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Bottom, Right</value>
|
||||
</data>
|
||||
<data name="BtnSaveCustomCommand.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
||||
<value>NoControl</value>
|
||||
</data>
|
||||
<data name="BtnSaveCustomCommand.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>402, 209</value>
|
||||
</data>
|
||||
<data name="BtnSaveCustomCommand.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>60, 23</value>
|
||||
</data>
|
||||
<data name="BtnSaveCustomCommand.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>11</value>
|
||||
</data>
|
||||
<data name="BtnSaveCustomCommand.Text" xml:space="preserve">
|
||||
<value>√ 保存</value>
|
||||
</data>
|
||||
<data name=">>BtnSaveCustomCommand.Name" xml:space="preserve">
|
||||
<value>BtnSaveCustomCommand</value>
|
||||
</data>
|
||||
<data name=">>BtnSaveCustomCommand.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>BtnSaveCustomCommand.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>BtnSaveCustomCommand.ZOrder" xml:space="preserve">
|
||||
<value>5</value>
|
||||
</data>
|
||||
<data name="TxtCustomName.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Bottom, Left, Right</value>
|
||||
</data>
|
||||
<data name="TxtCustomName.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>41, 209</value>
|
||||
</data>
|
||||
<data name="TxtCustomName.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>355, 23</value>
|
||||
</data>
|
||||
<data name="TxtCustomName.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>10</value>
|
||||
</data>
|
||||
<data name=">>TxtCustomName.Name" xml:space="preserve">
|
||||
<value>TxtCustomName</value>
|
||||
<data name=">>$this.Type" xml:space="preserve">
|
||||
<value>GrasscutterTools.Pages.BasePage, GrasscutterTools, Version=1.11.0.0, Culture=neutral, PublicKeyToken=de2b1c089621e923</value>
|
||||
</data>
|
||||
<data name=">>TxtCustomName.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
<data name="BtnSaveCustomCommand.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>405, 206</value>
|
||||
</data>
|
||||
<data name="BtnRemoveCustomCommand.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>471, 206</value>
|
||||
</data>
|
||||
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||
<data name="BtnLoadCustomCommands.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Bottom, Right</value>
|
||||
</data>
|
||||
<data name="LnkResetCustomCommands.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>32, 17</value>
|
||||
</data>
|
||||
<data name=">>BtnExportCustomCommands.Name" xml:space="preserve">
|
||||
<value>BtnExportCustomCommands</value>
|
||||
</data>
|
||||
<data name="BtnLoadCustomCommands.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>537, 206</value>
|
||||
</data>
|
||||
<data name="LnkResetCustomCommands.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
||||
<value>NoControl</value>
|
||||
</data>
|
||||
<data name="GrpCustomCommands.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>3, 3</value>
|
||||
</data>
|
||||
<data name="BtnRemoveCustomCommand.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>60, 30</value>
|
||||
</data>
|
||||
<data name="TxtCustomName.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>41, 210</value>
|
||||
</data>
|
||||
<data name=">>FLPCustomCommands.ZOrder" xml:space="preserve">
|
||||
<value>1</value>
|
||||
</data>
|
||||
<data name="LnkResetCustomCommands.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Top, Right</value>
|
||||
</data>
|
||||
<data name=">>BtnExportCustomCommands.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name="BtnExportCustomCommands.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
||||
<value>NoControl</value>
|
||||
</data>
|
||||
<data name=">>BtnLoadCustomCommands.Name" xml:space="preserve">
|
||||
<value>BtnLoadCustomCommands</value>
|
||||
</data>
|
||||
<data name="BtnRemoveCustomCommand.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
||||
<value>NoControl</value>
|
||||
</data>
|
||||
<data name="FLPCustomCommands.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
||||
<value>Fill</value>
|
||||
</data>
|
||||
<data name="LblCustomName.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Bottom, Left</value>
|
||||
</data>
|
||||
<data name=">>LnkResetCustomCommands.ZOrder" xml:space="preserve">
|
||||
<value>0</value>
|
||||
</data>
|
||||
<assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||
<data name="BtnAddHotKey.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>15</value>
|
||||
</data>
|
||||
<data name=">>BtnLoadCustomCommands.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>LblCustomName.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name="TxtCustomName.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Bottom, Left, Right</value>
|
||||
</data>
|
||||
<data name="BtnExportCustomCommands.Text" xml:space="preserve">
|
||||
<value>导出</value>
|
||||
</data>
|
||||
<data name=">>LnkResetCustomCommands.Name" xml:space="preserve">
|
||||
<value>LnkResetCustomCommands</value>
|
||||
</data>
|
||||
<data name="LblCustomName.AutoSize" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
</data>
|
||||
<data name="LnkResetCustomCommands.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>8</value>
|
||||
</data>
|
||||
<data name=">>BtnRemoveCustomCommand.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name="LblCustomName.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>32, 17</value>
|
||||
</data>
|
||||
<data name="BtnLoadCustomCommands.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>50, 30</value>
|
||||
</data>
|
||||
<data name=">>BtnLoadCustomCommands.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name="BtnLoadCustomCommands.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>13</value>
|
||||
</data>
|
||||
<data name="LblCustomName.Text" xml:space="preserve">
|
||||
<value>标签</value>
|
||||
</data>
|
||||
<data name=">>TxtCustomName.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>TxtCustomName.ZOrder" xml:space="preserve">
|
||||
<data name="BtnSaveCustomCommand.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>60, 30</value>
|
||||
</data>
|
||||
<data name=">>GrpCustomCommands.Name" xml:space="preserve">
|
||||
<value>GrpCustomCommands</value>
|
||||
</data>
|
||||
<data name=">>BtnAddHotKey.ZOrder" xml:space="preserve">
|
||||
<value>0</value>
|
||||
</data>
|
||||
<data name=">>BtnRemoveCustomCommand.Name" xml:space="preserve">
|
||||
<value>BtnRemoveCustomCommand</value>
|
||||
</data>
|
||||
<data name="BtnAddHotKey.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Bottom, Right</value>
|
||||
</data>
|
||||
<data name=">>GrpCustomCommands.ZOrder" xml:space="preserve">
|
||||
<value>4</value>
|
||||
</data>
|
||||
<data name="BtnExportCustomCommands.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>50, 30</value>
|
||||
</data>
|
||||
<data name=">>FLPCustomCommands.Name" xml:space="preserve">
|
||||
<value>FLPCustomCommands</value>
|
||||
</data>
|
||||
<data name="BtnExportCustomCommands.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>14</value>
|
||||
</data>
|
||||
<data name="BtnExportCustomCommands.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>593, 206</value>
|
||||
</data>
|
||||
<data name=">>BtnLoadCustomCommands.ZOrder" xml:space="preserve">
|
||||
<value>2</value>
|
||||
</data>
|
||||
<data name=">>GrpCustomCommands.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name="FLPCustomCommands.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>0</value>
|
||||
</data>
|
||||
<data name=">>BtnSaveCustomCommand.ZOrder" xml:space="preserve">
|
||||
<value>6</value>
|
||||
</data>
|
||||
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<data name="LblCustomName.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
||||
<value>NoControl</value>
|
||||
</data>
|
||||
<data name=">>BtnSaveCustomCommand.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name="FLPCustomCommands.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>3, 19</value>
|
||||
</data>
|
||||
<data name="TxtCustomName.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>277, 23</value>
|
||||
</data>
|
||||
<data name="LnkResetCustomCommands.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>602, -1</value>
|
||||
</data>
|
||||
<data name="GrpCustomCommands.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Top, Bottom, Left, Right</value>
|
||||
</data>
|
||||
<data name="BtnSaveCustomCommand.Text" xml:space="preserve">
|
||||
<value>√ 保存</value>
|
||||
</data>
|
||||
<data name=">>LnkResetCustomCommands.Parent" xml:space="preserve">
|
||||
<value>GrpCustomCommands</value>
|
||||
</data>
|
||||
<data name=">>FLPCustomCommands.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.FlowLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
|
||||
<value>7, 17</value>
|
||||
</data>
|
||||
<data name="BtnAddHotKey.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>75, 30</value>
|
||||
</data>
|
||||
<data name=">>LblCustomName.ZOrder" xml:space="preserve">
|
||||
<value>3</value>
|
||||
</data>
|
||||
<data name=">>TxtCustomName.ZOrder" xml:space="preserve">
|
||||
<value>7</value>
|
||||
</data>
|
||||
<data name=">>BtnRemoveCustomCommand.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>BtnSaveCustomCommand.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name="BtnAddHotKey.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>324, 206</value>
|
||||
</data>
|
||||
<data name=">>FLPCustomCommands.Parent" xml:space="preserve">
|
||||
<value>GrpCustomCommands</value>
|
||||
</data>
|
||||
<data name=">>LnkResetCustomCommands.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.LinkLabel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name="LnkResetCustomCommands.AutoSize" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
</data>
|
||||
<data name="BtnExportCustomCommands.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Bottom, Right</value>
|
||||
</data>
|
||||
<data name="FLPCustomCommands.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>634, 178</value>
|
||||
</data>
|
||||
<data name="GrpCustomCommands.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>640, 200</value>
|
||||
</data>
|
||||
<data name=">>$this.Name" xml:space="preserve">
|
||||
<value>PageCustomCommands</value>
|
||||
</data>
|
||||
<data name=">>$this.Type" xml:space="preserve">
|
||||
<value>GrasscutterTools.Pages.BasePage, GrasscutterTools, Version=1.7.4.0, Culture=neutral, PublicKeyToken=de2b1c089621e923</value>
|
||||
<data name="GrpCustomCommands.Text" xml:space="preserve">
|
||||
<value>列表</value>
|
||||
</data>
|
||||
<data name="BtnRemoveCustomCommand.Text" xml:space="preserve">
|
||||
<value>× 删除</value>
|
||||
</data>
|
||||
<data name=">>LblCustomName.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>BtnExportCustomCommands.ZOrder" xml:space="preserve">
|
||||
<value>1</value>
|
||||
</data>
|
||||
<data name=">>TxtCustomName.Name" xml:space="preserve">
|
||||
<value>TxtCustomName</value>
|
||||
</data>
|
||||
<data name="TxtCustomName.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>10</value>
|
||||
</data>
|
||||
<data name="FLPCustomCommands.AutoScroll" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
</data>
|
||||
<data name=">>GrpCustomCommands.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name="BtnSaveCustomCommand.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>11</value>
|
||||
</data>
|
||||
<data name="BtnSaveCustomCommand.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Bottom, Right</value>
|
||||
</data>
|
||||
<data name="BtnRemoveCustomCommand.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Bottom, Right</value>
|
||||
</data>
|
||||
<data name=">>BtnAddHotKey.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name="LblCustomName.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>3, 213</value>
|
||||
</data>
|
||||
<data name=">>BtnAddHotKey.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>BtnSaveCustomCommand.Name" xml:space="preserve">
|
||||
<value>BtnSaveCustomCommand</value>
|
||||
</data>
|
||||
<data name="BtnRemoveCustomCommand.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>12</value>
|
||||
</data>
|
||||
<data name="BtnLoadCustomCommands.Text" xml:space="preserve">
|
||||
<value>载入</value>
|
||||
</data>
|
||||
<data name="GrpCustomCommands.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>8</value>
|
||||
</data>
|
||||
<data name="BtnSaveCustomCommand.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
||||
<value>NoControl</value>
|
||||
</data>
|
||||
<data name="LblCustomName.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>9</value>
|
||||
</data>
|
||||
<data name="BtnLoadCustomCommands.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
||||
<value>NoControl</value>
|
||||
</data>
|
||||
<data name=">>LblCustomName.Name" xml:space="preserve">
|
||||
<value>LblCustomName</value>
|
||||
</data>
|
||||
<data name=">>BtnAddHotKey.Name" xml:space="preserve">
|
||||
<value>BtnAddHotKey</value>
|
||||
</data>
|
||||
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
</root>
|
@@ -119,19 +119,19 @@
|
||||
</resheader>
|
||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
<data name="BtnExportCustomCommands.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>545, 209</value>
|
||||
<value>548, 206</value>
|
||||
</data>
|
||||
<data name="BtnExportCustomCommands.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>95, 23</value>
|
||||
<value>95, 30</value>
|
||||
</data>
|
||||
<data name="BtnExportCustomCommands.Text" xml:space="preserve">
|
||||
<value>Экспорт</value>
|
||||
</data>
|
||||
<data name="BtnLoadCustomCommands.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>444, 209</value>
|
||||
<value>447, 206</value>
|
||||
</data>
|
||||
<data name="BtnLoadCustomCommands.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>95, 23</value>
|
||||
<value>95, 30</value>
|
||||
</data>
|
||||
<data name="BtnLoadCustomCommands.Text" xml:space="preserve">
|
||||
<value>Загрузить</value>
|
||||
@@ -155,24 +155,33 @@
|
||||
<value>Сбросить</value>
|
||||
</data>
|
||||
<data name="BtnRemoveCustomCommand.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>343, 209</value>
|
||||
<value>346, 206</value>
|
||||
</data>
|
||||
<data name="BtnRemoveCustomCommand.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>95, 23</value>
|
||||
<value>95, 30</value>
|
||||
</data>
|
||||
<data name="BtnRemoveCustomCommand.Text" xml:space="preserve">
|
||||
<value>x Удалить</value>
|
||||
</data>
|
||||
<data name="BtnSaveCustomCommand.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>242, 209</value>
|
||||
<value>245, 206</value>
|
||||
</data>
|
||||
<data name="BtnSaveCustomCommand.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>95, 23</value>
|
||||
<value>95, 30</value>
|
||||
</data>
|
||||
<data name="BtnSaveCustomCommand.Text" xml:space="preserve">
|
||||
<value>√ Сохранить</value>
|
||||
</data>
|
||||
<data name="TxtCustomName.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>195, 23</value>
|
||||
<value>120, 23</value>
|
||||
</data>
|
||||
<data name="BtnAddHotKey.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>167, 206</value>
|
||||
</data>
|
||||
<data name="BtnAddHotKey.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>72, 30</value>
|
||||
</data>
|
||||
<data name="BtnAddHotKey.Text" xml:space="preserve">
|
||||
<value>Горячая.</value>
|
||||
</data>
|
||||
</root>
|
@@ -129,4 +129,7 @@
|
||||
<data name="BtnRemoveCustomCommand.Text" xml:space="preserve">
|
||||
<value>× 刪除</value>
|
||||
</data>
|
||||
<data name="BtnAddHotKey.Text" xml:space="preserve">
|
||||
<value>快捷鍵</value>
|
||||
</data>
|
||||
</root>
|
@@ -172,6 +172,7 @@
|
||||
this.CmbMainAttribution.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||
this.CmbMainAttribution.FormattingEnabled = true;
|
||||
this.CmbMainAttribution.Name = "CmbMainAttribution";
|
||||
this.CmbMainAttribution.SelectedIndexChanged += new System.EventHandler(this.ArtifactInputChanged);
|
||||
//
|
||||
// LblMainAttribution
|
||||
//
|
||||
|
@@ -706,6 +706,6 @@
|
||||
<value>PageGiveArtifact</value>
|
||||
</data>
|
||||
<data name=">>$this.Type" xml:space="preserve">
|
||||
<value>GrasscutterTools.Pages.BasePage, GrasscutterTools, Version=1.7.4.0, Culture=neutral, PublicKeyToken=de2b1c089621e923</value>
|
||||
<value>GrasscutterTools.Pages.BasePage, GrasscutterTools, Version=1.9.0.0, Culture=neutral, PublicKeyToken=de2b1c089621e923</value>
|
||||
</data>
|
||||
</root>
|
@@ -200,6 +200,5 @@ namespace GrasscutterTools.Pages
|
||||
LnkNewVersion.Visible = false;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
149
Source/GrasscutterTools/Pages/PageHotKey.Designer.cs
generated
Normal file
@@ -0,0 +1,149 @@
|
||||
namespace GrasscutterTools.Pages
|
||||
{
|
||||
partial class PageHotKey
|
||||
{
|
||||
/// <summary>
|
||||
/// 必需的设计器变量。
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// 清理所有正在使用的资源。
|
||||
/// </summary>
|
||||
/// <param name="disposing">如果应释放托管资源,为 true;否则为 false。</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region 组件设计器生成的代码
|
||||
|
||||
/// <summary>
|
||||
/// 设计器支持所需的方法 - 不要修改
|
||||
/// 使用代码编辑器修改此方法的内容。
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(PageHotKey));
|
||||
this.LvHotKeyList = new System.Windows.Forms.ListView();
|
||||
this.ColTag = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
|
||||
this.ColHotKey = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
|
||||
this.ColCommand = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
|
||||
this.GrpHotKeyList = new System.Windows.Forms.GroupBox();
|
||||
this.BtnRemove = new System.Windows.Forms.Button();
|
||||
this.BtnAddOrUpdate = new System.Windows.Forms.Button();
|
||||
this.TxtHotKey = new System.Windows.Forms.TextBox();
|
||||
this.LblHotKeyLabel = new System.Windows.Forms.Label();
|
||||
this.TxtTag = new System.Windows.Forms.TextBox();
|
||||
this.LblTagLabel = new System.Windows.Forms.Label();
|
||||
this.GrpHotKeyList.SuspendLayout();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// LvHotKeyList
|
||||
//
|
||||
this.LvHotKeyList.CheckBoxes = true;
|
||||
this.LvHotKeyList.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] {
|
||||
this.ColTag,
|
||||
this.ColHotKey,
|
||||
this.ColCommand});
|
||||
resources.ApplyResources(this.LvHotKeyList, "LvHotKeyList");
|
||||
this.LvHotKeyList.HideSelection = false;
|
||||
this.LvHotKeyList.Name = "LvHotKeyList";
|
||||
this.LvHotKeyList.UseCompatibleStateImageBehavior = false;
|
||||
this.LvHotKeyList.View = System.Windows.Forms.View.Details;
|
||||
this.LvHotKeyList.ItemCheck += new System.Windows.Forms.ItemCheckEventHandler(this.LvHotKeyList_ItemCheck);
|
||||
this.LvHotKeyList.SelectedIndexChanged += new System.EventHandler(this.LvHotKeyList_SelectedIndexChanged);
|
||||
//
|
||||
// ColTag
|
||||
//
|
||||
resources.ApplyResources(this.ColTag, "ColTag");
|
||||
//
|
||||
// ColHotKey
|
||||
//
|
||||
resources.ApplyResources(this.ColHotKey, "ColHotKey");
|
||||
//
|
||||
// ColCommand
|
||||
//
|
||||
resources.ApplyResources(this.ColCommand, "ColCommand");
|
||||
//
|
||||
// GrpHotKeyList
|
||||
//
|
||||
resources.ApplyResources(this.GrpHotKeyList, "GrpHotKeyList");
|
||||
this.GrpHotKeyList.Controls.Add(this.LvHotKeyList);
|
||||
this.GrpHotKeyList.Name = "GrpHotKeyList";
|
||||
this.GrpHotKeyList.TabStop = false;
|
||||
//
|
||||
// BtnRemove
|
||||
//
|
||||
resources.ApplyResources(this.BtnRemove, "BtnRemove");
|
||||
this.BtnRemove.Name = "BtnRemove";
|
||||
this.BtnRemove.UseVisualStyleBackColor = true;
|
||||
this.BtnRemove.Click += new System.EventHandler(this.BtnRemove_Click);
|
||||
//
|
||||
// BtnAddOrUpdate
|
||||
//
|
||||
resources.ApplyResources(this.BtnAddOrUpdate, "BtnAddOrUpdate");
|
||||
this.BtnAddOrUpdate.Name = "BtnAddOrUpdate";
|
||||
this.BtnAddOrUpdate.UseVisualStyleBackColor = true;
|
||||
this.BtnAddOrUpdate.Click += new System.EventHandler(this.BtnAddOrUpdate_Click);
|
||||
//
|
||||
// TxtHotKey
|
||||
//
|
||||
resources.ApplyResources(this.TxtHotKey, "TxtHotKey");
|
||||
this.TxtHotKey.BackColor = System.Drawing.Color.White;
|
||||
this.TxtHotKey.Name = "TxtHotKey";
|
||||
this.TxtHotKey.ReadOnly = true;
|
||||
this.TxtHotKey.KeyDown += new System.Windows.Forms.KeyEventHandler(this.TxtHotKey_KeyDown);
|
||||
//
|
||||
// LblHotKeyLabel
|
||||
//
|
||||
resources.ApplyResources(this.LblHotKeyLabel, "LblHotKeyLabel");
|
||||
this.LblHotKeyLabel.Name = "LblHotKeyLabel";
|
||||
//
|
||||
// TxtTag
|
||||
//
|
||||
resources.ApplyResources(this.TxtTag, "TxtTag");
|
||||
this.TxtTag.Name = "TxtTag";
|
||||
//
|
||||
// LblTagLabel
|
||||
//
|
||||
resources.ApplyResources(this.LblTagLabel, "LblTagLabel");
|
||||
this.LblTagLabel.Name = "LblTagLabel";
|
||||
//
|
||||
// PageHotKey
|
||||
//
|
||||
resources.ApplyResources(this, "$this");
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.Controls.Add(this.BtnRemove);
|
||||
this.Controls.Add(this.BtnAddOrUpdate);
|
||||
this.Controls.Add(this.GrpHotKeyList);
|
||||
this.Controls.Add(this.TxtHotKey);
|
||||
this.Controls.Add(this.TxtTag);
|
||||
this.Controls.Add(this.LblHotKeyLabel);
|
||||
this.Controls.Add(this.LblTagLabel);
|
||||
this.Name = "PageHotKey";
|
||||
this.GrpHotKeyList.ResumeLayout(false);
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.ListView LvHotKeyList;
|
||||
private System.Windows.Forms.ColumnHeader ColHotKey;
|
||||
private System.Windows.Forms.ColumnHeader ColTag;
|
||||
private System.Windows.Forms.ColumnHeader ColCommand;
|
||||
private System.Windows.Forms.GroupBox GrpHotKeyList;
|
||||
private System.Windows.Forms.Button BtnRemove;
|
||||
private System.Windows.Forms.Button BtnAddOrUpdate;
|
||||
private System.Windows.Forms.TextBox TxtHotKey;
|
||||
private System.Windows.Forms.Label LblHotKeyLabel;
|
||||
private System.Windows.Forms.TextBox TxtTag;
|
||||
private System.Windows.Forms.Label LblTagLabel;
|
||||
}
|
||||
}
|
264
Source/GrasscutterTools/Pages/PageHotKey.cs
Normal file
@@ -0,0 +1,264 @@
|
||||
/**
|
||||
* Grasscutter Tools
|
||||
* Copyright (C) 2023 jie65535
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as published
|
||||
* by the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*
|
||||
**/
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Windows.Forms;
|
||||
|
||||
using GrasscutterTools.Properties;
|
||||
using GrasscutterTools.Utils;
|
||||
|
||||
using Newtonsoft.Json;
|
||||
|
||||
namespace GrasscutterTools.Pages
|
||||
{
|
||||
internal partial class PageHotKey : BasePage
|
||||
{
|
||||
private const string TAG = nameof(PageHotKey);
|
||||
|
||||
public PageHotKey()
|
||||
{
|
||||
InitializeComponent();
|
||||
LvHotKeyList.FullRowSelect = true;
|
||||
if (DesignMode) return;
|
||||
|
||||
InitHotKeys();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 热键保存位置
|
||||
/// </summary>
|
||||
private readonly string HotKeysFilePath = Common.GetAppDataFile("HotKeys.json");
|
||||
|
||||
/// <summary>
|
||||
/// 热键配置是否存在更改
|
||||
/// </summary>
|
||||
private bool HotKeysChanged;
|
||||
|
||||
/// <summary>
|
||||
/// 初始化快捷键
|
||||
/// </summary>
|
||||
private void InitHotKeys()
|
||||
{
|
||||
if (!File.Exists(HotKeysFilePath))
|
||||
return;
|
||||
try
|
||||
{
|
||||
Logger.I(TAG, "Loading HotKey json file from: " + HotKeysFilePath);
|
||||
Common.KeyGo.Items = JsonConvert.DeserializeObject<List<HotKeyItem>>(File.ReadAllText(HotKeysFilePath));
|
||||
LvHotKeyList.Items.AddRange(Common.KeyGo.Items.Select(HotKeyItemToViewItem).ToArray());
|
||||
Logger.I(TAG, "Start Register All HotKeys");
|
||||
Common.KeyGo.RegAllKey();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Logger.W(TAG, "Parsing HotKeys.json failed.", ex);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 关闭时触发,取消注册并保存更改
|
||||
/// </summary>
|
||||
public override void OnClosed()
|
||||
{
|
||||
Logger.I(TAG, "Cancel all HotKeys");
|
||||
Common.KeyGo.UnRegAllKey();
|
||||
|
||||
if (!HotKeysChanged) return;
|
||||
Logger.I(TAG, "Save all HotKeys to: " + HotKeysFilePath);
|
||||
File.WriteAllText(HotKeysFilePath, JsonConvert.SerializeObject(Common.KeyGo.Items));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 将实体转为视图对象
|
||||
/// </summary>
|
||||
private static ListViewItem HotKeyItemToViewItem(HotKeyItem item) => new ListViewItem(new[]
|
||||
{
|
||||
item.Tag,
|
||||
item.HotKey,
|
||||
item.Commands
|
||||
})
|
||||
{ Checked = item.IsEnabled };
|
||||
|
||||
/// <summary>
|
||||
/// 列表选中项改变时触发
|
||||
/// </summary>
|
||||
private void LvHotKeyList_SelectedIndexChanged(object sender, EventArgs e)
|
||||
{
|
||||
if (LvHotKeyList.SelectedIndices.Count == 0) return;
|
||||
var i = LvHotKeyList.SelectedIndices[0];
|
||||
var hotKeyItem = Common.KeyGo.Items[i];
|
||||
TxtTag.Text = hotKeyItem.Tag;
|
||||
TxtHotKey.Text = hotKeyItem.HotKey;
|
||||
SetCommand(hotKeyItem.Commands);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 点击添加或更新按钮时触发
|
||||
/// </summary>
|
||||
private void BtnAddOrUpdate_Click(object sender, EventArgs e)
|
||||
{
|
||||
var tag = TxtTag.Text.Trim();
|
||||
var commands = GetCommand();
|
||||
var hotKey = TxtHotKey.Text;
|
||||
if (string.IsNullOrEmpty(tag) || string.IsNullOrEmpty(commands) || string.IsNullOrEmpty(hotKey))
|
||||
{
|
||||
MessageBox.Show(Resources.EmptyInputTip, Resources.Error, MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
return;
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
var i = Common.KeyGo.Items.FindIndex(it => it.Tag == tag);
|
||||
if (i == -1)
|
||||
{
|
||||
var item = new HotKeyItem
|
||||
{
|
||||
Tag = tag,
|
||||
Commands = commands,
|
||||
HotKey = hotKey
|
||||
};
|
||||
Logger.I(TAG, $"New HotKey item [{hotKey}]");
|
||||
Common.KeyGo.AddHotKey(item);
|
||||
LvHotKeyList.Items.Add(HotKeyItemToViewItem(item));
|
||||
}
|
||||
else
|
||||
{
|
||||
var item = Common.KeyGo.Items[i];
|
||||
item.Commands = commands;
|
||||
if (item.HotKey != hotKey)
|
||||
{
|
||||
Logger.I(TAG, $"Update HotKey from [{item.HotKey}] to [{hotKey}]");
|
||||
item.HotKey = hotKey;
|
||||
Common.KeyGo.ChangeHotKey(item);
|
||||
}
|
||||
|
||||
LvHotKeyList.Items[i] = HotKeyItemToViewItem(item);
|
||||
}
|
||||
|
||||
HotKeysChanged = true;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Logger.E(TAG, "AddOrUpdate HotKey failed", ex);
|
||||
MessageBox.Show(ex.Message, Resources.Error, MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 点击移除按钮时触发
|
||||
/// </summary>
|
||||
private void BtnRemove_Click(object sender, EventArgs e)
|
||||
{
|
||||
try
|
||||
{
|
||||
var tag = TxtTag.Text.Trim();
|
||||
var i = Common.KeyGo.Items.FindIndex(it => it.Tag == tag);
|
||||
if (i == -1) return;
|
||||
var item = Common.KeyGo.Items[i];
|
||||
Logger.I(TAG, $"Remove HotKey [{item.HotKey}] \"{item.Tag}\"");
|
||||
Common.KeyGo.DelHotKey(item);
|
||||
LvHotKeyList.Items.RemoveAt(i);
|
||||
HotKeysChanged = true;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Logger.E(TAG, "Remove HotKey failed", ex);
|
||||
MessageBox.Show(ex.Message, Resources.Error, MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 快捷键选项卡按键按下时触发
|
||||
/// </summary>
|
||||
private void TxtHotKey_KeyDown(object sender, KeyEventArgs e)
|
||||
{
|
||||
// ESC键清空当前快捷键
|
||||
if (e.KeyCode == Keys.Escape)
|
||||
{
|
||||
TxtHotKey.Text = "";
|
||||
return;
|
||||
}
|
||||
|
||||
// 可选的功能键
|
||||
//// 必须带功能键
|
||||
//if (e.Modifiers == Keys.None)
|
||||
// return;
|
||||
|
||||
// 必须是组合键
|
||||
if (e.KeyCode == Keys.ControlKey || e.KeyCode == Keys.ShiftKey || e.KeyCode == Keys.Menu)
|
||||
return;
|
||||
|
||||
var text = e.KeyCode.ToString();
|
||||
if (e.Control)
|
||||
text = "Ctrl + " + text;
|
||||
if (e.Shift)
|
||||
text = "Shift + " + text;
|
||||
if (e.Alt)
|
||||
text = "Alt + " + text;
|
||||
|
||||
TxtHotKey.Text = text;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 列表中的复选框改变时触发
|
||||
/// </summary>
|
||||
private void LvHotKeyList_ItemCheck(object sender, ItemCheckEventArgs e)
|
||||
{
|
||||
var isEnable = e.NewValue == CheckState.Checked;
|
||||
try
|
||||
{
|
||||
var item = Common.KeyGo.Items[e.Index];
|
||||
if (isEnable)
|
||||
{
|
||||
// 尝试注册快捷键
|
||||
Logger.I(TAG, $"Register hotKey [{item.HotKey}] as \"{item.Tag}\"");
|
||||
Common.KeyGo.RegKey(item);
|
||||
}
|
||||
else
|
||||
{
|
||||
// 尝试注销快捷键
|
||||
Logger.I(TAG, $"Cancel hotKey [{item.HotKey}]");
|
||||
Common.KeyGo.UnRegKey(item);
|
||||
}
|
||||
// 更新使能状态
|
||||
item.IsEnabled = isEnable;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
// 如果操作失败,还原选项,禁止设置
|
||||
e.NewValue = e.CurrentValue;
|
||||
Logger.E(TAG, (isEnable ? "Enable" : "Disable") + " HotKey failed", ex);
|
||||
MessageBox.Show(ex.Message, Resources.Error, MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 添加热键快捷设置方法
|
||||
/// </summary>
|
||||
/// <param name="tag">标签名</param>
|
||||
public void AddNewHotKey(string tag)
|
||||
{
|
||||
TxtHotKey.Tag = "";
|
||||
TxtTag.Text = tag;
|
||||
}
|
||||
}
|
||||
}
|
151
Source/GrasscutterTools/Pages/PageHotKey.en-US.resx
Normal file
@@ -0,0 +1,151 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<data name="ColTag.Text" xml:space="preserve">
|
||||
<value>Tag</value>
|
||||
</data>
|
||||
<data name="ColHotKey.Text" xml:space="preserve">
|
||||
<value>HotKey</value>
|
||||
</data>
|
||||
<data name="ColCommand.Text" xml:space="preserve">
|
||||
<value>Commands</value>
|
||||
</data>
|
||||
<data name="GrpHotKeyList.Text" xml:space="preserve">
|
||||
<value>HotKeys</value>
|
||||
</data>
|
||||
<data name="BtnRemove.Text" xml:space="preserve">
|
||||
<value>- Remove</value>
|
||||
</data>
|
||||
<data name="BtnAddOrUpdate.Text" xml:space="preserve">
|
||||
<value>√ AddOrUpdate</value>
|
||||
</data>
|
||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
<data name="LblHotKeyLabel.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>50, 17</value>
|
||||
</data>
|
||||
<data name="LblHotKeyLabel.Text" xml:space="preserve">
|
||||
<value>HotKey</value>
|
||||
</data>
|
||||
<data name="LblTagLabel.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>30, 17</value>
|
||||
</data>
|
||||
<data name="LblTagLabel.Text" xml:space="preserve">
|
||||
<value>Tag</value>
|
||||
</data>
|
||||
</root>
|
387
Source/GrasscutterTools/Pages/PageHotKey.resx
Normal file
@@ -0,0 +1,387 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<data name="ColTag.Text" xml:space="preserve">
|
||||
<value>标签</value>
|
||||
</data>
|
||||
<assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||
<data name="ColTag.Width" type="System.Int32, mscorlib">
|
||||
<value>150</value>
|
||||
</data>
|
||||
<data name="ColHotKey.Text" xml:space="preserve">
|
||||
<value>快捷键</value>
|
||||
</data>
|
||||
<data name="ColHotKey.Width" type="System.Int32, mscorlib">
|
||||
<value>100</value>
|
||||
</data>
|
||||
<data name="ColCommand.Text" xml:space="preserve">
|
||||
<value>命令</value>
|
||||
</data>
|
||||
<data name="ColCommand.Width" type="System.Int32, mscorlib">
|
||||
<value>350</value>
|
||||
</data>
|
||||
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||
<data name="LvHotKeyList.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
||||
<value>Fill</value>
|
||||
</data>
|
||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
<data name="LvHotKeyList.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>3, 19</value>
|
||||
</data>
|
||||
<data name="LvHotKeyList.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>634, 178</value>
|
||||
</data>
|
||||
<data name="LvHotKeyList.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>0</value>
|
||||
</data>
|
||||
<data name=">>LvHotKeyList.Name" xml:space="preserve">
|
||||
<value>LvHotKeyList</value>
|
||||
</data>
|
||||
<data name=">>LvHotKeyList.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.ListView, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>LvHotKeyList.Parent" xml:space="preserve">
|
||||
<value>GrpHotKeyList</value>
|
||||
</data>
|
||||
<data name=">>LvHotKeyList.ZOrder" xml:space="preserve">
|
||||
<value>0</value>
|
||||
</data>
|
||||
<data name="GrpHotKeyList.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Top, Bottom, Left, Right</value>
|
||||
</data>
|
||||
<data name="GrpHotKeyList.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>3, 3</value>
|
||||
</data>
|
||||
<data name="GrpHotKeyList.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>640, 200</value>
|
||||
</data>
|
||||
<data name="GrpHotKeyList.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>1</value>
|
||||
</data>
|
||||
<data name="GrpHotKeyList.Text" xml:space="preserve">
|
||||
<value>快捷执行列表</value>
|
||||
</data>
|
||||
<data name=">>GrpHotKeyList.Name" xml:space="preserve">
|
||||
<value>GrpHotKeyList</value>
|
||||
</data>
|
||||
<data name=">>GrpHotKeyList.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>GrpHotKeyList.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>GrpHotKeyList.ZOrder" xml:space="preserve">
|
||||
<value>2</value>
|
||||
</data>
|
||||
<data name="BtnRemove.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Bottom, Right</value>
|
||||
</data>
|
||||
<data name="BtnRemove.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>543, 206</value>
|
||||
</data>
|
||||
<data name="BtnRemove.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>100, 30</value>
|
||||
</data>
|
||||
<data name="BtnRemove.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>5</value>
|
||||
</data>
|
||||
<data name="BtnRemove.Text" xml:space="preserve">
|
||||
<value>- 删除</value>
|
||||
</data>
|
||||
<data name=">>BtnRemove.Name" xml:space="preserve">
|
||||
<value>BtnRemove</value>
|
||||
</data>
|
||||
<data name=">>BtnRemove.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>BtnRemove.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>BtnRemove.ZOrder" xml:space="preserve">
|
||||
<value>0</value>
|
||||
</data>
|
||||
<data name="BtnAddOrUpdate.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Bottom, Right</value>
|
||||
</data>
|
||||
<data name="BtnAddOrUpdate.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>387, 206</value>
|
||||
</data>
|
||||
<data name="BtnAddOrUpdate.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>150, 30</value>
|
||||
</data>
|
||||
<data name="BtnAddOrUpdate.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>4</value>
|
||||
</data>
|
||||
<data name="BtnAddOrUpdate.Text" xml:space="preserve">
|
||||
<value>√ 添加或更新</value>
|
||||
</data>
|
||||
<data name=">>BtnAddOrUpdate.Name" xml:space="preserve">
|
||||
<value>BtnAddOrUpdate</value>
|
||||
</data>
|
||||
<data name=">>BtnAddOrUpdate.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>BtnAddOrUpdate.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>BtnAddOrUpdate.ZOrder" xml:space="preserve">
|
||||
<value>1</value>
|
||||
</data>
|
||||
<data name="TxtHotKey.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Bottom, Left, Right</value>
|
||||
</data>
|
||||
<data name="TxtHotKey.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>262, 210</value>
|
||||
</data>
|
||||
<data name="TxtHotKey.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>119, 23</value>
|
||||
</data>
|
||||
<data name="TxtHotKey.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>3</value>
|
||||
</data>
|
||||
<data name="TxtHotKey.TextAlign" type="System.Windows.Forms.HorizontalAlignment, System.Windows.Forms">
|
||||
<value>Center</value>
|
||||
</data>
|
||||
<data name=">>TxtHotKey.Name" xml:space="preserve">
|
||||
<value>TxtHotKey</value>
|
||||
</data>
|
||||
<data name=">>TxtHotKey.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>TxtHotKey.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>TxtHotKey.ZOrder" xml:space="preserve">
|
||||
<value>3</value>
|
||||
</data>
|
||||
<data name="LblHotKeyLabel.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Bottom, Left, Right</value>
|
||||
</data>
|
||||
<data name="LblHotKeyLabel.AutoSize" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
</data>
|
||||
<data name="LblHotKeyLabel.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>212, 213</value>
|
||||
</data>
|
||||
<data name="LblHotKeyLabel.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>44, 17</value>
|
||||
</data>
|
||||
<data name="LblHotKeyLabel.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>2</value>
|
||||
</data>
|
||||
<data name="LblHotKeyLabel.Text" xml:space="preserve">
|
||||
<value>快捷键</value>
|
||||
</data>
|
||||
<data name=">>LblHotKeyLabel.Name" xml:space="preserve">
|
||||
<value>LblHotKeyLabel</value>
|
||||
</data>
|
||||
<data name=">>LblHotKeyLabel.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>LblHotKeyLabel.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>LblHotKeyLabel.ZOrder" xml:space="preserve">
|
||||
<value>5</value>
|
||||
</data>
|
||||
<data name="TxtTag.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Bottom, Left, Right</value>
|
||||
</data>
|
||||
<data name="TxtTag.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>41, 210</value>
|
||||
</data>
|
||||
<data name="TxtTag.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>165, 23</value>
|
||||
</data>
|
||||
<data name="TxtTag.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>1</value>
|
||||
</data>
|
||||
<data name=">>TxtTag.Name" xml:space="preserve">
|
||||
<value>TxtTag</value>
|
||||
</data>
|
||||
<data name=">>TxtTag.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>TxtTag.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>TxtTag.ZOrder" xml:space="preserve">
|
||||
<value>4</value>
|
||||
</data>
|
||||
<data name="LblTagLabel.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Bottom, Left</value>
|
||||
</data>
|
||||
<data name="LblTagLabel.AutoSize" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
</data>
|
||||
<data name="LblTagLabel.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>3, 213</value>
|
||||
</data>
|
||||
<data name="LblTagLabel.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>32, 17</value>
|
||||
</data>
|
||||
<data name="LblTagLabel.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>0</value>
|
||||
</data>
|
||||
<data name="LblTagLabel.Text" xml:space="preserve">
|
||||
<value>标签</value>
|
||||
</data>
|
||||
<data name=">>LblTagLabel.Name" xml:space="preserve">
|
||||
<value>LblTagLabel</value>
|
||||
</data>
|
||||
<data name=">>LblTagLabel.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>LblTagLabel.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>LblTagLabel.ZOrder" xml:space="preserve">
|
||||
<value>6</value>
|
||||
</data>
|
||||
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
|
||||
<value>7, 17</value>
|
||||
</data>
|
||||
<data name=">>ColTag.Name" xml:space="preserve">
|
||||
<value>ColTag</value>
|
||||
</data>
|
||||
<data name=">>ColTag.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.ColumnHeader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>ColHotKey.Name" xml:space="preserve">
|
||||
<value>ColHotKey</value>
|
||||
</data>
|
||||
<data name=">>ColHotKey.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.ColumnHeader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>ColCommand.Name" xml:space="preserve">
|
||||
<value>ColCommand</value>
|
||||
</data>
|
||||
<data name=">>ColCommand.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.ColumnHeader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>$this.Name" xml:space="preserve">
|
||||
<value>PageHotKey</value>
|
||||
</data>
|
||||
<data name=">>$this.Type" xml:space="preserve">
|
||||
<value>GrasscutterTools.Pages.BasePage, GrasscutterTools, Version=1.11.0.0, Culture=neutral, PublicKeyToken=de2b1c089621e923</value>
|
||||
</data>
|
||||
</root>
|
151
Source/GrasscutterTools/Pages/PageHotKey.ru-RU.resx
Normal file
@@ -0,0 +1,151 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<data name="ColTag.Text" xml:space="preserve">
|
||||
<value>Tag</value>
|
||||
</data>
|
||||
<data name="ColHotKey.Text" xml:space="preserve">
|
||||
<value>HotKey</value>
|
||||
</data>
|
||||
<data name="ColCommand.Text" xml:space="preserve">
|
||||
<value>Commands</value>
|
||||
</data>
|
||||
<data name="GrpHotKeyList.Text" xml:space="preserve">
|
||||
<value>HotKeys</value>
|
||||
</data>
|
||||
<data name="BtnRemove.Text" xml:space="preserve">
|
||||
<value>- Remove</value>
|
||||
</data>
|
||||
<data name="BtnAddOrUpdate.Text" xml:space="preserve">
|
||||
<value>√ AddOrUpdate</value>
|
||||
</data>
|
||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
<data name="LblHotKeyLabel.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>50, 17</value>
|
||||
</data>
|
||||
<data name="LblHotKeyLabel.Text" xml:space="preserve">
|
||||
<value>HotKey</value>
|
||||
</data>
|
||||
<data name="LblTagLabel.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>30, 17</value>
|
||||
</data>
|
||||
<data name="LblTagLabel.Text" xml:space="preserve">
|
||||
<value>Tag</value>
|
||||
</data>
|
||||
</root>
|
138
Source/GrasscutterTools/Pages/PageHotKey.zh-TW.resx
Normal file
@@ -0,0 +1,138 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<data name="ColTag.Text" xml:space="preserve">
|
||||
<value>標籤</value>
|
||||
</data>
|
||||
<data name="ColHotKey.Text" xml:space="preserve">
|
||||
<value>快捷鍵</value>
|
||||
</data>
|
||||
<data name="GrpHotKeyList.Text" xml:space="preserve">
|
||||
<value>快捷執行列表</value>
|
||||
</data>
|
||||
<data name="BtnRemove.Text" xml:space="preserve">
|
||||
<value>- 刪除</value>
|
||||
</data>
|
||||
<data name="LblHotKeyLabel.Text" xml:space="preserve">
|
||||
<value>快捷鍵</value>
|
||||
</data>
|
||||
<data name="LblTagLabel.Text" xml:space="preserve">
|
||||
<value>標籤</value>
|
||||
</data>
|
||||
</root>
|
@@ -57,7 +57,7 @@
|
||||
this.TxtToken = new System.Windows.Forms.TextBox();
|
||||
this.LblToken = new System.Windows.Forms.Label();
|
||||
this.LblConsoleTip = new System.Windows.Forms.Label();
|
||||
this.TxtHost = new System.Windows.Forms.TextBox();
|
||||
this.TxtHost = new System.Windows.Forms.ComboBox();
|
||||
this.BtnQueryServerStatus = new System.Windows.Forms.Button();
|
||||
this.LblHost = new System.Windows.Forms.Label();
|
||||
this.GrpServerStatus.SuspendLayout();
|
||||
@@ -287,6 +287,7 @@
|
||||
resources.ApplyResources(this.TxtHost, "TxtHost");
|
||||
this.TxtHost.Name = "TxtHost";
|
||||
this.TxtHost.KeyDown += new System.Windows.Forms.KeyEventHandler(this.TxtHost_KeyDown);
|
||||
this.TxtHost.SelectedIndexChanged += new System.EventHandler(this.TxtHost_SelectedIndexChanged);
|
||||
//
|
||||
// BtnQueryServerStatus
|
||||
//
|
||||
@@ -361,7 +362,7 @@
|
||||
private System.Windows.Forms.TextBox TxtToken;
|
||||
private System.Windows.Forms.Label LblToken;
|
||||
private System.Windows.Forms.Label LblConsoleTip;
|
||||
private System.Windows.Forms.TextBox TxtHost;
|
||||
private System.Windows.Forms.ComboBox TxtHost;
|
||||
private System.Windows.Forms.Button BtnQueryServerStatus;
|
||||
private System.Windows.Forms.Label LblHost;
|
||||
}
|
||||
|
@@ -38,11 +38,16 @@ namespace GrasscutterTools.Pages
|
||||
{
|
||||
internal partial class PageOpenCommand : BasePage
|
||||
{
|
||||
private const string TAG = nameof(PageOpenCommand);
|
||||
|
||||
public PageOpenCommand()
|
||||
{
|
||||
InitializeComponent();
|
||||
if (DesignMode) return;
|
||||
|
||||
InitServerRecords();
|
||||
TxtHost.Items.AddRange(ServerRecords.Select(it => it.Host).ToArray());
|
||||
|
||||
NUDRemotePlayerId.Value = Settings.Default.RemoteUid;
|
||||
TxtHost.Text = Settings.Default.Host;
|
||||
if (!string.IsNullOrEmpty(Settings.Default.Host) && !string.IsNullOrEmpty(Settings.Default.TokenCache))
|
||||
@@ -53,6 +58,60 @@ namespace GrasscutterTools.Pages
|
||||
}
|
||||
}
|
||||
|
||||
#region - 服务器记录 -
|
||||
|
||||
private class ServerRecord
|
||||
{
|
||||
public string Tag { get; set; }
|
||||
public string Host { get; set; }
|
||||
public int Uid { get; set; }
|
||||
public string Token { get; set; }
|
||||
}
|
||||
|
||||
private readonly string ServerRecordsFilePath = Common.GetAppDataFile("Servers.json");
|
||||
private List<ServerRecord> ServerRecords = new List<ServerRecord>();
|
||||
|
||||
//{
|
||||
// new ServerRecord
|
||||
// {
|
||||
// Host = "http://127.0.0.1:443",
|
||||
// Tag = "Localhost",
|
||||
// Token = "123456",
|
||||
// Uid = 10001,
|
||||
// }
|
||||
//};
|
||||
private void InitServerRecords()
|
||||
{
|
||||
if (!File.Exists(ServerRecordsFilePath))
|
||||
return;
|
||||
|
||||
try
|
||||
{
|
||||
Logger.I(TAG, "Loading ServerRecords json file from: " + ServerRecordsFilePath);
|
||||
ServerRecords = JsonConvert.DeserializeObject<List<ServerRecord>>(File.ReadAllText(ServerRecordsFilePath));
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Logger.W(TAG, "Parsing Servers.json failed.", ex);
|
||||
}
|
||||
}
|
||||
|
||||
private void SaveServerRecords()
|
||||
{
|
||||
try
|
||||
{
|
||||
if (ServerRecords.Count == 0)
|
||||
return;
|
||||
File.WriteAllText(ServerRecordsFilePath, JsonConvert.SerializeObject(ServerRecords));
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Logger.W(TAG, "Save all server records failed.", ex);
|
||||
}
|
||||
}
|
||||
|
||||
#endregion - 服务器记录 -
|
||||
|
||||
/// <summary>
|
||||
/// 在运行按钮上显示提示,要求主窗口设置
|
||||
/// </summary>
|
||||
@@ -109,14 +168,9 @@ namespace GrasscutterTools.Pages
|
||||
/// <param name="host">主机地址</param>
|
||||
private async Task UpdateServerStatus(string host)
|
||||
{
|
||||
// "http://127.0.0.1/" -> "http://127.0.0.1"
|
||||
host = host.TrimEnd('/');
|
||||
var status = await DispatchServerAPI.QueryServerStatus(host);
|
||||
LblServerVersion.Text = status.Version;
|
||||
if (status.MaxPlayer >= 0)
|
||||
LblPlayerCount.Text = $"{status.PlayerCount}/{status.MaxPlayer}";
|
||||
else
|
||||
LblPlayerCount.Text = status.PlayerCount.ToString();
|
||||
LblPlayerCount.Text = status.MaxPlayer > 0 ? $"{status.PlayerCount}/{status.MaxPlayer}" : status.PlayerCount.ToString();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -127,6 +181,20 @@ namespace GrasscutterTools.Pages
|
||||
if (e.KeyCode == Keys.Enter) BtnQueryServerStatus_Click(BtnQueryServerStatus, e);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 地址栏选中项改变时触发
|
||||
/// </summary>
|
||||
private void TxtHost_SelectedIndexChanged(object sender, EventArgs e)
|
||||
{
|
||||
if (TxtHost.SelectedIndex >= 0 && TxtHost.SelectedIndex < ServerRecords.Count)
|
||||
{
|
||||
// 还原记录
|
||||
var record = ServerRecords[TxtHost.SelectedIndex];
|
||||
TxtToken.Text = record.Token;
|
||||
NUDRemotePlayerId.Value = record.Uid;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 点击查询服务器状态按钮时触发
|
||||
/// </summary>
|
||||
@@ -137,9 +205,11 @@ namespace GrasscutterTools.Pages
|
||||
btn.Cursor = Cursors.WaitCursor;
|
||||
try
|
||||
{
|
||||
// "http://127.0.0.1/" -> "http://127.0.0.1"
|
||||
var host = TxtHost.Text.TrimEnd('/');
|
||||
try
|
||||
{
|
||||
await UpdateServerStatus(TxtHost.Text);
|
||||
await UpdateServerStatus(host);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
@@ -147,8 +217,21 @@ namespace GrasscutterTools.Pages
|
||||
return;
|
||||
}
|
||||
|
||||
Common.OC = new OpenCommandAPI(TxtHost.Text);
|
||||
if (await Common.OC.Ping())
|
||||
var isOcEnabled = false;
|
||||
try
|
||||
{
|
||||
Common.OC = new OpenCommandAPI(host);
|
||||
isOcEnabled = await Common.OC.Ping();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
#if DEBUG
|
||||
MessageBox.Show(ex.ToString(), Resources.Error, MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
#else
|
||||
MessageBox.Show(ex.Message, Resources.Error, MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
#endif
|
||||
}
|
||||
if (isOcEnabled)
|
||||
{
|
||||
LblOpenCommandSupport.Text = "√";
|
||||
LblOpenCommandSupport.ForeColor = Color.Green;
|
||||
@@ -237,6 +320,25 @@ namespace GrasscutterTools.Pages
|
||||
GrpRemoteCommand.Enabled = false;
|
||||
ShowTipInRunButton?.Invoke(Resources.ConnectedTip);
|
||||
ButtonOpenGOODImport.Enabled = true;
|
||||
|
||||
var r = ServerRecords.Find(it => it.Host == TxtHost.Text);
|
||||
if (r != null)
|
||||
{
|
||||
r.Token = Common.OC.Token;
|
||||
r.Uid = (int)NUDRemotePlayerId.Value;
|
||||
}
|
||||
else
|
||||
{
|
||||
ServerRecords.Add(new ServerRecord
|
||||
{
|
||||
Host = Common.OC.Host,
|
||||
Tag = "TODO",
|
||||
Token = Common.OC.Token,
|
||||
Uid = (int)NUDRemotePlayerId.Value
|
||||
});
|
||||
TxtHost.Items.Add(Common.OC.Host);
|
||||
}
|
||||
SaveServerRecords();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
|
12
Source/GrasscutterTools/Pages/PageScene.Designer.cs
generated
@@ -45,6 +45,7 @@
|
||||
this.LblSceneDescription = new System.Windows.Forms.Label();
|
||||
this.ListScenes = new System.Windows.Forms.ListBox();
|
||||
this.LblTp = new System.Windows.Forms.Label();
|
||||
this.RbListCutScene = new System.Windows.Forms.RadioButton();
|
||||
((System.ComponentModel.ISupportInitialize)(this.NUDTpZ)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.NUDTpY)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.NUDTpX)).BeginInit();
|
||||
@@ -167,9 +168,9 @@
|
||||
//
|
||||
// CmbClimateType
|
||||
//
|
||||
resources.ApplyResources(this.CmbClimateType, "CmbClimateType");
|
||||
this.CmbClimateType.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||
this.CmbClimateType.FormattingEnabled = true;
|
||||
resources.ApplyResources(this.CmbClimateType, "CmbClimateType");
|
||||
this.CmbClimateType.Name = "CmbClimateType";
|
||||
this.CmbClimateType.SelectedIndexChanged += new System.EventHandler(this.CmbClimateType_SelectedIndexChanged);
|
||||
//
|
||||
@@ -195,10 +196,18 @@
|
||||
resources.ApplyResources(this.LblTp, "LblTp");
|
||||
this.LblTp.Name = "LblTp";
|
||||
//
|
||||
// RbListCutScene
|
||||
//
|
||||
resources.ApplyResources(this.RbListCutScene, "RbListCutScene");
|
||||
this.RbListCutScene.Name = "RbListCutScene";
|
||||
this.RbListCutScene.UseVisualStyleBackColor = true;
|
||||
this.RbListCutScene.CheckedChanged += new System.EventHandler(this.RbListCutScene_CheckedChanged);
|
||||
//
|
||||
// PageScene
|
||||
//
|
||||
resources.ApplyResources(this, "$this");
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.Controls.Add(this.RbListCutScene);
|
||||
this.Controls.Add(this.RbListDungeons);
|
||||
this.Controls.Add(this.RbListScene);
|
||||
this.Controls.Add(this.TxtSceneFilter);
|
||||
@@ -242,5 +251,6 @@
|
||||
private System.Windows.Forms.Label LblSceneDescription;
|
||||
private System.Windows.Forms.ListBox ListScenes;
|
||||
private System.Windows.Forms.Label LblTp;
|
||||
private System.Windows.Forms.RadioButton RbListCutScene;
|
||||
}
|
||||
}
|
||||
|
@@ -75,6 +75,15 @@ namespace GrasscutterTools.Pages
|
||||
Scenes = GameData.Dungeons.Lines;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 选中过场时触发
|
||||
/// </summary>
|
||||
private void RbListCutScene_CheckedChanged(object sender, EventArgs e)
|
||||
{
|
||||
if (RbListCutScene.Checked)
|
||||
Scenes = GameData.CutScenes.Lines;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 场景列表过滤器输入项改变时触发
|
||||
/// </summary>
|
||||
@@ -113,6 +122,10 @@ namespace GrasscutterTools.Pages
|
||||
{
|
||||
SetCommand("/dungeon", id.ToString());
|
||||
}
|
||||
else if (RbListCutScene.Checked)
|
||||
{
|
||||
SetCommand("/cutscene", id.ToString());
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
@@ -173,4 +173,13 @@ Tip: You can quickly teleport through the 'fishing hook' pin on the map in-game.
|
||||
In the command, you can use ~ to indicate the current position, and ~N to indicate the relative current N
|
||||
</value>
|
||||
</data>
|
||||
<data name="RbListCutScene.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>252, 59</value>
|
||||
</data>
|
||||
<data name="RbListCutScene.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>78, 21</value>
|
||||
</data>
|
||||
<data name="RbListCutScene.Text" xml:space="preserve">
|
||||
<value>Cutscene</value>
|
||||
</data>
|
||||
</root>
|
@@ -118,454 +118,472 @@
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||
<data name="RbListDungeons.AutoSize" type="System.Boolean, mscorlib">
|
||||
<data name="LblTpX.AutoSize" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
</data>
|
||||
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||
<data name="RbListDungeons.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
||||
<value>NoControl</value>
|
||||
</data>
|
||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
<data name="RbListDungeons.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>287, 30</value>
|
||||
</data>
|
||||
<data name="RbListDungeons.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>50, 21</value>
|
||||
</data>
|
||||
<data name="RbListDungeons.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>2</value>
|
||||
</data>
|
||||
<data name="RbListDungeons.Text" xml:space="preserve">
|
||||
<value>秘境</value>
|
||||
</data>
|
||||
<data name=">>RbListDungeons.Name" xml:space="preserve">
|
||||
<value>RbListDungeons</value>
|
||||
</data>
|
||||
<data name=">>RbListDungeons.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.RadioButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>RbListDungeons.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>RbListDungeons.ZOrder" xml:space="preserve">
|
||||
<value>0</value>
|
||||
</data>
|
||||
<data name="RbListScene.AutoSize" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
</data>
|
||||
<data name="RbListScene.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
||||
<value>NoControl</value>
|
||||
</data>
|
||||
<data name="RbListScene.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>287, 3</value>
|
||||
</data>
|
||||
<data name="RbListScene.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>50, 21</value>
|
||||
</data>
|
||||
<data name="RbListScene.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>1</value>
|
||||
</data>
|
||||
<data name="RbListScene.Text" xml:space="preserve">
|
||||
<value>场景</value>
|
||||
</data>
|
||||
<data name=">>RbListScene.Name" xml:space="preserve">
|
||||
<value>RbListScene</value>
|
||||
</data>
|
||||
<data name=">>RbListScene.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.RadioButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>RbListScene.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>RbListScene.ZOrder" xml:space="preserve">
|
||||
<value>1</value>
|
||||
</data>
|
||||
<data name="TxtSceneFilter.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Top, Left, Right</value>
|
||||
</data>
|
||||
<data name="TxtSceneFilter.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>343, 2</value>
|
||||
</data>
|
||||
<data name="TxtSceneFilter.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>300, 23</value>
|
||||
</data>
|
||||
<data name="TxtSceneFilter.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>14</value>
|
||||
</data>
|
||||
<data name=">>TxtSceneFilter.Name" xml:space="preserve">
|
||||
<value>TxtSceneFilter</value>
|
||||
</data>
|
||||
<data name=">>TxtSceneFilter.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>TxtSceneFilter.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>TxtSceneFilter.ZOrder" xml:space="preserve">
|
||||
<value>2</value>
|
||||
<data name="BtnTeleport.Text" xml:space="preserve">
|
||||
<value>传送</value>
|
||||
</data>
|
||||
<data name="ChkIncludeSceneId.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Bottom, Left</value>
|
||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
<data name="BtnTeleport.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>75, 23</value>
|
||||
</data>
|
||||
<data name="ChkIncludeSceneId.AutoSize" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
<data name=">>TxtSceneFilter.Name" xml:space="preserve">
|
||||
<value>TxtSceneFilter</value>
|
||||
</data>
|
||||
<data name="ChkIncludeSceneId.Enabled" type="System.Boolean, mscorlib">
|
||||
<value>False</value>
|
||||
</data>
|
||||
<data name="ChkIncludeSceneId.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
||||
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||
<data name="LblTpX.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
||||
<value>NoControl</value>
|
||||
</data>
|
||||
<data name="ChkIncludeSceneId.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>87, 187</value>
|
||||
</data>
|
||||
<data name="ChkIncludeSceneId.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>76, 21</value>
|
||||
</data>
|
||||
<data name="ChkIncludeSceneId.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>13</value>
|
||||
</data>
|
||||
<data name="ChkIncludeSceneId.Text" xml:space="preserve">
|
||||
<value>含场景ID</value>
|
||||
</data>
|
||||
<data name=">>ChkIncludeSceneId.Name" xml:space="preserve">
|
||||
<value>ChkIncludeSceneId</value>
|
||||
</data>
|
||||
<data name=">>ChkIncludeSceneId.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>ChkIncludeSceneId.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>ChkIncludeSceneId.ZOrder" xml:space="preserve">
|
||||
<value>3</value>
|
||||
</data>
|
||||
<data name="LblTpZ.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Bottom, Left</value>
|
||||
</data>
|
||||
<data name="LblTpZ.AutoSize" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
</data>
|
||||
<data name="LblTpZ.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
||||
<value>NoControl</value>
|
||||
</data>
|
||||
<data name="LblTpZ.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>215, 158</value>
|
||||
</data>
|
||||
<data name="LblTpZ.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>14, 17</value>
|
||||
</data>
|
||||
<data name="LblTpZ.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>10</value>
|
||||
</data>
|
||||
<data name="LblTpZ.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>14, 17</value>
|
||||
</data>
|
||||
<data name=">>RbListCutScene.ZOrder" xml:space="preserve">
|
||||
<value>0</value>
|
||||
</data>
|
||||
<data name=">>LblTpY.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name="NUDTpY.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>80, 23</value>
|
||||
</data>
|
||||
<data name="RbListScene.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>287, 3</value>
|
||||
</data>
|
||||
<data name="NUDTpZ.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>235, 156</value>
|
||||
</data>
|
||||
<data name="ListScenes.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>343, 28</value>
|
||||
</data>
|
||||
<data name=">>CmbClimateType.ZOrder" xml:space="preserve">
|
||||
<value>12</value>
|
||||
</data>
|
||||
<data name=">>LblSceneDescription.Name" xml:space="preserve">
|
||||
<value>LblSceneDescription</value>
|
||||
</data>
|
||||
<data name=">>BtnTeleport.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name="LblTp.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
||||
<value>NoControl</value>
|
||||
</data>
|
||||
<data name=">>NUDTpZ.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>LblSceneDescription.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name="NUDTpX.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>23, 156</value>
|
||||
</data>
|
||||
<data name="LblSceneDescription.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>56, 17</value>
|
||||
</data>
|
||||
<data name=">>ChkIncludeSceneId.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>CmbClimateType.Name" xml:space="preserve">
|
||||
<value>CmbClimateType</value>
|
||||
</data>
|
||||
<data name=">>ChkIncludeSceneId.ZOrder" xml:space="preserve">
|
||||
<value>4</value>
|
||||
</data>
|
||||
<data name=">>NUDTpY.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name="LblSceneDescription.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
||||
<value>NoControl</value>
|
||||
</data>
|
||||
<data name="LblTpY.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>14, 17</value>
|
||||
</data>
|
||||
<data name="LblTpX.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>14, 17</value>
|
||||
</data>
|
||||
<data name=">>RbListScene.ZOrder" xml:space="preserve">
|
||||
<value>2</value>
|
||||
</data>
|
||||
<data name="NUDTpY.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>129, 156</value>
|
||||
</data>
|
||||
<data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
|
||||
<value>7, 17</value>
|
||||
</data>
|
||||
<data name=">>LblTpX.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name="LblTpX.Text" xml:space="preserve">
|
||||
<value>x</value>
|
||||
</data>
|
||||
<data name="RbListDungeons.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>2</value>
|
||||
</data>
|
||||
<data name="CmbClimateType.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>65, 29</value>
|
||||
</data>
|
||||
<data name="LblTpZ.Text" xml:space="preserve">
|
||||
<value>z</value>
|
||||
</data>
|
||||
<data name="ChkIncludeSceneId.Enabled" type="System.Boolean, mscorlib">
|
||||
<value>False</value>
|
||||
</data>
|
||||
<data name="LblClimateType.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>3, 32</value>
|
||||
</data>
|
||||
<data name="LblTpX.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>6</value>
|
||||
</data>
|
||||
<data name=">>ListScenes.Name" xml:space="preserve">
|
||||
<value>ListScenes</value>
|
||||
</data>
|
||||
<data name=">>LblTpZ.Name" xml:space="preserve">
|
||||
<value>LblTpZ</value>
|
||||
</data>
|
||||
<data name="ChkIncludeSceneId.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
||||
<value>NoControl</value>
|
||||
</data>
|
||||
<data name=">>NUDTpX.ZOrder" xml:space="preserve">
|
||||
<value>11</value>
|
||||
</data>
|
||||
<data name="RbListScene.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>1</value>
|
||||
</data>
|
||||
<data name="ChkIncludeSceneId.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>13</value>
|
||||
</data>
|
||||
<data name=">>LblTpZ.ZOrder" xml:space="preserve">
|
||||
<value>5</value>
|
||||
</data>
|
||||
<data name=">>LblTpZ.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>LblTpZ.Parent" xml:space="preserve">
|
||||
<data name=">>$this.Name" xml:space="preserve">
|
||||
<value>PageScene</value>
|
||||
</data>
|
||||
<data name=">>NUDTpY.ZOrder" xml:space="preserve">
|
||||
<value>10</value>
|
||||
</data>
|
||||
<data name=">>LblTp.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>LblTpY.Name" xml:space="preserve">
|
||||
<value>LblTpY</value>
|
||||
</data>
|
||||
<data name="NUDTpZ.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Bottom, Left</value>
|
||||
</data>
|
||||
<data name=">>NUDTpX.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>LblTpZ.ZOrder" xml:space="preserve">
|
||||
<value>4</value>
|
||||
<data name="ChkIncludeSceneId.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Bottom, Left</value>
|
||||
</data>
|
||||
<data name="ListScenes.ItemHeight" type="System.Int32, mscorlib">
|
||||
<value>17</value>
|
||||
</data>
|
||||
<data name=">>RbListCutScene.Name" xml:space="preserve">
|
||||
<value>RbListCutScene</value>
|
||||
</data>
|
||||
<data name=">>NUDTpZ.ZOrder" xml:space="preserve">
|
||||
<value>9</value>
|
||||
</data>
|
||||
<data name="LblTpY.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Bottom, Left</value>
|
||||
</data>
|
||||
<data name="LblTpY.AutoSize" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
<data name=">>RbListScene.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>RbListScene.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.RadioButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name="ListScenes.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>15</value>
|
||||
</data>
|
||||
<data name="NUDTpZ.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>80, 23</value>
|
||||
</data>
|
||||
<data name=">>NUDTpX.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name="BtnTeleport.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
||||
<value>NoControl</value>
|
||||
</data>
|
||||
<data name="RbListCutScene.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>287, 57</value>
|
||||
</data>
|
||||
<data name="RbListCutScene.Text" xml:space="preserve">
|
||||
<value>过场</value>
|
||||
</data>
|
||||
<data name="LblTpY.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
||||
<value>NoControl</value>
|
||||
</data>
|
||||
<data name=">>BtnTeleport.ZOrder" xml:space="preserve">
|
||||
<value>7</value>
|
||||
</data>
|
||||
<data name=">>NUDTpZ.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name="RbListDungeons.Text" xml:space="preserve">
|
||||
<value>秘境</value>
|
||||
</data>
|
||||
<data name="RbListCutScene.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>50, 21</value>
|
||||
</data>
|
||||
<data name="RbListDungeons.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
||||
<value>NoControl</value>
|
||||
</data>
|
||||
<data name="LblTpY.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>109, 158</value>
|
||||
</data>
|
||||
<data name="LblTpY.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>14, 17</value>
|
||||
<data name="LblTp.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>296, 51</value>
|
||||
</data>
|
||||
<data name="LblTpY.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>8</value>
|
||||
</data>
|
||||
<data name="LblTpY.Text" xml:space="preserve">
|
||||
<value>y</value>
|
||||
</data>
|
||||
<data name=">>LblTpY.Name" xml:space="preserve">
|
||||
<value>LblTpY</value>
|
||||
</data>
|
||||
<data name=">>LblTpY.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>LblTpY.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>LblTpY.ZOrder" xml:space="preserve">
|
||||
<value>5</value>
|
||||
</data>
|
||||
<data name="BtnTeleport.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Bottom, Left</value>
|
||||
</data>
|
||||
<data name="BtnTeleport.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
||||
<value>NoControl</value>
|
||||
</data>
|
||||
<data name="BtnTeleport.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>6, 185</value>
|
||||
</data>
|
||||
<data name="BtnTeleport.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>75, 23</value>
|
||||
</data>
|
||||
<data name="BtnTeleport.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>12</value>
|
||||
</data>
|
||||
<data name="BtnTeleport.Text" xml:space="preserve">
|
||||
<value>传送</value>
|
||||
</data>
|
||||
<data name=">>BtnTeleport.Name" xml:space="preserve">
|
||||
<value>BtnTeleport</value>
|
||||
</data>
|
||||
<data name=">>BtnTeleport.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>BtnTeleport.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>BtnTeleport.ZOrder" xml:space="preserve">
|
||||
<value>6</value>
|
||||
</data>
|
||||
<data name="LblTpX.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Bottom, Left</value>
|
||||
</data>
|
||||
<data name="LblTpX.AutoSize" type="System.Boolean, mscorlib">
|
||||
<data name="RbListCutScene.AutoSize" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
</data>
|
||||
<data name="LblTpX.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
||||
<value>NoControl</value>
|
||||
<data name="LblTpZ.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>215, 158</value>
|
||||
</data>
|
||||
<data name="LblTpX.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>3, 158</value>
|
||||
</data>
|
||||
<data name="LblTpX.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>14, 17</value>
|
||||
</data>
|
||||
<data name="LblTpX.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>6</value>
|
||||
</data>
|
||||
<data name="LblTpX.Text" xml:space="preserve">
|
||||
<value>x</value>
|
||||
</data>
|
||||
<data name=">>LblTpX.Name" xml:space="preserve">
|
||||
<value>LblTpX</value>
|
||||
</data>
|
||||
<data name=">>LblTpX.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>LblTpX.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>LblTpX.ZOrder" xml:space="preserve">
|
||||
<value>7</value>
|
||||
</data>
|
||||
<data name="NUDTpZ.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Bottom, Left</value>
|
||||
</data>
|
||||
<data name="NUDTpZ.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>235, 156</value>
|
||||
</data>
|
||||
<data name="NUDTpZ.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>80, 23</value>
|
||||
</data>
|
||||
<data name="NUDTpZ.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>11</value>
|
||||
</data>
|
||||
<data name=">>NUDTpZ.Name" xml:space="preserve">
|
||||
<value>NUDTpZ</value>
|
||||
</data>
|
||||
<data name=">>NUDTpZ.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>NUDTpZ.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>NUDTpZ.ZOrder" xml:space="preserve">
|
||||
<value>8</value>
|
||||
</data>
|
||||
<data name="NUDTpY.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Bottom, Left</value>
|
||||
</data>
|
||||
<data name="NUDTpY.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>129, 156</value>
|
||||
</data>
|
||||
<data name="NUDTpY.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>80, 23</value>
|
||||
</data>
|
||||
<data name="NUDTpY.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>9</value>
|
||||
</data>
|
||||
<data name=">>NUDTpY.Name" xml:space="preserve">
|
||||
<value>NUDTpY</value>
|
||||
</data>
|
||||
<data name=">>NUDTpY.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>NUDTpY.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>NUDTpY.ZOrder" xml:space="preserve">
|
||||
<value>9</value>
|
||||
</data>
|
||||
<data name="NUDTpX.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Bottom, Left</value>
|
||||
</data>
|
||||
<data name="NUDTpX.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>23, 156</value>
|
||||
</data>
|
||||
<data name="NUDTpX.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>80, 23</value>
|
||||
</data>
|
||||
<data name="NUDTpX.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>7</value>
|
||||
<data name=">>RbListCutScene.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.RadioButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>NUDTpX.Name" xml:space="preserve">
|
||||
<value>NUDTpX</value>
|
||||
</data>
|
||||
<data name=">>NUDTpX.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>NUDTpX.Parent" xml:space="preserve">
|
||||
<data name=">>LblTpZ.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>NUDTpX.ZOrder" xml:space="preserve">
|
||||
<value>10</value>
|
||||
</data>
|
||||
<data name="CmbClimateType.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>65, 29</value>
|
||||
</data>
|
||||
<data name="CmbClimateType.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>121, 25</value>
|
||||
</data>
|
||||
<data name="CmbClimateType.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>4</value>
|
||||
</data>
|
||||
<data name=">>CmbClimateType.Name" xml:space="preserve">
|
||||
<value>CmbClimateType</value>
|
||||
</data>
|
||||
<data name=">>CmbClimateType.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>CmbClimateType.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>CmbClimateType.ZOrder" xml:space="preserve">
|
||||
<value>11</value>
|
||||
</data>
|
||||
<data name="LblClimateType.AutoSize" type="System.Boolean, mscorlib">
|
||||
<data name="RbListDungeons.AutoSize" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
</data>
|
||||
<data name="LblClimateType.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
||||
<value>NoControl</value>
|
||||
</data>
|
||||
<data name="LblClimateType.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>3, 32</value>
|
||||
</data>
|
||||
<data name="LblClimateType.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>56, 17</value>
|
||||
</data>
|
||||
<data name="LblClimateType.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>3</value>
|
||||
</data>
|
||||
<data name="LblClimateType.Text" xml:space="preserve">
|
||||
<value>设置天气</value>
|
||||
</data>
|
||||
<data name=">>LblClimateType.Name" xml:space="preserve">
|
||||
<value>LblClimateType</value>
|
||||
</data>
|
||||
<data name=">>LblClimateType.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>LblClimateType.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>LblClimateType.ZOrder" xml:space="preserve">
|
||||
<value>12</value>
|
||||
</data>
|
||||
<data name="LblSceneDescription.AutoSize" type="System.Boolean, mscorlib">
|
||||
<data name="LblTpY.AutoSize" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
</data>
|
||||
<data name="LblSceneDescription.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
||||
<value>NoControl</value>
|
||||
<data name="NUDTpZ.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>11</value>
|
||||
</data>
|
||||
<data name="LblSceneDescription.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>3, 3</value>
|
||||
</data>
|
||||
<data name="LblSceneDescription.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>56, 17</value>
|
||||
</data>
|
||||
<data name="LblSceneDescription.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>0</value>
|
||||
</data>
|
||||
<data name="LblSceneDescription.Text" xml:space="preserve">
|
||||
<value>场景控制</value>
|
||||
</data>
|
||||
<data name=">>LblSceneDescription.Name" xml:space="preserve">
|
||||
<value>LblSceneDescription</value>
|
||||
</data>
|
||||
<data name=">>LblSceneDescription.Type" xml:space="preserve">
|
||||
<data name=">>LblTpY.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>LblSceneDescription.Parent" xml:space="preserve">
|
||||
<data name="CmbClimateType.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>121, 25</value>
|
||||
</data>
|
||||
<data name="LblTpX.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>3, 158</value>
|
||||
</data>
|
||||
<data name="LblClimateType.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>3</value>
|
||||
</data>
|
||||
<data name="ChkIncludeSceneId.Text" xml:space="preserve">
|
||||
<value>含场景ID</value>
|
||||
</data>
|
||||
<data name=">>CmbClimateType.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>LblSceneDescription.ZOrder" xml:space="preserve">
|
||||
<value>13</value>
|
||||
<data name="LblTpZ.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
||||
<value>NoControl</value>
|
||||
</data>
|
||||
<data name="ListScenes.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Top, Bottom, Left, Right</value>
|
||||
<data name=">>RbListDungeons.Name" xml:space="preserve">
|
||||
<value>RbListDungeons</value>
|
||||
</data>
|
||||
<data name="ListScenes.ItemHeight" type="System.Int32, mscorlib">
|
||||
<value>17</value>
|
||||
</data>
|
||||
<data name="ListScenes.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>343, 28</value>
|
||||
</data>
|
||||
<data name="ListScenes.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>300, 208</value>
|
||||
</data>
|
||||
<data name="ListScenes.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>15</value>
|
||||
</data>
|
||||
<data name=">>ListScenes.Name" xml:space="preserve">
|
||||
<value>ListScenes</value>
|
||||
</data>
|
||||
<data name=">>ListScenes.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.ListBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>ListScenes.Parent" xml:space="preserve">
|
||||
<data name=">>ChkIncludeSceneId.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>ListScenes.ZOrder" xml:space="preserve">
|
||||
<value>14</value>
|
||||
<data name="RbListDungeons.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>287, 30</value>
|
||||
</data>
|
||||
<data name=">>LblTpY.ZOrder" xml:space="preserve">
|
||||
<value>6</value>
|
||||
</data>
|
||||
<data name=">>$this.Type" xml:space="preserve">
|
||||
<value>GrasscutterTools.Pages.BasePage, GrasscutterTools, Version=1.10.0.0, Culture=neutral, PublicKeyToken=de2b1c089621e923</value>
|
||||
</data>
|
||||
<data name="LblTp.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Bottom, Left</value>
|
||||
</data>
|
||||
<data name="LblClimateType.AutoSize" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
</data>
|
||||
<data name="RbListScene.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
||||
<value>NoControl</value>
|
||||
</data>
|
||||
<data name=">>ListScenes.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.ListBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>BtnTeleport.Name" xml:space="preserve">
|
||||
<value>BtnTeleport</value>
|
||||
</data>
|
||||
<data name="NUDTpY.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Bottom, Left</value>
|
||||
</data>
|
||||
<data name="RbListCutScene.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>3</value>
|
||||
</data>
|
||||
<data name="BtnTeleport.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Bottom, Left</value>
|
||||
</data>
|
||||
<data name="ListScenes.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>300, 208</value>
|
||||
</data>
|
||||
<data name=">>LblTp.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name="BtnTeleport.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>12</value>
|
||||
</data>
|
||||
<data name="CmbClimateType.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>4</value>
|
||||
</data>
|
||||
<data name="ChkIncludeSceneId.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>87, 187</value>
|
||||
</data>
|
||||
<data name="LblTpY.Text" xml:space="preserve">
|
||||
<value>y</value>
|
||||
</data>
|
||||
<data name="LblSceneDescription.AutoSize" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
</data>
|
||||
<data name=">>LblSceneDescription.ZOrder" xml:space="preserve">
|
||||
<value>14</value>
|
||||
</data>
|
||||
<data name="RbListScene.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>50, 21</value>
|
||||
</data>
|
||||
<data name="LblTp.AutoSize" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
</data>
|
||||
<data name="LblTp.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
||||
<data name="LblTpZ.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Bottom, Left</value>
|
||||
</data>
|
||||
<data name="LblClimateType.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>56, 17</value>
|
||||
</data>
|
||||
<data name="RbListCutScene.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
||||
<value>NoControl</value>
|
||||
</data>
|
||||
<data name=">>RbListScene.Name" xml:space="preserve">
|
||||
<value>RbListScene</value>
|
||||
</data>
|
||||
<data name="LblTpY.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>8</value>
|
||||
</data>
|
||||
<data name=">>RbListDungeons.ZOrder" xml:space="preserve">
|
||||
<value>1</value>
|
||||
</data>
|
||||
<data name="LblSceneDescription.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>0</value>
|
||||
</data>
|
||||
<data name=">>LblTpX.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name="TxtSceneFilter.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>343, 2</value>
|
||||
</data>
|
||||
<data name="ChkIncludeSceneId.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>76, 21</value>
|
||||
</data>
|
||||
<data name="TxtSceneFilter.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>300, 23</value>
|
||||
</data>
|
||||
<data name="LblTpZ.AutoSize" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
</data>
|
||||
<data name=">>ChkIncludeSceneId.Name" xml:space="preserve">
|
||||
<value>ChkIncludeSceneId</value>
|
||||
</data>
|
||||
<data name=">>NUDTpY.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name="TxtSceneFilter.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>14</value>
|
||||
</data>
|
||||
<data name=">>LblClimateType.ZOrder" xml:space="preserve">
|
||||
<value>13</value>
|
||||
</data>
|
||||
<data name=">>CmbClimateType.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>RbListCutScene.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>TxtSceneFilter.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name="LblSceneDescription.Text" xml:space="preserve">
|
||||
<value>场景控制</value>
|
||||
</data>
|
||||
<data name=">>LblTpX.ZOrder" xml:space="preserve">
|
||||
<value>8</value>
|
||||
</data>
|
||||
<data name="NUDTpX.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>80, 23</value>
|
||||
</data>
|
||||
<data name=">>RbListDungeons.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.RadioButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>LblTp.ZOrder" xml:space="preserve">
|
||||
<value>16</value>
|
||||
</data>
|
||||
<data name=">>NUDTpY.Name" xml:space="preserve">
|
||||
<value>NUDTpY</value>
|
||||
</data>
|
||||
<data name="LblTp.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>3, 102</value>
|
||||
</data>
|
||||
<data name="LblTp.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>296, 51</value>
|
||||
<data name="LblClimateType.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
||||
<value>NoControl</value>
|
||||
</data>
|
||||
<data name="LblTp.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>5</value>
|
||||
<data name="ChkIncludeSceneId.AutoSize" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
</data>
|
||||
<data name="RbListScene.AutoSize" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
</data>
|
||||
<data name="LblTpX.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Bottom, Left</value>
|
||||
</data>
|
||||
<data name="NUDTpX.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Bottom, Left</value>
|
||||
</data>
|
||||
<data name="ListScenes.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Top, Bottom, Left, Right</value>
|
||||
</data>
|
||||
<data name="RbListScene.Text" xml:space="preserve">
|
||||
<value>场景</value>
|
||||
</data>
|
||||
<data name="NUDTpX.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>7</value>
|
||||
</data>
|
||||
<data name="BtnTeleport.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>6, 185</value>
|
||||
</data>
|
||||
<data name=">>LblTp.Name" xml:space="preserve">
|
||||
<value>LblTp</value>
|
||||
</data>
|
||||
<data name=">>TxtSceneFilter.ZOrder" xml:space="preserve">
|
||||
<value>3</value>
|
||||
</data>
|
||||
<data name=">>LblClimateType.Name" xml:space="preserve">
|
||||
<value>LblClimateType</value>
|
||||
</data>
|
||||
<data name=">>ListScenes.ZOrder" xml:space="preserve">
|
||||
<value>15</value>
|
||||
</data>
|
||||
<data name="TxtSceneFilter.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Top, Left, Right</value>
|
||||
</data>
|
||||
<data name="LblTp.Text" xml:space="preserve">
|
||||
<value>坐标传送
|
||||
@@ -573,28 +591,40 @@
|
||||
命令中可以用~表示当前位置,~100表示相对当前100
|
||||
</value>
|
||||
</data>
|
||||
<data name=">>LblTp.Name" xml:space="preserve">
|
||||
<value>LblTp</value>
|
||||
<data name=">>LblTpX.Name" xml:space="preserve">
|
||||
<value>LblTpX</value>
|
||||
</data>
|
||||
<data name=">>LblTp.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>LblTp.Parent" xml:space="preserve">
|
||||
<data name=">>RbListDungeons.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>LblTp.ZOrder" xml:space="preserve">
|
||||
<value>15</value>
|
||||
<data name=">>NUDTpZ.Name" xml:space="preserve">
|
||||
<value>NUDTpZ</value>
|
||||
</data>
|
||||
<data name=">>ListScenes.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>LblSceneDescription.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name="LblSceneDescription.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>3, 3</value>
|
||||
</data>
|
||||
<data name=">>BtnTeleport.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name="RbListDungeons.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>50, 21</value>
|
||||
</data>
|
||||
<data name=">>LblClimateType.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name="NUDTpY.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>9</value>
|
||||
</data>
|
||||
<data name="LblTp.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>5</value>
|
||||
</data>
|
||||
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
|
||||
<value>7, 17</value>
|
||||
</data>
|
||||
<data name=">>$this.Name" xml:space="preserve">
|
||||
<value>PageScene</value>
|
||||
</data>
|
||||
<data name=">>$this.Type" xml:space="preserve">
|
||||
<value>GrasscutterTools.Pages.BasePage, GrasscutterTools, Version=1.7.4.0, Culture=neutral, PublicKeyToken=de2b1c089621e923</value>
|
||||
</data>
|
||||
</root>
|
@@ -197,4 +197,13 @@
|
||||
В команде вы можете использовать ~, чтобы указать текущую позицию, и ~N, чтобы указать смещение на N относительно текущей позиции
|
||||
</value>
|
||||
</data>
|
||||
<data name="RbListCutScene.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>237, 56</value>
|
||||
</data>
|
||||
<data name="RbListCutScene.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>82, 21</value>
|
||||
</data>
|
||||
<data name="RbListCutScene.Text" xml:space="preserve">
|
||||
<value>Катсцена</value>
|
||||
</data>
|
||||
</root>
|
@@ -145,4 +145,7 @@
|
||||
命令中可以用~表示當前位置,~N 表示相對當前N
|
||||
</value>
|
||||
</data>
|
||||
<data name="RbListCutScene.Text" xml:space="preserve">
|
||||
<value>過場</value>
|
||||
</data>
|
||||
</root>
|
@@ -1,7 +1,7 @@
|
||||
using System;
|
||||
using System.Globalization;
|
||||
using System.Linq;
|
||||
using System.Windows.Forms;
|
||||
|
||||
using GrasscutterTools.Game.Props;
|
||||
using GrasscutterTools.Properties;
|
||||
|
||||
@@ -94,4 +94,4 @@ namespace GrasscutterTools.Pages
|
||||
LblPlayerPropertyDesc.Text = selectedItem.Description;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@@ -316,7 +316,7 @@
|
||||
//
|
||||
resources.ApplyResources(this.NUDEntityLevel, "NUDEntityLevel");
|
||||
this.NUDEntityLevel.Maximum = new decimal(new int[] {
|
||||
90,
|
||||
200,
|
||||
0,
|
||||
0,
|
||||
0});
|
||||
|
@@ -1909,6 +1909,6 @@
|
||||
<value>PageSpawn</value>
|
||||
</data>
|
||||
<data name=">>$this.Type" xml:space="preserve">
|
||||
<value>GrasscutterTools.Pages.BasePage, GrasscutterTools, Version=1.7.4.0, Culture=neutral, PublicKeyToken=de2b1c089621e923</value>
|
||||
<value>GrasscutterTools.Pages.BasePage, GrasscutterTools, Version=1.10.1.0, Culture=neutral, PublicKeyToken=de2b1c089621e923</value>
|
||||
</data>
|
||||
</root>
|
@@ -78,7 +78,7 @@ namespace GrasscutterTools.Pages
|
||||
try
|
||||
{
|
||||
Tasks = JsonConvert.DeserializeObject<List<LoopTask>>(File.ReadAllText(TasksJsonPath));
|
||||
ListTasks.Items.AddRange(Tasks.Select(t => TaskToViewItem(t)).ToArray());
|
||||
ListTasks.Items.AddRange(Tasks.Select(TaskToViewItem).ToArray());
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
|
86
Source/GrasscutterTools/Pages/PageTools.Designer.cs
generated
@@ -29,11 +29,18 @@
|
||||
private void InitializeComponent()
|
||||
{
|
||||
this.BtnUpdateResources = new System.Windows.Forms.Button();
|
||||
this.BtnConvertCutScene = new System.Windows.Forms.Button();
|
||||
this.LblProjectResRoot = new System.Windows.Forms.Label();
|
||||
this.TxtProjectResRoot = new System.Windows.Forms.TextBox();
|
||||
this.LblGcResRoot = new System.Windows.Forms.Label();
|
||||
this.TxtGcResRoot = new System.Windows.Forms.TextBox();
|
||||
this.BtnUpdateAllResources = new System.Windows.Forms.Button();
|
||||
this.BtnUpdateActivity = new System.Windows.Forms.Button();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// BtnUpdateResources
|
||||
//
|
||||
this.BtnUpdateResources.Location = new System.Drawing.Point(3, 3);
|
||||
this.BtnUpdateResources.Location = new System.Drawing.Point(41, 195);
|
||||
this.BtnUpdateResources.Name = "BtnUpdateResources";
|
||||
this.BtnUpdateResources.Size = new System.Drawing.Size(100, 30);
|
||||
this.BtnUpdateResources.TabIndex = 0;
|
||||
@@ -41,18 +48,95 @@
|
||||
this.BtnUpdateResources.UseVisualStyleBackColor = true;
|
||||
this.BtnUpdateResources.Click += new System.EventHandler(this.BtnUpdateResources_Click);
|
||||
//
|
||||
// BtnConvertCutScene
|
||||
//
|
||||
this.BtnConvertCutScene.Location = new System.Drawing.Point(147, 195);
|
||||
this.BtnConvertCutScene.Name = "BtnConvertCutScene";
|
||||
this.BtnConvertCutScene.Size = new System.Drawing.Size(150, 30);
|
||||
this.BtnConvertCutScene.TabIndex = 0;
|
||||
this.BtnConvertCutScene.Text = "Convert Cutscene";
|
||||
this.BtnConvertCutScene.UseVisualStyleBackColor = true;
|
||||
this.BtnConvertCutScene.Click += new System.EventHandler(this.BtnConvertCutScene_Click);
|
||||
//
|
||||
// LblProjectResRoot
|
||||
//
|
||||
this.LblProjectResRoot.AutoSize = true;
|
||||
this.LblProjectResRoot.Location = new System.Drawing.Point(38, 34);
|
||||
this.LblProjectResRoot.Name = "LblProjectResRoot";
|
||||
this.LblProjectResRoot.Size = new System.Drawing.Size(141, 17);
|
||||
this.LblProjectResRoot.TabIndex = 1;
|
||||
this.LblProjectResRoot.Text = "项目 Resources/ 路径:";
|
||||
//
|
||||
// TxtProjectResRoot
|
||||
//
|
||||
this.TxtProjectResRoot.Location = new System.Drawing.Point(185, 31);
|
||||
this.TxtProjectResRoot.Name = "TxtProjectResRoot";
|
||||
this.TxtProjectResRoot.Size = new System.Drawing.Size(413, 23);
|
||||
this.TxtProjectResRoot.TabIndex = 2;
|
||||
//
|
||||
// LblGcResRoot
|
||||
//
|
||||
this.LblGcResRoot.AutoSize = true;
|
||||
this.LblGcResRoot.Location = new System.Drawing.Point(44, 63);
|
||||
this.LblGcResRoot.Name = "LblGcResRoot";
|
||||
this.LblGcResRoot.Size = new System.Drawing.Size(135, 17);
|
||||
this.LblGcResRoot.TabIndex = 3;
|
||||
this.LblGcResRoot.Text = "GC_Resources/ 路径:";
|
||||
//
|
||||
// TxtGcResRoot
|
||||
//
|
||||
this.TxtGcResRoot.Location = new System.Drawing.Point(185, 60);
|
||||
this.TxtGcResRoot.Name = "TxtGcResRoot";
|
||||
this.TxtGcResRoot.Size = new System.Drawing.Size(413, 23);
|
||||
this.TxtGcResRoot.TabIndex = 4;
|
||||
//
|
||||
// BtnUpdateAllResources
|
||||
//
|
||||
this.BtnUpdateAllResources.Location = new System.Drawing.Point(41, 100);
|
||||
this.BtnUpdateAllResources.Name = "BtnUpdateAllResources";
|
||||
this.BtnUpdateAllResources.Size = new System.Drawing.Size(150, 30);
|
||||
this.BtnUpdateAllResources.TabIndex = 0;
|
||||
this.BtnUpdateAllResources.Text = "Update All Resources";
|
||||
this.BtnUpdateAllResources.UseVisualStyleBackColor = true;
|
||||
this.BtnUpdateAllResources.Click += new System.EventHandler(this.BtnUpdateAllResources_Click);
|
||||
//
|
||||
// BtnUpdateActivity
|
||||
//
|
||||
this.BtnUpdateActivity.Location = new System.Drawing.Point(197, 100);
|
||||
this.BtnUpdateActivity.Name = "BtnUpdateActivity";
|
||||
this.BtnUpdateActivity.Size = new System.Drawing.Size(150, 30);
|
||||
this.BtnUpdateActivity.TabIndex = 0;
|
||||
this.BtnUpdateActivity.Text = "Update Activity";
|
||||
this.BtnUpdateActivity.UseVisualStyleBackColor = true;
|
||||
this.BtnUpdateActivity.Click += new System.EventHandler(this.BtnUpdateActivity_Click);
|
||||
//
|
||||
// PageTools
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 17F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.Controls.Add(this.TxtGcResRoot);
|
||||
this.Controls.Add(this.LblGcResRoot);
|
||||
this.Controls.Add(this.TxtProjectResRoot);
|
||||
this.Controls.Add(this.LblProjectResRoot);
|
||||
this.Controls.Add(this.BtnUpdateActivity);
|
||||
this.Controls.Add(this.BtnUpdateAllResources);
|
||||
this.Controls.Add(this.BtnConvertCutScene);
|
||||
this.Controls.Add(this.BtnUpdateResources);
|
||||
this.Name = "PageTools";
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.Button BtnUpdateResources;
|
||||
private System.Windows.Forms.Button BtnConvertCutScene;
|
||||
private System.Windows.Forms.Label LblProjectResRoot;
|
||||
private System.Windows.Forms.TextBox TxtProjectResRoot;
|
||||
private System.Windows.Forms.Label LblGcResRoot;
|
||||
private System.Windows.Forms.TextBox TxtGcResRoot;
|
||||
private System.Windows.Forms.Button BtnUpdateAllResources;
|
||||
private System.Windows.Forms.Button BtnUpdateActivity;
|
||||
}
|
||||
}
|
||||
|
@@ -1,8 +1,19 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Windows.Forms;
|
||||
|
||||
using GrasscutterTools.Game;
|
||||
using GrasscutterTools.Game.Activity;
|
||||
using GrasscutterTools.Game.CutScene;
|
||||
using GrasscutterTools.Game.Data;
|
||||
using GrasscutterTools.Game.Dungeon;
|
||||
using GrasscutterTools.Properties;
|
||||
|
||||
using Newtonsoft.Json;
|
||||
|
||||
namespace GrasscutterTools.Pages
|
||||
{
|
||||
internal partial class PageTools : BasePage
|
||||
@@ -12,6 +23,12 @@ namespace GrasscutterTools.Pages
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
public override void OnLoad()
|
||||
{
|
||||
TxtGcResRoot.Text = Settings.Default.ResourcesDirPath;
|
||||
TxtProjectResRoot.Text = Settings.Default.ProjectResourcePath;
|
||||
}
|
||||
|
||||
private void BtnUpdateResources_Click(object sender, EventArgs e)
|
||||
{
|
||||
var src = new OpenFileDialog
|
||||
@@ -62,5 +79,135 @@ namespace GrasscutterTools.Pages
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void BtnConvertCutScene_Click(object sender, EventArgs e)
|
||||
{
|
||||
var src = new OpenFileDialog
|
||||
{
|
||||
Title = "请选择 Json 格式的 Cutscene.txt",
|
||||
Multiselect = false,
|
||||
};
|
||||
if (src.ShowDialog() != DialogResult.OK)
|
||||
return;
|
||||
try
|
||||
{
|
||||
var cutScenes = JsonConvert.DeserializeObject<List<CutSceneItem>>(File.ReadAllText(src.FileName));
|
||||
File.WriteAllLines(src.FileName, cutScenes.Select(it => $"{it.Id}:{it.Path.Substring(it.Path.IndexOf('/') + 1)}"));
|
||||
MessageBox.Show("OK", Resources.Tips, MessageBoxButtons.OK);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
MessageBox.Show(ex.ToString(), Resources.Error, MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
}
|
||||
}
|
||||
|
||||
private bool CheckInputPaths()
|
||||
{
|
||||
if (string.IsNullOrEmpty(TxtProjectResRoot.Text) || string.IsNullOrEmpty(TxtGcResRoot.Text))
|
||||
{
|
||||
MessageBox.Show("请先填写资源目录路径!", Resources.Error, MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
return false;
|
||||
}
|
||||
|
||||
if (Directory.Exists(TxtProjectResRoot.Text) && Directory.Exists(TxtGcResRoot.Text))
|
||||
{
|
||||
Settings.Default.ResourcesDirPath = TxtGcResRoot.Text;
|
||||
Settings.Default.ProjectResourcePath = TxtProjectResRoot.Text;
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
MessageBox.Show("请填写正确的Res路径!", Resources.Error, MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
private TextMapData TextMapData;
|
||||
private GameResources GameResources;
|
||||
|
||||
private void BtnUpdateAllResources_Click(object sender, EventArgs e)
|
||||
{
|
||||
try
|
||||
{
|
||||
if (!CheckInputPaths()) return;
|
||||
|
||||
if (TextMapData == null)
|
||||
TextMapData = new TextMapData(TxtGcResRoot.Text);
|
||||
if (GameResources == null)
|
||||
GameResources = new GameResources(TxtGcResRoot.Text, TextMapData);
|
||||
|
||||
GameResources.ConvertResources(TxtProjectResRoot.Text);
|
||||
MessageBox.Show("OK", Resources.Tips, MessageBoxButtons.OK);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
MessageBox.Show(ex.ToString(), Resources.Error, MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
private void BtnUpdateActivity_Click(object sender, EventArgs e)
|
||||
{
|
||||
try
|
||||
{
|
||||
if (!CheckInputPaths()) return;
|
||||
|
||||
var json = File.ReadAllText(
|
||||
Path.Combine(TxtGcResRoot.Text, "ExcelBinOutput", "NewActivityExcelConfigData.json"),
|
||||
Encoding.UTF8);
|
||||
var activityItems = JsonConvert.DeserializeObject<List<NewActivityItem>>(json);
|
||||
|
||||
if (TextMapData == null)
|
||||
TextMapData = new TextMapData(TxtGcResRoot.Text);
|
||||
|
||||
UpdateActivityForLanguage(activityItems, "TextMapCHT", "zh-tw");
|
||||
UpdateActivityForLanguage(activityItems, "TextMapEN", "en-us");
|
||||
UpdateActivityForLanguage(activityItems, "TextMapRU", "ru-ru");
|
||||
MessageBox.Show("OK", Resources.Tips, MessageBoxButtons.OK);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
MessageBox.Show(ex.ToString(), Resources.Error, MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
}
|
||||
}
|
||||
|
||||
private void UpdateActivityForLanguage(IReadOnlyCollection<NewActivityItem> activityItems, string textMap, string language)
|
||||
{
|
||||
var i = Array.IndexOf(TextMapData.TextMapFiles, textMap);
|
||||
TextMapData.LoadTextMap(TextMapData.TextMapFilePaths[i]);
|
||||
|
||||
var activityMap = new Dictionary<int, string>(activityItems.Count);
|
||||
foreach (var item in activityItems)
|
||||
activityMap[item.ActivityId] = TextMapData.GetText(item.NameTextMapHash);
|
||||
|
||||
var buffer = new StringBuilder();
|
||||
foreach (var item in GameData.Activity)
|
||||
{
|
||||
buffer.Append("// ").AppendLine(item.Key);
|
||||
foreach (var id in item.Value.Ids)
|
||||
{
|
||||
buffer.Append(id).Append(':');
|
||||
buffer.AppendLine(activityMap.TryGetValue(id, out var title) ? title : item.Value[id]);
|
||||
}
|
||||
}
|
||||
var activityFilePath = Path.Combine(TxtProjectResRoot.Text, language, "Activity.txt");
|
||||
File.WriteAllText(activityFilePath, buffer.ToString(), Encoding.UTF8);
|
||||
|
||||
//File.WriteAllLines(
|
||||
// activityFilePath,
|
||||
// activityItems.Select(it => $"{it.ActivityId}:{TextMapData.GetText(it.NameTextMapHash)}"),
|
||||
// Encoding.UTF8);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
@@ -18,11 +18,13 @@
|
||||
**/
|
||||
|
||||
using System;
|
||||
using System.Linq;
|
||||
using System.Reflection;
|
||||
using System.Text;
|
||||
using System.Threading;
|
||||
using System.Windows.Forms;
|
||||
|
||||
using GrasscutterTools.OpenCommand;
|
||||
using GrasscutterTools.Properties;
|
||||
using GrasscutterTools.Utils;
|
||||
|
||||
@@ -63,8 +65,12 @@ namespace GrasscutterTools
|
||||
/// 应用程序的主入口点。
|
||||
/// </summary>
|
||||
[STAThread]
|
||||
private static void Main()
|
||||
private static int Main(string[] args)
|
||||
{
|
||||
var result = HandleCommandLine(args);
|
||||
if (result != -1)
|
||||
return result;
|
||||
|
||||
Application.EnableVisualStyles();
|
||||
Application.SetCompatibleTextRenderingDefault(false);
|
||||
|
||||
@@ -91,8 +97,127 @@ namespace GrasscutterTools
|
||||
|
||||
Application.Run(new Forms.FormMain());
|
||||
Logger.I(TAG, "Program end.");
|
||||
return 0;
|
||||
}
|
||||
|
||||
#region - 命令行参数 -
|
||||
|
||||
/// <summary>
|
||||
/// 处理命令行参数并返回处理结果
|
||||
/// </summary>
|
||||
/// <param name="args">命令行参数</param>
|
||||
/// <returns>返回-1表示继续启动应用程序。返回其它值表示退出应用并将该值作为返回结果。</returns>
|
||||
private static int HandleCommandLine(string[] args)
|
||||
{
|
||||
var parser = new ToggleParser(args);
|
||||
if (parser.IsEmpty) return -1;
|
||||
try
|
||||
{
|
||||
GuiRedirect.Redirect();
|
||||
|
||||
// 是否启动日志
|
||||
if (parser.HasToggle("debug") || parser.HasToggle("log"))
|
||||
Logger.IsSaveLogs = true;
|
||||
|
||||
if (parser.HasToggle("v") || parser.HasToggle("version"))
|
||||
{
|
||||
Console.WriteLine("v" + Common.AppVersion.ToString(3));
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (parser.HasToggle("h") || parser.HasToggle("help") || parser.HasToggle("?"))
|
||||
{
|
||||
Console.WriteLine("Usages:");
|
||||
Console.WriteLine(" GcTools.exe -help");
|
||||
Console.WriteLine(" GcTools.exe -version");
|
||||
Console.WriteLine(" GcTools.exe -c \"cmd arg\"");
|
||||
Console.WriteLine(" GcTools.exe -c \"cmd1 arg\" && GcTools -c \"cmd2 arg1 arg2\"");
|
||||
Console.WriteLine(" GcTools.exe -host http://127.0.0.1:443 -token 123456 -c \"cmd1 arg1 arg2 | cmd2 | cmd3 arg\"");
|
||||
return 0;
|
||||
}
|
||||
|
||||
// 服务器地址
|
||||
var host = parser.GetToggleValueOrDefault("host", Settings.Default.Host);
|
||||
// 服务器令牌
|
||||
var token = parser.GetToggleValueOrDefault("token", Settings.Default.TokenCache);
|
||||
|
||||
if (Settings.Default.Host != host || Settings.Default.TokenCache != token)
|
||||
{
|
||||
Settings.Default.Host = host;
|
||||
Settings.Default.TokenCache = token;
|
||||
Settings.Default.Save();
|
||||
}
|
||||
|
||||
#if DEBUG
|
||||
Logger.I(TAG, $"Host: {Settings.Default.Host} Token: {Settings.Default.TokenCache}");
|
||||
#endif
|
||||
// UID
|
||||
//Settings.Default.RemoteUid = decimal.Parse(parser.GetToggleValueOrDefault("uid", Settings.Default.RemoteUid.ToString()));
|
||||
|
||||
if (!string.IsNullOrEmpty(Settings.Default.Host) && !string.IsNullOrEmpty(Settings.Default.TokenCache))
|
||||
{
|
||||
Common.OC = new OpenCommandAPI(Settings.Default.Host, Settings.Default.TokenCache);
|
||||
}
|
||||
|
||||
// 解析并执行命令
|
||||
var cmd = parser.GetToggleValueOrDefault("c", string.Empty);
|
||||
if (string.IsNullOrEmpty(cmd)) cmd = parser.GetToggleValueOrDefault("command", string.Empty);
|
||||
if (!string.IsNullOrEmpty(cmd))
|
||||
{
|
||||
return RunCommand(cmd) ? 0 : 1;
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Logger.E(TAG, "Parse command failed!", ex);
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 执行命令
|
||||
/// </summary>
|
||||
/// <param name="commands">GC命令,由|分割多条命令</param>
|
||||
/// <returns>返回是否执行成功</returns>
|
||||
private static bool RunCommand(string commands)
|
||||
{
|
||||
if (Common.OC == null || !Common.OC.CanInvoke)
|
||||
{
|
||||
Console.WriteLine(Resources.RequireOpenCommandTip);
|
||||
Logger.E(TAG, Resources.RequireOpenCommandTip);
|
||||
return false;
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
foreach (var cmd in commands.Split('|').Select(FormatCommand))
|
||||
{
|
||||
var msg = Common.OC.Invoke(cmd).Result;
|
||||
Console.WriteLine(string.IsNullOrEmpty(msg) ? "OK" : msg);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Console.WriteLine(ex);
|
||||
Logger.E(TAG, "RunCommand Error:", ex);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 格式化命令
|
||||
/// (去除收尾空白,替换换行)
|
||||
/// </summary>
|
||||
/// <param name="raw">原始输入</param>
|
||||
/// <returns>格式化后可执行命令</returns>
|
||||
private static string FormatCommand(string raw)
|
||||
{
|
||||
return raw.Trim().Replace("\\r", "\r").Replace("\\n", "\n");
|
||||
}
|
||||
|
||||
#endregion - 命令行参数 -
|
||||
|
||||
#region - 全局异常处理 -
|
||||
|
||||
private static void Application_ThreadException(object sender, ThreadExceptionEventArgs e)
|
||||
|
@@ -31,5 +31,5 @@ using System.Runtime.InteropServices;
|
||||
//可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值
|
||||
//通过使用 "*",如下所示:
|
||||
// [assembly: AssemblyVersion("1.0.*")]
|
||||
[assembly: AssemblyVersion("1.9.0")]
|
||||
[assembly: AssemblyFileVersion("1.9.0")]
|
||||
[assembly: AssemblyVersion("1.12.0")]
|
||||
[assembly: AssemblyFileVersion("1.12.0")]
|
180
Source/GrasscutterTools/Properties/Resources.Designer.cs
generated
@@ -61,25 +61,25 @@ namespace GrasscutterTools.Properties {
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 80001:風與異鄉人 - 使用風元素吹散一株蒲公英。
|
||||
///80002:千嶂萬仞 - 掌握「岩」的元素力。
|
||||
///80003:流水叮嚀 - 集齊全套《清泉之心》。
|
||||
///80004:神戟狂言凌雲霄 - 集齊全套《神霄折戟錄》。
|
||||
///80005:醉客與狼的相遇 - 集齊全套《醉客軼事》。
|
||||
///80006:清泉、白馬與月光 - 集齊全套《竹林月夜》。
|
||||
///80007:人鑄賦形 - 鍛造一把四星武器。
|
||||
///80008:生存專家 - 掌握10種菜餚的製作方式。
|
||||
///80009:生存專家 - 掌握20種菜餚的製作方式。
|
||||
///80010:生存專家 - 掌握40種菜餚的製作方式。
|
||||
///80011:星級大廚 - 10個料理食譜達到熟練。
|
||||
///80012:星級大廚 - 20個料理食譜達到熟練。
|
||||
///80013:星級大廚 - 40個料理食譜達到熟練。
|
||||
///80014:如日方升的旅程 - 角色首次突破至2階。
|
||||
///80015:如日方升的旅程 - 角色首次突破至4階。
|
||||
///80016:如日方升的旅程 - 角色首次突破至6階。
|
||||
///80017:百錘千鍊 - 將一把武器突破至2階。
|
||||
///80018:百錘千鍊 - 將一把武器突破至4階。
|
||||
///80019:百錘千鍊 - 將一把武器 [字符串的其余部分被截断]"; 的本地化字符串。
|
||||
/// 查找类似 80001:风与异乡人 - 使用风元素吹散一株蒲公英。
|
||||
///80002:千嶂万仞 - 掌握「岩」的元素力。
|
||||
///80003:流水叮咛 - 集齐全套《清泉之心》。
|
||||
///80004:神戟狂言凌云霄 - 集齐全套《神霄折戟录》。
|
||||
///80005:醉客与狼的相遇 - 集齐全套《醉客轶事》。
|
||||
///80006:清泉、白马与月光 - 集齐全套《竹林月夜》。
|
||||
///80007:人铸赋形 - 锻造一把四星武器。
|
||||
///80008:生存专家 - 掌握10种菜肴的制作方法。
|
||||
///80009:生存专家 - 掌握20种菜肴的制作方法。
|
||||
///80010:生存专家 - 掌握40种菜肴的制作方法。
|
||||
///80011:星级大厨 - 10个料理食谱达到熟练。
|
||||
///80012:星级大厨 - 20个料理食谱达到熟练。
|
||||
///80013:星级大厨 - 40个料理食谱达到熟练。
|
||||
///80014:如日方升的旅程 - 角色首次突破至2阶。
|
||||
///80015:如日方升的旅程 - 角色首次突破至4阶。
|
||||
///80016:如日方升的旅程 - 角色首次突破至6阶。
|
||||
///80017:百炼千锤 - 将一个武器突破至2阶。
|
||||
///80018:百炼千锤 - 将一个武器突破至4阶。
|
||||
///80019:百炼千锤 - 将一个武器 [字符串的其余部分被截断]"; 的本地化字符串。
|
||||
/// </summary>
|
||||
internal static string Achievement {
|
||||
get {
|
||||
@@ -88,45 +88,42 @@ namespace GrasscutterTools.Properties {
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 //[Activity ids-3.6 by dplek]
|
||||
///// Activity
|
||||
///2001:1.1未归的熄星
|
||||
///2002:1.3海灯节
|
||||
///2003:1.4风花节
|
||||
///2004:1.5导能原盘-诸论
|
||||
///2005:1.6盛夏!海岛?大冒险!
|
||||
///2006:2.0谒索雷痕
|
||||
///2007:2.1韶光抚月
|
||||
///2008:2.2雾海悬谜境
|
||||
///2009:2.3皑尘与白雪
|
||||
///2010:2.4飞彩镌流年
|
||||
///2011:2.5三界路飨祭
|
||||
///2012:2.6堇庭华彩
|
||||
///2013:2.7荒梦藏虞渊
|
||||
///2014:2.8远海诗夏游纪
|
||||
///2015:3.0雕琢童心
|
||||
///2016:3.1杯中遥吟之歌
|
||||
///2017:3.2智巧灵蕈大竞逐
|
||||
///2018:3.3秋津森夜试胆会
|
||||
///2019:3.4磬弦奏华夜
|
||||
///2020:3.5风花的呼吸
|
||||
///// 1.0
|
||||
///1001:海灯节
|
||||
///5001:元素烘炉(test)
|
||||
///5002:且试身手
|
||||
///5003:百货奇货
|
||||
///// 1.1
|
||||
///5004:映天之章
|
||||
///5005:元素烘炉
|
||||
///5006:佳肴尚温
|
||||
///5007:飞行挑战
|
||||
///// 1.2
|
||||
///3001:白垩与黑龙
|
||||
///5008:三清玲之章(废稿)
|
||||
///5009:古闻之章(钟离传说-1)
|
||||
///5010:鲸天之章(公子传说-1)
|
||||
///5011:秘宝迷踪
|
||||
///5012:百 [字符串的其余部分被截断]"; 的本地化字符串。
|
||||
/// 查找类似 //[Activity ids-3.8 by dplek]
|
||||
///// Activity
|
||||
///2001:1.1未归的熄星
|
||||
///2002:1.3海灯节
|
||||
///2003:1.4风花节
|
||||
///2004:1.5导能原盘-诸论
|
||||
///2005:1.6盛夏!海岛?大冒险!
|
||||
///2006:2.0谒索雷痕
|
||||
///2007:2.1韶光抚月
|
||||
///2008:2.2雾海悬谜境
|
||||
///2009:2.3皑尘与雪影
|
||||
///2010:2.4飞彩镌流年
|
||||
///2011:2.5三界路飨祭
|
||||
///2012:2.6堇庭华彩
|
||||
///2013:2.7荒梦藏虞渊
|
||||
///2014:2.8远海诗夏游纪
|
||||
///2015:3.0雕琢童心
|
||||
///2016:3.1杯中遥吟之歌
|
||||
///2017:3.2智巧灵蕈大竞逐
|
||||
///2018:3.3秋津森夜试胆会
|
||||
///2019:3.4磬弦奏华夜
|
||||
///2020:3.5风花的呼吸
|
||||
///2021:3.6盛典与慧业
|
||||
///2022:3.7决战!召唤之巅!
|
||||
///// 1.0
|
||||
///1001:海灯节
|
||||
///5001:元素烘炉(test)
|
||||
///5002:且试身手
|
||||
///5003:百货奇货
|
||||
///// 1.1
|
||||
///5004:映天之章
|
||||
///5005:元素烘炉
|
||||
///5006:佳肴尚温
|
||||
///5007:飞行挑战
|
||||
///5009:古闻之章(钟离传说-1)
|
||||
///50 [字符串的其余部分被截断]"; 的本地化字符串。
|
||||
/// </summary>
|
||||
internal static string Activity {
|
||||
get {
|
||||
@@ -395,13 +392,13 @@ namespace GrasscutterTools.Properties {
|
||||
///1058:八重神子
|
||||
///1059:鹿野院平藏
|
||||
///1060:夜兰
|
||||
///1061:绮良良
|
||||
///1062:埃洛伊
|
||||
///1063:申鹤
|
||||
///1064:云堇
|
||||
///1065:久岐忍
|
||||
///1066:神里绫人
|
||||
///1067:柯莱
|
||||
///1068:多 [字符串的其余部分被截断]"; 的本地化字符串。
|
||||
///1067: [字符串的其余部分被截断]"; 的本地化字符串。
|
||||
/// </summary>
|
||||
internal static string Avatar {
|
||||
get {
|
||||
@@ -637,6 +634,48 @@ namespace GrasscutterTools.Properties {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 1:[测试]空画面
|
||||
///2:[测试]空画面
|
||||
///3:[疑似剧情]风起地七天神像激活
|
||||
///4:未知秘境内某门开启
|
||||
///5:未知秘境内某门开启
|
||||
///6:无画面(UI会闪一下)
|
||||
///7:未知区域画面旋转
|
||||
///8:进入风龙废墟秘境
|
||||
///9:达达乌帕谷剑屏障解锁
|
||||
///200201:[剧情]蒙德主线特瓦林最后战斗 秘境ID:20018(测试)或20025(正式)
|
||||
///10:风龙废墟解除三层封印1
|
||||
///11:风龙废墟解除三层封印2
|
||||
///12:风龙废墟解除三层封印3
|
||||
///13:秘境奖励领取时
|
||||
///14:未知区域画面旋转
|
||||
///15:不明地下视角
|
||||
///16:不明地下视角
|
||||
///17:忍冬之树普通
|
||||
///18:忍冬之树形态1
|
||||
///19:忍冬之树1升级2
|
||||
///20:忍冬之树形态2
|
||||
///21:忍冬之树2升级3
|
||||
///22:雪山冰本进入时
|
||||
///23:不明地下视角
|
||||
///24:不明地下视角
|
||||
///25:稻妻神樱树远景
|
||||
///26:[世界任务]神樱大祓净化进度1
|
||||
///27:[世界任务]神樱大祓净化进度2
|
||||
///28:[世界任务]神樱大祓净化进度3
|
||||
///29:[世界任务]神樱大祓净化进度4
|
||||
///30:[世界任务]神樱大祓净化进度5
|
||||
///31:稻妻荒海机关解锁
|
||||
///32:稻妻八酝岛阵代屋敷秘境解锁
|
||||
///33:稻妻清籁岛木 [字符串的其余部分被截断]"; 的本地化字符串。
|
||||
/// </summary>
|
||||
internal static string Cutscene {
|
||||
get {
|
||||
return ResourceManager.GetString("Cutscene", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 1:深入狼之殿
|
||||
///2:丘丘人大本营(test)
|
||||
@@ -991,24 +1030,20 @@ namespace GrasscutterTools.Properties {
|
||||
///20010201:大型草史莱姆
|
||||
///20010202:大型草史莱姆-强攻强化
|
||||
///20010301:风史莱姆
|
||||
///20010302:风史莱姆(塔防)
|
||||
///20010381:Slime_Wind_02 - [N/A] 1192875865
|
||||
///20010401:大型风史莱姆
|
||||
///20010402:大型风史莱姆(塔防)
|
||||
///20010403:大型风史莱姆-强攻强化
|
||||
///20010481:Slime_Wind_03 - [N/A] 401698273
|
||||
///20010501:雷史莱姆
|
||||
///20010502:雷史莱姆(塔防)
|
||||
///20010503:Slime_Electric_02_SimpleStick - [N/A] 1834387465
|
||||
///20010581:Slime_Electric_02 - [N/A] 3442560241
|
||||
///20010601:大型雷史莱姆
|
||||
///20010602:大型雷史莱姆(塔防)
|
||||
///20010604:大型雷史莱姆-强攻强化
|
||||
///20010605:Slime_Electric_03_SimpleStick - [N/A] 3051091649
|
||||
///20010701:变异雷史莱姆
|
||||
///20010702:变异雷史莱姆-强攻强化
|
||||
///20010703:变异雷史莱姆(塔防)
|
||||
///20010801:冰史莱姆
|
||||
///20010802:冰史莱姆-雪山活动
|
||||
///20010803:冰史莱姆(塔防)
|
||||
///20010901:大型冰史莱姆
|
||||
///20010605:Slime_Electric_03_SimpleStick - [N/A] 3051091649
|
||||
///20010681:Sl [字符串的其余部分被截断]"; 的本地化字符串。
|
||||
/// </summary>
|
||||
internal static string Monsters {
|
||||
@@ -1125,6 +1160,15 @@ namespace GrasscutterTools.Properties {
|
||||
return ResourceManager.GetString("PageHomeTitle", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 快捷键 的本地化字符串。
|
||||
/// </summary>
|
||||
internal static string PageHotKey {
|
||||
get {
|
||||
return ResourceManager.GetString("PageHotKey", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 邮件 的本地化字符串。
|
||||
|
@@ -354,4 +354,13 @@ Improvement suggestions have been submitted, please use caution to send emails t
|
||||
<data name="PlayerProperty" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\en-us\PlayerProperty.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-8</value>
|
||||
</data>
|
||||
<data name="Cutscene" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\en-us\Cutscene.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;gb2312</value>
|
||||
</data>
|
||||
<data name="Activity" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\en-us\Activity.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-8</value>
|
||||
</data>
|
||||
<data name="PageHotKey" xml:space="preserve">
|
||||
<value>HotKey</value>
|
||||
</data>
|
||||
</root>
|
@@ -369,4 +369,10 @@
|
||||
<data name="PageSetPropTitle" xml:space="preserve">
|
||||
<value>属性</value>
|
||||
</data>
|
||||
<data name="Cutscene" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\zh-cn\Cutscene.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-8</value>
|
||||
</data>
|
||||
<data name="PageHotKey" xml:space="preserve">
|
||||
<value>快捷键</value>
|
||||
</data>
|
||||
</root>
|
@@ -342,4 +342,13 @@
|
||||
<data name="PlayerProperty" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\ru-ru\PlayerProperty.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-8</value>
|
||||
</data>
|
||||
<data name="Cutscene" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\ru-ru\Cutscene.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;gb2312</value>
|
||||
</data>
|
||||
<data name="Activity" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\ru-ru\Activity.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-8</value>
|
||||
</data>
|
||||
<data name="PageHotKey" xml:space="preserve">
|
||||
<value>Горячая клавиша</value>
|
||||
</data>
|
||||
</root>
|
@@ -348,4 +348,13 @@
|
||||
<data name="PageSetPropTitle" xml:space="preserve">
|
||||
<value>屬性</value>
|
||||
</data>
|
||||
<data name="Cutscene" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\zh-tw\Cutscene.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-8</value>
|
||||
</data>
|
||||
<data name="Activity" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\zh-tw\Activity.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-8</value>
|
||||
</data>
|
||||
<data name="PageHotKey" xml:space="preserve">
|
||||
<value>快捷鍵</value>
|
||||
</data>
|
||||
</root>
|
@@ -262,5 +262,29 @@ namespace GrasscutterTools.Properties {
|
||||
this["ActivityConfigJsonPath"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("")]
|
||||
public string ProjectResourcePath {
|
||||
get {
|
||||
return ((string)(this["ProjectResourcePath"]));
|
||||
}
|
||||
set {
|
||||
this["ProjectResourcePath"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("False")]
|
||||
public bool IsUpgraded {
|
||||
get {
|
||||
return ((bool)(this["IsUpgraded"]));
|
||||
}
|
||||
set {
|
||||
this["IsUpgraded"] = value;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -62,5 +62,11 @@
|
||||
<Setting Name="ActivityConfigJsonPath" Type="System.String" Scope="User">
|
||||
<Value Profile="(Default)" />
|
||||
</Setting>
|
||||
<Setting Name="ProjectResourcePath" Type="System.String" Scope="User">
|
||||
<Value Profile="(Default)" />
|
||||
</Setting>
|
||||
<Setting Name="IsUpgraded" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">False</Value>
|
||||
</Setting>
|
||||
</Settings>
|
||||
</SettingsFile>
|
@@ -1,5 +1,4 @@
|
||||
1001:4
|
||||
1002:5
|
||||
1002:5
|
||||
1003:5
|
||||
1005:5
|
||||
1006:4
|
||||
@@ -46,6 +45,7 @@
|
||||
1058:5
|
||||
1059:4
|
||||
1060:5
|
||||
1061:4
|
||||
1062:5
|
||||
1063:5
|
||||
1064:4
|
||||
@@ -66,4 +66,7 @@
|
||||
1079:5
|
||||
1080:4
|
||||
1081:4
|
||||
1082:5
|
||||
1082:5
|
||||
1083:4
|
||||
1084:5
|
||||
1085:4
|
||||
|
@@ -1,4 +1,594 @@
|
||||
[
|
||||
{
|
||||
"comment": "4.0.1 Lyney",
|
||||
"gachaType": 301,
|
||||
"scheduleId": 4,
|
||||
"prefabPath": "GachaShowPanel_A145",
|
||||
"titlePath": "UI_GACHA_SHOW_PANEL_A0145_TITLE",
|
||||
"costItemId": 223,
|
||||
"endTime": 1924992000,
|
||||
"sortId": 982,
|
||||
"rateUpItems4": [ 1083, 1032, 1014 ],
|
||||
"rateUpItems5": [ 1084 ],
|
||||
"fallbackItems3": [ 11301, 11302, 11306, 12301, 12302, 12305, 13303, 14301, 14302, 14304, 15301, 15302, 15304 ],
|
||||
"fallbackItems4Pool1": [ 1014, 1020, 1023, 1024, 1025, 1027, 1031, 1032, 1034, 1036, 1039, 1043, 1044, 1045, 1048, 1053, 1055, 1056, 1064 ],
|
||||
"fallbackItems4Pool2": [ 11401, 11402, 11403, 11405, 12401, 12402, 12403, 12405, 13401, 13407, 14401, 14402, 14403, 14409, 15401, 15402, 15403, 15405 ],
|
||||
"fallbackItems5Pool1": [ 1003, 1016, 1042, 1035, 1041 ],
|
||||
"fallbackItems5Pool2": [],
|
||||
"weights4": [
|
||||
[ 1, 510 ],
|
||||
[ 8, 510 ],
|
||||
[ 10, 10000 ]
|
||||
],
|
||||
"weights5": [
|
||||
[ 1, 80 ],
|
||||
[ 73, 80 ],
|
||||
[ 90, 10000 ]
|
||||
],
|
||||
"poolBalanceWeights4": [
|
||||
[ 1, 255 ],
|
||||
[ 17, 255 ],
|
||||
[ 21, 10455 ]
|
||||
],
|
||||
"poolBalanceWeights5": [
|
||||
[ 1, 30 ],
|
||||
[ 147, 150 ],
|
||||
[ 181, 10230 ]
|
||||
],
|
||||
"bannerType": "EVENT"
|
||||
},
|
||||
{
|
||||
"comment": "4.0.1 Yelan",
|
||||
"gachaType": 400,
|
||||
"scheduleId": 3,
|
||||
"prefabPath": "GachaShowPanel_A146",
|
||||
"titlePath": "UI_GACHA_SHOW_PANEL_A081_TITLE",
|
||||
"costItemId": 223,
|
||||
"endTime": 1924992000,
|
||||
"sortId": 982,
|
||||
"rateUpItems4": [ 1083, 1032, 1014 ],
|
||||
"rateUpItems5": [ 1060 ],
|
||||
"fallbackItems3": [ 11301, 11302, 11306, 12301, 12302, 12305, 13303, 14301, 14302, 14304, 15301, 15302, 15304 ],
|
||||
"fallbackItems4Pool1": [ 1014, 1020, 1023, 1024, 1025, 1027, 1031, 1032, 1034, 1036, 1039, 1043, 1044, 1045, 1048, 1053, 1055, 1056, 1064 ],
|
||||
"fallbackItems4Pool2": [ 11401, 11402, 11403, 11405, 12401, 12402, 12403, 12405, 13401, 13407, 14401, 14402, 14403, 14409, 15401, 15402, 15403, 15405 ],
|
||||
"fallbackItems5Pool1": [ 1003, 1016, 1042, 1035, 1041 ],
|
||||
"fallbackItems5Pool2": [],
|
||||
"weights4": [
|
||||
[ 1, 510 ],
|
||||
[ 8, 510 ],
|
||||
[ 10, 10000 ]
|
||||
],
|
||||
"weights5": [
|
||||
[ 1, 80 ],
|
||||
[ 73, 80 ],
|
||||
[ 90, 10000 ]
|
||||
],
|
||||
"poolBalanceWeights4": [
|
||||
[ 1, 255 ],
|
||||
[ 17, 255 ],
|
||||
[ 21, 10455 ]
|
||||
],
|
||||
"poolBalanceWeights5": [
|
||||
[ 1, 30 ],
|
||||
[ 147, 150 ],
|
||||
[ 181, 10230 ]
|
||||
],
|
||||
"bannerType": "EVENT"
|
||||
},
|
||||
{
|
||||
"comment": "4.0.1",
|
||||
"gachaType": 302,
|
||||
"scheduleId": 2,
|
||||
"prefabPath": "GachaShowPanel_A147",
|
||||
"titlePath": "UI_GACHA_SHOW_PANEL_A020_TITLE",
|
||||
"costItemId": 223,
|
||||
"endTime": 1924992000,
|
||||
"sortId": 2,
|
||||
"rateUpItems4": [ 11403, 12410, 15403, 13407, 14403 ],
|
||||
"rateUpItems5": [ 15512, 15508 ],
|
||||
"fallbackItems3": [ 11301, 11302, 11306, 12301, 12302, 12305, 13303, 14301, 14302, 14304, 15301, 15302, 15304 ],
|
||||
"fallbackItems4Pool1": [ 13401, 14401, 12401, 11402, 15402 ],
|
||||
"fallbackItems4Pool2": [],
|
||||
"fallbackItems5Pool1": [ 11509, 13507 ],
|
||||
"fallbackItems5Pool2": [],
|
||||
"weights4": [
|
||||
[ 1, 600 ],
|
||||
[ 7, 600 ],
|
||||
[ 8, 6600 ],
|
||||
[ 10, 12600 ]
|
||||
],
|
||||
"weights5": [
|
||||
[ 1, 100 ],
|
||||
[ 62, 100 ],
|
||||
[ 73, 7800 ],
|
||||
[ 80, 10000 ]
|
||||
],
|
||||
"poolBalanceWeights4": [
|
||||
[ 1, 255 ],
|
||||
[ 17, 255 ],
|
||||
[ 21, 10455 ]
|
||||
],
|
||||
"poolBalanceWeights5": [
|
||||
[ 1, 30 ],
|
||||
[ 147, 150 ],
|
||||
[ 181, 10230 ]
|
||||
],
|
||||
"eventChance4": 75,
|
||||
"eventChance5": 75,
|
||||
"bannerType": "WEAPON"
|
||||
},
|
||||
{
|
||||
"comment": "3.8.2 Sangonomiya Kokomi",
|
||||
"gachaType": 301,
|
||||
"scheduleId": 4,
|
||||
"prefabPath": "GachaShowPanel_A142",
|
||||
"titlePath": "UI_GACHA_SHOW_PANEL_A053_TITLE",
|
||||
"costItemId": 223,
|
||||
"endTime": 1924992000,
|
||||
"sortId": 982,
|
||||
"rateUpItems4": [ 1076, 1045, 1048 ],
|
||||
"rateUpItems5": [ 1054 ],
|
||||
"fallbackItems3": [ 11301, 11302, 11306, 12301, 12302, 12305, 13303, 14301, 14302, 14304, 15301, 15302, 15304 ],
|
||||
"fallbackItems4Pool1": [ 1014, 1020, 1023, 1024, 1025, 1027, 1031, 1032, 1034, 1036, 1039, 1043, 1044, 1045, 1048, 1053, 1055, 1056, 1064 ],
|
||||
"fallbackItems4Pool2": [ 11401, 11402, 11403, 11405, 12401, 12402, 12403, 12405, 13401, 13407, 14401, 14402, 14403, 14409, 15401, 15402, 15403, 15405 ],
|
||||
"fallbackItems5Pool1": [ 1003, 1016, 1042, 1035, 1041 ],
|
||||
"fallbackItems5Pool2": [],
|
||||
"weights4": [
|
||||
[ 1, 510 ],
|
||||
[ 8, 510 ],
|
||||
[ 10, 10000 ]
|
||||
],
|
||||
"weights5": [
|
||||
[ 1, 80 ],
|
||||
[ 73, 80 ],
|
||||
[ 90, 10000 ]
|
||||
],
|
||||
"poolBalanceWeights4": [
|
||||
[ 1, 255 ],
|
||||
[ 17, 255 ],
|
||||
[ 21, 10455 ]
|
||||
],
|
||||
"poolBalanceWeights5": [
|
||||
[ 1, 30 ],
|
||||
[ 147, 150 ],
|
||||
[ 181, 10230 ]
|
||||
],
|
||||
"bannerType": "EVENT"
|
||||
},
|
||||
{
|
||||
"comment": "3.8.2 Wanderer",
|
||||
"gachaType": 400,
|
||||
"scheduleId": 3,
|
||||
"prefabPath": "GachaShowPanel_A143",
|
||||
"titlePath": "UI_GACHA_SHOW_PANEL_A0109_TITLE",
|
||||
"costItemId": 223,
|
||||
"endTime": 1924992000,
|
||||
"sortId": 982,
|
||||
"rateUpItems4": [ 1076, 1045, 1048 ],
|
||||
"rateUpItems5": [ 1075 ],
|
||||
"fallbackItems3": [ 11301, 11302, 11306, 12301, 12302, 12305, 13303, 14301, 14302, 14304, 15301, 15302, 15304 ],
|
||||
"fallbackItems4Pool1": [ 1014, 1020, 1023, 1024, 1025, 1027, 1031, 1032, 1034, 1036, 1039, 1043, 1044, 1045, 1048, 1053, 1055, 1056, 1064 ],
|
||||
"fallbackItems4Pool2": [ 11401, 11402, 11403, 11405, 12401, 12402, 12403, 12405, 13401, 13407, 14401, 14402, 14403, 14409, 15401, 15402, 15403, 15405 ],
|
||||
"fallbackItems5Pool1": [ 1003, 1016, 1042, 1035, 1041 ],
|
||||
"fallbackItems5Pool2": [],
|
||||
"weights4": [
|
||||
[ 1, 510 ],
|
||||
[ 8, 510 ],
|
||||
[ 10, 10000 ]
|
||||
],
|
||||
"weights5": [
|
||||
[ 1, 80 ],
|
||||
[ 73, 80 ],
|
||||
[ 90, 10000 ]
|
||||
],
|
||||
"poolBalanceWeights4": [
|
||||
[ 1, 255 ],
|
||||
[ 17, 255 ],
|
||||
[ 21, 10455 ]
|
||||
],
|
||||
"poolBalanceWeights5": [
|
||||
[ 1, 30 ],
|
||||
[ 147, 150 ],
|
||||
[ 181, 10230 ]
|
||||
],
|
||||
"bannerType": "EVENT"
|
||||
},
|
||||
{
|
||||
"comment": "3.8.2",
|
||||
"gachaType": 302,
|
||||
"scheduleId": 2,
|
||||
"prefabPath": "GachaShowPanel_A144",
|
||||
"titlePath": "UI_GACHA_SHOW_PANEL_A020_TITLE",
|
||||
"costItemId": 223,
|
||||
"endTime": 1924992000,
|
||||
"sortId": 2,
|
||||
"rateUpItems4": [ 11405, 12402, 14410, 13401, 15401 ],
|
||||
"rateUpItems5": [ 14512, 14506 ],
|
||||
"fallbackItems3": [ 11301, 11302, 11306, 12301, 12302, 12305, 13303, 14301, 14302, 14304, 15301, 15302, 15304 ],
|
||||
"fallbackItems4Pool1": [ 13401, 14401, 12401, 11402, 15402 ],
|
||||
"fallbackItems4Pool2": [],
|
||||
"fallbackItems5Pool1": [ 11509, 13507 ],
|
||||
"fallbackItems5Pool2": [],
|
||||
"weights4": [
|
||||
[ 1, 600 ],
|
||||
[ 7, 600 ],
|
||||
[ 8, 6600 ],
|
||||
[ 10, 12600 ]
|
||||
],
|
||||
"weights5": [
|
||||
[ 1, 100 ],
|
||||
[ 62, 100 ],
|
||||
[ 73, 7800 ],
|
||||
[ 80, 10000 ]
|
||||
],
|
||||
"poolBalanceWeights4": [
|
||||
[ 1, 255 ],
|
||||
[ 17, 255 ],
|
||||
[ 21, 10455 ]
|
||||
],
|
||||
"poolBalanceWeights5": [
|
||||
[ 1, 30 ],
|
||||
[ 147, 150 ],
|
||||
[ 181, 10230 ]
|
||||
],
|
||||
"eventChance4": 75,
|
||||
"eventChance5": 75,
|
||||
"bannerType": "WEAPON"
|
||||
},
|
||||
{
|
||||
"comment": "3.8.1 Eula",
|
||||
"gachaType": 301,
|
||||
"scheduleId": 4,
|
||||
"prefabPath": "GachaShowPanel_A139",
|
||||
"titlePath": "UI_GACHA_SHOW_PANEL_A041_TITLE",
|
||||
"costItemId": 223,
|
||||
"endTime": 1924992000,
|
||||
"sortId": 982,
|
||||
"rateUpItems4": [ 1080, 1020, 1050 ],
|
||||
"rateUpItems5": [ 1051 ],
|
||||
"fallbackItems3": [ 11301, 11302, 11306, 12301, 12302, 12305, 13303, 14301, 14302, 14304, 15301, 15302, 15304 ],
|
||||
"fallbackItems4Pool1": [ 1014, 1020, 1023, 1024, 1025, 1027, 1031, 1032, 1034, 1036, 1039, 1043, 1044, 1045, 1048, 1053, 1055, 1056, 1064 ],
|
||||
"fallbackItems4Pool2": [ 11401, 11402, 11403, 11405, 12401, 12402, 12403, 12405, 13401, 13407, 14401, 14402, 14403, 14409, 15401, 15402, 15403, 15405 ],
|
||||
"fallbackItems5Pool1": [ 1003, 1016, 1042, 1035, 1041 ],
|
||||
"fallbackItems5Pool2": [],
|
||||
"weights4": [
|
||||
[ 1, 510 ],
|
||||
[ 8, 510 ],
|
||||
[ 10, 10000 ]
|
||||
],
|
||||
"weights5": [
|
||||
[ 1, 80 ],
|
||||
[ 73, 80 ],
|
||||
[ 90, 10000 ]
|
||||
],
|
||||
"poolBalanceWeights4": [
|
||||
[ 1, 255 ],
|
||||
[ 17, 255 ],
|
||||
[ 21, 10455 ]
|
||||
],
|
||||
"poolBalanceWeights5": [
|
||||
[ 1, 30 ],
|
||||
[ 147, 150 ],
|
||||
[ 181, 10230 ]
|
||||
],
|
||||
"bannerType": "EVENT"
|
||||
},
|
||||
{
|
||||
"comment": "3.8.1 Klee",
|
||||
"gachaType": 400,
|
||||
"scheduleId": 3,
|
||||
"prefabPath": "GachaShowPanel_A140",
|
||||
"titlePath": "UI_GACHA_SHOW_PANEL_A018_TITLE",
|
||||
"costItemId": 223,
|
||||
"endTime": 1924992000,
|
||||
"sortId": 982,
|
||||
"rateUpItems4": [ 1080, 1020, 1050 ],
|
||||
"rateUpItems5": [ 1029 ],
|
||||
"fallbackItems3": [ 11301, 11302, 11306, 12301, 12302, 12305, 13303, 14301, 14302, 14304, 15301, 15302, 15304 ],
|
||||
"fallbackItems4Pool1": [ 1014, 1020, 1023, 1024, 1025, 1027, 1031, 1032, 1034, 1036, 1039, 1043, 1044, 1045, 1048, 1053, 1055, 1056, 1064 ],
|
||||
"fallbackItems4Pool2": [ 11401, 11402, 11403, 11405, 12401, 12402, 12403, 12405, 13401, 13407, 14401, 14402, 14403, 14409, 15401, 15402, 15403, 15405 ],
|
||||
"fallbackItems5Pool1": [ 1003, 1016, 1042, 1035, 1041 ],
|
||||
"fallbackItems5Pool2": [],
|
||||
"weights4": [
|
||||
[ 1, 510 ],
|
||||
[ 8, 510 ],
|
||||
[ 10, 10000 ]
|
||||
],
|
||||
"weights5": [
|
||||
[ 1, 80 ],
|
||||
[ 73, 80 ],
|
||||
[ 90, 10000 ]
|
||||
],
|
||||
"poolBalanceWeights4": [
|
||||
[ 1, 255 ],
|
||||
[ 17, 255 ],
|
||||
[ 21, 10455 ]
|
||||
],
|
||||
"poolBalanceWeights5": [
|
||||
[ 1, 30 ],
|
||||
[ 147, 150 ],
|
||||
[ 181, 10230 ]
|
||||
],
|
||||
"bannerType": "EVENT"
|
||||
},
|
||||
{
|
||||
"comment": "3.8.1",
|
||||
"gachaType": 302,
|
||||
"scheduleId": 2,
|
||||
"prefabPath": "GachaShowPanel_A141",
|
||||
"titlePath": "UI_GACHA_SHOW_PANEL_A020_TITLE",
|
||||
"costItemId": 223,
|
||||
"endTime": 1924992000,
|
||||
"sortId": 2,
|
||||
"rateUpItems4": [ 11410, 15410, 12405, 13407, 14409 ],
|
||||
"rateUpItems5": [ 12503, 14502 ],
|
||||
"fallbackItems3": [ 11301, 11302, 11306, 12301, 12302, 12305, 13303, 14301, 14302, 14304, 15301, 15302, 15304 ],
|
||||
"fallbackItems4Pool1": [ 13401, 14401, 12401, 11402, 15402 ],
|
||||
"fallbackItems4Pool2": [],
|
||||
"fallbackItems5Pool1": [ 11509, 13507 ],
|
||||
"fallbackItems5Pool2": [],
|
||||
"weights4": [
|
||||
[ 1, 600 ],
|
||||
[ 7, 600 ],
|
||||
[ 8, 6600 ],
|
||||
[ 10, 12600 ]
|
||||
],
|
||||
"weights5": [
|
||||
[ 1, 100 ],
|
||||
[ 62, 100 ],
|
||||
[ 73, 7800 ],
|
||||
[ 80, 10000 ]
|
||||
],
|
||||
"poolBalanceWeights4": [
|
||||
[ 1, 255 ],
|
||||
[ 17, 255 ],
|
||||
[ 21, 10455 ]
|
||||
],
|
||||
"poolBalanceWeights5": [
|
||||
[ 1, 30 ],
|
||||
[ 147, 150 ],
|
||||
[ 181, 10230 ]
|
||||
],
|
||||
"eventChance4": 75,
|
||||
"eventChance5": 75,
|
||||
"bannerType": "WEAPON"
|
||||
},
|
||||
{
|
||||
"comment": "3.7.2 Alhaitham",
|
||||
"gachaType": 301,
|
||||
"scheduleId": 121,
|
||||
"prefabPath": "GachaShowPanel_A136",
|
||||
"titlePath": "UI_GACHA_SHOW_PANEL_A0115_TITLE",
|
||||
"costItemId": 223,
|
||||
"endTime": 1924992000,
|
||||
"sortId": 982,
|
||||
"rateUpItems4": [ 1077, 1023, 1059 ],
|
||||
"rateUpItems5": [ 1078 ],
|
||||
"fallbackItems3": [ 11301, 11302, 11306, 12301, 12302, 12305, 13303, 14301, 14302, 14304, 15301, 15302, 15304 ],
|
||||
"fallbackItems4Pool1": [ 1014, 1020, 1023, 1024, 1025, 1027, 1031, 1032, 1034, 1036, 1039, 1043, 1044, 1045, 1048, 1053, 1055, 1056, 1064 ],
|
||||
"fallbackItems4Pool2": [ 11401, 11402, 11403, 11405, 12401, 12402, 12403, 12405, 13401, 13407, 14401, 14402, 14403, 14409, 15401, 15402, 15403, 15405 ],
|
||||
"fallbackItems5Pool1": [ 1003, 1016, 1042, 1035, 1041 ],
|
||||
"fallbackItems5Pool2": [],
|
||||
"weights4": [
|
||||
[ 1, 510 ],
|
||||
[ 8, 510 ],
|
||||
[ 10, 10000 ]
|
||||
],
|
||||
"weights5": [
|
||||
[ 1, 80 ],
|
||||
[ 73, 80 ],
|
||||
[ 90, 10000 ]
|
||||
],
|
||||
"poolBalanceWeights4": [
|
||||
[ 1, 255 ],
|
||||
[ 17, 255 ],
|
||||
[ 21, 10455 ]
|
||||
],
|
||||
"poolBalanceWeights5": [
|
||||
[ 1, 30 ],
|
||||
[ 147, 150 ],
|
||||
[ 181, 10230 ]
|
||||
],
|
||||
"bannerType": "EVENT"
|
||||
},
|
||||
{
|
||||
"comment": "3.7.2 Kaedehara Kazuha",
|
||||
"gachaType": 400,
|
||||
"scheduleId": 120,
|
||||
"prefabPath": "GachaShowPanel_A137",
|
||||
"titlePath": "UI_GACHA_SHOW_PANEL_A045_TITLE",
|
||||
"costItemId": 223,
|
||||
"endTime": 1924992000,
|
||||
"sortId": 982,
|
||||
"rateUpItems4": [ 1077, 1023, 1059 ],
|
||||
"rateUpItems5": [ 1047 ],
|
||||
"fallbackItems3": [ 11301, 11302, 11306, 12301, 12302, 12305, 13303, 14301, 14302, 14304, 15301, 15302, 15304 ],
|
||||
"fallbackItems4Pool1": [ 1014, 1020, 1023, 1024, 1025, 1027, 1031, 1032, 1034, 1036, 1039, 1043, 1044, 1045, 1048, 1053, 1055, 1056, 1064 ],
|
||||
"fallbackItems4Pool2": [ 11401, 11402, 11403, 11405, 12401, 12402, 12403, 12405, 13401, 13407, 14401, 14402, 14403, 14409, 15401, 15402, 15403, 15405 ],
|
||||
"fallbackItems5Pool1": [ 1003, 1016, 1042, 1035, 1041 ],
|
||||
"fallbackItems5Pool2": [],
|
||||
"weights4": [
|
||||
[ 1, 510 ],
|
||||
[ 8, 510 ],
|
||||
[ 10, 10000 ]
|
||||
],
|
||||
"weights5": [
|
||||
[ 1, 80 ],
|
||||
[ 73, 80 ],
|
||||
[ 90, 10000 ]
|
||||
],
|
||||
"poolBalanceWeights4": [
|
||||
[ 1, 255 ],
|
||||
[ 17, 255 ],
|
||||
[ 21, 10455 ]
|
||||
],
|
||||
"poolBalanceWeights5": [
|
||||
[ 1, 30 ],
|
||||
[ 147, 150 ],
|
||||
[ 181, 10230 ]
|
||||
],
|
||||
"bannerType": "EVENT"
|
||||
},
|
||||
{
|
||||
"comment": "3.7.2",
|
||||
"gachaType": 302,
|
||||
"scheduleId": 119,
|
||||
"prefabPath": "GachaShowPanel_A138",
|
||||
"titlePath": "UI_GACHA_SHOW_PANEL_A020_TITLE",
|
||||
"costItemId": 223,
|
||||
"endTime": 1924992000,
|
||||
"sortId": 2,
|
||||
"rateUpItems4": [ 13416, 15416, 11401, 12403, 14401 ],
|
||||
"rateUpItems5": [ 11503, 11512 ],
|
||||
"fallbackItems3": [ 11301, 11302, 11306, 12301, 12302, 12305, 13303, 14301, 14302, 14304, 15301, 15302, 15304 ],
|
||||
"fallbackItems4Pool1": [ 13401, 14401, 12401, 11402, 15402 ],
|
||||
"fallbackItems4Pool2": [],
|
||||
"fallbackItems5Pool1": [ 11509, 13507 ],
|
||||
"fallbackItems5Pool2": [],
|
||||
"weights4": [
|
||||
[ 1, 600 ],
|
||||
[ 7, 600 ],
|
||||
[ 8, 6600 ],
|
||||
[ 10, 12600 ]
|
||||
],
|
||||
"weights5": [
|
||||
[ 1, 100 ],
|
||||
[ 62, 100 ],
|
||||
[ 73, 7800 ],
|
||||
[ 80, 10000 ]
|
||||
],
|
||||
"poolBalanceWeights4": [
|
||||
[ 1, 255 ],
|
||||
[ 17, 255 ],
|
||||
[ 21, 10455 ]
|
||||
],
|
||||
"poolBalanceWeights5": [
|
||||
[ 1, 30 ],
|
||||
[ 147, 150 ],
|
||||
[ 181, 10230 ]
|
||||
],
|
||||
"eventChance4": 75,
|
||||
"eventChance5": 75,
|
||||
"bannerType": "WEAPON"
|
||||
},
|
||||
{
|
||||
"comment": "3.7.1 Yoimiya",
|
||||
"gachaType": 301,
|
||||
"scheduleId": 118,
|
||||
"prefabPath": "GachaShowPanel_A133",
|
||||
"titlePath": "UI_GACHA_SHOW_PANEL_A049_TITLE",
|
||||
"costItemId": 223,
|
||||
"endTime": 1924992000,
|
||||
"sortId": 982,
|
||||
"rateUpItems4": [ 1036, 1064, 1061 ],
|
||||
"rateUpItems5": [ 1049 ],
|
||||
"fallbackItems3": [ 11301, 11302, 11306, 12301, 12302, 12305, 13303, 14301, 14302, 14304, 15301, 15302, 15304 ],
|
||||
"fallbackItems4Pool1": [ 1014, 1020, 1023, 1024, 1025, 1027, 1031, 1032, 1034, 1036, 1039, 1043, 1044, 1045, 1048, 1053, 1055, 1056, 1064 ],
|
||||
"fallbackItems4Pool2": [ 11401, 11402, 11403, 11405, 12401, 12402, 12403, 12405, 13401, 13407, 14401, 14402, 14403, 14409, 15401, 15402, 15403, 15405 ],
|
||||
"fallbackItems5Pool1": [ 1003, 1016, 1042, 1035, 1041 ],
|
||||
"fallbackItems5Pool2": [],
|
||||
"weights4": [
|
||||
[ 1, 510 ],
|
||||
[ 8, 510 ],
|
||||
[ 10, 10000 ]
|
||||
],
|
||||
"weights5": [
|
||||
[ 1, 80 ],
|
||||
[ 73, 80 ],
|
||||
[ 90, 10000 ]
|
||||
],
|
||||
"poolBalanceWeights4": [
|
||||
[ 1, 255 ],
|
||||
[ 17, 255 ],
|
||||
[ 21, 10455 ]
|
||||
],
|
||||
"poolBalanceWeights5": [
|
||||
[ 1, 30 ],
|
||||
[ 147, 150 ],
|
||||
[ 181, 10230 ]
|
||||
],
|
||||
"bannerType": "EVENT"
|
||||
},
|
||||
{
|
||||
"comment": "3.7.1 Yae Miko",
|
||||
"gachaType": 400,
|
||||
"scheduleId": 117,
|
||||
"prefabPath": "GachaShowPanel_A134",
|
||||
"titlePath": "UI_GACHA_SHOW_PANEL_A071_TITLE",
|
||||
"costItemId": 223,
|
||||
"endTime": 1924992000,
|
||||
"sortId": 982,
|
||||
"rateUpItems4": [ 1036, 1064, 1061 ],
|
||||
"rateUpItems5": [ 1058 ],
|
||||
"fallbackItems3": [ 11301, 11302, 11306, 12301, 12302, 12305, 13303, 14301, 14302, 14304, 15301, 15302, 15304 ],
|
||||
"fallbackItems4Pool1": [ 1014, 1020, 1023, 1024, 1025, 1027, 1031, 1032, 1034, 1036, 1039, 1043, 1044, 1045, 1048, 1053, 1055, 1056, 1064 ],
|
||||
"fallbackItems4Pool2": [ 11401, 11402, 11403, 11405, 12401, 12402, 12403, 12405, 13401, 13407, 14401, 14402, 14403, 14409, 15401, 15402, 15403, 15405 ],
|
||||
"fallbackItems5Pool1": [ 1003, 1016, 1042, 1035, 1041 ],
|
||||
"fallbackItems5Pool2": [],
|
||||
"weights4": [
|
||||
[ 1, 510 ],
|
||||
[ 8, 510 ],
|
||||
[ 10, 10000 ]
|
||||
],
|
||||
"weights5": [
|
||||
[ 1, 80 ],
|
||||
[ 73, 80 ],
|
||||
[ 90, 10000 ]
|
||||
],
|
||||
"poolBalanceWeights4": [
|
||||
[ 1, 255 ],
|
||||
[ 17, 255 ],
|
||||
[ 21, 10455 ]
|
||||
],
|
||||
"poolBalanceWeights5": [
|
||||
[ 1, 30 ],
|
||||
[ 147, 150 ],
|
||||
[ 181, 10230 ]
|
||||
],
|
||||
"bannerType": "EVENT"
|
||||
},
|
||||
{
|
||||
"comment": "3.7.1",
|
||||
"gachaType": 302,
|
||||
"scheduleId": 116,
|
||||
"prefabPath": "GachaShowPanel_A135",
|
||||
"titlePath": "UI_GACHA_SHOW_PANEL_A020_TITLE",
|
||||
"costItemId": 223,
|
||||
"endTime": 1924992000,
|
||||
"sortId": 2,
|
||||
"rateUpItems4": [ 12416, 11402, 13401, 14402, 15405 ],
|
||||
"rateUpItems5": [ 15509, 14509 ],
|
||||
"fallbackItems3": [ 11301, 11302, 11306, 12301, 12302, 12305, 13303, 14301, 14302, 14304, 15301, 15302, 15304 ],
|
||||
"fallbackItems4Pool1": [ 13401, 14401, 12401, 11402, 15402 ],
|
||||
"fallbackItems4Pool2": [],
|
||||
"fallbackItems5Pool1": [ 11509, 13507 ],
|
||||
"fallbackItems5Pool2": [],
|
||||
"weights4": [
|
||||
[ 1, 600 ],
|
||||
[ 7, 600 ],
|
||||
[ 8, 6600 ],
|
||||
[ 10, 12600 ]
|
||||
],
|
||||
"weights5": [
|
||||
[ 1, 100 ],
|
||||
[ 62, 100 ],
|
||||
[ 73, 7800 ],
|
||||
[ 80, 10000 ]
|
||||
],
|
||||
"poolBalanceWeights4": [
|
||||
[ 1, 255 ],
|
||||
[ 17, 255 ],
|
||||
[ 21, 10455 ]
|
||||
],
|
||||
"poolBalanceWeights5": [
|
||||
[ 1, 30 ],
|
||||
[ 147, 150 ],
|
||||
[ 181, 10230 ]
|
||||
],
|
||||
"eventChance4": 75,
|
||||
"eventChance5": 75,
|
||||
"bannerType": "WEAPON"
|
||||
},
|
||||
{
|
||||
"comment": "3.6.2 Baizhu",
|
||||
"gachaType": 301,
|
||||
|
@@ -1,4 +1,6 @@
|
||||
11301:blue
|
||||
11101:blue
|
||||
11201:blue
|
||||
11301:blue
|
||||
11302:blue
|
||||
11303:blue
|
||||
11304:blue
|
||||
@@ -25,6 +27,9 @@
|
||||
11420:purple
|
||||
11421:purple
|
||||
11422:purple
|
||||
11424:purple
|
||||
11425:purple
|
||||
11426:purple
|
||||
11501:yellow
|
||||
11502:yellow
|
||||
11503:yellow
|
||||
@@ -34,6 +39,8 @@
|
||||
11510:yellow
|
||||
11511:yellow
|
||||
11512:yellow
|
||||
12101:blue
|
||||
12201:blue
|
||||
12301:blue
|
||||
12302:blue
|
||||
12303:blue
|
||||
@@ -57,12 +64,16 @@
|
||||
12416:purple
|
||||
12417:purple
|
||||
12418:purple
|
||||
12424:purple
|
||||
12425:purple
|
||||
12501:yellow
|
||||
12502:yellow
|
||||
12503:yellow
|
||||
12504:yellow
|
||||
12510:yellow
|
||||
12511:yellow
|
||||
13101:blue
|
||||
13201:blue
|
||||
13301:blue
|
||||
13302:blue
|
||||
13303:blue
|
||||
@@ -81,6 +92,8 @@
|
||||
13416:purple
|
||||
13417:purple
|
||||
13419:purple
|
||||
13424:purple
|
||||
13425:purple
|
||||
13501:yellow
|
||||
13502:yellow
|
||||
13504:yellow
|
||||
@@ -88,6 +101,8 @@
|
||||
13507:yellow
|
||||
13509:yellow
|
||||
13511:yellow
|
||||
14101:blue
|
||||
14201:blue
|
||||
14301:blue
|
||||
14302:blue
|
||||
14303:blue
|
||||
@@ -110,6 +125,8 @@
|
||||
14415:purple
|
||||
14416:purple
|
||||
14417:purple
|
||||
14424:purple
|
||||
14425:purple
|
||||
14501:yellow
|
||||
14502:yellow
|
||||
14504:yellow
|
||||
@@ -117,6 +134,8 @@
|
||||
14509:yellow
|
||||
14511:yellow
|
||||
14512:yellow
|
||||
15101:blue
|
||||
15201:blue
|
||||
15301:blue
|
||||
15302:blue
|
||||
15303:blue
|
||||
@@ -141,6 +160,9 @@
|
||||
15416:purple
|
||||
15417:purple
|
||||
15418:purple
|
||||
15419:purple
|
||||
15424:purple
|
||||
15425:purple
|
||||
15501:yellow
|
||||
15502:yellow
|
||||
15503:yellow
|
||||
@@ -148,4 +170,4 @@
|
||||
15508:yellow
|
||||
15509:yellow
|
||||
15511:yellow
|
||||
20001:yellow
|
||||
15512:yellow
|
||||
|
@@ -89,7 +89,6 @@
|
||||
80089:Tatara Tales - Resolve the crisis at the Mikage Furnace.
|
||||
80090:Echo of Fury - Complete "Orobashi's Legacy."
|
||||
80091:Tales of Monstrous Madness - Collect the entire "Toki Alley Tales" series.
|
||||
80092:Illustrious in Inazuma - Reach Reputation Lv. 10 in Inazuma.
|
||||
80093:Lightning-Riding Adventurer (I) - Complete 6 Open World mechanism-activated Time Trial Challenges on Narukami Island, Kannazuka, and Yashiori Island in Inazuma.
|
||||
80094:Lightning-Riding Adventurer (I) - Complete 12 Open World mechanism-activated Time Trial Challenges on Narukami Island, Kannazuka, and Yashiori Island in Inazuma.
|
||||
80095:Lightning-Riding Adventurer (I) - Complete 24 Open World mechanism-activated Time Trial Challenges on Narukami Island, Kannazuka, and Yashiori Island in Inazuma.
|
||||
@@ -103,13 +102,13 @@
|
||||
80105:Lightning-Riding Treasure Hunter (II) - Open 40 chests on Watatsumi Island and Seirai Island in Inazuma.
|
||||
80106:Lightning-Riding Treasure Hunter (II) - Open 80 chests on Watatsumi Island and Seirai Island in Inazuma.
|
||||
80107:Lightning-Riding Treasure Hunter (II) - Open 160 chests on Watatsumi Island and Seirai Island in Inazuma.
|
||||
80108:Seirai Stormchasers - Complete "Seirai Stormchasers"
|
||||
80109:The Same Moonlight - Complete "The Moon-Bathed Deep"
|
||||
80110:Lightning-Riding Adventurer (II) - Complete 6 Open World mechanism-activated Time Trial Challenges on Watatsumi Island and Seirai Island in Inazuma.
|
||||
80111:Lightning-Riding Adventurer (II) - Complete 12 Open World mechanism-activated Time Trial Challenges on Watatsumi Island and Seirai Island in Inazuma.
|
||||
80112:Lightning-Riding Adventurer (II) - Complete 24 Open World mechanism-activated Time Trial Challenges on Watatsumi Island and Seirai Island in Inazuma.
|
||||
80108:Seirai Stormchasers - Complete "Seirai Stormchasers"
|
||||
80109:The Same Moonlight - Complete "The Moon-Bathed Deep"
|
||||
80113:Continental Explorer: Tsurumi Island - Light up the Tsurumi Island map.
|
||||
80114:Fog's Edge - Unlock all Teleport Waypoints in Tsurumi Island.
|
||||
80114:Fog's Edge - Unlock all Teleport Waypoints on Tsurumi Island.
|
||||
80115:Sanctuary Pilgrim: Tsurumi Island - Unlock all the Shrines of Depths on Tsurumi Island.
|
||||
80116:Flashes in the Night - Follow 6 Electro Seelie on Tsurumi Island.
|
||||
80119:Foggy Guidance - Follow 6 Seelie on Tsurumi Island to their Seelie Courts.
|
||||
@@ -157,7 +156,7 @@
|
||||
80161:Forest Roamer - Unlock all Teleport Waypoints in the following areas in Sumeru: Avidya Forest, Lokapala Jungle, Ardravi Valley, Ashavan Realm, Vissudha Field, Lost Nursery, and Vanarana.
|
||||
80162:Sanctuary Pilgrim: Sumeru Boscage - Unlock all the Shrines of Depths in the following areas in Sumeru: Avidya Forest, Lokapala Jungle, Ardravi Valley, Ashavan Realm, Vissudha Field, Lost Nursery, and Vanarana.
|
||||
80163:Fluorescent Bloom - Upgrade the Statues of The Seven in Sumeru to their maximum level.
|
||||
80164:Culmination of the Great Dream - Reach the Max Level of the Tree of Dreams in Vanarana
|
||||
80164:Culmination of the Great Dream - Reach the Max Level of the Tree of Dreams in Vanarana.
|
||||
80165:Woodland Guide - Follow a total of 10 Seelie to their Seelie Courts in Avidya Forest, Lokapala Jungle, Ardravi Valley, Ashavan Realm, Vissudha Field, Lost Nursery, and Vanarana.
|
||||
80166:Woodland Guide - Follow a total of 20 Seelie to their Seelie Courts in Avidya Forest, Lokapala Jungle, Ardravi Valley, Ashavan Realm, Vissudha Field, Lost Nursery, and Vanarana.
|
||||
80167:Woodland Guide - Follow a total of 40 Seelie to their Seelie Courts in Avidya Forest, Lokapala Jungle, Ardravi Valley, Ashavan Realm, Vissudha Field, Lost Nursery, and Vanarana.
|
||||
@@ -205,16 +204,15 @@
|
||||
80215:Chaos Divided - Defeat 2 or more Character Cards from the opponent's deck in one single action a total of {param0} time(s) in victorious games.
|
||||
80216:Chaos Divided - Defeat 2 or more Character Cards from the opponent's deck in one single action a total of {param0} time(s) in victorious games.
|
||||
80217:Chaos Divided - Defeat 2 or more Character Cards from the opponent's deck in one single action a total of {param0} time(s) in victorious games.
|
||||
80218:Legendary High Roller - Obtain {param0} Lucky Coins in total
|
||||
80219:Legendary High Roller - Obtain {param0} Lucky Coins in total
|
||||
80220:Legendary High Roller - Obtain {param0} Lucky Coins in total
|
||||
80218:Legendary High Roller - Obtain {param0} Lucky Coins in total.
|
||||
80219:Legendary High Roller - Obtain {param0} Lucky Coins in total.
|
||||
80220:Legendary High Roller - Obtain {param0} Lucky Coins in total.
|
||||
80221:Miniaturized Dice-Shaker - Deal 8 or more points of damage in one single action a total of {param0} time(s) in victorious games.
|
||||
80222:Miniaturized Dice-Shaker - Deal 8 or more points of damage in one single action a total of {param0} time(s) in victorious games.
|
||||
80223:Miniaturized Dice-Shaker - Deal 8 or more points of damage in one single action a total of {param0} time(s) in victorious games.
|
||||
80224:Continental Explorer: Dune Dreams (II) - Light up the maps of the following area in Sumeru: Desert of Hadramaveth.
|
||||
80225:Over Sandstorms and Mirages (II) - Unlock all Teleport Waypoints in the following area in Sumeru: Desert of Hadramaveth.
|
||||
80226:Sanctuary Pilgrim: Dune Dreams (II) - Unlock all the Shrines of Depths in the following area in Sumeru: Desert of Hadramaveth.
|
||||
80227:The Dirge of Bilqis - Complete "The Dirge of Bilqis."
|
||||
80228:The Desert Will Guide You Home (II) - Follow {param0} Seelie in the Desert of Hadramaveth to their Seelie Courts.
|
||||
80229:The Desert Will Guide You Home (II) - Follow {param0} Seelie in the Desert of Hadramaveth to their Seelie Courts.
|
||||
80230:The Desert Will Guide You Home (II) - Follow {param0} Seelie in the Desert of Hadramaveth to their Seelie Courts.
|
||||
@@ -224,6 +222,7 @@
|
||||
80234:Quicksand Adventurer (II) - Complete {param0} Open World Time Trial Challenges in the Desert of Hadramaveth.
|
||||
80235:Quicksand Adventurer (II) - Complete {param0} Open World Time Trial Challenges in the Desert of Hadramaveth.
|
||||
80236:Quicksand Adventurer (II) - Complete {param0} Open World Time Trial Challenges in the Desert of Hadramaveth.
|
||||
80227:The Dirge of Bilqis - Complete "The Dirge of Bilqis."
|
||||
80237:Continental Explorer: Blessed Hamada - Light up the maps of the following areas in Sumeru: Gavireh Lajavard and Realm of Farakhkert.
|
||||
80238:Descending Into the Depths of Desolation - Unlock all Teleport Waypoints in the following areas in Sumeru: Gavireh Lajavard and Realm of Farakhkert.
|
||||
80239:Sanctuary Pilgrim: Blessed Hamada - Unlock all the Shrines of Depths in the following areas in Sumeru: Gavireh Lajavard and Realm of Farakhkert.
|
||||
@@ -236,8 +235,28 @@
|
||||
80246:Badlands Adventurer - Complete a total of {param0} Open World Time Trial Challenges in Gavireh Lajavard and Realm of Farakhkert.
|
||||
80247:Badlands Adventurer - Complete a total of {param0} Open World Time Trial Challenges in Gavireh Lajavard and Realm of Farakhkert.
|
||||
80248:Badlands Adventurer - Complete a total of {param0} Open World Time Trial Challenges in Gavireh Lajavard and Realm of Farakhkert.
|
||||
80249:Khvarena of Good and Evil - Complete "Khvarena of Good and Evil."
|
||||
80250:Alkanet Amrita - Upgrade the Amrita Pool to its maximum level.
|
||||
80249:Khvarena of Good and Evil - Complete "Khvarena of Good and Evil."
|
||||
80252:Continental Explorer: Land of Harmonious Springs (I) - Light up the maps of the following areas in Fontaine: Court of Fontaine Region, Belleau Region, and Beryl Region.
|
||||
80253:Font of All Waters (I) - Unlock all Teleport Waypoints in the following areas in Fontaine: Court of Fontaine Region, Belleau Region, and Beryl Region.
|
||||
80254:Sanctuary Pilgrim: Land of Harmonious Springs (I) - Unlock all the Shrines of Depths in the following areas in Fontaine: Court of Fontaine Region, Belleau Region, and Beryl Region.
|
||||
80255:Like Waters Clear - Upgrade the Statues of The Seven in Fontaine to their maximum level.
|
||||
80256:Dew Song - Reach the Max Level of the Fountain of Lucine in the Court of Fontaine.
|
||||
80257:Tides Will Guide You Home (I) - Follow {param0} Seelie in the Court of Fontaine Region, Belleau Region, and Beryl Region to their Seelie Courts.
|
||||
80258:Tides Will Guide You Home (I) - Follow {param0} Seelie in the Court of Fontaine Region, Belleau Region, and Beryl Region to their Seelie Courts.
|
||||
80259:Tides Will Guide You Home (I) - Follow {param0} Seelie in the Court of Fontaine Region, Belleau Region, and Beryl Region to their Seelie Courts.
|
||||
80260:Waveriding Treasure Hunter (I) - Open {param0} chests in the Court of Fontaine Region, Belleau Region, and Beryl Region.
|
||||
80261:Waveriding Treasure Hunter (I) - Open {param0} chests in the Court of Fontaine Region, Belleau Region, and Beryl Region.
|
||||
80262:Waveriding Treasure Hunter (I) - Open {param0} chests in the Court of Fontaine Region, Belleau Region, and Beryl Region.
|
||||
80263:Waveriding Adventurer (I) - Complete {param0} Open World Time Trial Challenges in the Court of Fontaine Region, Belleau Region, and Beryl Region.
|
||||
80264:Waveriding Adventurer (I) - Complete {param0} Open World Time Trial Challenges in the Court of Fontaine Region, Belleau Region, and Beryl Region.
|
||||
80265:Waveriding Adventurer (I) - Complete {param0} Open World Time Trial Challenges in the Court of Fontaine Region, Belleau Region, and Beryl Region.
|
||||
80266:Ann in Wonderland - Complete the tale of the Narzissenkreuz Adventure Team.
|
||||
80267:Limner, Dreamer, and Robotic Dog - Discover the secret to be found within Elynas.
|
||||
80268:Land of Fair Springs - Obtain the power of Hydro.
|
||||
80269:Renart the Deceiver - Collect the entire "Fables de Fontaine" series.
|
||||
80270:Robben versus Chesterton - Collect the entire "Robben versus Chesterton: Iridescent Brooch" series.
|
||||
80271:Compendium of Misery - Collect the entire "The History of the Decline and Fall of Remuria" series.
|
||||
81000:Overlooking View - Reach the very top of Qingyun Peak.
|
||||
81001:The Remains of the Gale - Reach the top of the tower in Stormterror's Lair.
|
||||
81002:"Seeds of Stories, Brought by the Wind..." - Reach the nameless island northeast of Mondstadt.
|
||||
@@ -257,6 +276,7 @@
|
||||
81023:Friends the World Over - Meet all sorts of people during your adventure.
|
||||
81024:Megastar in Mondstadt - Reach Reputation Lv. 8 in Mondstadt.
|
||||
81025:Legend in Liyue - Reach Reputation Lv. 8 in Liyue.
|
||||
80092:Illustrious in Inazuma - Reach Reputation Lv. 10 in Inazuma.
|
||||
81026:QUEST CLEAR - Complete 10 Bounties.
|
||||
81027:QUEST CLEAR - Complete 20 Bounties.
|
||||
81028:QUEST CLEAR - Complete 30 Bounties.
|
||||
@@ -453,7 +473,7 @@
|
||||
81238:Vamadha-Go-Round - Turn every Vamadha that holds a hidden treasure chest.
|
||||
81239:In the Name of Anfortas - Visit the place where the heroes met their end.
|
||||
81240:Call of the Nameless City - Quiet the mysterious parchment.
|
||||
81241:Walking with Water and Wind - Complete "Until Vana is Healed."
|
||||
81241:Walking with Water and Wind - Complete "Until Vana Is Healed."
|
||||
81242:...Let Me Fade With Memory - Complete "Vimana Agama."
|
||||
81243:Now Let Time Resume - Complete Aradasha's unfinished business.
|
||||
81244:Please Play Safely - Play with the Aranara in the forest.
|
||||
@@ -538,6 +558,7 @@
|
||||
81327:A Fascinating Journey - Complete "An Artist Adrift."
|
||||
81328:"This Mystery Is Solved!" - Complete "Monumental Study."
|
||||
81329:Homeward-Bound Spirits - Complete "Pale Fire."
|
||||
81339:The Sea of Fertility - All the ponds in the Vourukasha Oasis are now revitalized.
|
||||
81331:The Brave Shall Not Falter - Pass all the trials set by Jarjar.
|
||||
81332:Bifröst - Complete all the "Soul Bell" challenges.
|
||||
81333:Seven Dish Dance - Complete all "Percussive Prancing Mushroom" challenges.
|
||||
@@ -546,7 +567,39 @@
|
||||
81336:Soaring in the Skies of Sary-Ozek - Keep Sorush in flight for a while.
|
||||
81337:Whose Descendant Are You, and What's Your Name? - Call upon the power of Khvarena with Sorush for the first time.
|
||||
81338:Use the Force, Sorush - Launch Nirodha Fruits with Sorush's help to melt {param0} crystals condensed from Amrita.
|
||||
81339:The Sea of Fertility - All the ponds in the Vourukasha Oasis are now revitalized.
|
||||
81340:Angle Eraser - Suppress the Beastly Rift using the power of the crystals.
|
||||
81341:Core Cooling - Cause the roiling lake to become placid once more.
|
||||
81342:The White Ship - "She's sailing on the sea of dreams..."
|
||||
81344:Encyclopedia of Natural Philosophy - Use the glass wall and an indecipherable book to discover the gathering place of an old society.
|
||||
81345:A Fontainian Message - Have a friendly chat with Virgil.
|
||||
81346:Nothing but a Hound Dog... - Help Mamere fix Seymour.
|
||||
81347:It's Fish, I Added Fish - Taste the wonderful "birthday cake" with the Melusine.
|
||||
81348:Welcome to Fontaine - Complete a cruise on the aquabus.
|
||||
81349:Sogno di Volare - Complete a flight with the Antoine Roger Aircraft.
|
||||
81350:Birth of the Modern Clock - Help Puca find a way to "use" the ore.
|
||||
81351:Waterworld Future - Gaze upon the "water" beneath the "surface."
|
||||
81352:Aesthetics of Ugliness - And thus does Fontaine take two steps further toward beauty.
|
||||
81353:Like Tears in the Rain - Find the impostor amidst the Hunter's Rays.
|
||||
81355:These Are a Few of My... - ...Favorite Things.
|
||||
81356:An Eye for an Eye - Take care of those annoying Bullet Barnacles!
|
||||
81357:Do You Believe In Rapture? - Help build a Blubberbeast paradise.
|
||||
81358:Hardships Experienced... - "To obtain the holy blade that might defeat the demon king, the knight broke into the ancient city, sealed using magic..."
|
||||
81359:And After That... - "The knight defeated the demon king, saving the imprisoned princess. Light has returned to the kingdom..."
|
||||
81360:A Study in Sable - Find a more... special subject of the Institute of Natural Philosophy's study.
|
||||
81361:Twenty Thousand Leagues Under the Sea - Go with the flow...
|
||||
81362:Truly Mouthwatering! - Help Henri change his fate.
|
||||
81363:Song of the Ancients - Hear now the melody of ancient eons.
|
||||
81364:Ninianne of the Lake - Defeat the local legend, Ninianne of the Lake.
|
||||
81365:Vivianne of the Lake - Defeat the local legend, Vivianne of the Lake.
|
||||
81366:Fontaine Expects That Everyone Will Do Their Duty - An item, returned to its rightful owner...
|
||||
81367:In Search of Frittered Time - Reach Reputation Lv. 10 in Fontaine.
|
||||
81368:Blubby, Chubby, Creative Evolution - Accompany the small Blubberbeast as it grows big and strong.
|
||||
81369:Ocean Circuit Judge - Defeat the local legend, Ocean Circuit Judge.
|
||||
81370:Iron Viscount - Defeat the local legend, Iron Viscount.
|
||||
81371:Dobharcu, Lord of the Hidden - Defeat the local legend, Dobharcu, Lord of the Hidden.
|
||||
81372:Fading Veteran - Defeat the local legend, Fading Veteran.
|
||||
81373:Swords of the Gorge - Defeat the local legends, the Swords of the Gorge.
|
||||
81374:The Fairy Knight Twins - Defeat the local legends, the Fairy Knight Twins
|
||||
82001:Nothing Special, Just Practice - Hit a falcon mid-flight with your bow.
|
||||
82002:Master Sniper - Strike an opponent's weak point from afar with an Aimed Shot.
|
||||
82003:Der Freischütz - Strike an opponent's weak point from extremely far away with an Aimed Shot.
|
||||
@@ -642,6 +695,7 @@
|
||||
82096:I'll Skip the Spa, Thanks - Defeat a Mirror Maiden without being trapped by its Water Prison.
|
||||
82097:It's Quiet... Too Quiet... - Defeat the Pyro Hypostasis after it enters its extinguished state only once
|
||||
82098:The Battle of Narukami Island - Defeat the Perpetual Mechanical Array in its weakened state.
|
||||
82109:The Finishing Touch - Defeat Azhdaha without ever having gained a shield.
|
||||
82099:If I Run Fast Enough... - Defeat a Maguu Kenki without being hit by its phantom's attacks.
|
||||
82100:In This Solemn Matter Let No One Interfere! - Defeat a Maguu Kenki without triggering its "Oushi no Omote" parry.
|
||||
82101:Fine, I'll Do It Myself - Defeat a Primo Geovishap without reflecting its Primordial Shower.
|
||||
@@ -652,7 +706,6 @@
|
||||
82106:Fight Fire With Fire - Defeat a Kairagi: Fiery Might while their weapon is infused with Pyro.
|
||||
82107:Ride the Lightning - Defeat a Kairagi: Dancing Thunder while their weapon is infused with Electro.
|
||||
82108:I Hear Thunder... - Be struck by the lightning called down by a Crackling Axe Mitachurl...
|
||||
82109:The Finishing Touch - Defeat Azhdaha without ever having gained a shield.
|
||||
82110:Dry Clean - Defeat the Hydro Hypostasis without destroying a single one of its Water Droplets (except when it is restoring HP.)
|
||||
82111:Bio-Oceanic Weapon - Be hit by a certain animal created by the Hydro Hypostasis...
|
||||
82112:Love and Non-Communication - Defeat a Thunder Manifestation without ever being locked onto.
|
||||
@@ -687,7 +740,7 @@
|
||||
82141:Daisy, Daisy - Break the Algorithm of Semi-Intransient Matrix of Overseer Network by hitting its cores with the Quicken, Aggravate, or Spread reactions.
|
||||
82142:Stop It, Mr. Robot! - Interrupt the charged attack of the Aeonblight Drake by attacking the core on its head.
|
||||
82143:Nanomachines, Son! - Defeat an activated Jadeplume Terrorshroom while it is unleashing a powerful skill...
|
||||
82144:Establishing a Beachhead - Witness the overclocking impact of the Algorithm of Semi-Intransient Matrix of Overseer Network
|
||||
82144:Establishing a Beachhead - Witness the overclocking impact of the Algorithm of Semi-Intransient Matrix of Overseer Network.
|
||||
82145:The Invisible Hand - Defeat the Primal Construct without disabling its invisible state.
|
||||
82146:Grassy Blasty, Sparks 'n' Splash - Defeat 4 opponents with Burgeon within 2s (x1).
|
||||
82147:Grassy Blasty, Sparks 'n' Splash - Defeat 4 opponents with Burgeon within 2s (x5).
|
||||
@@ -710,6 +763,12 @@
|
||||
82167:Proof by Exhaustion - Defeat Iniquitous Baptists of all possible elemental combinations.
|
||||
82168:When You Say Nothing at All - Destroy all Elemental Rings to paralyze the Iniquitous Baptist when it begins to channel its attack.
|
||||
82169:Like the Sun's Passage - Defeat the Guardian of Apep's Oasis without any character being attacked by aftershocks of the apocalypse.
|
||||
82175:The White Path Between Two Rivers - Lose in the duel against the legendary Hunter's Ray...
|
||||
82176:Cell, Splinter - Use Pneuma or Ousia attacks to interrupt the Breacher Primus's stress state.
|
||||
82177:Too Hot to Handle! - Constantly attempt to freeze Tainted Hydro Phantasms...
|
||||
82178:Funerary Storm - Use a Pneuma attack to weaken the whirlwind Coppelia creates during the performance's climax.
|
||||
82179:The King Is Dead, Long Live the King! - Interrupt the Emperor of Fire and Iron's Searing Coronation.
|
||||
82180:Icebound Oath - Use an Ousia attack to remove the shield that Coppelius deploys during the performance's climax.
|
||||
84000:The End of the Beginning - Complete the Mondstadt Archon Quests.
|
||||
84001:The Outlander Who Caught the Wind - Complete "The Outlander Who Caught the Wind."
|
||||
84002:For a Tomorrow Without Tears - Complete "For a Tomorrow Without Tears."
|
||||
@@ -734,10 +793,8 @@
|
||||
84021:I'll Let You Off... This Time - Defeat Childe.
|
||||
84022:Derailed - Defeat the Overlord of the Vortex.
|
||||
84023:Final Farewell - Take part in the Rite of Parting.
|
||||
84024:A New Star Approaches - Complete "A New Star Approaches".
|
||||
84024:A New Star Approaches - Complete "A New Star Approaches."
|
||||
84025:Gears of Destiny - Complete the quest "Bough Keeper: Dainsleif".
|
||||
84026:Fantastic Voyage: Prologue - Complete "Fantastic Voyage" and unlock all endings.
|
||||
84028:Behold, Mine Evil-Espying Eye! - Correctly interpret all clues.
|
||||
84029:The Bandit, the Lunatic, and the Pitch-Black Enigma - Uncover the Grand Thief's fate.
|
||||
84030:Where Fate Comes to a Crossroads - Escape the eerie ruins.
|
||||
84031:Sneering at the Power of the Gods - Learn of the "Loom of Fate"...
|
||||
@@ -762,9 +819,7 @@
|
||||
84050:Duel Before the Throne - Emerge victorious in the duel before the throne.
|
||||
84051:Their Wishes - Bring all the wishes upon the Statue of the Omnipresent God to fruition.
|
||||
84052:Omnipresence Over Mortals - Complete "Omnipresence Over Mortals."
|
||||
84053:"All is Well" - Help Wang Ping'an renovate Pervases' temple.
|
||||
84054:Anna's Adventures - Help Anna become an adventurer.
|
||||
84055:Prelude to the Journey - A young man is about to embark on a long journey...
|
||||
84053:"All Is Well" - Help Wang Ping'an renovate Pervases' temple.
|
||||
84056:Rise of the Jade Chamber - Complete the reconstruction of the Jade Chamber.
|
||||
84057:Majesty of the Deep - Defeat Beisht, Avenger of the Vortex.
|
||||
84058:A Former Dream - Witness the truth of the village's history.
|
||||
@@ -805,52 +860,14 @@
|
||||
84093:The Sickness Unto Near-Death - Create the medicine that will bring hope.
|
||||
84094:The Far Side of Fate - Witness the miracle granted by the "Sinner."
|
||||
84095:Caribert - Complete "Caribert."
|
||||
84100:Archaic Lord of Lightning and Blitz - Witness the awesome meteorological power of Bennett's phenomenally bad luck.
|
||||
84101:The Power of Luck - Activate the mechanisms and obtain the treasure without making any mistakes.
|
||||
84102:A Line That May Be Crossed - Complete "Wellspring of Healing" and unlock all endings.
|
||||
84103:A Maid of Strength and Virtue - Complete "Chivalric Training" and unlock all endings.
|
||||
84104:Evil Is Banished - Complete "Signs of Evil" and unlock all endings.
|
||||
84105:Mondstadt's Spiciest Surprise - Sample Barbara's Chilibrew.
|
||||
84106:"...For I Am Duty Bound" - Help Noelle discover the source of her strength.
|
||||
84107:Red Hot Chili Popsicles - Make a popsicle using the wrong recipe and provoke Chongyun's Pure-Yang Spirit.
|
||||
84108:An Idol's Last Line of Defense - Successfully persuade Albert and Barbara's other fans to leave.
|
||||
84109:A World Known Only Unto Roses - Read Noelle's study notes.
|
||||
84110:Stress Relief - Complete "Knightly Exam Prep" and unlock all endings.
|
||||
84111:Invulnerable Maid-Knight - Listen to "A Knight's Journey Through Liyue" with Noelle.
|
||||
84112:Mondstadt's Note-Taker General - Read Noelle's study notes.
|
||||
84113:Diona Special, Stirred, Not Shaken - Complete "The Cat and the Cocktail" and unlock all endings.
|
||||
84114:But There's a Catch... - Help Diona find a special base drink.
|
||||
84115:Kitten Queen - Bring all the cats back to The Cat's Tail.
|
||||
84116:Everyone's Happy - Complete "A Housekeeper's Daily Chores" and unlock all endings.
|
||||
84117:Housekeeper Extraordinaire - Complete the big cleanup within the time limit
|
||||
84118:From the Sea Never Returning - Learn of Inu Shoushou's story together with Thoma
|
||||
84119:Taller by Half - Complete "Yoohoo Art: Seichou no Jutsu" and unlock all endings.
|
||||
84120:Mujina-Class Ninja - Obtain Sayu's highest rating during agility training.
|
||||
84121:Dish Effect: Mobility Decreased - You were unable to prevent Sayu's reckless consumption...
|
||||
84122:Honorary Crux Member - Complete "When the Crux Shines Bright" and unlock all endings.
|
||||
84123:Wine Unburdens - Take part in the Qingce banquet with Beidou
|
||||
84124:Guyun Buyers' Club - Find out the truth behind the deal Beidou's making
|
||||
84125:General of Watatsumi - Complete "The Canine General's Special Operations" and unlock all endings
|
||||
84126:Changing Times - Draw all fortune slips at the Grand Narukami Shrine.
|
||||
84127:To Tell or Not to Tell, That Is the Question - Discover Ms. Hina's true identity at the Yae Publishing House.
|
||||
84128:Megrez's Companion Star - Complete "The Jade Chamber's Returning Guest" and unlock all endings.
|
||||
84129:You've Got to Have Reserves - Fish? The more the merrier, of course!
|
||||
84130:Overprotectiveness - A single stone births a thousand ripples. It seems like Ningguang's day off is not to be.
|
||||
84131:The Lingering Song - Complete "A Song That Knows Grace" and unlock all endings.
|
||||
84132:May This Moment Be Made to Last - Take a commemorative photo with Yun Jin.
|
||||
84133:A Strict Master Trains a Talented Pupil - Complete the practice session without hitting a single blue scarecrow.
|
||||
84134:Arataki Gang Chief Advisor - Complete "The Gang's Daily Deeds" and unlock all endings.
|
||||
84135:One More Look! - Gaze upon the glory that is Kuki Shinobu in a shrine maiden outfit.
|
||||
84136:"Upstairs..." - Be dissuaded before alerting Kujou Sara and Kuki Shinobu.
|
||||
84137:You Thought We Were For Real, Eh? - Complete "Trap 'Em by Storm" and unlock all endings.
|
||||
84138:An Ideal Detective Am I - Correctly analyze the motives and the truth behind the crime the first time.
|
||||
84139:Sangonomiya Supplications - Ask Gorou whether Kokomi knows about the happenings on Watatsumi Island.
|
||||
84140:Optimal Solution - Complete "A Confounding Conundrum" and unlock all endings.
|
||||
84141:To You in a Hundred Years - Read all the letters sent to Faruzan.
|
||||
84142:Mechanics: From Beginner to...? - Guess correctly the smallest number of moves it will take to solve a seven-layer Pagoda Stack.
|
||||
84143:The Name Is Layla - Complete "Ever Silent Stars" and unlock all endings.
|
||||
84144:She's Already Tense - Help Layla finish her thesis without causing her further anxiety.
|
||||
84145:Secret of Seelie and the Star-Lit Sky - Obtain the authentic letter of the Wisdom Seelie.
|
||||
84096:Like Water Disappearing Into Water - Hear about the "prophecy" that has been circulating around Fontaine.
|
||||
84097:A Detective in Action - Investigate the truth of the incident as Lyney's "attorney."
|
||||
84098:A Twist of Great Magic - The Oratrice Mecanique d'Analyse Cardinale has delivered a verdict of not guilty.
|
||||
84099:Prelude of Blancheur and Noirceur - Complete "Prelude of Blancheur and Noirceur."
|
||||
84300:Lennék én folyóvíz - Hear the Oceanid's call and connect with her consciousness.
|
||||
84301:Once Upon a Time in Fleuve Cendre - Learn about Navia's father at the Spina di Rosula's stronghold.
|
||||
84302:Tragedy Repeats Itself - Reveal the truth behind the "serial disappearances case."
|
||||
84303:As Light Rain Falls Without Reason - Complete "As Light Rain Falls Without Reason."
|
||||
84501:...Odomu? - Successfully conduct cultural exchange with the hilichurls in "Language Exchange."
|
||||
84502:Yo dala? - Successfully conduct cultural exchange with the hilichurls in "Poetry Exchange."
|
||||
84503:Perfectionist - Complete all of Tsarevich's commissions flawlessly in "Reliable Helper."
|
||||
@@ -891,6 +908,8 @@
|
||||
84540:Guess Who? - Find out who Zhenyu really is.
|
||||
84541:Well, At Least It Ended - Hear Junkichi out as he puts his story together.
|
||||
84542:Her and Her Cat - Follow Neko up Mt. Yougou to find "Hibiki"'s trail.
|
||||
84054:Anna's Adventures - Help Anna become an adventurer.
|
||||
84055:Prelude to the Journey - A young man is about to embark on a long journey...
|
||||
84543:Aha! What's on the Hook? - Fish some strange things up with Kayvan...
|
||||
84544:Kalimi's Fungus - Watch Hatim make a killing on the exchange!
|
||||
84545:When Wealth Comes A-Knockin' - Give Hatim some Apple Cider.
|
||||
@@ -914,6 +933,11 @@
|
||||
84563:A Lingering Fragrance - Witness Nermin's tale.
|
||||
84564:Swordseeker - Witness the tale of Lan and the "Unseen Razor."
|
||||
84565:To Walk The Horizon...? - Witness Sun Yu's tale.
|
||||
84566:Office on the Avenue - Witness various miscellaneous matters in the Court of Fontaine.
|
||||
84567:Not Your Average Joe - Brew a special blend of coffee.
|
||||
84568:Aesthetic Critique - Listen to Depierris' theories regarding "aesthetics."
|
||||
84569:Second Childhood - Play with the kids, and witness their story.
|
||||
84570:A Sudden Squall - Witness Iaune's work travails.
|
||||
85000:Nothing to Lose But Time - Unlock the secrets of two sundials.
|
||||
85001:Interview With a Bygone God - Hear the story of a bygone deity.
|
||||
85002:Crouching Dragon, Hidden Chi - Learn about the tale of the Chi.
|
||||
@@ -921,6 +945,60 @@
|
||||
85004:Shadow Over Luhua Pool - Help Vermeer get the scenery of his dreams.
|
||||
85005:Ready Player Zero - Play a simple game with Childish Jiang.
|
||||
85006:Trees Should Blend Their Roots and Shade, for That Is Where the Home Is Made - Witness the story of Yuan Hong's household.
|
||||
84026:Fantastic Voyage: Prologue - Complete "Fantastic Voyage" and unlock all endings.
|
||||
84100:Archaic Lord of Lightning and Blitz - Witness the awesome meteorological power of Bennett's phenomenally bad luck.
|
||||
84101:The Power of Luck - Activate the mechanisms and obtain the treasure without making any mistakes.
|
||||
84104:Evil Is Banished - Complete "Signs of Evil" and unlock all endings.
|
||||
84028:Behold, Mine Evil-Espying Eye! - Correctly interpret all clues.
|
||||
84107:Red Hot Chili Popsicles - Make a popsicle using the wrong recipe and provoke Chongyun's Pure-Yang Spirit.
|
||||
84102:A Line That May Be Crossed - Complete "Wellspring of Healing" and unlock all endings.
|
||||
84108:An Idol's Last Line of Defense - Successfully persuade Albert and Barbara's other fans to leave.
|
||||
84105:Mondstadt's Spiciest Surprise - Sample Barbara's Chilibrew.
|
||||
84103:A Maid of Strength and Virtue - Complete "Chivalric Training" and unlock all endings.
|
||||
84106:"...For I Am Duty Bound" - Help Noelle discover the source of her strength.
|
||||
84109:A World Known Only Unto Roses - Read Noelle's study notes.
|
||||
84110:Stress Relief - Complete "Knightly Exam Prep" and unlock all endings.
|
||||
84111:Invulnerable Maid-Knight - Listen to "A Knight's Journey Through Liyue" with Noelle.
|
||||
84112:Mondstadt's Note-Taker General - Read Noelle's study notes.
|
||||
84113:Diona Special, Stirred, Not Shaken - Complete "The Cat and the Cocktail" and unlock all endings.
|
||||
84114:But There's a Catch... - Help Diona find a special base drink.
|
||||
84115:Kitten Queen - Bring all the cats back to The Cat's Tail.
|
||||
84116:Everyone's Happy - Complete "A Housekeeper's Daily Chores" and unlock all endings.
|
||||
84117:Housekeeper Extraordinaire - Complete the big cleanup within the time limit
|
||||
84118:From the Sea Never Returning - Learn of Inu Shoushou's story together with Thoma
|
||||
84119:Taller by Half - Complete "Yoohoo Art: Seichou no Jutsu" and unlock all endings.
|
||||
84120:Mujina-Class Ninja - Obtain Sayu's highest rating during agility training.
|
||||
84121:Dish Effect: Mobility Decreased - You were unable to prevent Sayu's reckless consumption...
|
||||
84122:Honorary Crux Member - Complete "When the Crux Shines Bright" and unlock all endings.
|
||||
84123:Wine Unburdens - Take part in the Qingce banquet with Beidou
|
||||
84124:Guyun Buyers' Club - Find out the truth behind the deal Beidou's making
|
||||
84125:General of Watatsumi - Complete "The Canine General's Special Operations" and unlock all endings
|
||||
84126:Changing Times - Draw all fortune slips at the Grand Narukami Shrine.
|
||||
84127:To Tell or Not to Tell, That Is the Question - Discover Ms. Hina's true identity at the Yae Publishing House.
|
||||
84128:Megrez's Companion Star - Complete "The Jade Chamber's Returning Guest" and unlock all endings.
|
||||
84129:You've Got to Have Reserves - Fish? The more the merrier, of course!
|
||||
84130:Overprotectiveness - A single stone births a thousand ripples. It seems like Ningguang's day off is not to be.
|
||||
84131:The Lingering Song - Complete "A Song That Knows Grace" and unlock all endings.
|
||||
84132:May This Moment Be Made to Last - Take a commemorative photo with Yun Jin.
|
||||
84133:A Strict Master Trains a Talented Pupil - Complete the practice session without hitting a single blue scarecrow.
|
||||
84134:Arataki Gang Chief Advisor - Complete "The Gang's Daily Deeds" and unlock all endings.
|
||||
84135:One More Look! - Gaze upon the glory that is Kuki Shinobu in a shrine maiden outfit.
|
||||
84136:"Upstairs..." - Be dissuaded before alerting Kujou Sara and Kuki Shinobu.
|
||||
84137:You Thought We Were For Real, Eh? - Complete "Trap 'Em by Storm" and unlock all endings.
|
||||
84138:An Ideal Detective Am I - Correctly analyze the motives and the truth behind the crime the first time.
|
||||
84139:Sangonomiya Supplications - Ask Gorou whether Kokomi knows about the happenings on Watatsumi Island.
|
||||
84140:Optimal Solution - Complete "A Confounding Conundrum" and unlock all endings.
|
||||
84141:To You in a Hundred Years - Read all the letters sent to Faruzan.
|
||||
84142:Mechanics: From Beginner to...? - Guess correctly the smallest number of moves it will take to solve a seven-layer Pagoda Stack.
|
||||
84143:The Name Is Layla - Complete "Ever Silent Stars" and unlock all endings.
|
||||
84144:She's Already Tense - Help Layla finish her thesis without causing her further anxiety.
|
||||
84145:Secret of Seelie and the Star-Lit Sky - Obtain the authentic letter of the Wisdom Seelie.
|
||||
84146:Art and Life - Complete "The Pendulum of Weal and Woe" and unlock all endings.
|
||||
84147:School Days - Find the annotated books in the House of Daena.
|
||||
84148:An Architect's Romanticism - Chat about the future with Kaveh in the desert.
|
||||
84149:Make Merry - Complete "Shenanigans and Sweet Wine" and unlock all endings.
|
||||
84150:Lucky Coin - Participate in the wager set up by Kaeya.
|
||||
84151:Shh... Listen! - Listen to the voice coming from the confinement room.
|
||||
86001:You Came, You Saw, We Co-Oped - Complete Domains together with other players 5 times.
|
||||
86002:You Came, You Saw, We Co-Oped - Complete Domains together with other players 20 times.
|
||||
86003:You Came, You Saw, We Co-Oped - Complete Domains together with other players 100 times.
|
||||
@@ -934,13 +1012,13 @@
|
||||
86011:This Is Fine - Defeat a Pyro Regisvine in Co-Op Mode.
|
||||
86012:A Fish Called Rhodeia - Defeat an Oceanid in Co-Op Mode.
|
||||
86013:Wolf Pact - Defeat the king of Wolvendom in Co-Op Mode.
|
||||
86021:A Delusion's Abilities Don't Decide a Battle's Outcome - Defeat Childe in Co-Op Mode.
|
||||
86015:Moving Mountains - Defeat a Primo Geovishap in Co-Op Mode.
|
||||
86016:Blast From the Past - Defeat Azhdaha in Co-Op Mode.
|
||||
86017:Put on Ice - Defeat a Cryo Hypostasis in Co-Op Mode.
|
||||
86018:No Strings Attached, Anymore - Defeat a Maguu Kenki in Co-Op Mode.
|
||||
86019:Operation Bonfire - Defeat a Pyro Hypostasis in Co-Op Mode.
|
||||
86020:The Not-So-Perpetual Mechanical Array - Defeat a Perpetual Mechanic Array in Co-Op Mode.
|
||||
86021:A Delusion's Abilities Don't Decide a Battle's Outcome - Defeat Childe in Co-Op Mode.
|
||||
86022:Our Hearts as One - Defeat a Thunder Manifestation in Co-Op Mode.
|
||||
86023:Water, Basically - Defeat a Hydro Hypostasis in Co-Op Mode.
|
||||
86024:Dashing Through the Snow... and the Flames - Defeat Signora in Co-Op Mode.
|
||||
@@ -948,4 +1026,13 @@
|
||||
86026:Brave the Lightning's Glow... - Defeat the Raiden Shogun in Co-Op Mode.
|
||||
86027:Surpassing the Ancients' Wisdom - Defeat the Ruin Serpent in Co-Op Mode.
|
||||
86028:I'm a Flexitarian - Defeat a Jadeplume Terrorshroom in Co-Op Mode.
|
||||
86029:Electric Shock Hazard - Defeat an Electro Regisvine in Co-Op Mode.
|
||||
86029:Electric Shock Hazard - Defeat an Electro Regisvine in Co-Op Mode.
|
||||
86030:End of the Eternal Return - Defeat the Aeonblight Drake in Co-Op Mode.
|
||||
86031:Ever So Slightly Inferior - Defeat the Algorithm of Semi-Intransient Matrix of Overseer Network in Co-Op Mode.
|
||||
86032:The Greenery Out of Space - Defeat a Dendro Hypostasis in Co-Op Mode.
|
||||
86033:Dance Like You Want to Win! - Defeat Shouki no Kami, the Prodigal in Co-Op Mode.
|
||||
86034:Desert-Dwellers' Rite of Passage - Defeat the Setekh Wenut in Co-Op Mode.
|
||||
86035:Presumption of Guilt - Defeat the Iniquitous Baptist in Co-Op Mode.
|
||||
86036:Proof of the Reed Sea Conqueror - Defeat the Guardian of Apep's Oasis in Co-Op Mode.
|
||||
86037:The Power of Science is Staggering! - Complete one form of the "Icewind Suite" challenge in Co-Op Mode.
|
||||
86038:A Successful Hunt - Defeat the Emperor of Fire and Iron in Co-Op Mode.
|
||||
|
232
Source/GrasscutterTools/Resources/en-us/Activity.txt
Normal file
@@ -0,0 +1,232 @@
|
||||
// Activity
|
||||
2001:Unreconciled Stars
|
||||
2002:Lantern Rite
|
||||
2003:Windblume Festival
|
||||
2004:Energy Amplifier
|
||||
2005:Midsummer Island Adventure
|
||||
2006:Thunder Sojourn
|
||||
2007:Moonlight Merriment
|
||||
2008:Labyrinth Warriors
|
||||
2009:Shadows Amidst Snowstorms
|
||||
2010:Fleeting Colors in Flight
|
||||
2011:Three Realms Gateway Offering
|
||||
2012:Hues of the Violet Garden
|
||||
2013:Perilous Trail
|
||||
2014:Summertime Odyssey
|
||||
2015:Graven Innocence
|
||||
2016:Of Ballads and Brews
|
||||
2017:Fabulous Fungus Frenzy
|
||||
2018:Akitsu Kimodameshi
|
||||
2019:The Exquisite Night Chimes
|
||||
2020:Windblume's Breath
|
||||
2021:A Parade of Providence
|
||||
2022:Duel! The Summoners' Summit!
|
||||
2023:Secret Summer Paradise
|
||||
2024:Mega Meka Melee
|
||||
// 1.0
|
||||
1001:Lantern Rite
|
||||
5001:Elemental Crucible
|
||||
5002:Test Run
|
||||
5003:Marvelous Merchandise
|
||||
// 1.1
|
||||
5004:Astrolabos Chapter
|
||||
5005:Elemental Crucible
|
||||
5006:While It's Warm
|
||||
5007:Gliding Challenge
|
||||
5009:Historia Antiqua Chapter
|
||||
5010:Monoceros Caeli Chapter
|
||||
// 1.2
|
||||
3001:The Chalk Prince and the Dragon
|
||||
5008:Pristina Nola Chapter
|
||||
5011:Lost Riches
|
||||
5012:Marvelous Merchandise
|
||||
5014:Hypostatic Symphony
|
||||
// 1.3
|
||||
5015:Sinae Unicornis Chapter
|
||||
5016:Five Flushes of Fortune
|
||||
5017:Vishaps and Where to Find Them
|
||||
6002:Even Mountains Tremble
|
||||
6003:Outland Gastronomy
|
||||
5018:Papilio Charontis Chapter
|
||||
5019:Contending Tides
|
||||
// 1.4
|
||||
5020:Wishful Drops
|
||||
5021:Hangout Event
|
||||
// 1.5
|
||||
5022:Battlefront: Misty Dungeon
|
||||
5023:Windtrace
|
||||
5024:Mimi Tomo
|
||||
5025:Historia Antiqua Chapter
|
||||
5026:Chilled to the Bone
|
||||
5027:A Teapot to Call Home
|
||||
5028:Hangout Event
|
||||
5029:Aphros Delos Chapter
|
||||
// 1.6
|
||||
5030:Never-Ending Battle
|
||||
5031:Legend of the Vagabond Sword
|
||||
5032:Kaboomball Kombat
|
||||
5033:Echoing Tales
|
||||
6005:Autumn Winds, Scarlet Leaves
|
||||
// 2.0
|
||||
6003:Outland Gastronomy
|
||||
5034:Phantom Flow
|
||||
5035:Lost Riches
|
||||
5036:Bellowing Blaze
|
||||
5037:Theater Mechanicus: Stage of Wonders
|
||||
5038:Carassius Auratus Chapter
|
||||
5039:Grus Nivis Chapter
|
||||
// 2.1
|
||||
5040:Hyakunin Ikki
|
||||
5041:Lunar Realm
|
||||
5042:Mendacious Waves
|
||||
5043:Distant Storm
|
||||
5044:Spectral Secrets
|
||||
5045:Dracaena Somnolenta Chapter
|
||||
5046:Imperatrix Umbrosa Chapter
|
||||
// 2.2
|
||||
5047:Dreams of Bloom
|
||||
5048:Hangout Event
|
||||
5049:Shadow of the Ancients
|
||||
5050:Tuned to the World's Sounds
|
||||
// 2.3
|
||||
5051:Bantan Sango Case Files: The Warrior Dog
|
||||
5052:Exploding Population
|
||||
5053:Energy Amplifier
|
||||
5054:Misty Dungeon: Realm of Light
|
||||
5059:Taurus Iracundus Chapter
|
||||
5056:Hangout Event
|
||||
5060:Beastly Rift
|
||||
// 2.4
|
||||
5055:Eight Locales Over Mountains and Seas
|
||||
5057:Hangout Event
|
||||
5058:A Study in Potions
|
||||
5061:With Sleet and Storm
|
||||
5063:The Crane Returns on the Wind
|
||||
5064:Enkanomiya
|
||||
// 2.5
|
||||
5062:Of Drink A-Dreaming
|
||||
5065:Divine Ingenuity
|
||||
5066:Spices From the West
|
||||
5069:Divina Vulpes Chapter
|
||||
5070:Imperatrix Umbrosa Chapter
|
||||
5076:Hyakunin Ikki
|
||||
// 2.6
|
||||
5067:Vibro-Crystal Research
|
||||
5068:Outside the Canvas, Inside the Lens
|
||||
5071:Chasmic Serpent
|
||||
5074:Hangout Event
|
||||
5075:The Chasm
|
||||
5077:Requiem of the Echoing Depths
|
||||
5078:Cypressus Custos Chapter
|
||||
// 2.7
|
||||
5080:Core of the Apparatus
|
||||
5081:Umbrabilis Orchis Chapter
|
||||
5079:A Muddy Bizarre Adventure
|
||||
5072:The Almighty Arataki Great and Glorious Drumalong Festival
|
||||
5073:Hangout Event
|
||||
// 2.8
|
||||
5082:Evermotion Mechanical Painting
|
||||
5083:Reminiscent Regimen
|
||||
5084:Resonating Visions
|
||||
5085:Hidden Strife
|
||||
5088:Acer Palmatum Chapter
|
||||
5097:Hangout Event
|
||||
// 3.0
|
||||
5086:Murkwood Fungal Raptor
|
||||
5087:Tablet Analytics
|
||||
5089:Rumbleflower
|
||||
5090:Fayz Trials
|
||||
5091:Lost Riches
|
||||
5092:Vulpes Zerda Chapter
|
||||
5093:Dharma Forest
|
||||
// 3.1
|
||||
5094:Hyakunin Ikki
|
||||
5095:Wind Chaser
|
||||
5096:Star-Seeker's Sojourn
|
||||
5098:(test)废弃
|
||||
5100:Lupus Aureus Chapter
|
||||
5101:Lotos Somno Chapter
|
||||
5102:Searing Dreams in the Sea of Sand
|
||||
5103:Perpetual Motion Dragon
|
||||
5104:Matrix of Overseer Network
|
||||
5105:Dreams, Emptiness, Deception
|
||||
// 3.2
|
||||
5098:(test)废弃
|
||||
5099:Adventurer's Trials
|
||||
5107:Hypostatic Symphony: Dissonant Verse
|
||||
5108:Outside the Canvas, Inside the Lens: Greenery Chapter
|
||||
5109:Akasha Pulses, the Kalpa Flame Rises
|
||||
5113:Sapientia Oromasdis Chapter
|
||||
5106:The Verdant Takeover
|
||||
// 3.3
|
||||
5110:Battlefield of Dice, Cats, and Cards
|
||||
5111:Windtrace
|
||||
5112:Across the Wilderness
|
||||
5114:Misty Dungeon: Realm of Sand
|
||||
5115:Inversion of Genesis
|
||||
// 3.4
|
||||
5116:Second Blooming
|
||||
5117:Warrior's Spirit
|
||||
5118:Almighty Arataki Extraordinary and Exhilarating Extreme Beetle Brawl
|
||||
5119:Heated Battle Mode: The Profound Purpose of Practice
|
||||
5121:Vultur Volans Chapter
|
||||
5122:Lord of the Desert
|
||||
5126:Desert of Hadramaveth
|
||||
5127:Hangout Event
|
||||
// 3.5
|
||||
5120:Fungus Mechanicus
|
||||
5123:Vibro-Crystal Verification
|
||||
5124:Caribert
|
||||
5125:Spices From the West: Northerly Search
|
||||
5130:Mantichora Chapter
|
||||
// 3.6
|
||||
5128:Fulminating Sandstorm
|
||||
5129:Brewing Developments
|
||||
5131:Girdle of the Sands
|
||||
5132:The Recollector's Path
|
||||
5134:Cleansing of Sin
|
||||
5136:Lagenaria Chapter
|
||||
5139:Sapientia Oromasdis Chapter
|
||||
5144:Hangout Event
|
||||
// 3.7
|
||||
5133:Divine Ingenuity: Collector's Chapter
|
||||
5135:Feast of the Departed Warriors
|
||||
5138:Fayz Trials: Hypothesis
|
||||
5137:Carassius Auratus Chapter
|
||||
5143:The Forge Realm's Temper
|
||||
5146:Genius Invokation TCG: Radiant Secrets
|
||||
// 3.8
|
||||
5140:Perilous Expedition
|
||||
5141:Adventurer's Trials: Advanced
|
||||
5142:Shared Sight
|
||||
5145:Hangout Event
|
||||
5148:The Forge Realm's Temper: Endless Swarm
|
||||
5119:Heated Battle Mode: The Profound Purpose of Practice
|
||||
// 4.0
|
||||
5148:The Forge Realm's Temper: Endless Swarm
|
||||
5119:Heated Battle Mode: The Profound Purpose of Practice
|
||||
5147:Studies in Light and Shadow: A Fontaine of Enchantment
|
||||
5149:Felis Fuscus Chapter
|
||||
5150:Relic Records: Creations of the Hydro Nation
|
||||
5151:Verdict of Blades
|
||||
5153:Lone Suzerain of Land and Sea
|
||||
5154:Gear and Clockwork Roundelay
|
||||
5158:The Terrestrial Sea, Origin of All Waters
|
||||
// newcomers and special events
|
||||
101: The way ahead is set
|
||||
1014:Send Barbara activity
|
||||
1023: Hit the abyss to send Xiangling activity
|
||||
8001: Return of the Stars
|
||||
10001: (test) 1.0 check-in
|
||||
10002: (test) High value one-time check-in
|
||||
10003: grasp the daily
|
||||
10004: grasp the daily
|
||||
10005: Honglv hidden gold
|
||||
10006:Honglv hidden gold
|
||||
10007:Honglv hidden gold
|
||||
10010: grasp the daily
|
||||
10011: Wealth comes to the door
|
||||
10012: Tales from a foreign land
|
||||
10013: Cloud Meteor Run
|
||||
50001: People of all walks of life
|
||||
50002: shallow singing prayer
|