Compare commits

...

103 Commits

Author SHA1 Message Date
8d42ddee10 Update README and Screenshots 2022-10-28 22:47:29 +08:00
2a3100c822 Fix mail item name issue 2022-10-28 22:31:46 +08:00
97bc9d8f6a Fix open command help format error 2022-10-28 22:22:00 +08:00
f2c4bfb7d3 Fix stat event not firing issue 2022-10-28 22:10:47 +08:00
d84f8036f7 Update translate
Remove ImgHome.jpg
2022-10-28 22:00:30 +08:00
16a57f38d3 Fix mail item list
Add /setConst to Avatar tab
Update translates
2022-10-28 21:54:04 +08:00
88031a79d0 Update translations 2022-10-28 13:06:35 +08:00
a36ce1af0f Fix mail player id limit issue 2022-10-28 12:19:41 +08:00
397ec8472b Update import avatar skill level to min 2022-10-28 08:39:17 +08:00
160b49d752 Fix mail item issue 2022-10-28 08:36:43 +08:00
fd515b18cf Implement send mail and mail list
Optimize duplicate code
2022-10-28 00:22:15 +08:00
5c7c64ea6c Add Command Version v1.4.2 2022-10-27 22:36:40 +08:00
64626ad065 Fix GOOD Import issues 2022-10-27 22:33:00 +08:00
8a65120e47 Add Mail editor (WIP)
Update Drop editor indexes
2022-10-27 13:11:58 +08:00
150e3a1132 Update README_zh-cn.md
Add QQ Group link
2022-10-27 10:27:43 +08:00
fbe53a7a0b Update README.md
Add QQ Group link
2022-10-27 10:27:24 +08:00
641d130a72 Update Screenshots(en) 2022-10-27 00:17:13 +08:00
6313373283 Add DropEditor screenshots 2022-10-26 23:58:45 +08:00
f70e61c686 Update translations 2022-10-26 23:48:35 +08:00
7d19876072 Implement drop editor functions 2022-10-26 23:30:57 +08:00
74613a809d DropEditor: Implement multiple selection and display intersection 2022-10-26 21:56:30 +08:00
60e54b1c91 Add Drop.json Path Setting
Update Drop.json Editor UI
2022-10-26 13:03:54 +08:00
c860180564 Add Drop Editor (WIP) 2022-10-25 23:36:30 +08:00
f0885a1fee Update README
Add run commands screenshot
2022-10-23 11:17:39 +08:00
641a4b0006 Update version to v1.7.0 2022-10-23 11:13:47 +08:00
fec144cb64 Implement command combination
Update command version
Add set all skill levels
Add skill level in avatar
2022-10-23 11:13:35 +08:00
c6b2c0ea65 Update 3.1.5 ids(EN) 2022-10-05 18:37:14 +08:00
8c42aca027 Update Version to v1.6.8 2022-10-05 18:19:43 +08:00
d84a34b268 Update Item.txt
Add 3.1.5 ids
2022-10-05 18:17:54 +08:00
Syca
eb6f15f078 Add 3.1.5 Monsters(Only CHS)
Do not ask me for 3.1.5X client!
I don't have it!
2022-10-02 12:38:52 +08:00
Syca
bd7aac6fcf Update All Avatar&Weapon
为什么这么久了,有的地方都没更新?
2022-10-02 12:38:52 +08:00
346a68ddb4 Merge pull request #122 from Halo1620/patch-2
3.1 changes
2022-09-29 21:40:17 +08:00
e8736c997a Merge pull request #123 from Halo1620/patch-3
3.1 eneimes
2022-09-29 21:39:49 +08:00
Halo1620
5d383ad72f 3.1 eneimes 2022-09-29 15:26:19 +02:00
Halo1620
0ec942275e 3.1 changes 2022-09-29 15:25:35 +02:00
EgorBron
24a38cbdf4 ru translation (from #119) (#120)
* Fixed some translations on Russian.
* Updated readme screenshots
2022-09-22 20:16:35 +08:00
c0a798ba93 Update version to v1.6.7 2022-09-20 22:26:51 +08:00
d930e3ee11 Fix UI misalignment issue
Add infinite HP option
and some small optimizations
2022-09-20 22:23:32 +08:00
Syca
3dbfa76de9 Update All 3.0.5X Scene IDs(CHS only)
not all translated
未完全翻译
2022-09-11 12:10:45 +08:00
8634d37977 Update new version tip location 2022-09-10 19:45:42 +08:00
f2a923a654 Use English README as default 2022-09-10 19:17:49 +08:00
5737a967b3 Add Desert eneimes 2022-09-10 18:52:17 +08:00
5f80a270c1 Add strong signature
Remove Settings.cs
2022-09-10 18:51:14 +08:00
e3664f577e Update Window Min Size 2022-09-10 18:50:16 +08:00
46eb1ee6b1 Update Version to v1.6.6 2022-09-10 18:50:00 +08:00
a43744c89d Merge branch 'main' of https://github.com/jie65535/GrasscutterCommandGenerator 2022-09-10 12:21:16 +08:00
12d7dde2e7 Remove NPCs
Removed to reduce size as GC currently cannot spawn NPCs
2022-09-10 12:21:13 +08:00
Syca
69068fad63 revert some wrong changes 2022-09-09 22:56:06 +08:00
Syca
2975ef0b49 3.0Quest (CHS only)
CNRELWin3.0.0
2022-09-09 22:56:06 +08:00
0871238e59 Update gc versions 2022-09-08 12:46:09 +08:00
5f2755f5bb Fix banner editor parse json button missing 2022-09-08 12:34:24 +08:00
746254c348 Update 3.0 NPCs 2022-09-06 23:06:28 +08:00
c43b73db3f Update 3.0.5 ids (zh-cn only) 2022-09-06 22:50:46 +08:00
af40aed3f3 Add 3.0 monsters 2022-09-06 22:39:55 +08:00
Elijah
ea013737f6 Update Monster.txt 2022-09-06 22:39:55 +08:00
79d4b266b8 Optimize server address input 2022-09-06 12:24:05 +08:00
6430000aad Fix check update 2022-09-01 23:46:31 +08:00
2b6af9aacd Update Screenshots-zh 2022-09-01 23:33:31 +08:00
43ff071250 No popup
Update to no longer automatically pop-up prompts to update
Change when to look for native services
2022-09-01 23:17:38 +08:00
a70a3979e5 Update version to v1.6.5 2022-09-01 22:52:21 +08:00
013b3c76b4 Add Weights chart 2022-09-01 22:50:07 +08:00
6575931ab2 Remove assembly guid 2022-08-29 23:32:03 +08:00
26f5f31be5 Update version to v1.6.4
_VS automatically changed the interface resource_
2022-08-29 20:44:54 +08:00
7204297465 Update Russian UI layout to fit new text 2022-08-29 20:30:14 +08:00
Егор Брон
4dfcb2538d Fixes in Forms/TXTs 2022-08-29 20:30:14 +08:00
EgorBron
e9cd500628 Fix and complete russian README translation 2022-08-29 20:30:14 +08:00
7ce0c132fe Update about(en/ru) 2022-08-28 15:37:09 +08:00
5b1d86b155 Add perm list and clear 2022-08-28 11:12:46 +08:00
53cb968e67 Add comments(zh) 2022-08-28 10:52:58 +08:00
314f9b67e3 Add some comments(zh) 2022-08-28 00:46:11 +08:00
50f7e72ff5 Add code header 2022-08-28 00:36:37 +08:00
ce7ac5bc8a Update version to v1.6.3 2022-08-28 00:35:45 +08:00
aff13c2a97 Add Command Version Control
Add more comments(zh)
Optimize code structure
Update the loading order to avoid repeated loading to optimize startup speed.
2022-08-28 00:35:21 +08:00
eba9db1e35 Update custom command labels 2022-08-27 18:10:18 +08:00
71ac75a4ca Remove N/A Quests 2022-08-27 18:04:47 +08:00
f393b372ec Update auto find local server address 2022-08-26 20:50:00 +08:00
cfb94e70b7 Remove deprecated methods 2022-08-26 12:59:25 +08:00
ab9b955c31 Fix command syntax error 2022-08-26 12:57:25 +08:00
4e4b47a9e6 Update version to v1.6.2 2022-08-26 12:55:50 +08:00
3da3bc4f23 Implementation Freeze stats(#97) 2022-08-26 12:55:40 +08:00
7cc46eb677 Fix Deepwood Memories Invisible 2022-08-26 12:28:56 +08:00
b9d1a2c2cd Fix run button disabled after command failed 2022-08-25 23:54:51 +08:00
a0cc908983 Fix Windows Defender virus reporting problem
by Remove Costuar/Fody
2022-08-25 22:02:43 +08:00
7dc7c7c8ac Update Check Gitee 2022-08-25 18:55:31 +08:00
ad4ca74e71 Add /prop unlockmap (#92) 2022-08-25 14:04:52 +08:00
a079685be8 Allow main stat to be empty 2022-08-25 12:29:06 +08:00
6703037527 Upgrade to PackageReference 2022-08-25 11:38:25 +08:00
417f0b7334 Update Prefabs 2022-08-24 22:35:40 +08:00
45aec44f39 Update Artifact Sets 2022-08-24 22:20:32 +08:00
7dd1e78512 Update Version to v1.6.0 2022-08-24 22:13:18 +08:00
418dfec289 Update 3.0 Resources 2022-08-24 22:11:06 +08:00
bc69a1c4ba Fix UI Issue 2022-07-28 12:22:59 +08:00
63f7eda5c3 Update version to v1.5.5
Fix GOODData Init issue
2022-07-28 08:41:08 +08:00
879bc34358 Update version to v1.5.4 2022-07-27 21:44:28 +08:00
c5a6d7f041 Add GOOD Help 2022-07-27 21:33:49 +08:00
20b1aca700 Fix UI occlusion issue 2022-07-27 20:42:02 +08:00
fb1a332f2c Fix textMapId field changed issue 2022-07-27 20:38:48 +08:00
867bdd1d00 Update README 2022-07-23 10:44:56 +08:00
5e28d1e625 Corrected format 2022-07-23 10:37:57 +08:00
e6ecde9951 Add help for server not connecting 2022-07-23 10:34:07 +08:00
gotoAndDie
2cb9f08caa Implement import from GOOD dump (#86)
* Implement import from GOOD dump

* Optimized implementation

* Add available urls

* Add prompt

Co-authored-by: Leo <chun.huang@student.manchester.ac.uk>
Co-authored-by: 筱傑 <jie65535@qq.com>
2022-07-23 10:18:51 +08:00
Asayu233
9eba1d6368 Update Resources to Version 2.8 (#83)
- 更新版本至1.5.3。
- 添加 anime game 2.8.0 的新物品、角色、场景。
- 修正权限列表。
- 使不同语言间的各种id与默认自定义命令一致化。
- 撤销 add 2.8.5 avatar #85 的更改,因为这些角色id目前并不存在,他们应该在3.0版本被添加。
2022-07-16 12:07:09 +08:00
Gktwo
ef4f06d6c3 Added 2.8.5 avatars (#85) 2022-07-14 14:30:28 +08:00
172 changed files with 102031 additions and 97876 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 30 KiB

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 79 KiB

After

Width:  |  Height:  |  Size: 64 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 23 KiB

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 35 KiB

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 57 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 19 KiB

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 29 KiB

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 31 KiB

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 36 KiB

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 37 KiB

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 21 KiB

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 181 KiB

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 268 KiB

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 80 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 150 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 258 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 57 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 62 KiB

View File

Before

Width:  |  Height:  |  Size: 43 KiB

After

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 162 KiB

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 165 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 206 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 280 KiB

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 239 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 253 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 132 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 143 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 30 KiB

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

After

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 87 KiB

After

Width:  |  Height:  |  Size: 84 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 40 KiB

After

Width:  |  Height:  |  Size: 49 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 69 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 33 KiB

After

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 37 KiB

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 36 KiB

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 37 KiB

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 35 KiB

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.3 KiB

View File

@@ -3,60 +3,71 @@
[![GitHub license](https://img.shields.io/github/license/jie65535/GrasscutterCommandGenerator)](https://github.com/jie65535/GrasscutterCommandGenerator/blob/main/LICENSE)
[![GitHub stars](https://img.shields.io/github/stars/jie65535/GrasscutterCommandGenerator)](https://github.com/jie65535/GrasscutterCommandGenerator/stargazers)
[![Github All Releases](https://img.shields.io/github/downloads/jie65535/GrasscutterCommandGenerator/total.svg)](https://github.com/jie65535/GrasscutterCommandGenerator/releases)
[![QQ Group](https://pub.idqqimg.com/wpa/images/group.png)](https://qm.qq.com/cgi-bin/qm/qr?k=PdS9--b-n8LEAmYjX8fNFXtKDcsp4NHN&jump_from=webapi&authKey=7ty3ZCKYMKLGWLmO8O84qiNAZ0EuCnSGF+acP+74xuDMKYXXNjuPP7iUzffHz4r2)
中文 | [English](README_en-US.md) | [Русский](README_ru-RU.md)
English | [简体中文](README_zh-cn.md) | [Русский](README_ru-RU.md)
## Commands Generator
请从 [Releases](https://github.com/jie65535/GrasscutterCommandGenerator/releases) 中获取最新版本
Please download the latest version from [Releases](https://github.com/jie65535/GrasscutterCommandGenerator/releases)
## 远程执行
Support 简体中文, 繁体中文, English and Русский languages.
服务端需要 [gc-opencommand-plugin](https://github.com/jie65535/gc-opencommand-plugin) 插件支持
Welcome everyone to improve the [ID Resource](/Source/GrasscutterTools/Resources/en-us).
## Update log
### GrasscutterTools-v1.7.0
![Run Commands](Doc/Screenshots/RunMultipleCommands.png)
![Drop Editor](Doc/Screenshots-en/15-DropEditor.png)
![Mail Editor](Doc/Screenshots-en/16-MailEditor.png)
## Remote command
The server require [gc-opencommand-plugin](https://github.com/jie65535/gc-opencommand-plugin) support
![OpenCommand](Doc/Screenshots/OpenCommand.gif)
> 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):
> ![ConfigHttp](Doc/Screenshots/ConfigHttp.png)
>
> 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
---
## TODO List
- [x] 多语言支持
- [x] 简体中文
- [x] 繁体中文
- [x] 英语
- [x] 俄语
- [x] 远程执行命令
- [ ] ~~邮件编辑器(无进度)~~
- [ ] ~~商店编辑器(无进度)~~
- [ ] 服务器公告编辑器(无进度)
## 软件截图
## Screenshots
![Logo](Doc/Screenshots/GrasscutterLogo.png)
![Home](Doc/Screenshots/0-Home.png)
![Home](Doc/Screenshots-en/0-Home.png)
![Custom Commands Screenshot](Doc/Screenshots/1-CustomCommands.png)
![Custom Commands Screenshot](Doc/Screenshots-en/1-CustomCommands.png)
![Custom Artifact Screenshot](Doc/Screenshots/2-CustomArtifact.png)
![Custom Artifact Screenshot](Doc/Screenshots-en/2-CustomArtifact.png)
![Custom Weapon Screenshort](Doc/Screenshots/3-CustomWeapon.png)
![Custom Weapon Screenshort](Doc/Screenshots-en/3-CustomWeapon.png)
![Give Item Screenshort](Doc/Screenshots/4-GiveItem.png)
![Give Item Screenshort](Doc/Screenshots-en/4-GiveItem.png)
![Give Avatar Screenshort](Doc/Screenshots/5-GiveAvatar.png)
![Give Avatar Screenshort](Doc/Screenshots-en/5-GiveAvatar.png)
![Spawn Entity Screenshort](Doc/Screenshots/6-SpawnEntity.png)
![Spawn Entity Screenshort](Doc/Screenshots-en/6-SpawnEntity.png)
![Change Scene Screenshort](Doc/Screenshots/7-ChangeScene.png)
![Change Scene Screenshort](Doc/Screenshots-en/7-ChangeScene.png)
![Custom Stats Screenshort](Doc/Screenshots/8-CustomStats.png)
![Management](Doc/Screenshots-en/9-Manage.png)
![Management](Doc/Screenshots/9-Manage.png)
![GachaBannerEditor](Doc/Screenshots-en/10-GachaBannerEditor.png)
![GachaBannerEditor](Doc/Screenshots/10-GachaBannerEditor.png)
![Text Map Browser](Doc/Screenshots-en/11-TextMapBrowser.png)
![Text Map Browser](Doc/Screenshots/11-TextMapBrowser.png)
![Remote Screenshort](Doc/Screenshots-en/12-Remote.png)
![Remote Screenshort](Doc/Screenshots/12-Remote.png)
![Quest Screenshort](Doc/Screenshots/13-Quest.png)
![Quest Screenshort](Doc/Screenshots-en/13-Quest.png)

View File

@@ -1,62 +0,0 @@
# Grasscutter Tools
[![GitHub license](https://img.shields.io/github/license/jie65535/GrasscutterCommandGenerator)](https://github.com/jie65535/GrasscutterCommandGenerator/blob/main/LICENSE)
[![GitHub stars](https://img.shields.io/github/stars/jie65535/GrasscutterCommandGenerator)](https://github.com/jie65535/GrasscutterCommandGenerator/stargazers)
[![Github All Releases](https://img.shields.io/github/downloads/jie65535/GrasscutterCommandGenerator/total.svg)](https://github.com/jie65535/GrasscutterCommandGenerator/releases)
[中文](README.md) | English | [Русский](README_ru-RU.md)
## Commands Generator
Please download the latest version from [Releases](https://github.com/jie65535/GrasscutterCommandGenerator/releases)
## Remote command
The server require [gc-opencommand-plugin](https://github.com/jie65535/gc-opencommand-plugin) support
![OpenCommand](Doc/Screenshots/OpenCommand.gif)
---
## TODO List
- [x] Multi-language support
- [x] Simplified Chinese
- [x] Traditional Chinese
- [x] English
- [x] Russian
- [x] Execute command remotely
- [ ] ~~Mail Editor (no progress)~~
- [ ] ~~Shop Editor (no progress)~~
- [ ] Announcement Editor (no progress)
## Screenshots
![Logo](Doc/Screenshots/GrasscutterLogo.png)
![Home](Doc/Screenshots-en/0-Home.png)
![Custom Commands Screenshot](Doc/Screenshots-en/1-CustomCommands.png)
![Custom Artifact Screenshot](Doc/Screenshots-en/2-CustomArtifact.png)
![Custom Weapon Screenshort](Doc/Screenshots-en/3-CustomWeapon.png)
![Give Item Screenshort](Doc/Screenshots-en/4-GiveItem.png)
![Give Avatar Screenshort](Doc/Screenshots-en/5-GiveAvatar.png)
![Spawn Entity Screenshort](Doc/Screenshots-en/6-SpawnEntity.png)
![Change Scene Screenshort](Doc/Screenshots-en/7-ChangeScene.png)
![Custom Stats Screenshort](Doc/Screenshots-en/8-CustomStats.png)
![Management](Doc/Screenshots-en/9-Manage.png)
![GachaBannerEditor](Doc/Screenshots-en/10-GachaBannerEditor.png)
![Text Map Browser](Doc/Screenshots-en/11-TextMapBrowser.png)
![Remote Screenshort](Doc/Screenshots-en/12-Remote.png)
![Quest Screenshort](Doc/Screenshots-en/13-Quest.png)

View File

@@ -4,30 +4,42 @@
[![GitHub звёзды](https://img.shields.io/github/stars/jie65535/GrasscutterCommandGenerator)](https://github.com/jie65535/GrasscutterCommandGenerator/stargazers)
[![Github ВСЕ выпуски](https://img.shields.io/github/downloads/jie65535/GrasscutterCommandGenerator/total.svg)](https://github.com/jie65535/GrasscutterCommandGenerator/releases)
[中文](README.md) | [English](README_en-US.md) | Русский - Перевод Юрий Дворецкий
[English](README.md) | [简体中文](README_zh-cn.md) | Русский - Перевод [Юрий Дворецкий](https://github.com/yurikenjx) (с исправлениями от [EgorBron](https://github.com/EgorBron))
## Генератор команд
## Генератор команд (GCG)
Пожалуйса загрузите последнюю версию с [Releases](https://github.com/jie65535/GrasscutterCommandGenerator/releases)
Загрузите последнюю версию из вкладки [Releases](https://github.com/jie65535/GrasscutterCommandGenerator/releases).
## Удаленная команда
GCG поддерживает 简体中文 (китайский упр.), 繁体中文 (китайский трад.), English (английский) и Русский языки.
Сервер требует [gc-opencommand-plugin](https://github.com/jie65535/gc-opencommand-plugin) помощь
Приглашаем всех улучшить [ID ресурсов и перевод](/Source/GrasscutterTools/Resources/ru-ru)
## Update log
### GrasscutterTools-v1.7.0
![Run Commands](Doc/Screenshots/RunMultipleCommands.png)
![Drop Editor](Doc/Screenshots-ru/15-DropEditor.png)
![Mail Editor](Doc/Screenshots-ru/16-MailEditor.png)
## Удаленная команда (OpenCommand)
Чтобы использовать команды прямо из GCG, серверу требуется плагин [gc-opencommand-plugin](https://github.com/jie65535/gc-opencommand-plugin).
![Open Command](Doc/Screenshots/OpenCommand.gif)
---
> Если вы не можете подключиться к серверу, проверьте правильность написания его URL-адреса.
>
> Рекомендуется изменить секцию HTTP в конфиге как на скриншоте ниже (конфиг - файл config.json):
>
> ![ConfigHttp](Doc/Screenshots/ConfigHttp.png)
>
> Для проверки можете посетить http://127.0.0.1/status/server в браузере, чтобы проверить работоспособность OpenCommand.
>
> Если вы не указали порт `80` в конфиге, вам нужно указать свой порт в URL-адресе (например, http://127.0.0.1:443)
## Список задач
- [x] Многоязычная поддержка
- [x] Упрощенный китайский
- [x] сложный китайский
- [х] английский
- [х] Русский
- [x] Выполнить команду удаленно
- [ ] ~~Редактор почты (нет прогресса)~~
- [ ] ~~Редактор магазина (нет прогресса)~~
- [ ] Announcement Editor (no progress)
---
## Скриншоты
@@ -35,28 +47,30 @@
![Главная](Doc/Screenshots-ru/0-Home.png)
![Run Command](Doc/Screenshots/RunMultipleCommands.png)
![Скриншот пользовательских команд](Doc/Screenshots-ru/1-CustomCommands.png)
![Скриншот Пользовательского артефакта](Doc/Screenshots-ru/2-CustomArtifact.png)
![Скриншот артефактов](Doc/Screenshots-ru/2-CustomArtifact.png)
![Скриншот Пользовательского оружия](Doc/Screenshots-ru/3-CustomWeapon.png)
![Скриншот квестов](Doc/Screenshots-ru/3-Quest.png)
![Скриншот Дать предмет](Doc/Screenshots-ru/4-GiveItem.png)
![Скриншот спавна сущностей](Doc/Screenshots-ru/4-SpawnEntity.png)
![Скриншот Дать Персонажа Screenshort](Doc/Screenshots-ru/5-GiveAvatar.png)
![Скриншот выдачи персонажа](Doc/Screenshots-ru/5-GiveAvatar.png)
![Скриншот Спавн Сущности](Doc/Screenshots-ru/6-SpawnEntity.png)
![Скриншот выдачи оружия](Doc/Screenshots-ru/7-CustomWeapon.png)
![Скриншот Изменить сцену](Doc/Screenshots-ru/7-ChangeScene.png)
![Скриншот выдачи предметов](Doc/Screenshots-ru/8-GiveItem.png)
![Скриншот Пользовательская статистика](Doc/Screenshots-ru/8-CustomStats.png)
![Скриншот смены сцены](Doc/Screenshots-ru/9-ChangeScene.png)
![Управление](Doc/Screenshots-ru/9-Manage.png)
![Скриншот управления аккаунтом](Doc/Screenshots-ru/11-Manage.png)
![Редактор баннеров Gacha](Doc/Screenshots-ru/10-GachaBannerEditor.png)
![Скриншот Credits](Doc/Screenshots-ru/12-Credits.png)
![Текстоый Браузер карт](Doc/Screenshots-ru/11-TextMapBrowser.png)
![Скриншот OpenCommand](Doc/Screenshots-ru/13-Remote.png)
![Скриншот Удаленного доступа](Doc/Screenshots-ru/12-Remote.png)
![Редактор баннеров](Doc/Screenshots-ru/14-GachaBannerEditor.png)
![Скриншот Квесты](Doc/Screenshots-ru/13-Quest.png)
![Текстоый браузер карт](Doc/Screenshots-ru/15-TextMapBrowser.png)

72
README_zh-cn.md Normal file
View File

@@ -0,0 +1,72 @@
# Grasscutter Tools
[![GitHub license](https://img.shields.io/github/license/jie65535/GrasscutterCommandGenerator)](https://github.com/jie65535/GrasscutterCommandGenerator/blob/main/LICENSE)
[![GitHub stars](https://img.shields.io/github/stars/jie65535/GrasscutterCommandGenerator)](https://github.com/jie65535/GrasscutterCommandGenerator/stargazers)
[![Github All Releases](https://img.shields.io/github/downloads/jie65535/GrasscutterCommandGenerator/total.svg)](https://github.com/jie65535/GrasscutterCommandGenerator/releases)
[![QQ Group](https://pub.idqqimg.com/wpa/images/group.png)](https://qm.qq.com/cgi-bin/qm/qr?k=PdS9--b-n8LEAmYjX8fNFXtKDcsp4NHN&jump_from=webapi&authKey=7ty3ZCKYMKLGWLmO8O84qiNAZ0EuCnSGF+acP+74xuDMKYXXNjuPP7iUzffHz4r2)
[English](README.md) | 简体中文 | [Русский](README_ru-RU.md)
## Commands Generator
请从 [Releases](https://github.com/jie65535/GrasscutterCommandGenerator/releases) 中获取最新版本
本工具支持 简体中文, 繁体中文, English 与 Русский 语言。
欢迎大家一起来完善工具的[内置资源](/Source/GrasscutterTools/Resources/zh-cn)。
## Update log
### GrasscutterTools-v1.7.0
![Run Commands](Doc/Screenshots/RunMultipleCommands.png)
![Drop Editor](Doc/Screenshots/15-DropEditor.png)
![Mail Editor](Doc/Screenshots/16-MailEditor.png)
## 远程执行
服务端需要 [gc-opencommand-plugin](https://github.com/jie65535/gc-opencommand-plugin) 插件支持
![OpenCommand](Doc/Screenshots/OpenCommand.gif)
> 如果你无法连接到服务器,请确认填写的服务器地址是否正确。
>
> 建议配置服务器为HTTP模式如图所示(config.json)
> ![ConfigHttp](Doc/Screenshots/ConfigHttp.png)
>
> 你可以用浏览器访问 http://127.0.0.1/status/server 来测试服务是否正常工作。
>
> 如果使用的不是`80`端口则要在url中指定访问的端口号http://127.0.0.1:443
---
## 软件截图
![Logo](Doc/Screenshots/GrasscutterLogo.png)
![Home](Doc/Screenshots/0-Home.png)
![Custom Commands Screenshot](Doc/Screenshots/1-CustomCommands.png)
![Custom Artifact Screenshot](Doc/Screenshots/2-CustomArtifact.png)
![Custom Weapon Screenshort](Doc/Screenshots/3-CustomWeapon.png)
![Give Item Screenshort](Doc/Screenshots/4-GiveItem.png)
![Give Avatar Screenshort](Doc/Screenshots/5-GiveAvatar.png)
![Spawn Entity Screenshort](Doc/Screenshots/6-SpawnEntity.png)
![Change Scene Screenshort](Doc/Screenshots/7-ChangeScene.png)
![Management](Doc/Screenshots/9-Manage.png)
![GachaBannerEditor](Doc/Screenshots/10-GachaBannerEditor.png)
![Text Map Browser](Doc/Screenshots/11-TextMapBrowser.png)
![Remote Screenshort](Doc/Screenshots/12-Remote.png)
![Quest Screenshort](Doc/Screenshots/13-Quest.png)

View File

@@ -17,7 +17,7 @@
<value>10001</value>
</setting>
<setting name="DefaultLanguage" serializeAs="String">
<value>zh-CN</value>
<value />
</setting>
<setting name="ResourcesDirPath" serializeAs="String">
<value />
@@ -38,11 +38,17 @@
<value />
</setting>
<setting name="CommandVersion" serializeAs="String">
<value>1.2.2</value>
<value />
</setting>
<setting name="IsTopMost" serializeAs="String">
<value>False</value>
</setting>
<setting name="DropJsonPath" serializeAs="String">
<value />
</setting>
<setting name="DefaultMailSender" serializeAs="String">
<value>GrasscutterTools</value>
</setting>
</GrasscutterTools.Properties.Settings>
</userSettings>
</configuration>

View File

@@ -1,6 +1,5 @@
using System;
using System.ComponentModel;
using System.Drawing;
using System.Runtime.InteropServices;
using System.Windows.Forms;

View File

@@ -0,0 +1,366 @@
namespace GrasscutterTools.Forms
{
partial class FormDropEditor
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FormDropEditor));
this.LblDropPathLabel = new System.Windows.Forms.Label();
this.TxtDropJsonPath = new System.Windows.Forms.TextBox();
this.BtnLoad = new System.Windows.Forms.Button();
this.BtnSave = new System.Windows.Forms.Button();
this.ListMonsters = new System.Windows.Forms.ListBox();
this.TxtMonsterFilter = new System.Windows.Forms.TextBox();
this.TxtItemFilter = new System.Windows.Forms.TextBox();
this.ListDropData = new System.Windows.Forms.ListBox();
this.GrpDropList = new System.Windows.Forms.GroupBox();
this.BtnCopyAll = new System.Windows.Forms.Button();
this.BtnClear = new System.Windows.Forms.Button();
this.BtnPaste = new System.Windows.Forms.Button();
this.BtnCopy = new System.Windows.Forms.Button();
this.TxtItem = new System.Windows.Forms.TextBox();
this.BtnDelete = new System.Windows.Forms.Button();
this.BtnAddOrUpdate = new System.Windows.Forms.Button();
this.LblItemLabel = new System.Windows.Forms.Label();
this.LblTilde2 = new System.Windows.Forms.Label();
this.LblTilde1 = new System.Windows.Forms.Label();
this.NUDMaxWeight = new System.Windows.Forms.NumericUpDown();
this.NUDMinWeight = new System.Windows.Forms.NumericUpDown();
this.NUDMaxCount = new System.Windows.Forms.NumericUpDown();
this.NUDMinCount = new System.Windows.Forms.NumericUpDown();
this.LblWeightLabel = new System.Windows.Forms.Label();
this.LblCountLabel = new System.Windows.Forms.Label();
this.ListItems = new System.Windows.Forms.ListBox();
this.GrpMonsterList = new System.Windows.Forms.GroupBox();
this.GrpItemList = new System.Windows.Forms.GroupBox();
this.GrpDropList.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.NUDMaxWeight)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.NUDMinWeight)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.NUDMaxCount)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.NUDMinCount)).BeginInit();
this.GrpMonsterList.SuspendLayout();
this.GrpItemList.SuspendLayout();
this.SuspendLayout();
//
// LblDropPathLabel
//
resources.ApplyResources(this.LblDropPathLabel, "LblDropPathLabel");
this.LblDropPathLabel.Name = "LblDropPathLabel";
//
// TxtDropJsonPath
//
resources.ApplyResources(this.TxtDropJsonPath, "TxtDropJsonPath");
this.TxtDropJsonPath.Name = "TxtDropJsonPath";
//
// BtnLoad
//
resources.ApplyResources(this.BtnLoad, "BtnLoad");
this.BtnLoad.Name = "BtnLoad";
this.BtnLoad.UseVisualStyleBackColor = true;
this.BtnLoad.Click += new System.EventHandler(this.BtnLoad_Click);
//
// BtnSave
//
resources.ApplyResources(this.BtnSave, "BtnSave");
this.BtnSave.Name = "BtnSave";
this.BtnSave.UseVisualStyleBackColor = true;
this.BtnSave.Click += new System.EventHandler(this.BtnSave_Click);
//
// ListMonsters
//
resources.ApplyResources(this.ListMonsters, "ListMonsters");
this.ListMonsters.FormattingEnabled = true;
this.ListMonsters.Name = "ListMonsters";
this.ListMonsters.SelectionMode = System.Windows.Forms.SelectionMode.MultiExtended;
this.ListMonsters.SelectedIndexChanged += new System.EventHandler(this.ListMonsters_SelectedIndexChanged);
//
// TxtMonsterFilter
//
resources.ApplyResources(this.TxtMonsterFilter, "TxtMonsterFilter");
this.TxtMonsterFilter.Name = "TxtMonsterFilter";
this.TxtMonsterFilter.TextChanged += new System.EventHandler(this.TxtMonsterFilter_TextChanged);
//
// TxtItemFilter
//
resources.ApplyResources(this.TxtItemFilter, "TxtItemFilter");
this.TxtItemFilter.Name = "TxtItemFilter";
this.TxtItemFilter.TextChanged += new System.EventHandler(this.TxtItemFilter_TextChanged);
//
// ListDropData
//
resources.ApplyResources(this.ListDropData, "ListDropData");
this.ListDropData.FormattingEnabled = true;
this.ListDropData.Name = "ListDropData";
this.ListDropData.SelectedIndexChanged += new System.EventHandler(this.ListDropData_SelectedIndexChanged);
//
// GrpDropList
//
resources.ApplyResources(this.GrpDropList, "GrpDropList");
this.GrpDropList.Controls.Add(this.BtnCopyAll);
this.GrpDropList.Controls.Add(this.BtnClear);
this.GrpDropList.Controls.Add(this.BtnPaste);
this.GrpDropList.Controls.Add(this.BtnCopy);
this.GrpDropList.Controls.Add(this.TxtItem);
this.GrpDropList.Controls.Add(this.BtnDelete);
this.GrpDropList.Controls.Add(this.BtnAddOrUpdate);
this.GrpDropList.Controls.Add(this.LblItemLabel);
this.GrpDropList.Controls.Add(this.LblTilde2);
this.GrpDropList.Controls.Add(this.LblTilde1);
this.GrpDropList.Controls.Add(this.NUDMaxWeight);
this.GrpDropList.Controls.Add(this.NUDMinWeight);
this.GrpDropList.Controls.Add(this.NUDMaxCount);
this.GrpDropList.Controls.Add(this.NUDMinCount);
this.GrpDropList.Controls.Add(this.LblWeightLabel);
this.GrpDropList.Controls.Add(this.LblCountLabel);
this.GrpDropList.Controls.Add(this.ListDropData);
this.GrpDropList.Name = "GrpDropList";
this.GrpDropList.TabStop = false;
//
// BtnCopyAll
//
resources.ApplyResources(this.BtnCopyAll, "BtnCopyAll");
this.BtnCopyAll.Name = "BtnCopyAll";
this.BtnCopyAll.UseVisualStyleBackColor = true;
this.BtnCopyAll.Click += new System.EventHandler(this.BtnCopyAll_Click);
//
// BtnClear
//
resources.ApplyResources(this.BtnClear, "BtnClear");
this.BtnClear.Name = "BtnClear";
this.BtnClear.UseVisualStyleBackColor = true;
this.BtnClear.Click += new System.EventHandler(this.BtnClear_Click);
//
// BtnPaste
//
resources.ApplyResources(this.BtnPaste, "BtnPaste");
this.BtnPaste.Name = "BtnPaste";
this.BtnPaste.UseVisualStyleBackColor = true;
this.BtnPaste.Click += new System.EventHandler(this.BtnPaste_Click);
//
// BtnCopy
//
resources.ApplyResources(this.BtnCopy, "BtnCopy");
this.BtnCopy.Name = "BtnCopy";
this.BtnCopy.UseVisualStyleBackColor = true;
this.BtnCopy.Click += new System.EventHandler(this.BtnCopy_Click);
//
// TxtItem
//
resources.ApplyResources(this.TxtItem, "TxtItem");
this.TxtItem.Name = "TxtItem";
//
// BtnDelete
//
resources.ApplyResources(this.BtnDelete, "BtnDelete");
this.BtnDelete.Name = "BtnDelete";
this.BtnDelete.UseVisualStyleBackColor = true;
this.BtnDelete.Click += new System.EventHandler(this.BtnDelete_Click);
//
// BtnAddOrUpdate
//
resources.ApplyResources(this.BtnAddOrUpdate, "BtnAddOrUpdate");
this.BtnAddOrUpdate.Name = "BtnAddOrUpdate";
this.BtnAddOrUpdate.UseVisualStyleBackColor = true;
this.BtnAddOrUpdate.Click += new System.EventHandler(this.BtnAddOrUpdate_Click);
//
// LblItemLabel
//
resources.ApplyResources(this.LblItemLabel, "LblItemLabel");
this.LblItemLabel.Name = "LblItemLabel";
//
// LblTilde2
//
resources.ApplyResources(this.LblTilde2, "LblTilde2");
this.LblTilde2.Name = "LblTilde2";
//
// LblTilde1
//
resources.ApplyResources(this.LblTilde1, "LblTilde1");
this.LblTilde1.Name = "LblTilde1";
//
// NUDMaxWeight
//
resources.ApplyResources(this.NUDMaxWeight, "NUDMaxWeight");
this.NUDMaxWeight.Maximum = new decimal(new int[] {
10000,
0,
0,
0});
this.NUDMaxWeight.Minimum = new decimal(new int[] {
1,
0,
0,
0});
this.NUDMaxWeight.Name = "NUDMaxWeight";
this.NUDMaxWeight.Value = new decimal(new int[] {
10000,
0,
0,
0});
//
// NUDMinWeight
//
resources.ApplyResources(this.NUDMinWeight, "NUDMinWeight");
this.NUDMinWeight.Maximum = new decimal(new int[] {
10000,
0,
0,
0});
this.NUDMinWeight.Name = "NUDMinWeight";
//
// NUDMaxCount
//
resources.ApplyResources(this.NUDMaxCount, "NUDMaxCount");
this.NUDMaxCount.Maximum = new decimal(new int[] {
1000000,
0,
0,
0});
this.NUDMaxCount.Minimum = new decimal(new int[] {
1,
0,
0,
0});
this.NUDMaxCount.Name = "NUDMaxCount";
this.NUDMaxCount.Value = new decimal(new int[] {
1,
0,
0,
0});
//
// NUDMinCount
//
resources.ApplyResources(this.NUDMinCount, "NUDMinCount");
this.NUDMinCount.Maximum = new decimal(new int[] {
10000,
0,
0,
0});
this.NUDMinCount.Minimum = new decimal(new int[] {
1,
0,
0,
0});
this.NUDMinCount.Name = "NUDMinCount";
this.NUDMinCount.Value = new decimal(new int[] {
1,
0,
0,
0});
//
// LblWeightLabel
//
resources.ApplyResources(this.LblWeightLabel, "LblWeightLabel");
this.LblWeightLabel.Name = "LblWeightLabel";
//
// LblCountLabel
//
resources.ApplyResources(this.LblCountLabel, "LblCountLabel");
this.LblCountLabel.Name = "LblCountLabel";
//
// ListItems
//
resources.ApplyResources(this.ListItems, "ListItems");
this.ListItems.FormattingEnabled = true;
this.ListItems.Name = "ListItems";
this.ListItems.SelectedIndexChanged += new System.EventHandler(this.ListItems_SelectedIndexChanged);
//
// GrpMonsterList
//
resources.ApplyResources(this.GrpMonsterList, "GrpMonsterList");
this.GrpMonsterList.Controls.Add(this.ListMonsters);
this.GrpMonsterList.Controls.Add(this.TxtMonsterFilter);
this.GrpMonsterList.Name = "GrpMonsterList";
this.GrpMonsterList.TabStop = false;
//
// GrpItemList
//
resources.ApplyResources(this.GrpItemList, "GrpItemList");
this.GrpItemList.Controls.Add(this.TxtItemFilter);
this.GrpItemList.Controls.Add(this.ListItems);
this.GrpItemList.Name = "GrpItemList";
this.GrpItemList.TabStop = false;
//
// FormDropEditor
//
resources.ApplyResources(this, "$this");
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.Controls.Add(this.GrpItemList);
this.Controls.Add(this.GrpMonsterList);
this.Controls.Add(this.GrpDropList);
this.Controls.Add(this.BtnSave);
this.Controls.Add(this.BtnLoad);
this.Controls.Add(this.TxtDropJsonPath);
this.Controls.Add(this.LblDropPathLabel);
this.Name = "FormDropEditor";
this.GrpDropList.ResumeLayout(false);
this.GrpDropList.PerformLayout();
((System.ComponentModel.ISupportInitialize)(this.NUDMaxWeight)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.NUDMinWeight)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.NUDMaxCount)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.NUDMinCount)).EndInit();
this.GrpMonsterList.ResumeLayout(false);
this.GrpMonsterList.PerformLayout();
this.GrpItemList.ResumeLayout(false);
this.GrpItemList.PerformLayout();
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private System.Windows.Forms.Label LblDropPathLabel;
private System.Windows.Forms.TextBox TxtDropJsonPath;
private System.Windows.Forms.Button BtnLoad;
private System.Windows.Forms.Button BtnSave;
private System.Windows.Forms.ListBox ListMonsters;
private System.Windows.Forms.TextBox TxtMonsterFilter;
private System.Windows.Forms.TextBox TxtItemFilter;
private System.Windows.Forms.ListBox ListDropData;
private System.Windows.Forms.GroupBox GrpDropList;
private System.Windows.Forms.Label LblTilde2;
private System.Windows.Forms.Label LblTilde1;
private System.Windows.Forms.NumericUpDown NUDMaxWeight;
private System.Windows.Forms.NumericUpDown NUDMinWeight;
private System.Windows.Forms.NumericUpDown NUDMaxCount;
private System.Windows.Forms.NumericUpDown NUDMinCount;
private System.Windows.Forms.Label LblWeightLabel;
private System.Windows.Forms.Label LblCountLabel;
private System.Windows.Forms.Label LblItemLabel;
private System.Windows.Forms.ListBox ListItems;
private System.Windows.Forms.GroupBox GrpMonsterList;
private System.Windows.Forms.GroupBox GrpItemList;
private System.Windows.Forms.Button BtnDelete;
private System.Windows.Forms.Button BtnAddOrUpdate;
private System.Windows.Forms.TextBox TxtItem;
private System.Windows.Forms.Button BtnCopy;
private System.Windows.Forms.Button BtnPaste;
private System.Windows.Forms.Button BtnClear;
private System.Windows.Forms.Button BtnCopyAll;
}
}

View File

@@ -0,0 +1,498 @@
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Windows.Forms;
using GrasscutterTools.Game;
using GrasscutterTools.Game.Drop;
using GrasscutterTools.Properties;
using GrasscutterTools.Utils;
using Newtonsoft.Json;
using static System.Windows.Forms.VisualStyles.VisualStyleElement.StartPanel;
namespace GrasscutterTools.Forms
{
public partial class FormDropEditor : Form
{
#region - -
/// <summary>
/// 掉落池
/// Key:怪物ID
/// Value:掉落列表
/// </summary>
private Dictionary<int, List<DropData>> Banners;
/// <summary>
/// 怪物集
/// </summary>
private readonly string[] Monsters;
/// <summary>
/// 当前选中项的掉落列表
/// (当选中多条时,数据为交集)
/// </summary>
private readonly List<DropData> SelectedDropList = new List<DropData>();
/// <summary>
/// 掉落物剪贴板
/// </summary>
private readonly List<DropData> DropClipboard = new List<DropData>();
#endregion - -
#region - -
public FormDropEditor()
{
InitializeComponent();
Icon = Resources.IconGrasscutter;
Monsters = new string[GameData.Monsters.Lines.Length + GameData.Animals.Lines.Length];
GameData.Monsters.Lines.CopyTo(Monsters, 0);
GameData.Animals.Lines.CopyTo(Monsters, GameData.Monsters.Lines.Length);
Array.Sort(Monsters);
ListMonsters.Items.AddRange(Monsters);
ListItems.Items.AddRange(GameData.Items.Lines);
Banners = new Dictionary<int, List<DropData>>();
}
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
try
{
// 加载文件路径
var path = Settings.Default.DropJsonPath;
TxtDropJsonPath.Text = path;
if (!string.IsNullOrEmpty(path) && File.Exists(path))
LoadBanners(path);
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString(), Resources.Error, MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
protected override void OnFormClosed(FormClosedEventArgs e)
{
// 保存文件路径
Settings.Default.DropJsonPath = TxtDropJsonPath.Text;
Settings.Default.Save();
base.OnFormClosed(e);
}
#endregion - -
#region - Drop.json -
/// <summary>
/// 加载按钮点击时触发
/// </summary>
private void BtnLoad_Click(object sender, EventArgs e)
{
try
{
var path = TxtDropJsonPath.Text.Trim();
if (path == string.Empty)
{
var dialog = new OpenFileDialog
{
FileName = "Drop.json",
Filter = "Drop.Json (*.json)|*.json|All files (*.*)|*.*",
};
var result = dialog.ShowDialog();
if (result == DialogResult.OK)
path = TxtDropJsonPath.Text = dialog.FileName;
else
return;
}
// 反序列化
LoadBanners(path);
MessageBox.Show("OK", Resources.Tips, MessageBoxButtons.OK);
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString(), Resources.Error, MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
private void LoadBanners(string path)
{
// 反序列化
var banners = JsonConvert.DeserializeObject<List<DropInfo>>(File.ReadAllText(path));
Banners = new Dictionary<int, List<DropData>>(banners.Count);
foreach (var item in banners)
Banners.Add(item.MonsterId, item.DropDataList);
}
/// <summary>
/// 保存按钮点击时触发
/// </summary>
private void BtnSave_Click(object sender, EventArgs e)
{
try
{
var path = TxtDropJsonPath.Text.Trim();
if (path == string.Empty)
{
var dialog = new SaveFileDialog
{
FileName = "Drop.json",
Filter = "Drop.json (*.json)|*.json|All files (*.*)|*.*",
};
var result = dialog.ShowDialog();
if (result == DialogResult.OK)
path = TxtDropJsonPath.Text = dialog.FileName;
else
return;
}
// 序列化
var banners = new List<DropInfo>(Banners.Count);
foreach (var item in Banners)
{
banners.Add(new DropInfo
{
MonsterId = item.Key,
DropDataList = item.Value,
});
}
File.WriteAllText(path, JsonConvert.SerializeObject(banners));
MessageBox.Show("OK", Resources.Tips, MessageBoxButtons.OK);
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString(), Resources.Error, MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
#endregion - Drop.json -
#region - -
/// <summary>
/// 怪物列表过滤器文本改变时触发
/// </summary>
private void TxtMonsterFilter_TextChanged(object sender, EventArgs e)
{
UIUtil.ListBoxFilter(ListMonsters, Monsters, TxtMonsterFilter.Text);
}
/// <summary>
/// 遍历选中项怪物Id集合
/// </summary>
private IEnumerable<int> SelectedMonsterIds()
{
foreach (string item in ListMonsters.SelectedItems)
yield return ItemMap.ToId(item);
}
/// <summary>
/// 怪物列表选中项改变时触发
/// </summary>
private void ListMonsters_SelectedIndexChanged(object sender, EventArgs e)
{
if (ListMonsters.SelectedItems.Count == 0) return;
// 掉落物列表标题显示
var sp = GrpDropList.Text.IndexOf(" | ");
if (sp >= 0) GrpDropList.Text = GrpDropList.Text.Remove(sp);
if (ListMonsters.SelectedItems.Count == 1)
{
var item = ListMonsters.SelectedItem as string;
GrpDropList.Text += " | " + item;
}
else
{
GrpDropList.Text += " | Monsters x" + ListMonsters.SelectedItems.Count.ToString();
}
// 获取选中项中相同的掉落物集合(仅物品、掉落数量、掉落概率完全一致的显示)
SelectedDropList.Clear();
var first = true;
foreach (var monsterId in SelectedMonsterIds())
{
if (Banners.TryGetValue(monsterId, out List<DropData> dropList))
{
if (first)
{
SelectedDropList.AddRange(dropList);
first = false;
}
else if (SelectedDropList.Count > 0)
{
// 仅保留交集
var intersect = SelectedDropList.Intersect(dropList).ToList();
SelectedDropList.Clear();
SelectedDropList.AddRange(intersect);
}
else
{
break;
}
}
else
{
SelectedDropList.Clear();
break;
}
}
ShowDropList(SelectedDropList);
}
/// <summary>
/// 显示指定掉落列表
/// </summary>
/// <param name="dropList">掉落物列表</param>
private void ShowDropList(List<DropData> dropList)
{
// 显示到列表
ListDropData.BeginUpdate();
ListDropData.Items.Clear();
if (dropList.Count > 0)
{
ListDropData.Items.AddRange(dropList.Select(it => it.ToString()).ToArray());
ListDropData.SelectedIndex = 0;
}
ListDropData.EndUpdate();
}
#endregion - -
#region - -
/// <summary>
/// 掉落列表选中项改变时触发
/// </summary>
private void ListDropData_SelectedIndexChanged(object sender, EventArgs e)
{
if (ListDropData.SelectedIndex == -1) return;
var dropData = SelectedDropList[ListDropData.SelectedIndex];
TxtItem.Text = $"{dropData.ItemId} : {GameData.Items[dropData.ItemId]}";
NUDMinCount.Value = dropData.MinCount;
NUDMaxCount.Value = dropData.MaxCount;
NUDMinWeight.Value = dropData.MinWeight;
NUDMaxWeight.Value = dropData.MaxWeight;
//BtnCopy.Enabled = true;
//BtnDelete.Enabled = true;
//BtnAddOrUpdate.Enabled = true;
}
/// <summary>
/// 点击复制按钮时触发
/// </summary>
private async void BtnCopy_Click(object sender, EventArgs e)
{
if (ListDropData.SelectedIndex == -1) return;
DropClipboard.Clear();
DropClipboard.Add(SelectedDropList[ListDropData.SelectedIndex]);
await UIUtil.ButtonComplete(BtnCopy);
}
/// <summary>
/// 点击复制全部按钮时触发
/// </summary>
private async void BtnCopyAll_Click(object sender, EventArgs e)
{
if (SelectedDropList.Count == 0) return;
DropClipboard.Clear();
DropClipboard.AddRange(SelectedDropList);
await UIUtil.ButtonComplete(BtnCopyAll);
}
/// <summary>
/// 点击粘贴按钮时触发
/// </summary>
private void BtnPaste_Click(object sender, EventArgs e)
{
if (DropClipboard.Count == 0) return;
foreach (var item in DropClipboard)
AddOrUpdateDrop(item);
ShowDropList(SelectedDropList);
}
/// <summary>
/// 点击删除按钮时触发
/// </summary>
private void BtnDelete_Click(object sender, EventArgs e)
{
if (ListDropData.SelectedIndex == -1) return;
var dropData = SelectedDropList[ListDropData.SelectedIndex];
RemoveDrop(dropData);
ShowDropList(SelectedDropList);
}
/// <summary>
/// 点击清空按钮时触发
/// </summary>
private void BtnClear_Click(object sender, EventArgs e)
{
if (SelectedDropList.Count == 0)
return;
if (MessageBox.Show(Resources.AskConfirmDeletion, Resources.Tips, MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
{
for (int i = SelectedDropList.Count - 1; i >= 0; i--)
RemoveDrop(SelectedDropList[i]);
ShowDropList(SelectedDropList);
}
}
/// <summary>
/// 点击添加或更新按钮时触发
/// </summary>
private void BtnAddOrUpdate_Click(object sender, EventArgs e)
{
if (ListMonsters.SelectedItems.Count == 0)
return;
try
{
AddOrUpdateDrop(GetInput());
}
catch (FormatException ex)
{
MessageBox.Show(ex.Message, Resources.Error, MessageBoxButtons.OK, MessageBoxIcon.Error);
}
ShowDropList(SelectedDropList);
}
/// <summary>
/// 获取输入
/// </summary>
/// <returns>掉落物信息</returns>
private DropData GetInput()
{
var dropData = new DropData();
var item = TxtItem.Text;
dropData.ItemId = ItemMap.ToId(item);
//if (int.TryParse(item.Substring(0, item.IndexOf(':')).Trim(), out int itemId))
//{
// dropData.ItemId = itemId;
//}
if (NUDMaxCount.Value < NUDMinCount.Value)
{
dropData.MinCount = (int)NUDMaxCount.Value;
dropData.MaxCount = (int)NUDMinCount.Value;
}
else
{
dropData.MinCount = (int)NUDMinCount.Value;
dropData.MaxCount = (int)NUDMaxCount.Value;
}
if (NUDMaxWeight.Value < NUDMinWeight.Value)
{
dropData.MinWeight = (int)NUDMaxWeight.Value;
dropData.MaxWeight = (int)NUDMinWeight.Value;
}
else
{
dropData.MinWeight = (int)NUDMinWeight.Value;
dropData.MaxWeight = (int)NUDMaxWeight.Value;
}
return dropData;
}
/// <summary>
/// 添加或更新掉落物到当前选中项
/// </summary>
/// <param name="data">掉落物信息</param>
private void AddOrUpdateDrop(DropData data)
{
if (ListMonsters.SelectedItems.Count == 0)
return;
foreach (var monsterId in SelectedMonsterIds())
{
if (!Banners.TryGetValue(monsterId, out List<DropData> dropList))
{
dropList = new List<DropData>();
Banners[monsterId] = dropList;
}
AddOrUpdateDrop(dropList, data);
}
AddOrUpdateDrop(SelectedDropList, data);
}
/// <summary>
/// 从当前选中项移除掉落物
/// </summary>
/// <param name="data">掉落物信息</param>
private void RemoveDrop(DropData data)
{
if (ListMonsters.SelectedItems.Count == 0)
return;
foreach (var monsterId in SelectedMonsterIds())
{
if (!Banners.TryGetValue(monsterId, out List<DropData> dropList))
{
dropList = new List<DropData>();
Banners[monsterId] = dropList;
}
dropList.Remove(data);
}
SelectedDropList.Remove(data);
}
/// <summary>
/// 添加或更新掉落物到指定列表中
/// </summary>
/// <param name="dropList">掉落物列表</param>
/// <param name="data">掉落物信息</param>
private void AddOrUpdateDrop(List<DropData> dropList, DropData data)
{
int i = 0;
for (; i < dropList.Count; i++)
if (dropList[i].ItemId == data.ItemId)
break;
if (i == dropList.Count)
dropList.Add(data);
else
dropList[i] = data;
}
#endregion - -
#region - -
/// <summary>
/// 物品列表过滤器文本改变时触发
/// </summary>
private void TxtItemFilter_TextChanged(object sender, EventArgs e)
{
UIUtil.ListBoxFilter(ListItems, GameData.Items.Lines, TxtItemFilter.Text);
}
/// <summary>
/// 物品列表选中项改变时触发
/// </summary>
private void ListItems_SelectedIndexChanged(object sender, EventArgs e)
{
TxtItem.Text = ListItems.SelectedItem as string;
}
#endregion - -
}
}

View File

@@ -0,0 +1,178 @@
<?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>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="LblDropPathLabel.Size" type="System.Drawing.Size, System.Drawing">
<value>97, 17</value>
</data>
<data name="LblDropPathLabel.Text" xml:space="preserve">
<value>Drop.json Path:</value>
</data>
<data name="BtnLoad.Text" xml:space="preserve">
<value>Load</value>
</data>
<data name="BtnSave.Text" xml:space="preserve">
<value>Save</value>
</data>
<data name="GrpDropList.Text" xml:space="preserve">
<value>Drop list</value>
</data>
<data name="BtnCopyAll.Text" xml:space="preserve">
<value>Copy all</value>
</data>
<data name="BtnClear.Text" xml:space="preserve">
<value>× Clear</value>
</data>
<data name="BtnPaste.Text" xml:space="preserve">
<value>Paste</value>
</data>
<data name="BtnCopy.Text" xml:space="preserve">
<value>Copy</value>
</data>
<data name="BtnDelete.Text" xml:space="preserve">
<value>- Remove</value>
</data>
<data name="BtnAddOrUpdate.Text" xml:space="preserve">
<value>√ Add or Update</value>
</data>
<data name="LblItemLabel.Size" type="System.Drawing.Size, System.Drawing">
<value>37, 17</value>
</data>
<data name="LblItemLabel.Text" xml:space="preserve">
<value>Item:</value>
</data>
<data name="LblWeightLabel.Size" type="System.Drawing.Size, System.Drawing">
<value>52, 17</value>
</data>
<data name="LblWeightLabel.Text" xml:space="preserve">
<value>Weight:</value>
</data>
<data name="LblCountLabel.Size" type="System.Drawing.Size, System.Drawing">
<value>45, 17</value>
</data>
<data name="LblCountLabel.Text" xml:space="preserve">
<value>Count:</value>
</data>
<data name="GrpMonsterList.Text" xml:space="preserve">
<value>Monster list</value>
</data>
<data name="GrpItemList.Text" xml:space="preserve">
<value>Item list</value>
</data>
</root>

View File

@@ -0,0 +1,891 @@
<?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>
<assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="LblDropPathLabel.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="LblDropPathLabel.Location" type="System.Drawing.Point, System.Drawing">
<value>17, 15</value>
</data>
<data name="LblDropPathLabel.Size" type="System.Drawing.Size, System.Drawing">
<value>105, 17</value>
</data>
<data name="LblDropPathLabel.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
</data>
<data name="LblDropPathLabel.Text" xml:space="preserve">
<value>Drop.json 路径:</value>
</data>
<data name="&gt;&gt;LblDropPathLabel.Name" xml:space="preserve">
<value>LblDropPathLabel</value>
</data>
<data name="&gt;&gt;LblDropPathLabel.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="&gt;&gt;LblDropPathLabel.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;LblDropPathLabel.ZOrder" xml:space="preserve">
<value>6</value>
</data>
<data name="TxtDropJsonPath.Location" type="System.Drawing.Point, System.Drawing">
<value>128, 12</value>
</data>
<data name="TxtDropJsonPath.Size" type="System.Drawing.Size, System.Drawing">
<value>487, 23</value>
</data>
<data name="TxtDropJsonPath.TabIndex" type="System.Int32, mscorlib">
<value>1</value>
</data>
<data name="&gt;&gt;TxtDropJsonPath.Name" xml:space="preserve">
<value>TxtDropJsonPath</value>
</data>
<data name="&gt;&gt;TxtDropJsonPath.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="&gt;&gt;TxtDropJsonPath.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;TxtDropJsonPath.ZOrder" xml:space="preserve">
<value>5</value>
</data>
<data name="BtnLoad.Location" type="System.Drawing.Point, System.Drawing">
<value>621, 12</value>
</data>
<data name="BtnLoad.Size" type="System.Drawing.Size, System.Drawing">
<value>100, 23</value>
</data>
<data name="BtnLoad.TabIndex" type="System.Int32, mscorlib">
<value>2</value>
</data>
<data name="BtnLoad.Text" xml:space="preserve">
<value>加载</value>
</data>
<data name="&gt;&gt;BtnLoad.Name" xml:space="preserve">
<value>BtnLoad</value>
</data>
<data name="&gt;&gt;BtnLoad.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="&gt;&gt;BtnLoad.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;BtnLoad.ZOrder" xml:space="preserve">
<value>4</value>
</data>
<data name="BtnSave.Location" type="System.Drawing.Point, System.Drawing">
<value>726, 12</value>
</data>
<data name="BtnSave.Size" type="System.Drawing.Size, System.Drawing">
<value>100, 23</value>
</data>
<data name="BtnSave.TabIndex" type="System.Int32, mscorlib">
<value>3</value>
</data>
<data name="BtnSave.Text" xml:space="preserve">
<value>保存</value>
</data>
<data name="&gt;&gt;BtnSave.Name" xml:space="preserve">
<value>BtnSave</value>
</data>
<data name="&gt;&gt;BtnSave.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="&gt;&gt;BtnSave.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;BtnSave.ZOrder" xml:space="preserve">
<value>3</value>
</data>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="ListMonsters.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Bottom, Left, Right</value>
</data>
<data name="ListMonsters.ItemHeight" type="System.Int32, mscorlib">
<value>17</value>
</data>
<data name="ListMonsters.Location" type="System.Drawing.Point, System.Drawing">
<value>6, 51</value>
</data>
<data name="ListMonsters.Size" type="System.Drawing.Size, System.Drawing">
<value>238, 344</value>
</data>
<data name="ListMonsters.TabIndex" type="System.Int32, mscorlib">
<value>6</value>
</data>
<data name="&gt;&gt;ListMonsters.Name" xml:space="preserve">
<value>ListMonsters</value>
</data>
<data name="&gt;&gt;ListMonsters.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="&gt;&gt;ListMonsters.Parent" xml:space="preserve">
<value>GrpMonsterList</value>
</data>
<data name="&gt;&gt;ListMonsters.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="TxtMonsterFilter.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Left, Right</value>
</data>
<data name="TxtMonsterFilter.Location" type="System.Drawing.Point, System.Drawing">
<value>6, 22</value>
</data>
<data name="TxtMonsterFilter.Size" type="System.Drawing.Size, System.Drawing">
<value>238, 23</value>
</data>
<data name="TxtMonsterFilter.TabIndex" type="System.Int32, mscorlib">
<value>5</value>
</data>
<data name="&gt;&gt;TxtMonsterFilter.Name" xml:space="preserve">
<value>TxtMonsterFilter</value>
</data>
<data name="&gt;&gt;TxtMonsterFilter.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="&gt;&gt;TxtMonsterFilter.Parent" xml:space="preserve">
<value>GrpMonsterList</value>
</data>
<data name="&gt;&gt;TxtMonsterFilter.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="TxtItemFilter.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Left, Right</value>
</data>
<data name="TxtItemFilter.Location" type="System.Drawing.Point, System.Drawing">
<value>6, 22</value>
</data>
<data name="TxtItemFilter.Size" type="System.Drawing.Size, System.Drawing">
<value>238, 23</value>
</data>
<data name="TxtItemFilter.TabIndex" type="System.Int32, mscorlib">
<value>21</value>
</data>
<data name="&gt;&gt;TxtItemFilter.Name" xml:space="preserve">
<value>TxtItemFilter</value>
</data>
<data name="&gt;&gt;TxtItemFilter.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="&gt;&gt;TxtItemFilter.Parent" xml:space="preserve">
<value>GrpItemList</value>
</data>
<data name="&gt;&gt;TxtItemFilter.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="ListDropData.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Bottom, Left, Right</value>
</data>
<data name="ListDropData.ItemHeight" type="System.Int32, mscorlib">
<value>17</value>
</data>
<data name="ListDropData.Location" type="System.Drawing.Point, System.Drawing">
<value>6, 22</value>
</data>
<data name="ListDropData.Size" type="System.Drawing.Size, System.Drawing">
<value>288, 174</value>
</data>
<data name="ListDropData.TabIndex" type="System.Int32, mscorlib">
<value>8</value>
</data>
<data name="&gt;&gt;ListDropData.Name" xml:space="preserve">
<value>ListDropData</value>
</data>
<data name="&gt;&gt;ListDropData.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="&gt;&gt;ListDropData.Parent" xml:space="preserve">
<value>GrpDropList</value>
</data>
<data name="&gt;&gt;ListDropData.ZOrder" xml:space="preserve">
<value>16</value>
</data>
<data name="GrpDropList.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Bottom, Left, Right</value>
</data>
<data name="BtnCopyAll.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Bottom, Left</value>
</data>
<data name="BtnCopyAll.Location" type="System.Drawing.Point, System.Drawing">
<value>87, 202</value>
</data>
<data name="BtnCopyAll.Size" type="System.Drawing.Size, System.Drawing">
<value>100, 23</value>
</data>
<data name="BtnCopyAll.TabIndex" type="System.Int32, mscorlib">
<value>10</value>
</data>
<data name="BtnCopyAll.Text" xml:space="preserve">
<value>复制全部</value>
</data>
<data name="&gt;&gt;BtnCopyAll.Name" xml:space="preserve">
<value>BtnCopyAll</value>
</data>
<data name="&gt;&gt;BtnCopyAll.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="&gt;&gt;BtnCopyAll.Parent" xml:space="preserve">
<value>GrpDropList</value>
</data>
<data name="&gt;&gt;BtnCopyAll.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="BtnClear.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Bottom, Left</value>
</data>
<data name="BtnClear.Location" type="System.Drawing.Point, System.Drawing">
<value>113, 230</value>
</data>
<data name="BtnClear.Size" type="System.Drawing.Size, System.Drawing">
<value>100, 23</value>
</data>
<data name="BtnClear.TabIndex" type="System.Int32, mscorlib">
<value>13</value>
</data>
<data name="BtnClear.Text" xml:space="preserve">
<value>× 清空</value>
</data>
<data name="&gt;&gt;BtnClear.Name" xml:space="preserve">
<value>BtnClear</value>
</data>
<data name="&gt;&gt;BtnClear.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="&gt;&gt;BtnClear.Parent" xml:space="preserve">
<value>GrpDropList</value>
</data>
<data name="&gt;&gt;BtnClear.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="BtnPaste.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Bottom, Left</value>
</data>
<data name="BtnPaste.Location" type="System.Drawing.Point, System.Drawing">
<value>193, 202</value>
</data>
<data name="BtnPaste.Size" type="System.Drawing.Size, System.Drawing">
<value>100, 23</value>
</data>
<data name="BtnPaste.TabIndex" type="System.Int32, mscorlib">
<value>11</value>
</data>
<data name="BtnPaste.Text" xml:space="preserve">
<value>粘贴</value>
</data>
<data name="&gt;&gt;BtnPaste.Name" xml:space="preserve">
<value>BtnPaste</value>
</data>
<data name="&gt;&gt;BtnPaste.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="&gt;&gt;BtnPaste.Parent" xml:space="preserve">
<value>GrpDropList</value>
</data>
<data name="&gt;&gt;BtnPaste.ZOrder" xml:space="preserve">
<value>2</value>
</data>
<data name="BtnCopy.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Bottom, Left</value>
</data>
<data name="BtnCopy.Location" type="System.Drawing.Point, System.Drawing">
<value>6, 202</value>
</data>
<data name="BtnCopy.Size" type="System.Drawing.Size, System.Drawing">
<value>75, 23</value>
</data>
<data name="BtnCopy.TabIndex" type="System.Int32, mscorlib">
<value>9</value>
</data>
<data name="BtnCopy.Text" xml:space="preserve">
<value>复制</value>
</data>
<data name="&gt;&gt;BtnCopy.Name" xml:space="preserve">
<value>BtnCopy</value>
</data>
<data name="&gt;&gt;BtnCopy.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="&gt;&gt;BtnCopy.Parent" xml:space="preserve">
<value>GrpDropList</value>
</data>
<data name="&gt;&gt;BtnCopy.ZOrder" xml:space="preserve">
<value>3</value>
</data>
<data name="TxtItem.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Bottom, Left</value>
</data>
<data name="TxtItem.Location" type="System.Drawing.Point, System.Drawing">
<value>113, 280</value>
</data>
<data name="TxtItem.Size" type="System.Drawing.Size, System.Drawing">
<value>137, 23</value>
</data>
<data name="TxtItem.TabIndex" type="System.Int32, mscorlib">
<value>14</value>
</data>
<data name="&gt;&gt;TxtItem.Name" xml:space="preserve">
<value>TxtItem</value>
</data>
<data name="&gt;&gt;TxtItem.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="&gt;&gt;TxtItem.Parent" xml:space="preserve">
<value>GrpDropList</value>
</data>
<data name="&gt;&gt;TxtItem.ZOrder" xml:space="preserve">
<value>4</value>
</data>
<data name="BtnDelete.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Bottom, Left</value>
</data>
<data name="BtnDelete.Location" type="System.Drawing.Point, System.Drawing">
<value>7, 230</value>
</data>
<data name="BtnDelete.Size" type="System.Drawing.Size, System.Drawing">
<value>100, 23</value>
</data>
<data name="BtnDelete.TabIndex" type="System.Int32, mscorlib">
<value>12</value>
</data>
<data name="BtnDelete.Text" xml:space="preserve">
<value>- 删除</value>
</data>
<data name="&gt;&gt;BtnDelete.Name" xml:space="preserve">
<value>BtnDelete</value>
</data>
<data name="&gt;&gt;BtnDelete.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="&gt;&gt;BtnDelete.Parent" xml:space="preserve">
<value>GrpDropList</value>
</data>
<data name="&gt;&gt;BtnDelete.ZOrder" xml:space="preserve">
<value>5</value>
</data>
<data name="BtnAddOrUpdate.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Bottom, Left</value>
</data>
<data name="BtnAddOrUpdate.Location" type="System.Drawing.Point, System.Drawing">
<value>54, 371</value>
</data>
<data name="BtnAddOrUpdate.Size" type="System.Drawing.Size, System.Drawing">
<value>196, 23</value>
</data>
<data name="BtnAddOrUpdate.TabIndex" type="System.Int32, mscorlib">
<value>19</value>
</data>
<data name="BtnAddOrUpdate.Text" xml:space="preserve">
<value>√ 添加或更新</value>
</data>
<data name="&gt;&gt;BtnAddOrUpdate.Name" xml:space="preserve">
<value>BtnAddOrUpdate</value>
</data>
<data name="&gt;&gt;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="&gt;&gt;BtnAddOrUpdate.Parent" xml:space="preserve">
<value>GrpDropList</value>
</data>
<data name="&gt;&gt;BtnAddOrUpdate.ZOrder" xml:space="preserve">
<value>6</value>
</data>
<data name="LblItemLabel.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Bottom, Left</value>
</data>
<data name="LblItemLabel.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="LblItemLabel.Location" type="System.Drawing.Point, System.Drawing">
<value>51, 283</value>
</data>
<data name="LblItemLabel.Size" type="System.Drawing.Size, System.Drawing">
<value>56, 17</value>
</data>
<data name="LblItemLabel.TabIndex" type="System.Int32, mscorlib">
<value>15</value>
</data>
<data name="LblItemLabel.Text" xml:space="preserve">
<value>掉落物:</value>
</data>
<data name="&gt;&gt;LblItemLabel.Name" xml:space="preserve">
<value>LblItemLabel</value>
</data>
<data name="&gt;&gt;LblItemLabel.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="&gt;&gt;LblItemLabel.Parent" xml:space="preserve">
<value>GrpDropList</value>
</data>
<data name="&gt;&gt;LblItemLabel.ZOrder" xml:space="preserve">
<value>7</value>
</data>
<data name="LblTilde2.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Bottom, Left</value>
</data>
<data name="LblTilde2.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="LblTilde2.Location" type="System.Drawing.Point, System.Drawing">
<value>167, 342</value>
</data>
<data name="LblTilde2.Size" type="System.Drawing.Size, System.Drawing">
<value>17, 17</value>
</data>
<data name="LblTilde2.TabIndex" type="System.Int32, mscorlib">
<value>14</value>
</data>
<data name="LblTilde2.Text" xml:space="preserve">
<value>~</value>
</data>
<data name="&gt;&gt;LblTilde2.Name" xml:space="preserve">
<value>LblTilde2</value>
</data>
<data name="&gt;&gt;LblTilde2.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="&gt;&gt;LblTilde2.Parent" xml:space="preserve">
<value>GrpDropList</value>
</data>
<data name="&gt;&gt;LblTilde2.ZOrder" xml:space="preserve">
<value>8</value>
</data>
<data name="LblTilde1.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Bottom, Left</value>
</data>
<data name="LblTilde1.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="LblTilde1.Location" type="System.Drawing.Point, System.Drawing">
<value>167, 313</value>
</data>
<data name="LblTilde1.Size" type="System.Drawing.Size, System.Drawing">
<value>17, 17</value>
</data>
<data name="LblTilde1.TabIndex" type="System.Int32, mscorlib">
<value>14</value>
</data>
<data name="LblTilde1.Text" xml:space="preserve">
<value>~</value>
</data>
<data name="&gt;&gt;LblTilde1.Name" xml:space="preserve">
<value>LblTilde1</value>
</data>
<data name="&gt;&gt;LblTilde1.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="&gt;&gt;LblTilde1.Parent" xml:space="preserve">
<value>GrpDropList</value>
</data>
<data name="&gt;&gt;LblTilde1.ZOrder" xml:space="preserve">
<value>9</value>
</data>
<data name="NUDMaxWeight.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Bottom, Left</value>
</data>
<data name="NUDMaxWeight.Location" type="System.Drawing.Point, System.Drawing">
<value>190, 340</value>
</data>
<data name="NUDMaxWeight.Size" type="System.Drawing.Size, System.Drawing">
<value>60, 23</value>
</data>
<data name="NUDMaxWeight.TabIndex" type="System.Int32, mscorlib">
<value>18</value>
</data>
<data name="&gt;&gt;NUDMaxWeight.Name" xml:space="preserve">
<value>NUDMaxWeight</value>
</data>
<data name="&gt;&gt;NUDMaxWeight.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="&gt;&gt;NUDMaxWeight.Parent" xml:space="preserve">
<value>GrpDropList</value>
</data>
<data name="&gt;&gt;NUDMaxWeight.ZOrder" xml:space="preserve">
<value>10</value>
</data>
<data name="NUDMinWeight.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Bottom, Left</value>
</data>
<data name="NUDMinWeight.Location" type="System.Drawing.Point, System.Drawing">
<value>101, 342</value>
</data>
<data name="NUDMinWeight.Size" type="System.Drawing.Size, System.Drawing">
<value>60, 23</value>
</data>
<data name="NUDMinWeight.TabIndex" type="System.Int32, mscorlib">
<value>17</value>
</data>
<data name="&gt;&gt;NUDMinWeight.Name" xml:space="preserve">
<value>NUDMinWeight</value>
</data>
<data name="&gt;&gt;NUDMinWeight.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="&gt;&gt;NUDMinWeight.Parent" xml:space="preserve">
<value>GrpDropList</value>
</data>
<data name="&gt;&gt;NUDMinWeight.ZOrder" xml:space="preserve">
<value>11</value>
</data>
<data name="NUDMaxCount.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Bottom, Left</value>
</data>
<data name="NUDMaxCount.Location" type="System.Drawing.Point, System.Drawing">
<value>190, 311</value>
</data>
<data name="NUDMaxCount.Size" type="System.Drawing.Size, System.Drawing">
<value>60, 23</value>
</data>
<data name="NUDMaxCount.TabIndex" type="System.Int32, mscorlib">
<value>16</value>
</data>
<data name="&gt;&gt;NUDMaxCount.Name" xml:space="preserve">
<value>NUDMaxCount</value>
</data>
<data name="&gt;&gt;NUDMaxCount.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="&gt;&gt;NUDMaxCount.Parent" xml:space="preserve">
<value>GrpDropList</value>
</data>
<data name="&gt;&gt;NUDMaxCount.ZOrder" xml:space="preserve">
<value>12</value>
</data>
<data name="NUDMinCount.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Bottom, Left</value>
</data>
<data name="NUDMinCount.Location" type="System.Drawing.Point, System.Drawing">
<value>101, 311</value>
</data>
<data name="NUDMinCount.Size" type="System.Drawing.Size, System.Drawing">
<value>60, 23</value>
</data>
<data name="NUDMinCount.TabIndex" type="System.Int32, mscorlib">
<value>15</value>
</data>
<data name="&gt;&gt;NUDMinCount.Name" xml:space="preserve">
<value>NUDMinCount</value>
</data>
<data name="&gt;&gt;NUDMinCount.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="&gt;&gt;NUDMinCount.Parent" xml:space="preserve">
<value>GrpDropList</value>
</data>
<data name="&gt;&gt;NUDMinCount.ZOrder" xml:space="preserve">
<value>13</value>
</data>
<data name="LblWeightLabel.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Bottom, Left</value>
</data>
<data name="LblWeightLabel.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="LblWeightLabel.Location" type="System.Drawing.Point, System.Drawing">
<value>51, 344</value>
</data>
<data name="LblWeightLabel.Size" type="System.Drawing.Size, System.Drawing">
<value>44, 17</value>
</data>
<data name="LblWeightLabel.TabIndex" type="System.Int32, mscorlib">
<value>9</value>
</data>
<data name="LblWeightLabel.Text" xml:space="preserve">
<value>权重:</value>
</data>
<data name="&gt;&gt;LblWeightLabel.Name" xml:space="preserve">
<value>LblWeightLabel</value>
</data>
<data name="&gt;&gt;LblWeightLabel.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="&gt;&gt;LblWeightLabel.Parent" xml:space="preserve">
<value>GrpDropList</value>
</data>
<data name="&gt;&gt;LblWeightLabel.ZOrder" xml:space="preserve">
<value>14</value>
</data>
<data name="LblCountLabel.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Bottom, Left</value>
</data>
<data name="LblCountLabel.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="LblCountLabel.Location" type="System.Drawing.Point, System.Drawing">
<value>51, 313</value>
</data>
<data name="LblCountLabel.Size" type="System.Drawing.Size, System.Drawing">
<value>44, 17</value>
</data>
<data name="LblCountLabel.TabIndex" type="System.Int32, mscorlib">
<value>8</value>
</data>
<data name="LblCountLabel.Text" xml:space="preserve">
<value>数量:</value>
</data>
<data name="&gt;&gt;LblCountLabel.Name" xml:space="preserve">
<value>LblCountLabel</value>
</data>
<data name="&gt;&gt;LblCountLabel.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="&gt;&gt;LblCountLabel.Parent" xml:space="preserve">
<value>GrpDropList</value>
</data>
<data name="&gt;&gt;LblCountLabel.ZOrder" xml:space="preserve">
<value>15</value>
</data>
<data name="GrpDropList.Location" type="System.Drawing.Point, System.Drawing">
<value>270, 41</value>
</data>
<data name="GrpDropList.Size" type="System.Drawing.Size, System.Drawing">
<value>300, 400</value>
</data>
<data name="GrpDropList.TabIndex" type="System.Int32, mscorlib">
<value>7</value>
</data>
<data name="GrpDropList.Text" xml:space="preserve">
<value>掉落列表</value>
</data>
<data name="&gt;&gt;GrpDropList.Name" xml:space="preserve">
<value>GrpDropList</value>
</data>
<data name="&gt;&gt;GrpDropList.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="&gt;&gt;GrpDropList.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;GrpDropList.ZOrder" xml:space="preserve">
<value>2</value>
</data>
<data name="ListItems.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Bottom, Left, Right</value>
</data>
<data name="ListItems.ItemHeight" type="System.Int32, mscorlib">
<value>17</value>
</data>
<data name="ListItems.Location" type="System.Drawing.Point, System.Drawing">
<value>6, 51</value>
</data>
<data name="ListItems.Size" type="System.Drawing.Size, System.Drawing">
<value>238, 344</value>
</data>
<data name="ListItems.TabIndex" type="System.Int32, mscorlib">
<value>22</value>
</data>
<data name="&gt;&gt;ListItems.Name" xml:space="preserve">
<value>ListItems</value>
</data>
<data name="&gt;&gt;ListItems.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="&gt;&gt;ListItems.Parent" xml:space="preserve">
<value>GrpItemList</value>
</data>
<data name="&gt;&gt;ListItems.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="GrpMonsterList.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Bottom, Left</value>
</data>
<data name="GrpMonsterList.Location" type="System.Drawing.Point, System.Drawing">
<value>12, 41</value>
</data>
<data name="GrpMonsterList.Size" type="System.Drawing.Size, System.Drawing">
<value>250, 400</value>
</data>
<data name="GrpMonsterList.TabIndex" type="System.Int32, mscorlib">
<value>4</value>
</data>
<data name="GrpMonsterList.Text" xml:space="preserve">
<value>怪物列表</value>
</data>
<data name="&gt;&gt;GrpMonsterList.Name" xml:space="preserve">
<value>GrpMonsterList</value>
</data>
<data name="&gt;&gt;GrpMonsterList.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="&gt;&gt;GrpMonsterList.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;GrpMonsterList.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="GrpItemList.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Bottom, Right</value>
</data>
<data name="GrpItemList.Location" type="System.Drawing.Point, System.Drawing">
<value>576, 41</value>
</data>
<data name="GrpItemList.Size" type="System.Drawing.Size, System.Drawing">
<value>250, 400</value>
</data>
<data name="GrpItemList.TabIndex" type="System.Int32, mscorlib">
<value>20</value>
</data>
<data name="GrpItemList.Text" xml:space="preserve">
<value>物品列表</value>
</data>
<data name="&gt;&gt;GrpItemList.Name" xml:space="preserve">
<value>GrpItemList</value>
</data>
<data name="&gt;&gt;GrpItemList.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="&gt;&gt;GrpItemList.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;GrpItemList.ZOrder" xml:space="preserve">
<value>0</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.ClientSize" type="System.Drawing.Size, System.Drawing">
<value>839, 450</value>
</data>
<data name="$this.Font" type="System.Drawing.Font, System.Drawing">
<value>微软雅黑, 9pt</value>
</data>
<data name="$this.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>4, 4, 4, 4</value>
</data>
<data name="$this.MinimumSize" type="System.Drawing.Size, System.Drawing">
<value>855, 489</value>
</data>
<data name="$this.StartPosition" type="System.Windows.Forms.FormStartPosition, System.Windows.Forms">
<value>CenterScreen</value>
</data>
<data name="$this.Text" xml:space="preserve">
<value>Drop.json Editor</value>
</data>
<data name="&gt;&gt;$this.Name" xml:space="preserve">
<value>FormDropEditor</value>
</data>
<data name="&gt;&gt;$this.Type" xml:space="preserve">
<value>System.Windows.Forms.Form, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
</root>

View File

@@ -0,0 +1,193 @@
<?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>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="LblDropPathLabel.Size" type="System.Drawing.Size, System.Drawing">
<value>99, 17</value>
</data>
<data name="LblDropPathLabel.Text" xml:space="preserve">
<value>Drop.json Путь:</value>
</data>
<data name="BtnLoad.Text" xml:space="preserve">
<value>Нагрузка</value>
</data>
<data name="BtnSave.Text" xml:space="preserve">
<value>Сохранять</value>
</data>
<data name="GrpDropList.Text" xml:space="preserve">
<value>Drop list</value>
</data>
<data name="BtnCopyAll.Location" type="System.Drawing.Point, System.Drawing">
<value>94, 202</value>
</data>
<data name="BtnCopyAll.Size" type="System.Drawing.Size, System.Drawing">
<value>121, 23</value>
</data>
<data name="BtnCopyAll.Text" xml:space="preserve">
<value>Скопировать все</value>
</data>
<data name="BtnClear.Text" xml:space="preserve">
<value>× Очистить</value>
</data>
<data name="BtnPaste.Location" type="System.Drawing.Point, System.Drawing">
<value>219, 202</value>
</data>
<data name="BtnPaste.Size" type="System.Drawing.Size, System.Drawing">
<value>75, 23</value>
</data>
<data name="BtnPaste.Text" xml:space="preserve">
<value>Вставить</value>
</data>
<data name="BtnCopy.Size" type="System.Drawing.Size, System.Drawing">
<value>85, 23</value>
</data>
<data name="BtnCopy.Text" xml:space="preserve">
<value>Копировать</value>
</data>
<data name="BtnDelete.Text" xml:space="preserve">
<value>- Удалить</value>
</data>
<data name="BtnAddOrUpdate.Text" xml:space="preserve">
<value>√ Добавить или обновить</value>
</data>
<data name="LblItemLabel.Size" type="System.Drawing.Size, System.Drawing">
<value>62, 17</value>
</data>
<data name="LblItemLabel.Text" xml:space="preserve">
<value>предмет:</value>
</data>
<data name="LblWeightLabel.Size" type="System.Drawing.Size, System.Drawing">
<value>39, 17</value>
</data>
<data name="LblWeightLabel.Text" xml:space="preserve">
<value>Веса:</value>
</data>
<data name="LblCountLabel.Size" type="System.Drawing.Size, System.Drawing">
<value>58, 17</value>
</data>
<data name="LblCountLabel.Text" xml:space="preserve">
<value>Считать:</value>
</data>
<data name="GrpMonsterList.Text" xml:space="preserve">
<value>Список монстров</value>
</data>
<data name="GrpItemList.Text" xml:space="preserve">
<value>Список предметов</value>
</data>
</root>

View File

@@ -0,0 +1,144 @@
<?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="LblDropPathLabel.Text" xml:space="preserve">
<value>Drop.json 路徑:</value>
</data>
<data name="BtnLoad.Text" xml:space="preserve">
<value>加載</value>
</data>
<data name="BtnCopyAll.Text" xml:space="preserve">
<value>複製全部</value>
</data>
<data name="BtnPaste.Text" xml:space="preserve">
<value>粘貼</value>
</data>
<data name="BtnCopy.Text" xml:space="preserve">
<value>複製</value>
</data>
<data name="BtnDelete.Text" xml:space="preserve">
<value>- 刪除</value>
</data>
<data name="LblWeightLabel.Text" xml:space="preserve">
<value>權重:</value>
</data>
<data name="LblCountLabel.Text" xml:space="preserve">
<value>數量:</value>
</data>
</root>

View File

@@ -18,7 +18,6 @@
**/
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using System.Windows.Forms;
@@ -190,7 +189,7 @@ namespace GrasscutterTools.Forms
else
{
var item = list.Items[i] as string;
var id = int.Parse(item.Substring(0, item.IndexOf(':')));
var id = ItemMap.ToId(item);
list.SetItemChecked(i, Array.IndexOf(checkedIds, id) != -1);
}
}
@@ -218,7 +217,7 @@ namespace GrasscutterTools.Forms
{
StringBuilder builder = new StringBuilder();
foreach (string item in list.CheckedItems)
builder.Append(item.Substring(0, item.IndexOf(':')))
builder.Append(ItemMap.ToId(item))
.Append(", ");
txt.Text = builder.ToString(0, builder.Length - 2);
}

View File

@@ -129,7 +129,7 @@
<value>390, 35</value>
</data>
<data name="LblBannerEditorOldTip.Text" xml:space="preserve">
<value>Совет: Последняя версия баннера разрабатывается в настоящее время не поддерживается, ждем PR : )</value>
<value>Подсказка: последняя версия баннера разрабатывается и в настоящее время не поддерживается, ждем PR : )</value>
</data>
<data name="LblEventChanceTip.Location" type="System.Drawing.Point, System.Drawing">
<value>401, 262</value>
@@ -180,7 +180,7 @@
<value>81, 17</value>
</data>
<data name="LblRateUpItems2.Text" xml:space="preserve">
<value>4 звезды UP</value>
<value>4 зв. UP</value>
</data>
<data name="LblSoftPity.Location" type="System.Drawing.Point, System.Drawing">
<value>27, 291</value>
@@ -189,7 +189,7 @@
<value>79, 17</value>
</data>
<data name="LblSoftPity.Text" xml:space="preserve">
<value>Мяг. гарант</value>
<value>Софт-гарант</value>
</data>
<data name="LblGachaTypeTip.Size" type="System.Drawing.Size, System.Drawing">
<value>116, 17</value>
@@ -240,7 +240,7 @@
<value>85, 17</value>
</data>
<data name="LblHardPity.Text" xml:space="preserve">
<value>Жест. Гарант</value>
<value>Полный гарант</value>
</data>
<data name="NUDEndTime.Location" type="System.Drawing.Point, System.Drawing">
<value>287, 174</value>
@@ -270,7 +270,7 @@
<value>77, 17</value>
</data>
<data name="LblBasePurpleWeight.Text" xml:space="preserve">
<value>4 звездный</value>
<value>4-звездочный</value>
</data>
<data name="CmbBannerType.Items" xml:space="preserve">
<value>Стандартная Молитва</value>
@@ -285,7 +285,7 @@
<value>101, 17</value>
</data>
<data name="LblSortIdTip.Text" xml:space="preserve">
<value>Показать заказ</value>
<value>Показать порядок</value>
</data>
<data name="LblBannerType.Location" type="System.Drawing.Point, System.Drawing">
<value>18, 87</value>
@@ -330,7 +330,7 @@
<value>Переплетающиеся</value>
</data>
<data name="GrpBannerValues.Text" xml:space="preserve">
<value>Баннеп</value>
<value>Баннер</value>
</data>
<data name="GrpPurplePool.Text" xml:space="preserve">
<value>4 звёздочный пул</value>
@@ -351,9 +351,9 @@
<value>85, 23</value>
</data>
<data name="BtnParse.Text" xml:space="preserve">
<value>Загр.Json</value>
<value>Загр. Json</value>
</data>
<data name="$this.Text" xml:space="preserve">
<value>Редактор баннеров Gacha</value>
<value>Редактор баннеров</value>
</data>
</root>

View File

@@ -30,6 +30,10 @@ namespace GrasscutterTools.Forms
private void InitializeComponent()
{
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FormGachaBannerEditor2));
System.Windows.Forms.DataVisualization.Charting.ChartArea chartArea1 = new System.Windows.Forms.DataVisualization.Charting.ChartArea();
System.Windows.Forms.DataVisualization.Charting.Legend legend1 = new System.Windows.Forms.DataVisualization.Charting.Legend();
System.Windows.Forms.DataVisualization.Charting.Series series1 = new System.Windows.Forms.DataVisualization.Charting.Series();
System.Windows.Forms.DataVisualization.Charting.Series series2 = new System.Windows.Forms.DataVisualization.Charting.Series();
this.GrpBannerValues = new System.Windows.Forms.GroupBox();
this.ChkAutoStripRateUpFromFallback = new System.Windows.Forms.CheckBox();
this.LblOptions = new System.Windows.Forms.Label();
@@ -84,6 +88,8 @@ namespace GrasscutterTools.Forms
this.TxtPoolWeight5 = new System.Windows.Forms.TextBox();
this.LblPoolWeight4 = new System.Windows.Forms.Label();
this.LblPoolWeight5 = new System.Windows.Forms.Label();
this.GrpWeightChart = new System.Windows.Forms.GroupBox();
this.ChartWeights = new System.Windows.Forms.DataVisualization.Charting.Chart();
this.GrpBannerValues.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.NUDEventChance4)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.NUDEventChance5)).BeginInit();
@@ -95,6 +101,8 @@ namespace GrasscutterTools.Forms
this.GrpJson.SuspendLayout();
this.GrpWeights.SuspendLayout();
this.GrpBalance.SuspendLayout();
this.GrpWeightChart.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.ChartWeights)).BeginInit();
this.SuspendLayout();
//
// GrpBannerValues
@@ -513,10 +521,51 @@ namespace GrasscutterTools.Forms
resources.ApplyResources(this.LblPoolWeight5, "LblPoolWeight5");
this.LblPoolWeight5.Name = "LblPoolWeight5";
//
// GrpWeightChart
//
resources.ApplyResources(this.GrpWeightChart, "GrpWeightChart");
this.GrpWeightChart.Controls.Add(this.ChartWeights);
this.GrpWeightChart.Name = "GrpWeightChart";
this.GrpWeightChart.TabStop = false;
//
// ChartWeights
//
resources.ApplyResources(this.ChartWeights, "ChartWeights");
chartArea1.AxisX.Minimum = 0D;
chartArea1.AxisY.Maximum = 100D;
chartArea1.AxisY.Minimum = 0D;
chartArea1.AxisY.Title = "%";
chartArea1.Name = "ChartArea1";
this.ChartWeights.ChartAreas.Add(chartArea1);
legend1.Name = "Legend1";
this.ChartWeights.Legends.Add(legend1);
this.ChartWeights.Name = "ChartWeights";
series1.ChartArea = "ChartArea1";
series1.ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Line;
series1.Color = System.Drawing.Color.OrangeRed;
series1.Label = "(#VALX, #VAL)";
series1.Legend = "Legend1";
series1.LegendText = "5*";
series1.Name = "SeriesWeight5";
series1.XValueType = System.Windows.Forms.DataVisualization.Charting.ChartValueType.Int32;
series1.YValueType = System.Windows.Forms.DataVisualization.Charting.ChartValueType.Double;
series2.ChartArea = "ChartArea1";
series2.ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Line;
series2.Color = System.Drawing.Color.Purple;
series2.Label = "(#VALX, #VAL)";
series2.Legend = "Legend1";
series2.LegendText = "4*";
series2.Name = "SeriesWeight4";
series2.XValueType = System.Windows.Forms.DataVisualization.Charting.ChartValueType.Int32;
series2.YValueType = System.Windows.Forms.DataVisualization.Charting.ChartValueType.Double;
this.ChartWeights.Series.Add(series1);
this.ChartWeights.Series.Add(series2);
//
// FormGachaBannerEditor2
//
resources.ApplyResources(this, "$this");
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.Controls.Add(this.GrpWeightChart);
this.Controls.Add(this.GrpBalance);
this.Controls.Add(this.GrpWeights);
this.Controls.Add(this.GrpJson);
@@ -540,6 +589,8 @@ namespace GrasscutterTools.Forms
this.GrpWeights.PerformLayout();
this.GrpBalance.ResumeLayout(false);
this.GrpBalance.PerformLayout();
this.GrpWeightChart.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.ChartWeights)).EndInit();
this.ResumeLayout(false);
}
@@ -599,5 +650,7 @@ namespace GrasscutterTools.Forms
private System.Windows.Forms.CheckBox ChkRemoveC6FormPool;
private System.Windows.Forms.CheckBox ChkAutoStripRateUpFromFallback;
private System.Windows.Forms.Label LblOptions;
private System.Windows.Forms.GroupBox GrpWeightChart;
private System.Windows.Forms.DataVisualization.Charting.Chart ChartWeights;
}
}

View File

@@ -19,10 +19,10 @@
using System;
using System.Collections.Generic;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Windows.Forms;
using System.Windows.Forms.DataVisualization.Charting;
using GrasscutterTools.Game;
using GrasscutterTools.Game.Gacha;
@@ -184,6 +184,15 @@ namespace GrasscutterTools.Forms
TxtWeight4.Text = '[' + string.Join(", ", SelectWeights(banner.Weights4).Select(w => $"[{w.Count}, {w.Weight}]")) + ']';
TxtPoolWeight5.Text = '[' + string.Join(", ", SelectWeights(banner.PoolBalanceWeights5).Select(w => $"[{w.Count}, {w.Weight}]")) + ']';
TxtPoolWeight4.Text = '[' + string.Join(", ", SelectWeights(banner.PoolBalanceWeights4).Select(w => $"[{w.Count}, {w.Weight}]")) + ']';
ChartWeights.SuspendLayout();
ChartWeights.Series[0].Points.Clear();
foreach (var w in SelectWeights(banner.Weights5))
ChartWeights.Series[0].Points.AddXY(w.Count, w.Weight / 100.0);
ChartWeights.Series[1].Points.Clear();
foreach (var w in SelectWeights(banner.Weights4))
ChartWeights.Series[1].Points.AddXY(w.Count, w.Weight / 100.0);
ChartWeights.ResumeLayout();
}
private IEnumerable<GachaWeight> SelectWeights(int[,] weights)
@@ -296,6 +305,7 @@ namespace GrasscutterTools.Forms
var json = JsonConvert.SerializeObject(banner);
json = json.Replace(",\"", ",\r\n \"").Insert(1, "\r\n ");
TxtJson.Text = json.Insert(json.Length-1, "\r\n");
ShowBanner(banner);
}
}
catch (Exception ex)

View File

@@ -372,7 +372,7 @@
<value>Gen Json</value>
</data>
<data name="BtnParse.Location" type="System.Drawing.Point, System.Drawing">
<value>209, 512</value>
<value>409, 201</value>
</data>
<data name="BtnParse.Size" type="System.Drawing.Size, System.Drawing">
<value>85, 23</value>
@@ -431,6 +431,9 @@
<data name="LblPoolWeight5.Text" xml:space="preserve">
<value>Pool Weight 5</value>
</data>
<data name="GrpWeightChart.Text" xml:space="preserve">
<value>Weight Chart</value>
</data>
<data name="$this.Text" xml:space="preserve">
<value>Gacha Banner Editor</value>
</data>

View File

@@ -131,12 +131,24 @@
<data name="BtnGen.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Bottom, Left</value>
</data>
<data name="$this.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>3, 4, 3, 4</value>
</data>
<data name="LblBannerType.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="&gt;&gt;RbCostItem223.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="GrpJson.TabIndex" type="System.Int32, mscorlib">
<value>6</value>
</data>
<data name="&gt;&gt;GrpWeights.ZOrder" xml:space="preserve">
<value>2</value>
</data>
<data name="&gt;&gt;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="&gt;&gt;BtnGen.Type" xml:space="preserve">
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
@@ -156,9 +168,6 @@
<data name="LblSortId.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="LnkWeightHelp.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="&gt;&gt;LblEventChance5.Parent" xml:space="preserve">
<value>GrpBannerValues</value>
</data>
@@ -201,6 +210,9 @@
<data name="LnkWeightHelp.TabIndex" type="System.Int32, mscorlib">
<value>2</value>
</data>
<data name="ChartWeights.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="&gt;&gt;LblEventChance5Tip.Name" xml:space="preserve">
<value>LblEventChance5Tip</value>
</data>
@@ -214,13 +226,13 @@
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="GrpJson.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Bottom, Right</value>
<value>Top, Left, Right</value>
</data>
<data name="&gt;&gt;ColUpName.Name" xml:space="preserve">
<value>ColUpName</value>
</data>
<data name="&gt;&gt;LblEventChance4.Name" xml:space="preserve">
<value>LblEventChance4</value>
<data name="DTPEndTime.Location" type="System.Drawing.Point, System.Drawing">
<value>302, 173</value>
</data>
<data name="&gt;&gt;ChkAutoStripRateUpFromFallback.Parent" xml:space="preserve">
<value>GrpBannerValues</value>
@@ -232,23 +244,20 @@
<value>True</value>
</data>
<data name="&gt;&gt;GrpBannerValues.ZOrder" xml:space="preserve">
<value>5</value>
</data>
<data name="LblEventChance5Tip.Text" xml:space="preserve">
<value>%</value>
<value>6</value>
</data>
<data name="LblCostItem.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="GrpWeightChart.Text" xml:space="preserve">
<value>权重图表</value>
</data>
<data name="&gt;&gt;GrpJson.ZOrder" xml:space="preserve">
<value>2</value>
<value>3</value>
</data>
<data name="ListFallbackItems.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="LblWeight5.Size" type="System.Drawing.Size, System.Drawing">
<value>51, 17</value>
</data>
<data name="&gt;&gt;GrpBannerValues.Type" xml:space="preserve">
<value>System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
@@ -271,12 +280,6 @@
dAEAAAAHdmFsdWVfXwAIAgAAAAAAAAAKBgUAAAAHR3JvdXBBNQs=
</value>
</data>
<data name="ListUpItems.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
</data>
<data name="LnkWeightHelp.Size" type="System.Drawing.Size, System.Drawing">
<value>32, 17</value>
</data>
<data name="&gt;&gt;LblGachaType.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
@@ -338,8 +341,8 @@
<data name="GrpBalance.Location" type="System.Drawing.Point, System.Drawing">
<value>12, 453</value>
</data>
<data name="&gt;&gt;LblEndTime.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
<data name="&gt;&gt;GrpWeightChart.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="RbCostItem223.Text" xml:space="preserve">
<value>纠缠之缘</value>
@@ -356,9 +359,15 @@
<data name="&gt;&gt;LblEventChance4Tip.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="LblPoolWeight5.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="LblCostItem.Text" xml:space="preserve">
<value>祈愿道具</value>
</data>
<data name="&gt;&gt;TxtPoolWeight5.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="TxtPoolWeight4.Size" type="System.Drawing.Size, System.Drawing">
<value>300, 23</value>
</data>
@@ -368,8 +377,8 @@
<data name="&gt;&gt;NUDEventChance4.ZOrder" xml:space="preserve">
<value>9</value>
</data>
<data name="GrpBalance.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Bottom, Left</value>
<data name="LnkWeightHelp.Location" type="System.Drawing.Point, System.Drawing">
<value>402, 0</value>
</data>
<data name="LblEventChance4Tip.TabIndex" type="System.Int32, mscorlib">
<value>89</value>
@@ -441,17 +450,17 @@
<value>0</value>
</data>
<data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing">
<value>984, 561</value>
<value>1184, 561</value>
</data>
<data name="&gt;&gt;BtnParse.Parent" xml:space="preserve">
<value>GrpJson</value>
</data>
<data name="&gt;&gt;GrpFallbackPool.Name" xml:space="preserve">
<value>GrpFallbackPool</value>
</data>
<data name="&gt;&gt;GrpBalance.Name" xml:space="preserve">
<value>GrpBalance</value>
</data>
<data name="&gt;&gt;TxtWeight4.Parent" xml:space="preserve">
<value>GrpWeights</value>
</data>
<data name="&gt;&gt;LblEventChance5Tip.Parent" xml:space="preserve">
<value>GrpBannerValues</value>
</data>
@@ -509,9 +518,6 @@
<data name="GrpBalance.Text" xml:space="preserve">
<value>角色和武器平衡机制(仅混合池有效)</value>
</data>
<data name="LblPoolWeight5.Location" type="System.Drawing.Point, System.Drawing">
<value>43, 32</value>
</data>
<data name="&gt;&gt;LblBeginTime.ZOrder" xml:space="preserve">
<value>20</value>
</data>
@@ -557,12 +563,18 @@
<data name="LnkWeightHelp.Text" xml:space="preserve">
<value>帮助</value>
</data>
<data name="LblPrefabPath.Location" type="System.Drawing.Point, System.Drawing">
<value>74, 118</value>
</data>
<data name="&gt;&gt;ColFallbackId.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="LblScheduleIdTip.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="&gt;&gt;ChartWeights.Name" xml:space="preserve">
<value>ChartWeights</value>
</data>
<data name="&gt;&gt;RbCostItem224.ZOrder" xml:space="preserve">
<value>26</value>
</data>
@@ -578,17 +590,11 @@
<data name="LnkOpenOldEditor.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="LblScheduleId.TabIndex" type="System.Int32, mscorlib">
<value>53</value>
</data>
<data name="BtnGen.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
</data>
<data name="&gt;&gt;LblPoolWeight5.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="ColFallbackName.Width" type="System.Int32, mscorlib">
<value>110</value>
<data name="ChartWeights.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 19</value>
</data>
<data name="&gt;&gt;CmbPrefab.ZOrder" xml:space="preserve">
<value>6</value>
@@ -611,6 +617,9 @@
<data name="LblScheduleId.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="&gt;&gt;LblPrefabPath.Name" xml:space="preserve">
<value>LblPrefabPath</value>
</data>
<data name="GrpFallbackPool.Location" type="System.Drawing.Point, System.Drawing">
<value>458, 248</value>
</data>
@@ -623,8 +632,8 @@
<data name="&gt;&gt;LblPrefabPath.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="ChkRemoveC6FormPool.Location" type="System.Drawing.Point, System.Drawing">
<value>112, 260</value>
<data name="&gt;&gt;LblBeginTime.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="LblSortIdTip.Text" xml:space="preserve">
<value>客户端中显示的顺序</value>
@@ -638,32 +647,23 @@
<data name="LblGachaTypeTip.Size" type="System.Drawing.Size, System.Drawing">
<value>125, 17</value>
</data>
<data name="GrpWeights.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Bottom, Left</value>
</data>
<data name="&gt;&gt;NUDScheduleId.Parent" xml:space="preserve">
<value>GrpBannerValues</value>
</data>
<data name="CmbPrefab.TabIndex" type="System.Int32, mscorlib">
<value>3</value>
</data>
<data name="&gt;&gt;GrpWeights.ZOrder" xml:space="preserve">
<value>1</value>
<data name="&gt;&gt;LblWeight5.ZOrder" xml:space="preserve">
<value>4</value>
</data>
<data name="&gt;&gt;ListFallbackItems.Name" xml:space="preserve">
<value>ListFallbackItems</value>
</data>
<data name="GrpJson.Size" type="System.Drawing.Size, System.Drawing">
<value>300, 541</value>
<value>500, 230</value>
</data>
<data name="LnkOpenOldEditor.Location" type="System.Drawing.Point, System.Drawing">
<value>6, 309</value>
</data>
<data name="&gt;&gt;LblEndTime.Name" xml:space="preserve">
<value>LblEndTime</value>
</data>
<data name="&gt;&gt;ChkRemoveC6FormPool.Type" xml:space="preserve">
<value>System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
<data name="LblBannerType.TabIndex" type="System.Int32, mscorlib">
<value>59</value>
</data>
<data name="&gt;&gt;BtnGen.Name" xml:space="preserve">
<value>BtnGen</value>
@@ -672,17 +672,11 @@
<value>5</value>
</data>
<data name="GrpJson.Text" xml:space="preserve">
<value>Json</value>
<value>Json - (./Gresscutter/data/banners.json)</value>
</data>
<data name="&gt;&gt;LnkWeightHelp.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="&gt;&gt;ListUpItems.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="&gt;&gt;CmbBannerType.ZOrder" xml:space="preserve">
<value>23</value>
</data>
<data name="&gt;&gt;LblSortId.Parent" xml:space="preserve">
<value>GrpBannerValues</value>
</data>
@@ -707,8 +701,8 @@
<data name="&gt;&gt;LblCostItem.ZOrder" xml:space="preserve">
<value>27</value>
</data>
<data name="&gt;&gt;LblEventChance4Tip.Name" xml:space="preserve">
<value>LblEventChance4Tip</value>
<data name="&gt;&gt;LblEndTime.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="&gt;&gt;TxtJson.Type" xml:space="preserve">
<value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
@@ -719,8 +713,8 @@
<data name="&gt;&gt;LblSortId.Name" xml:space="preserve">
<value>LblSortId</value>
</data>
<data name="LblGachaTypeTip.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
<data name="&gt;&gt;TxtWeight4.Parent" xml:space="preserve">
<value>GrpWeights</value>
</data>
<data name="ColFallbackId.Width" type="System.Int32, mscorlib">
<value>65</value>
@@ -731,11 +725,14 @@
<data name="LblPoolWeight4.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="&gt;&gt;GrpWeightChart.Name" xml:space="preserve">
<value>GrpWeightChart</value>
</data>
<data name="ColUpName.Text" xml:space="preserve">
<value>Name</value>
</data>
<data name="GrpBannerValues.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Bottom, Left</value>
<data name="NUDSortId.Size" type="System.Drawing.Size, System.Drawing">
<value>100, 23</value>
</data>
<data name="&gt;&gt;LblScheduleIdTip.Parent" xml:space="preserve">
<value>GrpBannerValues</value>
@@ -753,8 +750,11 @@
dAEAAAAHdmFsdWVfXwAIAgAAAAAAAAAKBgUAAAAHR3JvdXBBMws=
</value>
</data>
<data name="NUDScheduleId.TabIndex" type="System.Int32, mscorlib">
<value>1</value>
<data name="&gt;&gt;TxtPoolWeight5.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="&gt;&gt;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="&gt;&gt;LblBannerType.ZOrder" xml:space="preserve">
<value>25</value>
@@ -771,9 +771,6 @@
<data name="&gt;&gt;RbCostItem223.Name" xml:space="preserve">
<value>RbCostItem223</value>
</data>
<data name="LblEventChance5Tip.Location" type="System.Drawing.Point, System.Drawing">
<value>181, 233</value>
</data>
<data name="&gt;&gt;LblEndTime.ZOrder" xml:space="preserve">
<value>18</value>
</data>
@@ -829,8 +826,11 @@
<data name="GrpWeights.Size" type="System.Drawing.Size, System.Drawing">
<value>440, 100</value>
</data>
<data name="LblEventChance4.Text" xml:space="preserve">
<value>4星活动爆率</value>
<data name="&gt;&gt;LblEventChance4Tip.Name" xml:space="preserve">
<value>LblEventChance4Tip</value>
</data>
<data name="&gt;&gt;LblWeight4.Name" xml:space="preserve">
<value>LblWeight4</value>
</data>
<data name="ChkAutoStripRateUpFromFallback.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
@@ -850,8 +850,11 @@
<data name="GrpBannerValues.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
</data>
<data name="&gt;&gt;ListFallbackItems.ZOrder" xml:space="preserve">
<value>0</value>
<data name="&gt;&gt;LnkOpenOldEditor.Parent" xml:space="preserve">
<value>GrpBannerValues</value>
</data>
<data name="LblPoolWeight5.Text" xml:space="preserve">
<value>5星池权重</value>
</data>
<data name="&gt;&gt;NUDGachaType.Parent" xml:space="preserve">
<value>GrpBannerValues</value>
@@ -874,8 +877,11 @@
<data name="&gt;&gt;GrpUpPool.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="GrpWeightChart.Size" type="System.Drawing.Size, System.Drawing">
<value>500, 302</value>
</data>
<data name="BtnParse.Location" type="System.Drawing.Point, System.Drawing">
<value>219, 512</value>
<value>419, 201</value>
</data>
<data name="LblWeight5.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
@@ -886,36 +892,27 @@
<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>90</value>
</data>
<data name="&gt;&gt;LblScheduleId.ZOrder" xml:space="preserve">
<value>19</value>
</data>
<data name="&gt;&gt;LblWeight5.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="&gt;&gt;LblScheduleId.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="LblGachaType.Text" xml:space="preserve">
<value>GachaType</value>
</data>
<data name="LblWeight4.Size" type="System.Drawing.Size, System.Drawing">
<value>51, 17</value>
</data>
<data name="GrpFallbackPool.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Bottom, Left, Right</value>
</data>
<data name="CmbBannerType.TabIndex" type="System.Int32, mscorlib">
<value>2</value>
<value>Top, Bottom, Left</value>
</data>
<data name="DTPBeginTime.Size" type="System.Drawing.Size, System.Drawing">
<value>110, 23</value>
</data>
<data name="LnkOpenOldEditor.Text" xml:space="preserve">
<value>打开旧版本编辑器</value>
</data>
<data name="&gt;&gt;NUDSortId.Type" xml:space="preserve">
<value>System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
@@ -952,17 +949,17 @@
<data name="&gt;&gt;LblEventChance5.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="&gt;&gt;LblWeight4.Name" xml:space="preserve">
<value>LblWeight4</value>
</data>
<data name="TxtJson.Size" type="System.Drawing.Size, System.Drawing">
<value>288, 487</value>
<value>488, 176</value>
</data>
<data name="ColUpId.Text" xml:space="preserve">
<value>ID</value>
</data>
<data name="&gt;&gt;LnkOpenOldEditor.Parent" xml:space="preserve">
<value>GrpBannerValues</value>
<data name="LnkWeightHelp.Size" type="System.Drawing.Size, System.Drawing">
<value>32, 17</value>
</data>
<data name="&gt;&gt;BtnParse.ZOrder" xml:space="preserve">
<value>2</value>
</data>
<data name="TxtJson.TabIndex" type="System.Int32, mscorlib">
<value>2</value>
@@ -970,12 +967,18 @@
<data name="BtnGen.Text" xml:space="preserve">
<value>生成Json</value>
</data>
<data name="LblEventChance4.Text" xml:space="preserve">
<value>4星活动爆率</value>
</data>
<data name="&gt;&gt;TxtJson.Name" xml:space="preserve">
<value>TxtJson</value>
</data>
<data name="LblEndTime.TabIndex" type="System.Int32, mscorlib">
<value>74</value>
</data>
<data name="GrpWeightChart.Location" type="System.Drawing.Point, System.Drawing">
<value>674, 248</value>
</data>
<data name="&gt;&gt;LblEventChance5Tip.ZOrder" xml:space="preserve">
<value>8</value>
</data>
@@ -994,8 +997,8 @@
<data name="NUDGachaType.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
</data>
<data name="NUDSortId.Size" type="System.Drawing.Size, System.Drawing">
<value>100, 23</value>
<data name="&gt;&gt;BtnGen.Parent" xml:space="preserve">
<value>GrpJson</value>
</data>
<data name="NUDScheduleId.Location" type="System.Drawing.Point, System.Drawing">
<value>112, 55</value>
@@ -1045,6 +1048,9 @@
<data name="&gt;&gt;RbCostItem224.Name" xml:space="preserve">
<value>RbCostItem224</value>
</data>
<data name="LblPrefabPath.Size" type="System.Drawing.Size, System.Drawing">
<value>32, 17</value>
</data>
<data name="&gt;&gt;TxtJson.ZOrder" xml:space="preserve">
<value>1</value>
</data>
@@ -1054,6 +1060,12 @@
<data name="&gt;&gt;LblSortId.ZOrder" xml:space="preserve">
<value>14</value>
</data>
<data name="ChartWeights.Text" xml:space="preserve">
<value>chart1</value>
</data>
<data name="LblBeginTime.Location" type="System.Drawing.Point, System.Drawing">
<value>50, 176</value>
</data>
<data name="GrpJson.Location" type="System.Drawing.Point, System.Drawing">
<value>674, 12</value>
</data>
@@ -1075,9 +1087,6 @@
<data name="&gt;&gt;LblSortIdTip.Parent" xml:space="preserve">
<value>GrpBannerValues</value>
</data>
<data name="CmbBannerType.Items2" xml:space="preserve">
<value>限时武器祈愿池</value>
</data>
<data name="&gt;&gt;NUDEventChance5.Type" xml:space="preserve">
<value>System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
@@ -1088,7 +1097,7 @@
<value>基础池</value>
</data>
<data name="&gt;&gt;GrpFallbackPool.ZOrder" xml:space="preserve">
<value>3</value>
<value>4</value>
</data>
<data name="LblScheduleIdTip.Text" xml:space="preserve">
<value>ID要求唯一</value>
@@ -1099,8 +1108,8 @@
<data name="&gt;&gt;LblGachaType.Name" xml:space="preserve">
<value>LblGachaType</value>
</data>
<data name="&gt;&gt;BtnGen.ZOrder" xml:space="preserve">
<value>0</value>
<data name="&gt;&gt;LblPoolWeight5.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="LblSortIdTip.Location" type="System.Drawing.Point, System.Drawing">
<value>218, 204</value>
@@ -1118,7 +1127,7 @@
<value>217, 260</value>
</data>
<data name="&gt;&gt;GrpBalance.ZOrder" xml:space="preserve">
<value>0</value>
<value>1</value>
</data>
<data name="&gt;&gt;DTPEndTime.Type" xml:space="preserve">
<value>System.Windows.Forms.DateTimePicker, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
@@ -1129,8 +1138,8 @@
<data name="LblEndTime.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="ChkRemoveC6FormPool.Size" type="System.Drawing.Size, System.Drawing">
<value>99, 21</value>
<data name="LnkWeightHelp.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="&gt;&gt;TxtWeight5.Name" xml:space="preserve">
<value>TxtWeight5</value>
@@ -1144,24 +1153,21 @@
<data name="LblOptions.Size" type="System.Drawing.Size, System.Drawing">
<value>32, 17</value>
</data>
<data name="&gt;&gt;LblScheduleIdTip.Name" xml:space="preserve">
<value>LblScheduleIdTip</value>
<data name="LblWeight5.Size" type="System.Drawing.Size, System.Drawing">
<value>51, 17</value>
</data>
<data name="LblSortId.Size" type="System.Drawing.Size, System.Drawing">
<value>32, 17</value>
</data>
<data name="LblBeginTime.Location" type="System.Drawing.Point, System.Drawing">
<value>50, 176</value>
<data name="&gt;&gt;GrpWeightChart.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="LblEventChance5Tip.Location" type="System.Drawing.Point, System.Drawing">
<value>181, 233</value>
</data>
<data name="&gt;&gt;LblEventChance4.ZOrder" xml:space="preserve">
<value>12</value>
</data>
<data name="&gt;&gt;GrpWeights.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="LblEndTime.Size" type="System.Drawing.Size, System.Drawing">
<value>56, 17</value>
</data>
<data name="ColFallbackId.Text" xml:space="preserve">
<value>ID</value>
</data>
@@ -1180,11 +1186,11 @@
<data name="&gt;&gt;NUDGachaType.Name" xml:space="preserve">
<value>NUDGachaType</value>
</data>
<data name="LblPrefabPath.Size" type="System.Drawing.Size, System.Drawing">
<value>32, 17</value>
<data name="&gt;&gt;LblScheduleIdTip.Name" xml:space="preserve">
<value>LblScheduleIdTip</value>
</data>
<data name="&gt;&gt;CmbPrefab.Name" xml:space="preserve">
<value>CmbPrefab</value>
<data name="&gt;&gt;ChartWeights.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="&gt;&gt;LblEndTime.Parent" xml:space="preserve">
<value>GrpBannerValues</value>
@@ -1195,29 +1201,26 @@
<data name="&gt;&gt;TxtJson.Parent" xml:space="preserve">
<value>GrpJson</value>
</data>
<data name="$this.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>3, 4, 3, 4</value>
<data name="&gt;&gt;LblEndTime.Name" xml:space="preserve">
<value>LblEndTime</value>
</data>
<data name="LblPoolWeight4.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="GrpUpPool.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Left, Right</value>
<data name="ChkRemoveC6FormPool.Size" type="System.Drawing.Size, System.Drawing">
<value>99, 21</value>
</data>
<data name="LblCostItem.Size" type="System.Drawing.Size, System.Drawing">
<value>56, 17</value>
</data>
<data name="BtnGen.Location" type="System.Drawing.Point, System.Drawing">
<value>6, 512</value>
</data>
<data name="&gt;&gt;TxtWeight4.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="&gt;&gt;ListUpItems.Parent" xml:space="preserve">
<value>GrpUpPool</value>
</data>
<data name="LblPoolWeight5.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
<data name="&gt;&gt;ListUpItems.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="CmbBannerType.Location" type="System.Drawing.Point, System.Drawing">
<value>112, 84</value>
@@ -1234,8 +1237,8 @@
<data name="LblEventChance4.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="DTPEndTime.Location" type="System.Drawing.Point, System.Drawing">
<value>302, 173</value>
<data name="ColFallbackName.Width" type="System.Int32, mscorlib">
<value>110</value>
</data>
<data name="ChkAutoStripRateUpFromFallback.Size" type="System.Drawing.Size, System.Drawing">
<value>151, 21</value>
@@ -1252,9 +1255,15 @@
<data name="NUDGachaType.Location" type="System.Drawing.Point, System.Drawing">
<value>112, 26</value>
</data>
<data name="&gt;&gt;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="TxtPoolWeight5.Size" type="System.Drawing.Size, System.Drawing">
<value>300, 23</value>
</data>
<data name="ColUpName.Width" type="System.Int32, mscorlib">
<value>110</value>
</data>
<data name="&gt;&gt;DTPBeginTime.Parent" xml:space="preserve">
<value>GrpBannerValues</value>
</data>
@@ -1264,18 +1273,24 @@
<data name="LblScheduleId.Size" type="System.Drawing.Size, System.Drawing">
<value>72, 17</value>
</data>
<data name="&gt;&gt;RbCostItem224.Type" xml:space="preserve">
<value>System.Windows.Forms.RadioButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
<data name="&gt;&gt;$this.Name" xml:space="preserve">
<value>FormGachaBannerEditor2</value>
</data>
<data name="LblEndTime.Size" type="System.Drawing.Size, System.Drawing">
<value>56, 17</value>
</data>
<data name="GrpBalance.TabIndex" type="System.Int32, mscorlib">
<value>3</value>
</data>
<data name="&gt;&gt;ColFallbackName.Name" xml:space="preserve">
<value>ColFallbackName</value>
<data name="&gt;&gt;BtnGen.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="&gt;&gt;GrpUpPool.Name" xml:space="preserve">
<value>GrpUpPool</value>
</data>
<data name="&gt;&gt;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>
@@ -1288,12 +1303,15 @@
<data name="&gt;&gt;GrpWeights.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="LblCostItem.Location" type="System.Drawing.Point, System.Drawing">
<value>50, 148</value>
<data name="&gt;&gt;ColFallbackName.Name" xml:space="preserve">
<value>ColFallbackName</value>
</data>
<data name="&gt;&gt;LblGachaTypeTip.Name" xml:space="preserve">
<value>LblGachaTypeTip</value>
</data>
<data name="$this.MinimumSize" type="System.Drawing.Size, System.Drawing">
<value>1200, 600</value>
</data>
<data name="LblGachaTypeTip.Location" type="System.Drawing.Point, System.Drawing">
<value>218, 28</value>
</data>
@@ -1303,8 +1321,11 @@
<data name="LblPoolWeight4.Text" xml:space="preserve">
<value>4星池权重</value>
</data>
<data name="&gt;&gt;TxtPoolWeight5.Type" xml:space="preserve">
<value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
<data name="BtnGen.Location" type="System.Drawing.Point, System.Drawing">
<value>6, 201</value>
</data>
<data name="&gt;&gt;TxtPoolWeight5.Name" xml:space="preserve">
<value>TxtPoolWeight5</value>
</data>
<data name="LblScheduleIdTip.Size" type="System.Drawing.Size, System.Drawing">
<value>69, 17</value>
@@ -1321,8 +1342,8 @@
<data name="TxtWeight5.TabIndex" type="System.Int32, mscorlib">
<value>1</value>
</data>
<data name="&gt;&gt;BtnGen.Parent" xml:space="preserve">
<value>GrpJson</value>
<data name="ListUpItems.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
</data>
<data name="&gt;&gt;LblGachaType.ZOrder" xml:space="preserve">
<value>11</value>
@@ -1330,14 +1351,17 @@
<data name="&gt;&gt;LblEventChance5Tip.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="ChartWeights.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
</data>
<data name="&gt;&gt;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="TxtJson.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Bottom, Left, Right</value>
</data>
<data name="RbCostItem224.TabIndex" type="System.Int32, mscorlib">
<value>4</value>
<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>
@@ -1345,11 +1369,14 @@
<data name="LnkOpenOldEditor.TabIndex" type="System.Int32, mscorlib">
<value>20</value>
</data>
<data name="LblGachaTypeTip.TabIndex" type="System.Int32, mscorlib">
<value>51</value>
</data>
<data name="&gt;&gt;TxtWeight4.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="LblPoolWeight5.Text" xml:space="preserve">
<value>5星池权重</value>
<data name="LnkOpenOldEditor.Text" xml:space="preserve">
<value>打开旧版本编辑器</value>
</data>
<data name="&gt;&gt;LblPoolWeight4.ZOrder" xml:space="preserve">
<value>2</value>
@@ -1363,47 +1390,53 @@
<data name="LblEventChance5.Size" type="System.Drawing.Size, System.Drawing">
<value>75, 17</value>
</data>
<data name="LblPoolWeight5.Size" type="System.Drawing.Size, System.Drawing">
<value>63, 17</value>
</data>
<data name="BtnParse.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Bottom, Right</value>
</data>
<data name="&gt;&gt;LblOptions.Name" xml:space="preserve">
<value>LblOptions</value>
</data>
<data name="&gt;&gt;LblWeight5.Name" xml:space="preserve">
<value>LblWeight5</value>
</data>
<data name="BtnGen.Size" type="System.Drawing.Size, System.Drawing">
<value>75, 23</value>
</data>
<data name="&gt;&gt;TxtPoolWeight5.ZOrder" xml:space="preserve">
<value>1</value>
<data name="CmbBannerType.Items2" xml:space="preserve">
<value>限时武器祈愿池</value>
</data>
<data name="&gt;&gt;GrpFallbackPool.Name" xml:space="preserve">
<value>GrpFallbackPool</value>
<data name="CmbBannerType.TabIndex" type="System.Int32, mscorlib">
<value>2</value>
</data>
<data name="LblBannerType.Size" type="System.Drawing.Size, System.Drawing">
<value>56, 17</value>
</data>
<data name="&gt;&gt;GrpWeightChart.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;LblEventChance5.ZOrder" xml:space="preserve">
<value>13</value>
</data>
<data name="LblPrefabPath.Location" type="System.Drawing.Point, System.Drawing">
<value>74, 118</value>
<data name="&gt;&gt;LblOptions.Name" xml:space="preserve">
<value>LblOptions</value>
</data>
<data name="&gt;&gt;CmbBannerType.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="RbCostItem224.TabIndex" type="System.Int32, mscorlib">
<value>4</value>
</data>
<data name="LblBannerType.Text" xml:space="preserve">
<value>奖池类型</value>
</data>
<data name="LblSortId.Location" type="System.Drawing.Point, System.Drawing">
<value>74, 204</value>
</data>
<data name="&gt;&gt;LblPrefabPath.Name" xml:space="preserve">
<value>LblPrefabPath</value>
<data name="GrpWeightChart.TabIndex" type="System.Int32, mscorlib">
<value>7</value>
</data>
<data name="&gt;&gt;GrpUpPool.ZOrder" xml:space="preserve">
<value>4</value>
<value>5</value>
</data>
<data name="&gt;&gt;CmbBannerType.Parent" xml:space="preserve">
<value>GrpBannerValues</value>
@@ -1414,11 +1447,14 @@
<data name="LblBeginTime.TabIndex" type="System.Int32, mscorlib">
<value>72</value>
</data>
<data name="&gt;&gt;GrpBalance.Type" xml:space="preserve">
<data name="&gt;&gt;GrpWeights.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.TabIndex" type="System.Int32, mscorlib">
<value>51</value>
<data name="LblGachaTypeTip.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="ListFallbackItems.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
</data>
<data name="LblPoolWeight4.Location" type="System.Drawing.Point, System.Drawing">
<value>43, 61</value>
@@ -1429,6 +1465,9 @@
<data name="TxtWeight5.Size" type="System.Drawing.Size, System.Drawing">
<value>300, 23</value>
</data>
<data name="ChartWeights.Size" type="System.Drawing.Size, System.Drawing">
<value>494, 280</value>
</data>
<data name="CmbBannerType.Items" xml:space="preserve">
<value>常驻池</value>
</data>
@@ -1438,8 +1477,8 @@
<data name="LblWeight5.Text" xml:space="preserve">
<value>5星权重</value>
</data>
<data name="&gt;&gt;LblBeginTime.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
<data name="LblPrefabPath.TabIndex" type="System.Int32, mscorlib">
<value>61</value>
</data>
<data name="ChkAutoStripRateUpFromFallback.TabIndex" type="System.Int32, mscorlib">
<value>92</value>
@@ -1447,8 +1486,8 @@
<data name="&gt;&gt;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="$this.MinimumSize" type="System.Drawing.Size, System.Drawing">
<value>1000, 600</value>
<data name="LblEventChance5Tip.Text" xml:space="preserve">
<value>%</value>
</data>
<data name="LblEventChance5.Location" type="System.Drawing.Point, System.Drawing">
<value>31, 233</value>
@@ -1456,12 +1495,12 @@
<data name="&gt;&gt;ColFallbackId.Name" xml:space="preserve">
<value>ColFallbackId</value>
</data>
<data name="&gt;&gt;ChartWeights.Type" xml:space="preserve">
<value>System.Windows.Forms.DataVisualization.Charting.Chart, System.Windows.Forms.DataVisualization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35</value>
</data>
<data name="LblSortId.TabIndex" type="System.Int32, mscorlib">
<value>75</value>
</data>
<data name="&gt;&gt;LblBannerType.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="&gt;&gt;ChkAutoStripRateUpFromFallback.Type" xml:space="preserve">
<value>System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
@@ -1477,11 +1516,8 @@
<data name="LblGachaType.TabIndex" type="System.Int32, mscorlib">
<value>48</value>
</data>
<data name="&gt;&gt;LblWeight5.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="LblPrefabPath.TabIndex" type="System.Int32, mscorlib">
<value>61</value>
<data name="LblCostItem.Location" type="System.Drawing.Point, System.Drawing">
<value>50, 148</value>
</data>
<data name="&gt;&gt;RbCostItem223.ZOrder" xml:space="preserve">
<value>29</value>
@@ -1498,21 +1534,24 @@
<data name="&gt;&gt;NUDScheduleId.Name" xml:space="preserve">
<value>NUDScheduleId</value>
</data>
<data name="ColUpName.Width" type="System.Int32, mscorlib">
<value>110</value>
<data name="NUDScheduleId.TabIndex" type="System.Int32, mscorlib">
<value>1</value>
</data>
<data name="&gt;&gt;$this.Name" xml:space="preserve">
<value>FormGachaBannerEditor2</value>
<data name="&gt;&gt;LblBannerType.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="&gt;&gt;ChkAutoStripRateUpFromFallback.Name" xml:space="preserve">
<value>ChkAutoStripRateUpFromFallback</value>
</data>
<data name="GrpJson.TabIndex" type="System.Int32, mscorlib">
<value>6</value>
<data name="&gt;&gt;ListFallbackItems.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="RbCostItem223.Location" type="System.Drawing.Point, System.Drawing">
<value>192, 146</value>
</data>
<data name="&gt;&gt;ChartWeights.Parent" xml:space="preserve">
<value>GrpWeightChart</value>
</data>
<data name="RbCostItem223.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
@@ -1534,8 +1573,11 @@
<data name="LblPoolWeight4.Size" type="System.Drawing.Size, System.Drawing">
<value>63, 17</value>
</data>
<data name="&gt;&gt;TxtPoolWeight5.Name" xml:space="preserve">
<value>TxtPoolWeight5</value>
<data name="ChkRemoveC6FormPool.Location" type="System.Drawing.Point, System.Drawing">
<value>112, 260</value>
</data>
<data name="GrpWeightChart.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Bottom, Left, Right</value>
</data>
<data name="$this.Text" xml:space="preserve">
<value>卡池编辑器</value>
@@ -1543,8 +1585,8 @@
<data name="NUDEventChance4.Size" type="System.Drawing.Size, System.Drawing">
<value>63, 23</value>
</data>
<data name="&gt;&gt;LblWeight5.ZOrder" xml:space="preserve">
<value>4</value>
<data name="&gt;&gt;CmbPrefab.Name" xml:space="preserve">
<value>CmbPrefab</value>
</data>
<data name="&gt;&gt;LblOptions.Parent" xml:space="preserve">
<value>GrpBannerValues</value>
@@ -1552,23 +1594,23 @@
<data name="GrpBannerValues.Location" type="System.Drawing.Point, System.Drawing">
<value>12, 12</value>
</data>
<data name="LblPoolWeight5.Size" type="System.Drawing.Size, System.Drawing">
<value>63, 17</value>
<data name="&gt;&gt;NUDScheduleId.Parent" xml:space="preserve">
<value>GrpBannerValues</value>
</data>
<data name="LblScheduleId.Text" xml:space="preserve">
<value>ScheduleId</value>
</data>
<data name="&gt;&gt;LnkWeightHelp.Type" xml:space="preserve">
<value>System.Windows.Forms.LinkLabel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
<data name="&gt;&gt;LblEventChance4.Name" xml:space="preserve">
<value>LblEventChance4</value>
</data>
<data name="LnkWeightHelp.Location" type="System.Drawing.Point, System.Drawing">
<value>402, 0</value>
<data name="LblScheduleId.TabIndex" type="System.Int32, mscorlib">
<value>53</value>
</data>
<data name="LblCostItem.TabIndex" type="System.Int32, mscorlib">
<value>80</value>
</data>
<data name="LblBannerType.TabIndex" type="System.Int32, mscorlib">
<value>59</value>
<data name="LblWeight4.Size" type="System.Drawing.Size, System.Drawing">
<value>51, 17</value>
</data>
<data name="LblPoolWeight5.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
@@ -1579,8 +1621,8 @@
<data name="&gt;&gt;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="&gt;&gt;BtnParse.ZOrder" xml:space="preserve">
<value>2</value>
<data name="&gt;&gt;CmbBannerType.ZOrder" xml:space="preserve">
<value>23</value>
</data>
<data name="ListUpItems.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 19</value>
@@ -1591,7 +1633,4 @@
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="$this.Language" type="System.Globalization.CultureInfo, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>zh-TW</value>
</metadata>
</root>

View File

@@ -233,10 +233,10 @@
<value>Молитва события с оружием</value>
</data>
<data name="LblSortIdTip.Size" type="System.Drawing.Size, System.Drawing">
<value>101, 17</value>
<value>121, 17</value>
</data>
<data name="LblSortIdTip.Text" xml:space="preserve">
<value>Показать заказ</value>
<value>Показать порядок</value>
</data>
<data name="LblBannerType.Location" type="System.Drawing.Point, System.Drawing">
<value>18, 87</value>
@@ -283,6 +283,9 @@
<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
@@ -343,8 +346,8 @@
bWVudAEAAAAHdmFsdWVfXwAIAgAAAAAAAAAKBgUAAAAHR3JvdXBXMws=
</value>
</data>
<data name="GrpFallbackPool.Text" xml:space="preserve">
<value>Запасной Пул</value>
<data name="GrpUpPool.Text" xml:space="preserve">
<value>Верхний Пул</value>
</data>
<data name="ListUpItems.Groups" mimetype="application/x-microsoft.net.object.binary.base64">
<value>
@@ -386,9 +389,6 @@
bWVudAEAAAAHdmFsdWVfXwAIAgAAAAAAAAAKBgUAAAAJR3JvdXBVcFc0Cw==
</value>
</data>
<data name="GrpUpPool.Text" xml:space="preserve">
<value>Верхний Пул</value>
</data>
<data name="BtnGen.Size" type="System.Drawing.Size, System.Drawing">
<value>85, 23</value>
</data>
@@ -396,13 +396,16 @@
<value>Сген. Json</value>
</data>
<data name="BtnParse.Location" type="System.Drawing.Point, System.Drawing">
<value>209, 512</value>
<value>409, 201</value>
</data>
<data name="BtnParse.Size" type="System.Drawing.Size, System.Drawing">
<value>85, 23</value>
</data>
<data name="BtnParse.Text" xml:space="preserve">
<value>Загр.Json</value>
<value>Загр. Json</value>
</data>
<data name="GrpWeights.Text" xml:space="preserve">
<value>Gacha Веса</value>
</data>
<data name="LnkWeightHelp.Location" type="System.Drawing.Point, System.Drawing">
<value>375, 0</value>
@@ -431,8 +434,8 @@
<data name="LblWeight5.Text" xml:space="preserve">
<value>Веса 5*</value>
</data>
<data name="GrpWeights.Text" xml:space="preserve">
<value>Gacha Веса</value>
<data name="GrpBalance.Text" xml:space="preserve">
<value>Баланс персонажа и оружия (работают только смешанные пулы)</value>
</data>
<data name="LblPoolWeight4.Location" type="System.Drawing.Point, System.Drawing">
<value>28, 61</value>
@@ -452,8 +455,8 @@
<data name="LblPoolWeight5.Text" xml:space="preserve">
<value>Пул Веса 5*</value>
</data>
<data name="GrpBalance.Text" xml:space="preserve">
<value>Баланс персонажа и оружия (работают только смешанные пулы)</value>
<data name="GrpWeightChart.Text" xml:space="preserve">
<value>Таблица веса</value>
</data>
<data name="$this.Text" xml:space="preserve">
<value>Редактор баннеров Gacha</value>

View File

@@ -289,6 +289,9 @@
<data name="GrpBalance.Text" xml:space="preserve">
<value>角色和武器平衡機制(僅混合池有效)</value>
</data>
<data name="GrpWeightChart.Text" xml:space="preserve">
<value>權重圖表</value>
</data>
<data name="$this.Text" xml:space="preserve">
<value>卡池編輯器</value>
</data>

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -128,7 +128,7 @@
<value>Auto</value>
</data>
<data name="GrpCommand.Text" xml:space="preserve">
<value>Command (Press and hold Ctrl to run automatically)</value>
<value>Command - [Ctrl] Autorun - [|] Split multiple commands</value>
</data>
<data name="BtnInvokeOpenCommand.Text" xml:space="preserve">
<value>Run(F5)</value>
@@ -136,6 +136,15 @@
<data name="TPRemoteCall.Text" xml:space="preserve">
<value>Remote</value>
</data>
<data name="LnkInventoryKamera.Text" xml:space="preserve">
<value>InventoryKamera</value>
</data>
<data name="LblGOODHelp.Text" xml:space="preserve">
<value>Come and import your official server archive into GC!</value>
</data>
<data name="ButtonOpenGOODImport.Text" xml:space="preserve">
<value>Import GOOD</value>
</data>
<data name="LblHostTip.Location" type="System.Drawing.Point, System.Drawing">
<value>108, 16</value>
</data>
@@ -218,13 +227,13 @@
<value>Note that normal commands in the console state must specify the target (set include UID)</value>
</data>
<data name="TxtHost.Location" type="System.Drawing.Point, System.Drawing">
<value>111, 36</value>
<value>136, 36</value>
</data>
<data name="TxtHost.Size" type="System.Drawing.Size, System.Drawing">
<value>175, 23</value>
</data>
<data name="BtnQueryServerStatus.Location" type="System.Drawing.Point, System.Drawing">
<value>292, 36</value>
<value>317, 36</value>
</data>
<data name="BtnQueryServerStatus.Size" type="System.Drawing.Size, System.Drawing">
<value>65, 23</value>
@@ -242,10 +251,15 @@
<value>About</value>
</data>
<data name="LblSupportDescription.Size" type="System.Drawing.Size, System.Drawing">
<value>110, 17</value>
<value>387, 102</value>
</data>
<data name="LblSupportDescription.Text" xml:space="preserve">
<value>Grasscutter Tools</value>
<value>Grasscutter Tools
This is a free and open source project.
If you think this is helpful to you, you can give me a free Star.
If there is a problem with the command generation,
or there is a new feature request, you can file an issue on Github.</value>
</data>
<data name="TPManage.Text" xml:space="preserve">
<value>Manage</value>
@@ -316,9 +330,15 @@
<data name="CmbPerm.Size" type="System.Drawing.Size, System.Drawing">
<value>138, 25</value>
</data>
<data name="BtnPermClear.Text" xml:space="preserve">
<value>Clear</value>
</data>
<data name="BtmPermRemove.Text" xml:space="preserve">
<value>Delete</value>
</data>
<data name="BtnPermList.Text" xml:space="preserve">
<value>List</value>
</data>
<data name="BtnPermAdd.Text" xml:space="preserve">
<value>Add</value>
</data>
@@ -349,21 +369,6 @@
<data name="ChkIncludeSceneId.Text" xml:space="preserve">
<value>Include scene Id</value>
</data>
<assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="LblTp.AutoSize" type="System.Boolean, mscorlib">
<value>False</value>
</data>
<data name="LblTp.Location" type="System.Drawing.Point, System.Drawing">
<value>6, 89</value>
</data>
<data name="LblTp.Size" type="System.Drawing.Size, System.Drawing">
<value>337, 90</value>
</data>
<data name="LblTp.Text" xml:space="preserve">
<value>Teleporting
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 ~100 to indicate the relative current 100</value>
</data>
<data name="LblTpZ.Location" type="System.Drawing.Point, System.Drawing">
<value>219, 184</value>
</data>
@@ -400,6 +405,7 @@ In the command, you can use ~ to indicate the current position, and ~100 to indi
<data name="LblClimateType.Text" xml:space="preserve">
<value>weather</value>
</data>
<assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="LblSceneDescription.AutoSize" type="System.Boolean, mscorlib">
<value>False</value>
</data>
@@ -409,6 +415,20 @@ In the command, you can use ~ to indicate the current position, and ~100 to indi
<data name="LblSceneDescription.Text" xml:space="preserve">
<value>Scene control
Tip: Most of the scenes have no effect and cannot be entered.</value>
</data>
<data name="LblTp.AutoSize" type="System.Boolean, mscorlib">
<value>False</value>
</data>
<data name="LblTp.Location" type="System.Drawing.Point, System.Drawing">
<value>6, 89</value>
</data>
<data name="LblTp.Size" type="System.Drawing.Size, System.Drawing">
<value>337, 90</value>
</data>
<data name="LblTp.Text" xml:space="preserve">
<value>Teleporting
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="TPItem.Text" xml:space="preserve">
<value>Items</value>
@@ -467,6 +487,9 @@ Tip: Most of the scenes have no effect and cannot be entered.</value>
<data name="TPWeapon.Text" xml:space="preserve">
<value>Weapons</value>
</data>
<data name="BtnGiveAllWeapons.Text" xml:space="preserve">
<value>Give all Weapons</value>
</data>
<data name="LblWeaponDescription.Size" type="System.Drawing.Size, System.Drawing">
<value>86, 17</value>
</data>
@@ -506,36 +529,48 @@ Tip: Most of the scenes have no effect and cannot be entered.</value>
<data name="NUDWeaponLevel.Location" type="System.Drawing.Point, System.Drawing">
<value>147, 216</value>
</data>
<data name="TPStats.Text" xml:space="preserve">
<value>Stats</value>
<data name="TPAvatar.Text" xml:space="preserve">
<value>Avatar</value>
</data>
<data name="LblResetStatsCommand.Location" type="System.Drawing.Point, System.Drawing">
<value>126, 135</value>
<data name="GrpSetConstellation.Text" xml:space="preserve">
<value>Constellation</value>
</data>
<data name="LblResetStatsCommand.Size" type="System.Drawing.Size, System.Drawing">
<value>112, 17</value>
<data name="LnkSetAllConst.Size" type="System.Drawing.Size, System.Drawing">
<value>43, 17</value>
</data>
<data name="LblResetStatsCommand.Text" xml:space="preserve">
<value>When getting CEP</value>
<data name="LnkSetAllConst.Text" xml:space="preserve">
<value>Set all</value>
</data>
<data name="LblResetStatsTip.Location" type="System.Drawing.Point, System.Drawing">
<value>235, 135</value>
<data name="LnkSetConst.Size" type="System.Drawing.Size, System.Drawing">
<value>71, 17</value>
</data>
<data name="LblResetStatsTip.Size" type="System.Drawing.Size, System.Drawing">
<value>243, 17</value>
</data>
<data name="LblResetStatsTip.Text" xml:space="preserve">
<value>the current character's stats will be reset</value>
<data name="LnkSetConst.Text" xml:space="preserve">
<value>Set current</value>
</data>
<data name="GrpSetStats.Text" xml:space="preserve">
<value>Stats</value>
</data>
<data name="BtnUnlockStat.Text" xml:space="preserve">
<value>Unlock</value>
</data>
<data name="BtnLockStat.Text" xml:space="preserve">
<value>Lock</value>
</data>
<data name="LblStatTip.Text" xml:space="preserve">
<value>Tip</value>
</data>
<data name="GrpTalentLevel.Text" xml:space="preserve">
<value>Talent Level</value>
</data>
<data name="LnkTalentAll.Location" type="System.Drawing.Point, System.Drawing">
<value>146, 24</value>
</data>
<data name="LnkTalentAll.Size" type="System.Drawing.Size, System.Drawing">
<value>22, 17</value>
</data>
<data name="LnkTalentAll.Text" xml:space="preserve">
<value>All</value>
</data>
<data name="LnkTalentE.Location" type="System.Drawing.Point, System.Drawing">
<value>283, 24</value>
</data>
@@ -564,50 +599,50 @@ Tip: Most of the scenes have no effect and cannot be entered.</value>
<value>NormalATK</value>
</data>
<data name="NUDTalentLevel.Size" type="System.Drawing.Size, System.Drawing">
<value>128, 23</value>
</data>
<data name="LblStatsDescription.Size" type="System.Drawing.Size, System.Drawing">
<value>179, 17</value>
</data>
<data name="LblStatsDescription.Text" xml:space="preserve">
<value>Set current active Avatar data</value>
</data>
<data name="TPAvatar.Text" xml:space="preserve">
<value>Avatar</value>
<value>96, 23</value>
</data>
<data name="BtnGiveAllChar.Text" xml:space="preserve">
<value>Give All Char</value>
</data>
<data name="LblConstellationTip.Location" type="System.Drawing.Point, System.Drawing">
<value>379, 165</value>
</data>
<data name="LblConstellationTip.Size" type="System.Drawing.Size, System.Drawing">
<value>200, 17</value>
</data>
<data name="LblConstellationTip.Text" xml:space="preserve">
<value>※Available in Give All Char only</value>
</data>
<data name="LblAvatarConstellation.Size" type="System.Drawing.Size, System.Drawing">
<value>44, 17</value>
</data>
<data name="LblAvatarConstellation.Text" xml:space="preserve">
<value>Const.</value>
</data>
<data name="LblAvatar.Size" type="System.Drawing.Size, System.Drawing">
<value>45, 17</value>
</data>
<data name="LblAvatar.Text" xml:space="preserve">
<value>Avatar</value>
</data>
<data name="LblAvatarLevel.Size" type="System.Drawing.Size, System.Drawing">
<value>37, 17</value>
</data>
<data name="LblAvatarLevel.Text" xml:space="preserve">
<value>Level</value>
</data>
<data name="LblAvatarSkillLevelLabel.Size" type="System.Drawing.Size, System.Drawing">
<value>61, 17</value>
</data>
<data name="LblAvatarSkillLevelLabel.Text" xml:space="preserve">
<value>Skill level</value>
</data>
<data name="LblAvatar.Size" type="System.Drawing.Size, System.Drawing">
<value>45, 17</value>
</data>
<data name="LblAvatar.Text" xml:space="preserve">
<value>Avatar</value>
</data>
<data name="LblAvatarConstellation.Size" type="System.Drawing.Size, System.Drawing">
<value>44, 17</value>
</data>
<data name="LblAvatarConstellation.Text" xml:space="preserve">
<value>Const.</value>
</data>
<data name="TPSpawn.Text" xml:space="preserve">
<value>Spawn</value>
</data>
<data name="ChkInfiniteHP.Location" type="System.Drawing.Point, System.Drawing">
<value>202, 217</value>
</data>
<data name="ChkInfiniteHP.Size" type="System.Drawing.Size, System.Drawing">
<value>86, 21</value>
</data>
<data name="ChkInfiniteHP.Text" xml:space="preserve">
<value>Infinite HP</value>
</data>
<data name="LblClearSpawnLogs.Location" type="System.Drawing.Point, System.Drawing">
<value>204, 25</value>
</data>
<data name="LblClearSpawnLogs.Size" type="System.Drawing.Size, System.Drawing">
<value>50, 17</value>
</data>
@@ -713,7 +748,7 @@ Therefore, the quest can be added and finished, but not necessarily work.</value
<value>Part</value>
</data>
<data name="LblArtifactSet.Location" type="System.Drawing.Point, System.Drawing">
<value>87, 11</value>
<value>112, 11</value>
</data>
<data name="LblArtifactSet.Size" type="System.Drawing.Size, System.Drawing">
<value>49, 17</value>
@@ -728,7 +763,7 @@ Therefore, the quest can be added and finished, but not necessarily work.</value
<value>X Clear</value>
</data>
<data name="LblArtifactLevel.Location" type="System.Drawing.Point, System.Drawing">
<value>99, 41</value>
<value>124, 41</value>
</data>
<data name="LblArtifactLevel.Size" type="System.Drawing.Size, System.Drawing">
<value>37, 17</value>
@@ -737,7 +772,7 @@ Therefore, the quest can be added and finished, but not necessarily work.</value
<value>Level</value>
</data>
<data name="LblSubAttribution.Location" type="System.Drawing.Point, System.Drawing">
<value>80, 102</value>
<value>105, 102</value>
</data>
<data name="LblSubAttribution.Size" type="System.Drawing.Size, System.Drawing">
<value>56, 17</value>
@@ -746,7 +781,7 @@ Therefore, the quest can be added and finished, but not necessarily work.</value
<value>Sub Stat</value>
</data>
<data name="LblMainAttribution.Location" type="System.Drawing.Point, System.Drawing">
<value>73, 71</value>
<value>98, 71</value>
</data>
<data name="LblMainAttribution.Size" type="System.Drawing.Size, System.Drawing">
<value>63, 17</value>
@@ -764,7 +799,7 @@ Therefore, the quest can be added and finished, but not necessarily work.</value
<value>Custom</value>
</data>
<data name="BtnExportCustomCommands.Location" type="System.Drawing.Point, System.Drawing">
<value>533, 216</value>
<value>583, 216</value>
</data>
<data name="BtnExportCustomCommands.Size" type="System.Drawing.Size, System.Drawing">
<value>60, 23</value>
@@ -773,7 +808,7 @@ Therefore, the quest can be added and finished, but not necessarily work.</value
<value>Export</value>
</data>
<data name="BtnLoadCustomCommands.Location" type="System.Drawing.Point, System.Drawing">
<value>467, 216</value>
<value>517, 216</value>
</data>
<data name="BtnLoadCustomCommands.Size" type="System.Drawing.Size, System.Drawing">
<value>60, 23</value>
@@ -791,7 +826,7 @@ Therefore, the quest can be added and finished, but not necessarily work.</value
<value>List</value>
</data>
<data name="LnkResetCustomCommands.Location" type="System.Drawing.Point, System.Drawing">
<value>531, -1</value>
<value>581, -1</value>
</data>
<data name="LnkResetCustomCommands.Size" type="System.Drawing.Size, System.Drawing">
<value>53, 17</value>
@@ -800,7 +835,7 @@ Therefore, the quest can be added and finished, but not necessarily work.</value
<value>Restore</value>
</data>
<data name="BtnRemoveCustomCommand.Location" type="System.Drawing.Point, System.Drawing">
<value>393, 216</value>
<value>443, 216</value>
</data>
<data name="BtnRemoveCustomCommand.Size" type="System.Drawing.Size, System.Drawing">
<value>70, 23</value>
@@ -809,7 +844,7 @@ Therefore, the quest can be added and finished, but not necessarily work.</value
<value>x Delete</value>
</data>
<data name="BtnSaveCustomCommand.Location" type="System.Drawing.Point, System.Drawing">
<value>317, 216</value>
<value>367, 216</value>
</data>
<data name="BtnSaveCustomCommand.Size" type="System.Drawing.Size, System.Drawing">
<value>70, 23</value>
@@ -818,11 +853,17 @@ Therefore, the quest can be added and finished, but not necessarily work.</value
<value>√ Save</value>
</data>
<data name="TxtCustomName.Size" type="System.Drawing.Size, System.Drawing">
<value>267, 23</value>
<value>317, 23</value>
</data>
<data name="TPHome.Text" xml:space="preserve">
<value>Home</value>
</data>
<data name="BtnOpenDropEditor.Location" type="System.Drawing.Point, System.Drawing">
<value>546, 216</value>
</data>
<data name="BtnOpenDropEditor.Text" xml:space="preserve">
<value>Drop Editor</value>
</data>
<data name="LblAbout.Location" type="System.Drawing.Point, System.Drawing">
<value>74, 38</value>
</data>
@@ -856,4 +897,97 @@ Therefore, the quest can be added and finished, but not necessarily work.</value
<data name="ChkIncludeUID.Text" xml:space="preserve">
<value>Include UID</value>
</data>
<data name="TPMail.Text" xml:space="preserve">
<value>Mail</value>
</data>
<data name="BtnAddMailItem.Text" xml:space="preserve">
<value>+ Add</value>
</data>
<data name="BtnDeleteMailItem.Text" xml:space="preserve">
<value>- Delete</value>
</data>
<data name="tabPage1.Text" xml:space="preserve">
<value>Items</value>
</data>
<data name="NUDMailItemLevel.Location" type="System.Drawing.Point, System.Drawing">
<value>171, 4</value>
</data>
<data name="NUDMailItemCount.Location" type="System.Drawing.Point, System.Drawing">
<value>47, 4</value>
</data>
<data name="LblMailItemCount.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 6</value>
</data>
<data name="LblMailItemCount.Size" type="System.Drawing.Size, System.Drawing">
<value>45, 17</value>
</data>
<data name="LblMailItemCount.Text" xml:space="preserve">
<value>Count:</value>
</data>
<data name="LblMailItemLevel.Location" type="System.Drawing.Point, System.Drawing">
<value>123, 6</value>
</data>
<data name="LblMailItemLevel.Size" type="System.Drawing.Size, System.Drawing">
<value>40, 17</value>
</data>
<data name="LblMailItemLevel.Text" xml:space="preserve">
<value>Level:</value>
</data>
<data name="tabPage2.Text" xml:space="preserve">
<value>Mailbox</value>
</data>
<data name="BtnClearMail.Location" type="System.Drawing.Point, System.Drawing">
<value>84, 4</value>
</data>
<data name="BtnClearMail.Text" xml:space="preserve">
<value>× Clear</value>
</data>
<data name="BtnRemoveMail.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 4</value>
</data>
<data name="BtnRemoveMail.Text" xml:space="preserve">
<value>- Delete</value>
</data>
<data name="BtnSendMail.Text" xml:space="preserve">
<value>Send</value>
</data>
<data name="LblMailItemsLabel.Size" type="System.Drawing.Size, System.Drawing">
<value>43, 17</value>
</data>
<data name="LblMailItemsLabel.Text" xml:space="preserve">
<value>Items:</value>
</data>
<data name="RbMailSendToPlayer.Size" type="System.Drawing.Size, System.Drawing">
<value>61, 21</value>
</data>
<data name="RbMailSendToPlayer.Text" xml:space="preserve">
<value>Player</value>
</data>
<data name="RbMailSendToAll.Size" type="System.Drawing.Size, System.Drawing">
<value>40, 21</value>
</data>
<data name="RbMailSendToAll.Text" xml:space="preserve">
<value>All</value>
</data>
<data name="LblMailRecipientLabel.Text" xml:space="preserve">
<value>Send to:</value>
</data>
<data name="LblMailContentLabel.Size" type="System.Drawing.Size, System.Drawing">
<value>56, 17</value>
</data>
<data name="LblMailContentLabel.Text" xml:space="preserve">
<value>Content:</value>
</data>
<data name="LblMailTitleLabel.Size" type="System.Drawing.Size, System.Drawing">
<value>35, 17</value>
</data>
<data name="LblMailTitleLabel.Text" xml:space="preserve">
<value>Title:</value>
</data>
<data name="LblMailSenderLabel.Size" type="System.Drawing.Size, System.Drawing">
<value>52, 17</value>
</data>
<data name="LblMailSenderLabel.Text" xml:space="preserve">
<value>Sender:</value>
</data>
</root>

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -123,11 +123,23 @@
<data name="ChkAutoCopy.Text" xml:space="preserve">
<value>自動</value>
</data>
<data name="GrpCommand.Text" xml:space="preserve">
<value>命令 - [Ctrl] 自動執行 - [|] 分割多條命令</value>
</data>
<data name="BtnInvokeOpenCommand.Text" xml:space="preserve">
<value>執行(F5)</value>
</data>
<data name="GrpCommand.Text" xml:space="preserve">
<value>命令(按住 Ctrl 自動執行)</value>
<data name="TPRemoteCall.Text" xml:space="preserve">
<value>遠程</value>
</data>
<data name="LnkInventoryKamera.Text" xml:space="preserve">
<value>存檔掃描開源工具</value>
</data>
<data name="LblGOODHelp.Text" xml:space="preserve">
<value>快來把你的官服存檔導入GC吧</value>
</data>
<data name="ButtonOpenGOODImport.Text" xml:space="preserve">
<value>導入GOOD檔案</value>
</data>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="LblHostTip.Size" type="System.Drawing.Size, System.Drawing">
@@ -136,6 +148,9 @@
<data name="LblHostTip.Text" xml:space="preserve">
<value>請確保地址中包含 http:// 或 https://</value>
</data>
<data name="GrpServerStatus.Text" xml:space="preserve">
<value>伺服器狀態</value>
</data>
<data name="LnkOpenCommandLabel.Text" xml:space="preserve">
<value>遠程執行插件</value>
</data>
@@ -145,8 +160,11 @@
<data name="LblPlayerCountLabel.Text" xml:space="preserve">
<value>當前玩家數</value>
</data>
<data name="GrpServerStatus.Text" xml:space="preserve">
<value>伺服器狀態</value>
<data name="GrpRemoteCommand.Text" xml:space="preserve">
<value>遠程執行</value>
</data>
<data name="TPPlayerCheck.Text" xml:space="preserve">
<value>玩家驗證</value>
</data>
<data name="LnkRCHelp.Text" xml:space="preserve">
<value>幫助</value>
@@ -160,9 +178,6 @@
<data name="BtnSendVerificationCode.Text" xml:space="preserve">
<value>發送驗證碼</value>
</data>
<data name="TPPlayerCheck.Text" xml:space="preserve">
<value>玩家驗證</value>
</data>
<data name="BtnConsoleConnect.Text" xml:space="preserve">
<value>連接</value>
</data>
@@ -170,17 +185,17 @@
<value>請注意,控制台狀態下普通命令必須指定目標
即設置包含UID</value>
</data>
<data name="GrpRemoteCommand.Text" xml:space="preserve">
<value>遠程執行</value>
</data>
<data name="BtnQueryServerStatus.Text" xml:space="preserve">
<value>查詢</value>
</data>
<data name="LblHost.Text" xml:space="preserve">
<value>伺服器地址</value>
</data>
<data name="TPRemoteCall.Text" xml:space="preserve">
<value>遠程</value>
<data name="TPAbout.Text" xml:space="preserve">
<value>關於</value>
</data>
<data name="LblSupportDescription.Size" type="System.Drawing.Size, System.Drawing">
<value>334, 102</value>
</data>
<data name="LblSupportDescription.Text" xml:space="preserve">
<value>割草機工具箱
@@ -190,15 +205,15 @@
如果願意請我喝一杯奶茶,那就更好了 : )
指令生成有問題或者有新的功能請求都可以來Github提出</value>
</data>
<data name="TPAbout.Text" xml:space="preserve">
<value>關於</value>
</data>
<data name="BtnBan.Text" xml:space="preserve">
<value>封號</value>
</data>
<data name="LblBanUID.Text" xml:space="preserve">
<value>目標UID</value>
</data>
<data name="GrpAccount.Text" xml:space="preserve">
<value>賬號管理</value>
</data>
<data name="BtnDeleteAccount.Text" xml:space="preserve">
<value>- 刪除</value>
</data>
@@ -208,8 +223,8 @@
<data name="LblAccountUserName.Text" xml:space="preserve">
<value>用戶名</value>
</data>
<data name="GrpAccount.Text" xml:space="preserve">
<value>賬號管理</value>
<data name="GrpPermission.Text" xml:space="preserve">
<value>權限管理</value>
</data>
<data name="LblPerm.Text" xml:space="preserve">
<value>權限</value>
@@ -217,17 +232,12 @@
<data name="LblPermUID.Text" xml:space="preserve">
<value>目標UID</value>
</data>
<data name="GrpPermission.Text" xml:space="preserve">
<value>權限管理</value>
<data name="TPScene.Text" xml:space="preserve">
<value>場景</value>
</data>
<data name="ChkIncludeSceneId.Text" xml:space="preserve">
<value>含場景ID</value>
</data>
<data name="LblTp.Text" xml:space="preserve">
<value>座標傳送
提示:遊戲內可以通過小地圖的'魚鉤'標記來快捷傳送
命令中可以用~表示當前位置,~100表示相對當前100</value>
</data>
<data name="BtnTeleport.Text" xml:space="preserve">
<value>傳送</value>
</data>
@@ -239,8 +249,13 @@
提示:大部分場景沒有作用,無法進入。</value>
</data>
<data name="TPScene.Text" xml:space="preserve">
<value>場景</value>
<data name="LblTp.Size" type="System.Drawing.Size, System.Drawing">
<value>290, 51</value>
</data>
<data name="LblTp.Text" xml:space="preserve">
<value>座標傳送
提示:遊戲內可以通過小地圖的'魚鉤'標記來快捷傳送
命令中可以用~表示當前位置,~N 表示相對當前N</value>
</data>
<data name="BtnSaveGiveItemLog.Text" xml:space="preserve">
<value>√ 記錄</value>
@@ -261,6 +276,9 @@
<value>給玩家指定物品
說明:可選擇直接給到背包或者掉落到世界</value>
</data>
<data name="BtnGiveAllWeapons.Text" xml:space="preserve">
<value>獲得所有武器</value>
</data>
<data name="LblWeaponDescription.Text" xml:space="preserve">
<value>獲取武器
@@ -281,26 +299,29 @@
<data name="LblWeaponLevel.Text" xml:space="preserve">
<value>等級</value>
</data>
<data name="LblResetStatsCommand.Text" xml:space="preserve">
<value>獲得角色經驗時</value>
<data name="GrpSetConstellation.Text" xml:space="preserve">
<value>設置命座</value>
</data>
<data name="LblResetStatsTip.Text" xml:space="preserve">
<value>當前角色屬性將會重置</value>
<data name="LnkSetAllConst.Text" xml:space="preserve">
<value>設置所有角色</value>
</data>
<data name="LnkSetConst.Text" xml:space="preserve">
<value>設置當前角色</value>
</data>
<data name="GrpSetStats.Text" xml:space="preserve">
<value>角色屬性</value>
</data>
<data name="LnkTalentNormalATK.Text" xml:space="preserve">
<value>普通攻擊</value>
<data name="BtnUnlockStat.Text" xml:space="preserve">
<value>解鎖</value>
</data>
<data name="BtnLockStat.Text" xml:space="preserve">
<value>鎖定</value>
</data>
<data name="GrpTalentLevel.Text" xml:space="preserve">
<value>技能等級</value>
</data>
<data name="LblStatsDescription.Text" xml:space="preserve">
<value>設置當前活躍角色數據</value>
</data>
<data name="TPStats.Text" xml:space="preserve">
<value>數據</value>
<data name="LnkTalentNormalATK.Text" xml:space="preserve">
<value>普通攻擊</value>
</data>
<data name="BtnGiveAllChar.Text" xml:space="preserve">
<value>一鍵獲得所有角色</value>
@@ -308,6 +329,12 @@
<data name="LblAvatarLevel.Text" xml:space="preserve">
<value>等級</value>
</data>
<data name="LblAvatarSkillLevelLabel.Text" xml:space="preserve">
<value>技能等級</value>
</data>
<data name="ChkInfiniteHP.Text" xml:space="preserve">
<value>無限血</value>
</data>
<data name="BtnSaveSpawnLog.Text" xml:space="preserve">
<value>√ 記錄</value>
</data>
@@ -317,15 +344,21 @@
<data name="GrpSpawnRecord.Text" xml:space="preserve">
<value>生成記錄本</value>
</data>
<data name="GrpEntityType.Text" xml:space="preserve">
<value>列表分類</value>
</data>
<data name="RbEntityAnimal.Size" type="System.Drawing.Size, System.Drawing">
<value>62, 21</value>
</data>
<data name="RbEntityAnimal.Text" xml:space="preserve">
<value>生物誌</value>
</data>
<data name="RbEntityMonster.Size" type="System.Drawing.Size, System.Drawing">
<value>74, 21</value>
</data>
<data name="RbEntityMonster.Text" xml:space="preserve">
<value>討伐對象</value>
</data>
<data name="GrpEntityType.Text" xml:space="preserve">
<value>列表分類</value>
</data>
<data name="LblSpawnDescription.Text" xml:space="preserve">
<value>在玩家附近召喚生物</value>
</data>
@@ -335,6 +368,12 @@
<data name="LblEntityLevel.Text" xml:space="preserve">
<value>等級</value>
</data>
<data name="TPQuest.Text" xml:space="preserve">
<value>任務</value>
</data>
<data name="GrpQuestFilters.Text" xml:space="preserve">
<value>列表過濾</value>
</data>
<data name="ChkQuestFilterTEST.Text" xml:space="preserve">
<value>測試任務</value>
</data>
@@ -344,9 +383,6 @@
<data name="ChkQuestFilterHIDDEN.Text" xml:space="preserve">
<value>隱藏的任務</value>
</data>
<data name="GrpQuestFilters.Text" xml:space="preserve">
<value>列表過濾</value>
</data>
<data name="BtnFinishQuest.Text" xml:space="preserve">
<value>完成任務</value>
</data>
@@ -358,8 +394,8 @@
提示:許多任務需要服務端腳本支持
囙此任務可以接,可以完成,但是不一定可以做</value>
</data>
<data name="TPQuest.Text" xml:space="preserve">
<value>任務</value>
<data name="TPArtifact.Text" xml:space="preserve">
<value>聖遺物</value>
</data>
<data name="LblArtifactSet.Text" xml:space="preserve">
<value>套裝</value>
@@ -376,8 +412,8 @@
<data name="LblArtifactStars.Text" xml:space="preserve">
<value>星級</value>
</data>
<data name="TPArtifact.Text" xml:space="preserve">
<value>聖遺物</value>
<data name="TPCustom.Text" xml:space="preserve">
<value>自定義</value>
</data>
<data name="BtnExportCustomCommands.Text" xml:space="preserve">
<value>導出</value>
@@ -391,8 +427,11 @@
<data name="BtnRemoveCustomCommand.Text" xml:space="preserve">
<value>× 刪除</value>
</data>
<data name="TPCustom.Text" xml:space="preserve">
<value>自定義</value>
<data name="TPHome.Text" xml:space="preserve">
<value>主頁</value>
</data>
<data name="BtnOpenDropEditor.Text" xml:space="preserve">
<value>掉落物編輯器</value>
</data>
<data name="BtnOpenTextMap.Text" xml:space="preserve">
<value>文本瀏覽器</value>
@@ -403,7 +442,50 @@
<data name="ChkTopMost.Text" xml:space="preserve">
<value>置頂</value>
</data>
<data name="TPHome.Text" xml:space="preserve">
<value>主頁</value>
<data name="TPMail.Text" xml:space="preserve">
<value>郵件</value>
</data>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="LblClearMailContent.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="BtnDeleteMailItem.Text" xml:space="preserve">
<value>- 刪除</value>
</data>
<data name="NUDMailItemLevel.Location" type="System.Drawing.Point, System.Drawing">
<value>171, 4</value>
</data>
<data name="NUDMailItemCount.Location" type="System.Drawing.Point, System.Drawing">
<value>47, 4</value>
</data>
<data name="LblMailItemCount.Location" type="System.Drawing.Point, System.Drawing">
<value>-3, 6</value>
</data>
<data name="LblMailItemCount.Text" xml:space="preserve">
<value>數量:</value>
</data>
<data name="LblMailItemLevel.Location" type="System.Drawing.Point, System.Drawing">
<value>123, 6</value>
</data>
<data name="LblMailItemLevel.Text" xml:space="preserve">
<value>等級:</value>
</data>
<data name="tabPage2.Text" xml:space="preserve">
<value>郵件列表</value>
</data>
<data name="BtnRemoveMail.Text" xml:space="preserve">
<value>- 刪除</value>
</data>
<data name="BtnSendMail.Text" xml:space="preserve">
<value>發送</value>
</data>
<data name="LblMailContentLabel.Text" xml:space="preserve">
<value>內容:</value>
</data>
<data name="LblMailTitleLabel.Text" xml:space="preserve">
<value>標題:</value>
</data>
<data name="LblMailSenderLabel.Text" xml:space="preserve">
<value>發件人:</value>
</data>
</root>

View File

@@ -18,7 +18,6 @@
**/
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text.RegularExpressions;
using System.Windows.Forms;

View File

@@ -134,7 +134,7 @@
<value>80, 21</value>
</data>
<data name="ChkTopMost.Text" xml:space="preserve">
<value>Always on top</value>
<value>TopMost</value>
</data>
<data name="LblResourcesPath.Size" type="System.Drawing.Size, System.Drawing">
<value>294, 17</value>
@@ -148,4 +148,4 @@
<data name="$this.Text" xml:space="preserve">
<value>Text Map Browser</value>
</data>
</root>
</root>

View File

@@ -0,0 +1,94 @@
/**
* Grasscutter Tools
* Copyright (C) 2022 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.GOOD
{
/// <summary>
/// Artifact data representation
/// Doc: https://frzyc.github.io/genshin-optimizer/#/doc
/// Modified from https://github.com/Andrewthe13th/Inventory_Kamera/blob/master/InventoryKamera/game/Artifact.cs
/// </summary>
public class Artifact
{
/// <summary>
/// e.g. "GladiatorsFinale"
/// </summary>
[JsonProperty("setKey")]
public string SetName { get; set; }
/// <summary>
/// //e.g. "plume"
/// type SlotKey = "flower" | "plume" | "sands" | "goblet" | "circlet"
/// </summary>
[JsonProperty("slotKey")]
public string GearSlot { get; set; }
/// <summary>
/// 1-5 inclusive
/// </summary>
[JsonProperty("rarity")]
public int Rarity { get; set; }
/// <summary>
/// mainStatKey
/// </summary>
[JsonProperty("mainStatKey")]
public string MainStat { get; set; }
/// <summary>
/// 0-20 inclusive
/// </summary>
[JsonProperty("level")]
public int Level { get; set; }
/// <summary>
/// substats
/// </summary>
[JsonProperty("substats")]
public SubStat[] SubStats { get; set; }
/// <summary>
/// where "" means not equipped.
/// </summary>
[JsonProperty("location")]
public string EquippedCharacter { get; set; }
/// <summary>
/// Whether the artifact is locked in game.
/// </summary>
[JsonProperty("lock")]
public bool Lock { get; set; }
public struct SubStat
{
/// <summary>
/// e.g. "critDMG_"
/// </summary>
[JsonProperty("key")]
public string Stat { get; set; }
/// <summary>
/// e.g. 19.4
/// </summary>
[JsonProperty("value")]
public double Value { get; set; }
}
}
}

View File

@@ -0,0 +1,72 @@
/**
* Grasscutter Tools
* Copyright (C) 2022 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.GOOD
{
/// <summary>
/// Character data representation
/// Doc: https://frzyc.github.io/genshin-optimizer/#/doc
/// Modified from https://github.com/Andrewthe13th/Inventory_Kamera/blob/master/InventoryKamera/game/Character.cs
/// </summary>
public class Character
{
/// <summary>
/// e.g. "Rosaria"
/// </summary>
[JsonProperty("key")]
public string Name { get; set; }
/// <summary>
/// 1-90 inclusive
/// </summary>
[JsonProperty("level")]
public int Level { get; set; }
/// <summary>
/// 0-6 inclusive
/// </summary>
[JsonProperty("constellation")]
public int Constellation { get; set; }
/// <summary>
/// 0-6 inclusive. need to disambiguate 80/90 or 80/80
/// </summary>
[JsonProperty("ascension")]
public int Ascension { get; set; }
/// <summary>
/// does not include boost from constellations. 1-15 inclusive
/// </summary>
[JsonProperty("talent")]
public Talents Talents { get; set; }
}
public struct Talents
{
[JsonProperty("auto")]
public int Auto { get; set; }
[JsonProperty("skill")]
public int Skill { get; set; }
[JsonProperty("burst")]
public int Burst { get; set; }
}
}

View File

@@ -0,0 +1,63 @@
/**
* Grasscutter Tools
* Copyright (C) 2022 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.Collections.Generic;
using Newtonsoft.Json;
namespace GrasscutterTools.GOOD
{
/// <summary>
/// Genshin Open Object Description (GOOD)
/// Doc: https://frzyc.github.io/genshin-optimizer/#/doc
/// Modified from https://github.com/Andrewthe13th/Inventory_Kamera/blob/master/InventoryKamera/data/GOOD.cs
///
/// Available for
/// https://frzyc.github.io/genshin-optimizer/
/// https://github.com/Andrewthe13th/Inventory_Kamera
/// https://genshin.aspirine.su/
/// https://seelie.me/
/// https://github.com/daydreaming666/Amenoma
/// https://www.mona-uranai.com/
/// https://genshin.mingyulab.com/
/// https://genshin-center.com/
/// </summary>
public class GOOD
{
[JsonProperty("format")]
public string Format { get; set; }
[JsonProperty("version")]
public int Version { get; set; }
[JsonProperty("source")]
public string Source { get; set; }
[JsonProperty("weapons", DefaultValueHandling = DefaultValueHandling.Ignore)]
public List<Weapon> Weapons { get; set; }
[JsonProperty("artifacts", DefaultValueHandling = DefaultValueHandling.Ignore)]
public List<Artifact> Artifacts { get; set; }
[JsonProperty("characters", DefaultValueHandling = DefaultValueHandling.Ignore)]
public List<Character> Characters { get; set; }
[JsonProperty("materials", DefaultValueHandling = DefaultValueHandling.Ignore)]
public Dictionary<string, int> Materials { get; set; }
}
}

View File

@@ -0,0 +1,108 @@
/**
* Grasscutter Tools
* Copyright (C) 2022 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.Collections.Generic;
using System.Globalization;
using System.Text.RegularExpressions;
using GrasscutterTools.Game;
using GrasscutterTools.Properties;
namespace GrasscutterTools.GOOD
{
public static class GOODData
{
static GOODData()
{
var cultureInfo = CultureInfo.GetCultureInfo("en-US");
var regex = new Regex(@"[\W]", RegexOptions.Compiled);
Dictionary<string, int> ToGOODMap(ItemMap itemMap)
{
var dic = new Dictionary<string, int>(itemMap.Count);
for (int i = 0; i < itemMap.Count; i++)
{
var name = itemMap.Names[i];
var pascalCase = cultureInfo.TextInfo.ToTitleCase(name);
var nameGOOD = regex.Replace(pascalCase, string.Empty);
dic[nameGOOD] = itemMap.Ids[i];
//dic.Add(nameGOOD, itemMap.Ids[i]);
}
return dic;
}
var artifactCats = new ItemMap(Resources.ResourceManager.GetString("ArtifactCat", cultureInfo));
var avatars = new ItemMap(Resources.ResourceManager.GetString("Avatar", cultureInfo));
var weapons = new ItemMap(Resources.ResourceManager.GetString("Weapon", cultureInfo));
ArtifactCats = ToGOODMap(artifactCats);
Avatars = ToGOODMap(avatars);
Weapons = ToGOODMap(weapons);
}
public static Dictionary<string, int> ArtifactCats { get; private set; }
public static Dictionary<string, int> ArtifactSlotMap = new Dictionary<string, int> {
{"goblet", 1}, {"plume", 2}, {"circlet", 3}, {"flower", 4}, {"sands", 5}
};
public static Dictionary<string, int> ArtifactMainAttribution { get; } = new Dictionary<string, int>
{
{ "hp" , 10001 },
{ "hp_" , 10002 },
{ "atk" , 10003 },
{ "atk_" , 10004 },
{ "def" , 10005 },
{ "def_" , 10006 },
{ "enerRech_" , 10007 },
{ "eleMas" , 10008 },
{ "critRate_" , 13007 },
{ "critDMG_" , 13008 },
{ "heal_" , 13009 },
{ "pyro_dmg_" , 15008 },
{ "electro_dmg_" , 15009 },
{ "cryo_dmg_" , 15010 },
{ "hydro_dmg_" , 15011 },
{ "anemo_dmg_" , 15012 },
{ "geo_dmg_" , 15013 },
{ "dendro_dmg_" , 15014 },
{ "physical_dmg_", 15015 },
};
public static Dictionary<string, int> ArtifactSubAttribution { get; } = new Dictionary<string, int>
{
{ "hp" , 102 },
{ "hp_" , 103 },
{ "atk" , 105 },
{ "atk_" , 106 },
{ "def" , 108 },
{ "def_" , 109 },
{ "critRate_", 120 },
{ "critDMG_" , 122 },
{ "enerRech_", 123 },
{ "eleMas" , 124 },
};
public static Dictionary<string, int> Avatars { get; private set; }
public static Dictionary<string, int> Weapons { get; private set; }
}
}

View File

@@ -0,0 +1,68 @@
/**
* Grasscutter Tools
* Copyright (C) 2022 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.ComponentModel;
using Newtonsoft.Json;
namespace GrasscutterTools.GOOD
{
/// <summary>
/// Weapon data representation
/// Doc: https://frzyc.github.io/genshin-optimizer/#/doc
/// Modified from https://github.com/Andrewthe13th/Inventory_Kamera/blob/master/InventoryKamera/game/Weapon.cs
/// </summary>
public class Weapon
{
/// <summary>
/// e.g. "CrescentPike"
/// </summary>
[JsonProperty("key")]
public string Name { get; set; }
/// <summary>
/// 1-90 inclusive
/// </summary>
[JsonProperty("level")]
public int Level { get; set; }
/// <summary>
/// 0-6 inclusive. need to disambiguate 80/90 or 80/80
/// </summary>
[JsonProperty("ascension")]
public int AscensionLevel { get; set; }
/// <summary>
/// 1-5 inclusive
/// </summary>
[JsonProperty("refinement")]
public int RefinementLevel { get; set; }
/// <summary>
/// where "" means not equipped.
/// </summary>
[JsonProperty("location")]
[DefaultValue("")]
public string EquippedCharacter { get; set; }
/// <summary>
/// Whether the weapon is locked in game.
/// </summary>
[JsonProperty("lock")]
public bool Lock { get; set; }
}
}

View File

@@ -0,0 +1,143 @@
/**
* Grasscutter Tools
* Copyright (C) 2022 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;
namespace GrasscutterTools.Game
{
/// <summary>
/// 命令版本
///
/// 用法:
/// ver = Version.TryParse(input, out Version current) ? new CommandVersion(current) : CommandVersion.Latest();
///
/// </summary>
internal class CommandVersion
{
/// <summary>
/// 初始化当前版本
/// </summary>
/// <param name="current"></param>
public CommandVersion(Version current)
{
this.current = current ?? throw new ArgumentNullException(nameof(current));
}
private Version current;
/// <summary>
/// 当前命令版本
/// </summary>
public Version Current
{
get => current;
set
{
if (current != value)
{
current = value;
OnVersionChanged();
}
}
}
/// <summary>
/// 选中版本改变事件
/// </summary>
public event EventHandler VersionChanged;
/// <summary>
/// 触发版本更改事件
/// </summary>
private void OnVersionChanged() => VersionChanged?.Invoke(this, EventArgs.Empty);
/// <summary>
/// 当前支持的最新版本 - 当未选择版本时,默认为最新版本
/// </summary>
public static CommandVersion Latest() => new CommandVersion(List[List.Length - 1]);
#region - Version List -
// 忽略更早以前的版本
/// <summary>
/// v1.2.1 2022/6/18
/// git 30c7bb94439a123417a6a1e0116acd3c40f2d115
/// </summary>
public static readonly Version V1_2_1 = new Version(1, 2, 1);
/// <summary>
/// v1.2.1 -> v1.2.2 2022/6/22
/// git aa43943025fefcda9739c9fcf242e67f1a7b83b4
/// </summary>
public static readonly Version V1_2_2 = new Version(1, 2, 2);
/// <summary>
/// v1.2.2 -> v1.2.3 2022/7/21
/// git a07b3f21e6fbeb9abfad8862d6fa0dc4a1c3c1a3
/// </summary>
public static readonly Version V1_2_3 = new Version(1, 2, 3);
/// <summary>
/// v1.2.3 -> v1.3.0 2022/9/3 - stable
/// git 155501058fcce109489a19db37d0513d2235e08e
/// </summary>
public static readonly Version V1_3_0 = new Version(1, 3, 0);
/// <summary>
/// v1.3.0 -> v1.3.1 2022/9/3
/// git 6cf83b30eeaa98a68de2d786d7ca85ae21a95e32
/// </summary>
public static readonly Version V1_3_1 = new Version(1, 3, 1);
/// <summary>
/// 2022/10/13
/// </summary>
public static readonly Version V1_4_0 = new Version(1, 4, 0);
/// <summary>
/// 2022/10/18
/// </summary>
public static readonly Version V1_4_1 = new Version(1, 4, 1);
/// <summary>
/// 2022/10/27
/// </summary>
public static readonly Version V1_4_2 = new Version(1, 4, 2);
// More...
/// <summary>
/// 2022/10/18
/// </summary>
//public static readonly Version V1_4_3 = new Version(1, 4, 2);
public static Version[] List { get; } = new Version[] {
V1_2_1,
V1_2_2,
V1_2_3,
V1_3_0,
V1_3_1,
V1_4_0,
V1_4_1,
V1_4_2,
//V1_4_3,
};
#endregion - Version List -
}
}

View File

@@ -0,0 +1,59 @@
using Newtonsoft.Json;
namespace GrasscutterTools.Game.Drop
{
public struct DropData
{
/// <summary>
/// 物品ID
/// </summary>
[JsonProperty("itemId")]
public int ItemId { get; set; }
/// <summary>
/// 最小数量
/// </summary>
[JsonProperty("minCount")]
public int MinCount { get; set; }
/// <summary>
/// 最大数量
/// </summary>
[JsonProperty("maxCount")]
public int MaxCount { get; set; }
/// <summary>
/// 最小权重范围0~10000
/// </summary>
[JsonProperty("minWeight")]
public int MinWeight { get; set; }
/// <summary>
/// 最大权重范围0~10000
/// </summary>
[JsonProperty("maxWeight")]
public int MaxWeight { get; set; }
// 以下属性可用但没有必要
///// <summary>
///// 是否共享?
///// </summary>
//[JsonProperty("share")]
//public bool IsShare { get; set; }
///// <summary>
///// 是否直接给予
///// </summary>
//[JsonProperty("give")]
//public bool IsGive { get; set; }
public override string ToString()
{
if (MinCount != MaxCount)
return $"{ItemId}:{GameData.Items[ItemId]} | x[{MinCount}~{MaxCount}] w[{MinWeight}~{MaxWeight}]";
else
return $"{ItemId}:{GameData.Items[ItemId]} | x{MinCount} w[{MinWeight}~{MaxWeight}]";
}
}
}

View File

@@ -0,0 +1,21 @@
using System.Collections.Generic;
using Newtonsoft.Json;
namespace GrasscutterTools.Game.Drop
{
internal class DropInfo
{
/// <summary>
/// 怪物ID
/// </summary>
[JsonProperty("monsterId")]
public int MonsterId { get; set; }
/// <summary>
/// 掉落列表
/// </summary>
[JsonProperty("dropDataList")]
public List<DropData> DropDataList { get; set; } = new List<DropData>();
}
}

View File

@@ -16,8 +16,6 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*
**/
using System.ComponentModel;
using Newtonsoft.Json;
using Newtonsoft.Json.Converters;

View File

@@ -33,7 +33,7 @@ namespace GrasscutterTools.Game
AvatarColors = new ItemMap(Resources.AvatarColor);
Items = new ItemMap(Resources.Item);
Monsters = new ItemMap(Resources.Monster);
NPCs = new ItemMap(Resources.NPC);
//NPCs = new ItemMap(Resources.NPC);
Scenes = new ItemMap(Resources.Scene);
Weapons = new ItemMap(Resources.Weapon);
WeaponColors = new ItemMap(Resources.WeaponColor);
@@ -59,7 +59,7 @@ namespace GrasscutterTools.Game
public static ItemMap Monsters { get; private set; }
public static ItemMap NPCs { get; private set; }
//public static ItemMap NPCs { get; private set; }
public static ItemMap Scenes { get; private set; }

View File

@@ -16,6 +16,7 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*
**/
using System;
using System.Collections.Generic;
namespace GrasscutterTools.Game
@@ -24,9 +25,9 @@ namespace GrasscutterTools.Game
{
public ItemMap(string idNamePairs)
{
var lines = idNamePairs.Split('\n');
var lines = idNamePairs.Split(new char[] { '\n', '\r' }, StringSplitOptions.RemoveEmptyEntries);
var capacity = lines.Length;
//IdMap = new Dictionary<int, string>(capacity);
IdMap = new Dictionary<int, string>(capacity);
//NameMap = new Dictionary<string, int>(capacity);
var IdList = new List<int>(capacity);
var NameList = new List<string>(capacity);
@@ -38,9 +39,9 @@ namespace GrasscutterTools.Game
if (si > 0 && int.TryParse(line.Substring(0, si).Trim(), out int id))
{
var name = line.Substring(si + 1).Trim();
if (!string.IsNullOrEmpty(name))
if (!string.IsNullOrEmpty(name) && name != "null")
{
//IdMap[id] = name;
IdMap[id] = name;
//NameMap[name] = id;
IdList.Add(id);
NameList.Add(name);
@@ -54,15 +55,14 @@ namespace GrasscutterTools.Game
Lines = lineList.ToArray();
}
//Dictionary<int, string> IdMap;
//Dictionary<string, int> NameMap;
//List<int> IdList;
//List<string> NameList;
private readonly Dictionary<int, string> IdMap;
//private readonly Dictionary<string, int> NameMap;
public int Count => Ids.Length;
//public string this[int id] => IdMap[id];
public string this[int id] => IdMap.TryGetValue(id, out string name) ? name : EmptyName;
public static string EmptyName = "???";
//public int this[string name] => NameMap[name];
public int[] Ids { get; }
@@ -70,5 +70,7 @@ namespace GrasscutterTools.Game
public string[] Names { get; }
public string[] Lines { get; }
public static int ToId(string line) => int.Parse(line.Substring(0, line.IndexOf(':')).Trim());
}
}

View File

@@ -0,0 +1,57 @@
using System;
using System.Collections.Generic;
using Newtonsoft.Json;
namespace GrasscutterTools.Game.Mail
{
/// <summary>
/// 邮件
/// </summary>
public class Mail
{
/// <summary>
/// 发件人
/// </summary>
public string Sender { get; set; }
/// <summary>
/// 收件人 (0 表示发送给所有人)
/// </summary>
public int Recipient { get; set; }
/// <summary>
/// 是否发送给所有人
/// </summary>
[JsonIgnore]
public bool SendToAll => Recipient == 0;
/// <summary>
/// 邮件标题
/// </summary>
public string Title { get; set; }
/// <summary>
/// 邮件内容
/// </summary>
public string Content { get; set; }
/// <summary>
/// 附件列表
/// </summary>
public List<MailItem> ItemList { get; set; }
/// <summary>
/// 发送时间
/// </summary>
public DateTime SendTime { get; set; }
public override string ToString()
{
if (SendToAll)
return $"ToAll: [{Title}] {Content} | {SendTime}";
else
return $"To[{Recipient}]: [{Title}] {Content} | {SendTime}";
}
}
}

View File

@@ -0,0 +1,38 @@
namespace GrasscutterTools.Game.Mail
{
/// <summary>
/// 附件
/// </summary>
public struct MailItem
{
/// <summary>
/// 物品ID
/// </summary>
public int ItemId { get; set; }
/// <summary>
/// 物品数量
/// </summary>
public int ItemCount { get; set; }
/// <summary>
/// 物品等级
/// </summary>
public int ItemLevel { get; set; }
public override string ToString()
{
var name = GameData.Items[ItemId];
if (name == ItemMap.EmptyName)
name = GameData.Weapons[ItemId];
if (name == ItemMap.EmptyName)
name = GameData.Artifacts[ItemId];
if (ItemLevel > 1)
return $"{ItemId}:{name} x{ItemCount} lv{ItemLevel}";
else if (ItemCount > 1)
return $"{ItemId}:{name} x{ItemCount}";
else
return $"{ItemId}:{name}";
}
}
}

View File

@@ -46,7 +46,7 @@ namespace GrasscutterTools.Game
ManualTextMap = new Dictionary<string, string>();
while (reader.Read())
{
if (reader.TokenType == JsonToken.PropertyName && (string)reader.Value == "TextMapId")
if (reader.TokenType == JsonToken.PropertyName && ((string)reader.Value == "TextMapId" || (string)reader.Value == "textMapId"))
{
var textMapId = reader.ReadAsString();
reader.Read();

View File

@@ -1,7 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="..\packages\Resource.Embedder.2.2.0\build\Resource.Embedder.props" Condition="Exists('..\packages\Resource.Embedder.2.2.0\build\Resource.Embedder.props')" />
<Import Project="..\packages\Costura.Fody.5.7.0\build\Costura.Fody.props" Condition="Exists('..\packages\Costura.Fody.5.7.0\build\Costura.Fody.props')" />
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
@@ -17,6 +15,21 @@
<TargetFrameworkProfile />
<NuGetPackageImportStamp>
</NuGetPackageImportStamp>
<PublishUrl>publish\</PublishUrl>
<Install>true</Install>
<InstallFrom>Disk</InstallFrom>
<UpdateEnabled>false</UpdateEnabled>
<UpdateMode>Foreground</UpdateMode>
<UpdateInterval>7</UpdateInterval>
<UpdateIntervalUnits>Days</UpdateIntervalUnits>
<UpdatePeriodically>false</UpdatePeriodically>
<UpdateRequired>false</UpdateRequired>
<MapFileExtensions>true</MapFileExtensions>
<ApplicationRevision>0</ApplicationRevision>
<ApplicationVersion>1.0.0.%2a</ApplicationVersion>
<IsWebBootstrapper>false</IsWebBootstrapper>
<UseApplicationTrust>false</UseApplicationTrust>
<BootstrapperEnabled>true</BootstrapperEnabled>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
@@ -40,160 +53,36 @@
<PropertyGroup>
<ApplicationIcon>Resources\IconGrasscutter.ico</ApplicationIcon>
</PropertyGroup>
<PropertyGroup />
<PropertyGroup />
<PropertyGroup>
<ApplicationManifest>Properties\app.manifest</ApplicationManifest>
<TargetZone>LocalIntranet</TargetZone>
</PropertyGroup>
<PropertyGroup>
<GenerateManifests>false</GenerateManifests>
</PropertyGroup>
<PropertyGroup />
<PropertyGroup>
<SignAssembly>true</SignAssembly>
</PropertyGroup>
<PropertyGroup>
<AssemblyOriginatorKeyFile>GrasscutterTools.snk</AssemblyOriginatorKeyFile>
</PropertyGroup>
<PropertyGroup />
<ItemGroup>
<Reference Include="Costura, Version=5.7.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Costura.Fody.5.7.0\lib\netstandard1.0\Costura.dll</HintPath>
</Reference>
<Reference Include="Microsoft.Build.Framework" />
<Reference Include="Microsoft.Build.Utilities.v4.0" />
<Reference Include="Microsoft.Win32.Primitives, Version=4.0.2.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.Win32.Primitives.4.3.0\lib\net46\Microsoft.Win32.Primitives.dll</HintPath>
<Private>True</Private>
<Private>True</Private>
</Reference>
<Reference Include="Newtonsoft.Json, Version=13.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
<HintPath>..\packages\Newtonsoft.Json.13.0.1\lib\net45\Newtonsoft.Json.dll</HintPath>
<SpecificVersion>False</SpecificVersion>
<HintPath>Resources\Newtonsoft.Json.dll</HintPath>
<EmbedInteropTypes>False</EmbedInteropTypes>
<Private>False</Private>
</Reference>
<Reference Include="System" />
<Reference Include="System.AppContext, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.AppContext.4.3.0\lib\net463\System.AppContext.dll</HintPath>
<Private>True</Private>
<Private>True</Private>
</Reference>
<Reference Include="System.ComponentModel.Composition" />
<Reference Include="System.Console, Version=4.0.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Console.4.3.0\lib\net46\System.Console.dll</HintPath>
<Private>True</Private>
<Private>True</Private>
</Reference>
<Reference Include="System.Core" />
<Reference Include="System.Diagnostics.DiagnosticSource, Version=4.0.1.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Diagnostics.DiagnosticSource.4.3.0\lib\net46\System.Diagnostics.DiagnosticSource.dll</HintPath>
</Reference>
<Reference Include="System.Diagnostics.Tracing, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Diagnostics.Tracing.4.3.0\lib\net462\System.Diagnostics.Tracing.dll</HintPath>
<Private>True</Private>
<Private>True</Private>
</Reference>
<Reference Include="System.Globalization.Calendars, Version=4.0.2.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Globalization.Calendars.4.3.0\lib\net46\System.Globalization.Calendars.dll</HintPath>
<Private>True</Private>
<Private>True</Private>
</Reference>
<Reference Include="System.IO, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.IO.4.3.0\lib\net462\System.IO.dll</HintPath>
<Private>True</Private>
<Private>True</Private>
</Reference>
<Reference Include="System.IO.Compression, Version=4.1.2.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL">
<HintPath>..\packages\System.IO.Compression.4.3.0\lib\net46\System.IO.Compression.dll</HintPath>
<Private>True</Private>
<Private>True</Private>
</Reference>
<Reference Include="System.IO.Compression.FileSystem" />
<Reference Include="System.IO.Compression.ZipFile, Version=4.0.2.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL">
<HintPath>..\packages\System.IO.Compression.ZipFile.4.3.0\lib\net46\System.IO.Compression.ZipFile.dll</HintPath>
<Private>True</Private>
<Private>True</Private>
</Reference>
<Reference Include="System.IO.FileSystem, Version=4.0.2.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.IO.FileSystem.4.3.0\lib\net46\System.IO.FileSystem.dll</HintPath>
<Private>True</Private>
<Private>True</Private>
</Reference>
<Reference Include="System.IO.FileSystem.Primitives, Version=4.0.2.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.IO.FileSystem.Primitives.4.3.0\lib\net46\System.IO.FileSystem.Primitives.dll</HintPath>
<Private>True</Private>
<Private>True</Private>
</Reference>
<Reference Include="System.Linq, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Linq.4.3.0\lib\net463\System.Linq.dll</HintPath>
<Private>True</Private>
<Private>True</Private>
</Reference>
<Reference Include="System.Linq.Expressions, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Linq.Expressions.4.3.0\lib\net463\System.Linq.Expressions.dll</HintPath>
<Private>True</Private>
<Private>True</Private>
</Reference>
<Reference Include="System.Net.Http, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Net.Http.4.3.0\lib\net46\System.Net.Http.dll</HintPath>
<Private>True</Private>
<Private>True</Private>
</Reference>
<Reference Include="System.Net.Sockets, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Net.Sockets.4.3.0\lib\net46\System.Net.Sockets.dll</HintPath>
<Private>True</Private>
<Private>True</Private>
</Reference>
<Reference Include="System.Numerics" />
<Reference Include="System.Reflection, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Reflection.4.3.0\lib\net462\System.Reflection.dll</HintPath>
<Private>True</Private>
<Private>True</Private>
</Reference>
<Reference Include="System.Runtime, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Runtime.4.3.0\lib\net462\System.Runtime.dll</HintPath>
<Private>True</Private>
<Private>True</Private>
</Reference>
<Reference Include="System.Runtime.Extensions, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Runtime.Extensions.4.3.0\lib\net462\System.Runtime.Extensions.dll</HintPath>
<Private>True</Private>
<Private>True</Private>
</Reference>
<Reference Include="System.Runtime.InteropServices, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Runtime.InteropServices.4.3.0\lib\net463\System.Runtime.InteropServices.dll</HintPath>
<Private>True</Private>
<Private>True</Private>
</Reference>
<Reference Include="System.Runtime.InteropServices.RuntimeInformation, Version=4.0.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Runtime.InteropServices.RuntimeInformation.4.3.0\lib\net45\System.Runtime.InteropServices.RuntimeInformation.dll</HintPath>
<Private>True</Private>
<Private>True</Private>
</Reference>
<Reference Include="System.Security.Cryptography.Algorithms, Version=4.2.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Security.Cryptography.Algorithms.4.3.0\lib\net463\System.Security.Cryptography.Algorithms.dll</HintPath>
<Private>True</Private>
<Private>True</Private>
</Reference>
<Reference Include="System.Security.Cryptography.Encoding, Version=4.0.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Security.Cryptography.Encoding.4.3.0\lib\net46\System.Security.Cryptography.Encoding.dll</HintPath>
<Private>True</Private>
<Private>True</Private>
</Reference>
<Reference Include="System.Security.Cryptography.Primitives, Version=4.0.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Security.Cryptography.Primitives.4.3.0\lib\net46\System.Security.Cryptography.Primitives.dll</HintPath>
<Private>True</Private>
<Private>True</Private>
</Reference>
<Reference Include="System.Security.Cryptography.X509Certificates, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Security.Cryptography.X509Certificates.4.3.0\lib\net461\System.Security.Cryptography.X509Certificates.dll</HintPath>
<Private>True</Private>
<Private>True</Private>
</Reference>
<Reference Include="System.Text.RegularExpressions, Version=4.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Text.RegularExpressions.4.3.0\lib\net463\System.Text.RegularExpressions.dll</HintPath>
<Private>True</Private>
<Private>True</Private>
</Reference>
<Reference Include="System.Windows.Forms.DataVisualization" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" />
<Reference Include="System.Deployment" />
<Reference Include="System.Drawing" />
<Reference Include="System.Net.Http" />
<Reference Include="System.Windows.Forms" />
<Reference Include="System.Windows.Forms.DataVisualization" />
<Reference Include="System.Xml" />
<Reference Include="System.Xml.ReaderWriter, Version=4.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Xml.ReaderWriter.4.3.0\lib\net46\System.Xml.ReaderWriter.dll</HintPath>
<Private>True</Private>
<Private>True</Private>
</Reference>
</ItemGroup>
<ItemGroup>
<Compile Include="Controls\TextBoxXP.cs">
@@ -201,6 +90,12 @@
</Compile>
<Compile Include="DispatchServer\DispatchServerAPI.cs" />
<Compile Include="DispatchServer\Model\ServerStatus.cs" />
<Compile Include="Forms\FormDropEditor.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="Forms\FormDropEditor.Designer.cs">
<DependentUpon>FormDropEditor.cs</DependentUpon>
</Compile>
<Compile Include="Forms\FormGachaBannerEditor2.cs">
<SubType>Form</SubType>
</Compile>
@@ -225,15 +120,24 @@
<Compile Include="Forms\FormTextMapBrowser.Designer.cs">
<DependentUpon>FormTextMapBrowser.cs</DependentUpon>
</Compile>
<Compile Include="Game\CommandVersion.cs" />
<Compile Include="Game\Drop\DropData.cs" />
<Compile Include="Game\Drop\DropInfo.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\ItemMap.cs" />
<Compile Include="Game\Mail\Mail.cs" />
<Compile Include="Game\Mail\MailItem.cs" />
<Compile Include="Game\SetStatsCommand.cs" />
<Compile Include="Game\TextMapData.cs" />
<Compile Include="Github\ReleaseAPI.cs" />
<Compile Include="GOOD\GOOD.cs" />
<Compile Include="GOOD\Artifact.cs" />
<Compile Include="GOOD\Character.cs" />
<Compile Include="GOOD\GOODData.cs" />
<Compile Include="GOOD\Weapon.cs" />
<Compile Include="OpenCommand\OpenCommandAPI.cs" />
<Compile Include="MultiLanguage.cs" />
<Compile Include="Program.cs" />
@@ -243,7 +147,22 @@
<AutoGen>True</AutoGen>
<DesignTime>True</DesignTime>
</Compile>
<Compile Include="Utils\ArtifactUtils.cs" />
<Compile Include="Utils\HttpHelper.cs" />
<Compile Include="Utils\ReleaseAPI.cs" />
<Compile Include="Utils\UIUtil.cs" />
<EmbeddedResource Include="Forms\FormDropEditor.en-US.resx">
<DependentUpon>FormDropEditor.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Forms\FormDropEditor.resx">
<DependentUpon>FormDropEditor.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Forms\FormDropEditor.ru-RU.resx">
<DependentUpon>FormDropEditor.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Forms\FormDropEditor.zh-TW.resx">
<DependentUpon>FormDropEditor.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Forms\FormGachaBannerEditor2.en-us.resx">
<DependentUpon>FormGachaBannerEditor2.cs</DependentUpon>
</EmbeddedResource>
@@ -281,6 +200,7 @@
</EmbeddedResource>
<EmbeddedResource Include="Forms\FormMain.zh-TW.resx">
<DependentUpon>FormMain.cs</DependentUpon>
<SubType>Designer</SubType>
</EmbeddedResource>
<EmbeddedResource Include="Forms\FormTextMapBrowser.en-US.resx">
<DependentUpon>FormTextMapBrowser.cs</DependentUpon>
@@ -329,8 +249,7 @@
<DependentUpon>Resources.resx</DependentUpon>
<DesignTime>True</DesignTime>
</Compile>
<None Include="packages.config" />
<None Include="Properties\app.manifest" />
<None Include="GrasscutterTools.snk" />
<None Include="Properties\Settings.settings">
<Generator>SettingsSingleFileGenerator</Generator>
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
@@ -359,10 +278,10 @@
<Content Include="Resources\en-us\GachaBennerPrefab.txt" />
<Content Include="Resources\en-us\Item.txt" />
<Content Include="Resources\en-us\Monster.txt" />
<Content Include="Resources\en-us\NPC.txt" />
<Content Include="Resources\en-us\Quest.txt" />
<Content Include="Resources\en-us\Scene.txt" />
<Content Include="Resources\en-us\Weapon.txt" />
<None Include="Resources\Newtonsoft.Json.dll" />
<Content Include="Resources\ru-ru\Animal.txt" />
<Content Include="Resources\ru-ru\Artifact.txt" />
<Content Include="Resources\ru-ru\ArtifactCat.txt" />
@@ -373,14 +292,12 @@
<Content Include="Resources\ru-ru\GachaBennerPrefab.txt" />
<Content Include="Resources\ru-ru\Item.txt" />
<Content Include="Resources\ru-ru\Monster.txt" />
<Content Include="Resources\ru-ru\NPC.txt" />
<Content Include="Resources\ru-ru\Quest.txt" />
<Content Include="Resources\ru-ru\Scene.txt" />
<Content Include="Resources\ru-ru\Weapon.txt" />
<Content Include="Resources\IconGrasscutter.ico" />
<Content Include="Resources\IconGrasscutter.png" />
<None Include="Resources\ImgSupport.png" />
<Content Include="Resources\ImgHome.jpg" />
<Content Include="Resources\Permissions.txt" />
<Content Include="Resources\WeaponColor.txt" />
<Content Include="Resources\zh-cn\Animal.txt" />
@@ -394,7 +311,6 @@
<Content Include="Resources\zh-cn\GachaBennerPrefab.txt" />
<Content Include="Resources\zh-cn\Item.txt" />
<Content Include="Resources\zh-cn\Monster.txt" />
<Content Include="Resources\zh-cn\NPC.txt" />
<Content Include="Resources\zh-cn\Quest.txt" />
<Content Include="Resources\zh-cn\Scene.txt" />
<Content Include="Resources\zh-cn\Weapon.txt" />
@@ -408,7 +324,6 @@
<Content Include="Resources\zh-tw\GachaBennerPrefab.txt" />
<Content Include="Resources\zh-tw\Item.txt" />
<Content Include="Resources\zh-tw\Monster.txt" />
<Content Include="Resources\zh-tw\NPC.txt" />
<Content Include="Resources\zh-tw\Quest.txt" />
<Content Include="Resources\zh-tw\Scene.txt" />
<Content Include="Resources\zh-tw\Weapon.txt" />
@@ -425,18 +340,10 @@
<Install>false</Install>
</BootstrapperPackage>
</ItemGroup>
<ItemGroup>
<PackageReference Include="Resource.Embedder">
<Version>2.2.0</Version>
</PackageReference>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
<PropertyGroup>
<ErrorText>这台计算机上缺少此项目引用的 NuGet 程序包。使用“NuGet 程序包还原”可下载这些程序包。有关更多信息,请参见 http://go.microsoft.com/fwlink/?LinkID=322105。缺少的文件是 {0}。</ErrorText>
</PropertyGroup>
<Error Condition="!Exists('..\packages\Costura.Fody.5.7.0\build\Costura.Fody.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Costura.Fody.5.7.0\build\Costura.Fody.props'))" />
<Error Condition="!Exists('..\packages\Costura.Fody.5.7.0\build\Costura.Fody.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Costura.Fody.5.7.0\build\Costura.Fody.targets'))" />
<Error Condition="!Exists('..\packages\Fody.6.6.1\build\Fody.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Fody.6.6.1\build\Fody.targets'))" />
<Error Condition="!Exists('..\packages\Resource.Embedder.2.2.0\build\Resource.Embedder.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Resource.Embedder.2.2.0\build\Resource.Embedder.props'))" />
<Error Condition="!Exists('..\packages\NETStandard.Library.2.0.3\build\netstandard2.0\NETStandard.Library.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\NETStandard.Library.2.0.3\build\netstandard2.0\NETStandard.Library.targets'))" />
</Target>
<Import Project="..\packages\Costura.Fody.5.7.0\build\Costura.Fody.targets" Condition="Exists('..\packages\Costura.Fody.5.7.0\build\Costura.Fody.targets')" />
<Import Project="..\packages\Fody.6.6.1\build\Fody.targets" Condition="Exists('..\packages\Fody.6.6.1\build\Fody.targets')" />
<Import Project="..\packages\NETStandard.Library.2.0.3\build\netstandard2.0\NETStandard.Library.targets" Condition="Exists('..\packages\NETStandard.Library.2.0.3\build\netstandard2.0\NETStandard.Library.targets')" />
</Project>

Some files were not shown because too many files have changed in this diff Show More