Compare commits

...

168 Commits

Author SHA1 Message Date
90deaa84b4 Update Scenes and avatar/weapon colors 2023-08-22 22:40:33 +08:00
403cc3fe52 Add GC 1.7 2023-08-22 22:24:01 +08:00
dd4eb36c17 Update Banners from https://github.com/Zhaokugua/Grasscutter_Banners 2023-08-22 22:23:08 +08:00
2645e16bee Add Resources update tool 2023-08-22 22:17:47 +08:00
82668c4c6a Update All 4.0 Ids 2023-08-22 22:17:18 +08:00
8fce4a8995 Update 4.0 Ids(Activity/Dungeon/Weapon) 2023-08-22 00:16:35 +08:00
Deuteriunt
4cfbebcc5a Update Activity/Avatar/Weapon ids(CHS) (#202) 2023-08-20 14:57:40 +08:00
40db4236ba Add Commandline Usages 2023-08-02 18:06:43 +08:00
eef4687ed6 Clean up all code using CodeMaid 2023-08-02 17:43:01 +08:00
e9a3f4014e Remove debug code 2023-08-02 17:27:50 +08:00
749aae02ca Add GC v1.6.3 2023-08-02 17:26:14 +08:00
fc3fd10081 Add Server connection records (close #199) 2023-08-02 17:25:31 +08:00
65e664f35f Add shortcut keys Alt+[0~9] to switch pages (close #201) 2023-07-28 21:21:57 +08:00
ab9a617619 Allows setting individual key as HotKey 2023-07-25 21:17:02 +08:00
f629bc9993 Add HotKey Screenshot 2023-07-22 00:21:06 +08:00
dc7f48139e Update Command versions 2023-07-22 00:14:01 +08:00
da8c511d60 Update version to v1.11.0 2023-07-22 00:11:14 +08:00
eb60f402a4 Add Setting Upgrade 2023-07-22 00:11:01 +08:00
c82ce1ea35 Add HotKey Page (close #190) 2023-07-22 00:10:40 +08:00
9524ea5ab4 Update connection failure text (close #196) 2023-07-21 22:02:53 +08:00
caf18eaa7a Merge branch 'main' of https://github.com/jie65535/GrasscutterCommandGenerator 2023-07-21 21:41:20 +08:00
2cdcb4a599 Update spawn level maximum to 200 (close #198) 2023-07-21 21:41:00 +08:00
Deuteriunt
3407ca61fd Update 3.8 Activity ID (#195)
* main

* Update WeaponColor.txt

* Update 3.8 Activity ID and untranslated sentences

* Remove redundant changes

* Update Weapon.txt

---------

Co-authored-by: jie65535 <jie65535@qq.com>
2023-07-07 23:40:56 +08:00
964b7ced8b Merge pull request #194 from TomyJan/main
add new skins for custom command `All skins`
2023-06-28 21:02:20 +08:00
TomyJan
702267003b add new skins for custom command All skins 2023-06-28 20:52:20 +08:00
abf970b783 Update host url check 2023-06-26 22:56:32 +08:00
6855b6299f Add Kot key utils from https://github.com/jie65535/KeyGo 2023-06-18 18:19:51 +08:00
b77d242bd9 Update version to v1.10.1 2023-06-18 18:02:49 +08:00
01016b1fa1 Fix tips 2023-06-18 18:02:39 +08:00
b2b656b6cb Support for command line arguments (#155) 2023-06-18 18:02:02 +08:00
aabe6664b4 Update Cutscene translates(CHT) 2023-06-10 11:28:19 +08:00
馬良※チノ
5869a72645 Cutscenes translation (#189)
* 200201

* i forgot xd

* 区分渊下宫与三界路飨祭

* 踏鞴砂

* 沙漠书 激活小塔柱子

* 3.6小活动(风沙轰鸣) 打沙虫动画

* 甘露池

* i forget x2 xd

* idk x3 lmao

* Update Cutscene.txt
2023-06-10 10:11:11 +08:00
df3ab12165 Update Activity editor screenshots 2023-06-09 23:59:47 +08:00
03fe8909d0 Update Activity Translates 2023-06-09 23:54:10 +08:00
2ec4bc9333 Remove unused dependencies 2023-06-09 23:07:48 +08:00
c1b89a2b9a Update Tools page 2023-06-09 22:42:33 +08:00
6706525e77 Update Dungeon resources 2023-06-09 22:42:11 +08:00
981b8377d8 Add /troubleshoot to custom commands 2023-06-09 21:52:00 +08:00
945329d109 Link https://github.com/Zhaokugua/Grasscutter_Banners 2023-06-09 21:47:06 +08:00
304f3484e3 Update 3.7.2 banners from https://github.com/Zhaokugua/Grasscutter_Banners 2023-06-09 21:38:24 +08:00
47ad6dae6a Update Cutscene screenshot 2023-06-09 21:35:42 +08:00
0448bb0ea9 Update Cutscene Translates 2023-06-09 21:35:16 +08:00
moux23333
5009d148a1 Cutscenes translation 3 (#188) 2023-06-09 14:00:15 +08:00
馬良※チノ
8427103a7e Cutscenes translation 2 (#187)
* 116 117

* 75-86

* Update Cutscene.txt
2023-06-09 13:23:01 +08:00
2767cb44d7 Fix cutscene encoding 2023-06-09 00:18:57 +08:00
moux23333
416ffd6435 Cutscenes translation (#186)
* Cutscenes translation 1

* Cutscene translation 2
2023-06-08 23:52:41 +08:00
ff554ce369 Update PageScene localization 2023-06-08 22:52:27 +08:00
0698671c05 Update Cutscene.txt 2023-06-08 22:51:56 +08:00
67468cf28b Throw ping exception 2023-06-08 21:21:03 +08:00
058a6b7ab2 Update version to v1.10.0 2023-06-08 21:19:36 +08:00
1ccb3656c2 Add Cutscene command to Scene page 2023-06-08 21:19:26 +08:00
6da7e1d4d0 Fix Artifact MainAttribution changes without refreshing 2023-05-30 20:20:18 +08:00
119c8c87ee Remove temp file 2023-05-30 20:03:23 +08:00
2758b4d896 Update version to v1.9.1 2023-05-30 19:58:31 +08:00
d8c7f0ad56 Update 3.7 Resources 2023-05-30 19:58:00 +08:00
0d8b51f199 Update PageAbout.resx 2023-05-29 20:12:52 +08:00
6e296edf11 Update README.md 2023-05-29 20:08:18 +08:00
072066ac87 Update README_zh-tw.md 2023-05-29 20:08:08 +08:00
a359dea603 Update README_zh-cn.md 2023-05-29 20:07:56 +08:00
29decd4899 Update README.md 2023-05-29 20:06:44 +08:00
92a5d53d35 Update 3.7 first half banners from https://github.com/Zhaokugua/Grasscutter_Banners 2023-05-25 19:25:29 +08:00
40e33dcb1c Update All activity ids-3.7 from https://github.com/dplek/Genshin-Activity-ids 2023-05-25 19:23:00 +08:00
Deuteriunt
2b2757ccff Add 3.7 Avatar and Weapon id (#182)
* main

* Update WeaponColor.txt

---------

Co-authored-by: jie65535 <jie65535@qq.com>
2023-05-25 12:39:44 +08:00
f57f4097ac Fix UI issue 2023-05-14 19:05:42 +08:00
5865441074 Fix activity id not set 2023-05-14 18:54:03 +08:00
2d916392c1 Fix CHS and CHT Achievement 2023-05-14 18:52:50 +08:00
dec3b2261f Fix Activity add issue 2023-05-14 18:52:25 +08:00
5b0cb912e4 Fix null ptr 2023-05-14 18:33:37 +08:00
5cbdaa7134 Add Activity Editor Translates 2023-05-14 15:33:31 +08:00
b2f59431a6 Update page title resource 2023-05-14 10:25:35 +08:00
04ec214714 Add SetProp Translates 2023-05-13 23:49:55 +08:00
196b56ab71 Add Set Prop Page 2023-05-13 21:57:57 +08:00
226742776f Add Activity Config Editor (CHS Only) 2023-05-08 22:53:40 +08:00
f4ec2ee5fa Update indexes 2023-05-08 00:02:51 +08:00
f33d37cd90 Add achievement page screenshots 2023-05-07 16:49:34 +08:00
2394ec7f5d Add achievement page translations 2023-05-07 16:43:47 +08:00
8baa61b72c Fix index offset error 2023-05-07 16:35:31 +08:00
f35ea79475 Add prompt to download from Action 2023-05-07 16:25:26 +08:00
46b8ca0b63 Add NavContainer splitter distance record
Fix not redrawing when Nav list size changed
2023-05-07 15:27:30 +08:00
b8cfaf308d Update page navigation
Add Achievement page
2023-05-07 14:55:50 +08:00
c7d3e5021c Update version to v1.9.0 2023-05-07 12:59:53 +08:00
a689b425ca Update RU translations from @EgorBron fork 2023-05-07 11:42:02 +08:00
9bd45157a4 Update 3.6 Resources 2023-05-07 11:36:10 +08:00
止语语哦~
169b8997ec 添加3.6角色、武器、一些物品 (#181) 2023-04-20 21:38:36 +08:00
Lefengisbee
aa6ea882d9 (For CHT) Added README_zh-tw.md 新增繁中Readme 檔案 Added Gadget.txt to zh-tw folder 新增Gadget.txt繁中版 (#180)
* CHS -> CHT, added Gadget.txt to zh-tw folder(from zh-cn folder)

* CHS -> CHT, added Gadget.txt to zh-tw folder(from zh-cn folder)

* Remove Gadget.txt

* added Gadget.txt to zh-tw folder(from zh-cn folder), added README_zh-tw.md

* Screenshot Improvement

* Modify md files, added CHT option

* Warning to CHT

* Revert "Warning to CHT"

This reverts commit 9459c7910a.
2023-03-16 23:07:11 +08:00
Lefengisbee
c86b275096 (For CHT) CHS strings to CHT遺漏簡中轉繁中 (#179)
* CHS -> CHT, added Gadget.txt to zh-tw folder(from zh-cn folder)

* CHS -> CHT, added Gadget.txt to zh-tw folder(from zh-cn folder)

* Remove Gadget.txt
2023-03-16 21:19:17 +08:00
moux23333
a81985549e Full 3.5.0 Quest ids (#178) 2023-03-06 22:04:52 +08:00
ighlES
f4e9409afa 添加自定义指令 诚哥壶信任值升到10级 (#177)
* 添加自定义指令 诚哥壶信任值升到10级
2023-02-20 21:32:53 +08:00
6647e5bd37 Add OpenChat Ad 2023-02-18 16:27:22 +08:00
64b7c25de5 Update 3.4 Resources (Item/Monsters/Quest/Scene/Weapon) 2023-02-18 15:00:02 +08:00
7c562228c6 Update version to v1.8.1 2023-02-08 11:50:33 +08:00
91a194c948 Fix /drop command 2023-02-08 11:50:08 +08:00
50a30331e5 Fix /scene command 2023-02-08 11:49:33 +08:00
TomyJan
da47941564 (CHS Only)修改item分类名为中文&修改部分物品id排序&添加新的卡池id&增加两个自定义命令 (#175)
* 优化物品id&增加两个自定义命令

* del duplicate ids

* replenish gacha title/prefab to 3.4

* Update Item.txt
2023-01-31 18:22:26 +08:00
Syca
6e999f92a0 Add some ids(3.4.5) (CHS only) 2023-01-27 15:31:54 +08:00
f4fc0ef3c5 Fix the command is cleared after repeated 2023-01-12 14:22:40 +08:00
Syca
2dc8dc734b Add 3.4beta Dungeon&Scene IDs(CHS only) (#172)
* Add 3.4beta DungeonIDs&SceneIDs(CHS only)

* Fix Scene Names(3.3)(CHS only)

* Update Scene.txt

* Fix Scene Names(3.2)(CHS only)

* Add files via upload
2022-12-26 21:01:55 +08:00
Syca
98663240de Add Some 3.4beta IDs(CHS Only) (#169)
* add 3.4beta weapon

* Add Some 3.4bata items

* Add 3.4beta monsters
2022-12-17 21:49:48 +08:00
ba782c85d4 fix screenshots 2022-12-15 20:55:45 +08:00
dea067b21f Add task page screenshot 2022-12-15 20:43:51 +08:00
d56c73e2a3 Add Test page 2022-12-15 20:32:01 +08:00
5d208d1220 Update SceneIds and MonsterIds 2022-12-15 20:31:29 +08:00
47a3a1c7ab Add 3.3.50 avatar ids (from Sakura616 res)
Update quest text
2022-12-15 20:03:47 +08:00
56059b4f4f Update 3.3 Artifacts and avatar/weapon colors 2022-12-14 20:24:48 +08:00
09577d5403 Update Banners.json Ignore PreviewPrefabPath 2022-12-12 20:26:48 +08:00
fb77f9432a Add CI Badge 2022-12-10 23:56:12 +08:00
0f70405041 Update build.yml 2022-12-10 23:37:22 +08:00
399888f976 Update Task page translates 2022-12-10 18:14:54 +08:00
a8a0a14713 fix connect command issue 2022-12-10 17:57:51 +08:00
59af1e468d Add Task Page (#166) 2022-12-10 17:57:51 +08:00
0d1bad5551 Update version to v1.8.0 2022-12-10 17:57:50 +08:00
7eb2ff1624 Add categories to item page 2022-12-10 17:57:50 +08:00
72351ba60f Update 3.3 Resources (Items/Avatars/Weapons) 2022-12-10 17:57:50 +08:00
7dc2dcc9db Update build.yml 2022-12-08 17:17:15 +08:00
5b4a7d784d Create build.yml 2022-12-08 16:43:30 +08:00
1d8d199af7 Fix the problem that the next time it cannot be started when it is closed when it is minimized 2022-12-03 11:41:09 +08:00
c4e29dc000 Update version to v1.7.6 2022-12-03 11:32:53 +08:00
72ec031f8a Fix window location issue (#161) 2022-12-03 11:27:51 +08:00
2300b8d5db Add program log 2022-12-02 20:50:12 +08:00
7ec81ab146 Check the data directory only once 2022-12-01 19:50:05 +08:00
cf3ffeb8c6 Fix data file dir does not exist (#164) 2022-12-01 19:41:45 +08:00
118a7fe0f1 Update version to v1.7.5 2022-11-29 13:11:58 +08:00
005c68cc5b Optimize search(#149 #163) 2022-11-29 13:10:00 +08:00
70f390c5d7 Fix AttackModifier button event 2022-11-28 23:26:05 +08:00
65de82a227 Update Dungeon.txt(CHT) 2022-11-28 23:22:57 +08:00
a2494b59f7 Add empty file handling 2022-11-28 23:17:58 +08:00
b05269712a Add run log 2022-11-28 23:15:39 +08:00
740463f017 Remove FodyWeavers.xml 2022-11-28 23:08:14 +08:00
Syca
30521d068e Update 3.3beta dungeons
ehe
2022-11-28 13:27:46 +08:00
c7898401ce Clean up all
Remvoe TextBoxXP
2022-11-27 16:51:47 +08:00
d169de9a9e Update save settings only when main window is closed 2022-11-27 16:44:11 +08:00
74ddb428ee Hold include uid setting 2022-11-27 16:38:24 +08:00
ba4837f1f8 Update FileVersion to 1.7.4 2022-11-27 16:27:56 +08:00
cdf25f6b6f Fix import GOOD event 2022-11-27 16:26:53 +08:00
e630c53c9f Change the record files storage location 2022-11-27 16:25:28 +08:00
db13f82bfc Optimized restore window state 2022-11-27 16:15:57 +08:00
63ebaa5df8 Load pages 2022-11-27 16:08:19 +08:00
7b886ea251 Detach all pages of the main form 2022-11-27 15:29:56 +08:00
436c4d809c Separate pages 2022-11-26 23:47:46 +08:00
6ab7bac20b Add Dungeons(zh/en) 2022-11-26 10:23:40 +08:00
Egor Bron
7f852ffb8e Ru translations fixes (#160)
* update GachaBennerPrefab and CustomCommands

* update ShopType (partially)

* update Drop, Shop and Main forms (partially)

* update READMEs

* fix link in Chinese README

* fix new mobs & functions (from 1.7.4)

* some fixes in ru translation and added gadgets to it

* update ru screenshots

Co-authored-by: 筱傑 <jie65535@qq.com>
2022-11-20 23:41:10 +08:00
69e68810ba Update items id 2022-11-20 16:17:13 +08:00
a63f79230b Update quest id (#157) 2022-11-20 16:10:13 +08:00
3b01c62ed2 Update new banners editor translates 2022-11-20 16:00:18 +08:00
cdc69d23b9 Update Command text box to ComboBox
Update ru translate
Update Modifier keys function
2022-11-20 15:43:05 +08:00
92a15afabf Impl hold shift run command (#151)
Impl main window input box accept enter (#150)
2022-11-20 15:08:45 +08:00
277e265bf1 Disable error prefab 2022-11-20 14:46:25 +08:00
473163e7c6 Update Banners Editor
Add Default Banners
2022-11-20 14:42:52 +08:00
f1eb40bb0d Fix tab order (#152) 2022-11-16 21:18:57 +08:00
6c23915615 Update version to v1.7.4 2022-11-16 21:03:03 +08:00
d0361c29aa Fix window size record 2022-11-16 21:02:43 +08:00
9ee1239341 Add Attack Infused GIF 2022-11-09 13:34:42 +08:00
a2a74980bf Update Screenshots 2022-11-09 12:58:52 +08:00
01c7f7d528 Update ComboBox translation 2022-11-09 12:42:29 +08:00
a9c8a667ec Add CharacterBuilder plugin link 2022-11-09 12:25:42 +08:00
bcfb23a8fb Update /at to /snoospawn 2022-11-09 12:20:42 +08:00
111a98a916 Update import GOOD tip 2022-11-08 22:20:41 +08:00
784163d816 Update Entities show all by default 2022-11-08 22:00:21 +08:00
ce2a6533f2 Fix /se 2022-11-08 21:44:42 +08:00
17275e194a Add SwitchElement commands 2022-11-08 21:25:27 +08:00
9664c9f11d Shorten ru tab name 2022-11-08 20:40:02 +08:00
8b1e4a3d1a Add Partners 2022-11-08 20:36:06 +08:00
e7347a1a26 Update Save Window location and size 2022-11-08 20:22:44 +08:00
a4cf38dd71 Update tab order 2022-11-08 20:15:12 +08:00
c018b23913 Impl ShopGoodsExcelConfigData.json parsing 2022-11-07 23:00:57 +08:00
0c003616cb Fix Charge Energy issue (#143) 2022-11-07 21:56:55 +08:00
7bfd6517a7 Update translations 2022-11-07 21:55:14 +08:00
42e5c94601 Impl AttackModifier Plugin Commands (#140, #141)
Update version to v1.7.3
Update CommandVersion to v1.4.3
2022-11-06 20:15:20 +08:00
376 changed files with 134492 additions and 36738 deletions

32
.github/workflows/build.yml vendored Normal file
View File

@@ -0,0 +1,32 @@
name: Build project
on:
push:
branches:
- main
paths:
- Source/**
pull_request:
branches:
- main
paths:
- Source/**
jobs:
build:
runs-on: windows-latest
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Setup MSBuild.exe
uses: microsoft/setup-msbuild@v1.1.3
- name: Build release
run: msbuild Source/GrasscutterTools.sln /p:Configuration=Release /t:build /restore
- name: Upload build artifacts
uses: actions/upload-artifact@v3
with:
name: GrasscutterTools
path: Source/GrasscutterTools/bin/Release/GrasscutterTools.exe

Binary file not shown.

After

Width:  |  Height:  |  Size: 76 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 36 KiB

After

Width:  |  Height:  |  Size: 49 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 52 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 57 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 95 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 62 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 136 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 49 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 74 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 86 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 57 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 821 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 83 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 55 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 62 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 29 KiB

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 43 KiB

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 42 KiB

After

Width:  |  Height:  |  Size: 48 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 MiB

View File

@@ -3,26 +3,19 @@
[![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)
[![GitHub release](https://img.shields.io/github/v/release/jie65535/GrasscutterCommandGenerator)](https://github.com/jie65535/GrasscutterCommandGenerator/releases/latest)
[![Build](https://github.com/jie65535/GrasscutterCommandGenerator/actions/workflows/build.yml/badge.svg)](https://github.com/jie65535/GrasscutterCommandGenerator/actions/workflows/build.yml)
[![QQ Group](https://pub.idqqimg.com/wpa/images/group.png)](http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=fBizzp6RwJsIY7gFlmd4L-WG0V3aF8X3&authKey=mTjf%2B7jCIZess1HTRi05e5yi%2FHKA1auMwE8%2FJ960PFWk8WMATST654gWPi4OTHTZ&noverify=0&group_code=835489603)
English | [简体中文](README_zh-cn.md) | [Русский](README_ru-RU.md)
English | [简体中文](README_zh-cn.md) | [繁體中文](README_zh-tw.md) | [Русский](README_ru-RU.md)
## Commands Generator
Please download the latest version from [Releases](https://github.com/jie65535/GrasscutterCommandGenerator/releases)
Please download the latest committed automated build from [Action](https://github.com/jie65535/GrasscutterCommandGenerator/actions/workflows/build.yml), or a release from [Releases](https://github.com/jie65535/GrasscutterCommandGenerator/releases) (may be behind)
Support 简体中文, 繁中文, English and Русский languages.
Support 简体中文, 繁中文, English and Русский languages.
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)
> **Warning**: app look may be different rather than on screenshots. It may also contain translation errors and a lack of certain resources. **We're welcome everyone to contribute to their [improvement](/Source/GrasscutterTools/Resources/en-us)**
## Remote command
@@ -39,6 +32,52 @@ The server require [gc-opencommand-plugin](https://github.com/jie65535/gc-openco
>
> If you are not using port `80`, specify the port number to access in the url: http://127.0.0.1:443
## Update log
### GrasscutterTools-v1.11
![HotKey](Doc/Screenshots-en/21-HotKey.png)
Commandline Usages:
```bash
GcTools.exe -help
GcTools.exe -version
GcTools.exe -c "cmd arg"
GcTools.exe -c "cmd1 arg" && GcTools -c "cmd2 arg1 arg2"
GcTools.exe -host http://127.0.0.1:443 -token 123456 -c "cmd1 arg1 arg2 | cmd2 | cmd3 arg"
```
### GrasscutterTools-v1.10
![Cutscene](Doc/Screenshots-en/7-ChangeScene.png)
![Activity Editor](Doc/Screenshots-en/20-ActivityEditor.png)
### GrasscutterTools-v1.9
![Achievement Page](Doc/Screenshots-en/19-AchievementPage.png)
### GrasscutterTools-v1.8
![Task page](Doc/Screenshots-en/18-TaskPage.png)
### GrasscutterTools-v1.7.3
![Gadget](Doc/Screenshots-en/6-SpawnEntity.png)
Added [AttackModifier](https://github.com/NotThorny/AttackModifier), [AttackInfusedWithItem](https://github.com/snoobi-seggs/AttackInfusedWithItem), [SwitchElementTraveller](https://github.com/Penelopeep/SwitchElementTraveller) plugins command generation
![AttackInfusedWithItem Gif](Doc/Screenshots/AttackMod.gif)
### GrasscutterTools-v1.7.2
![Shop Editor](Doc/Screenshots-en/17-ShopEditor.png)
### GrasscutterTools-v1.7.1
- Gadgets(CHS Only)
### 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)
---

View File

@@ -3,25 +3,18 @@
[![GitHub лицензия](https://img.shields.io/github/license/jie65535/GrasscutterCommandGenerator)](https://github.com/jie65535/GrasscutterCommandGenerator/blob/main/LICENSE)
[![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)
[![GitHub release](https://img.shields.io/github/v/release/jie65535/GrasscutterCommandGenerator)](https://github.com/jie65535/GrasscutterCommandGenerator/releases/latest)
[![Build](https://github.com/jie65535/GrasscutterCommandGenerator/actions/workflows/build.yml/badge.svg)](https://github.com/jie65535/GrasscutterCommandGenerator/actions/workflows/build.yml)
[English](README.md) | [简体中文](README_zh-cn.md) | Русский - Перевод [Юрий Дворецкий](https://github.com/yurikenjx) (с исправлениями от [EgorBron](https://github.com/EgorBron))
[English](README.md) | [简体中文](README_zh-cn.md) | [繁體中文](README_zh-tw.md) | Русский - Перевод [Юрий Дворецкий](https://github.com/yurikenjx) (с исправлениями от [EgorBron](https://github.com/EgorBron))
## Генератор команд (GCG)
Загрузите последнюю версию из вкладки [Releases](https://github.com/jie65535/GrasscutterCommandGenerator/releases).
Пожалуйста, загрузите последнюю подтвержденную автоматизированную сборку из [Action](https://github.com/jie65535/GrasscutterCommandGenerator/actions/workflows/build.yml) или выпуск из [Releases](https://github.com/jie65535/GrasscutterCommandGenerator/releases) (может отставать)
GCG поддерживает 简体中文 (китайский упр.), 繁中文 (китайский трад.), English (английский) и Русский языки.
GCG поддерживает 简体中文 (китайский упр.), 繁中文 (китайский трад.), English (английский) и Русский языки.
Приглашаем всех улучшить [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)
> **Warning**: вид приложения может отличаться от скриншотов. Также в нём могут присутствовать ошибки в переводе и отсутсвие некоторых ресурсов. **Мы приглашаем всех сделать вклад в их [улучшение](/Source/GrasscutterTools/Resources/ru-ru)**
## Удаленная команда (OpenCommand)
@@ -39,38 +32,87 @@ GCG поддерживает 简体中文 (китайский упр.), 繁体
>
> Если вы не указали порт `80` в конфиге, вам нужно указать свой порт в URL-адресе (например, http://127.0.0.1:443)
## Лог обновлений
### GrasscutterTools-v1.11
![HotKey](Doc/Screenshots-en/21-HotKey.png)
Commandline Usages:
```bash
GcTools.exe -help
GcTools.exe -version
GcTools.exe -c "cmd arg"
GcTools.exe -c "cmd1 arg" && GcTools -c "cmd2 arg1 arg2"
GcTools.exe -host http://127.0.0.1:443 -token 123456 -c "cmd1 arg1 arg2 | cmd2 | cmd3 arg"
```
### GrasscutterTools-v1.10
![Cutscene](Doc/Screenshots-ru/12-Scenes.png)
![Activity Editor](Doc/Screenshots-ru/20-ActivityEditor.png)
### GrasscutterTools-v1.9
![Achievement Page](Doc/Screenshots-ru/19-AchievementPage.png)
### GrasscutterTools-v1.8
![Task page](Doc/Screenshots-ru/18-TaskPage.png)
### GrasscutterTools-v1.7.3
![Улучшенный спавн](Doc/Screenshots-ru/5-Spawn.png)
Добавлена поддержка генерации команд для плагинов [AttackModifier](https://github.com/NotThorny/AttackModifier), [AttackInfusedWithItem](https://github.com/snoobi-seggs/AttackInfusedWithItem), [SwitchElementTraveller](https://github.com/Penelopeep/SwitchElementTraveller).
![AttackInfusedWithItem Gif](Doc/Screenshots/AttackMod.gif)
### GrasscutterTools-v1.7.2
![Редактор магазина](Doc/Screenshots-ru/13-Shop.png)
### GrasscutterTools-v1.7.1
- Гаджеты (пока что только на китайском)
### GrasscutterTools-v1.7.0
![Запуск нескольких команд](Doc/Screenshots/RunMultipleCommands.png)
![Редактор дропа](Doc/Screenshots-ru/15-Drops.png)
![Редактор писем](Doc/Screenshots-ru/10-Mail.png)
---
## Скриншоты
![Логитип](Doc/Screenshots/GrasscutterLogo.png)
![Главная](Doc/Screenshots-ru/0-Home.png)
![Главная](Doc/Screenshots-ru/1-Home.png)
![Run Command](Doc/Screenshots/RunMultipleCommands.png)
![OpenCommand](Doc/Screenshots-ru/2-Opencommand.png)
![Скриншот пользовательских команд](Doc/Screenshots-ru/1-CustomCommands.png)
![Кастомные команды](Doc/Screenshots-ru/3-Custom.png)
![Скриншот артефактов](Doc/Screenshots-ru/2-CustomArtifact.png)
![Артефакты](Doc/Screenshots-ru/4-Artifacts.png)
![Скриншот квестов](Doc/Screenshots-ru/3-Quest.png)
![Спавн сущностей](Doc/Screenshots-ru/5-Spawn.png)
![Скриншот спавна сущностей](Doc/Screenshots-ru/4-SpawnEntity.png)
![Выдача предметов](Doc/Screenshots-ru/6-Give.png)
![Скриншот выдачи персонажа](Doc/Screenshots-ru/5-GiveAvatar.png)
![Выдача персонажей](Doc/Screenshots-ru/7-Character.png)
![Скриншот выдачи оружия](Doc/Screenshots-ru/7-CustomWeapon.png)
![Выдача оружий](Doc/Screenshots-ru/8-Weapons.png)
![Скриншот выдачи предметов](Doc/Screenshots-ru/8-GiveItem.png)
![Управление аккаунтами](Doc/Screenshots-ru/9-Accounts.png)
![Скриншот смены сцены](Doc/Screenshots-ru/9-ChangeScene.png)
![Почта](Doc/Screenshots-ru/10-Mail.png)
![Скриншот управления аккаунтом](Doc/Screenshots-ru/11-Manage.png)
![Квесты](Doc/Screenshots-ru/11-Quests.png)
![Скриншот Credits](Doc/Screenshots-ru/12-Credits.png)
![Сцены](Doc/Screenshots-ru/12-Scenes.png)
![Скриншот OpenCommand](Doc/Screenshots-ru/13-Remote.png)
![Редактор магазина](Doc/Screenshots-ru/13-Shop.png)
![Редактор баннеров](Doc/Screenshots-ru/14-GachaBannerEditor.png)
![Редактор баннеров](Doc/Screenshots-ru/14-Gachas.png)
![Текстоый браузер карт](Doc/Screenshots-ru/15-TextMapBrowser.png)
![Редактор дропа](Doc/Screenshots-ru/14-Drops.png)
![Браузер текстов](Doc/Screenshots-ru/16-Textmaps.png)

View File

@@ -3,31 +3,19 @@
[![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)
[![GitHub release](https://img.shields.io/github/v/release/jie65535/GrasscutterCommandGenerator)](https://github.com/jie65535/GrasscutterCommandGenerator/releases/latest)
[![Build](https://github.com/jie65535/GrasscutterCommandGenerator/actions/workflows/build.yml/badge.svg)](https://github.com/jie65535/GrasscutterCommandGenerator/actions/workflows/build.yml)
[![QQ Group](https://pub.idqqimg.com/wpa/images/group.png)](http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=fBizzp6RwJsIY7gFlmd4L-WG0V3aF8X3&authKey=mTjf%2B7jCIZess1HTRi05e5yi%2FHKA1auMwE8%2FJ960PFWk8WMATST654gWPi4OTHTZ&noverify=0&group_code=835489603)
[English](README.md) | 简体中文 | [Русский](README_ru-RU.md)
[English](README.md) | 简体中文 | [繁體中文](README_zh-tw.md) | [Русский](README_ru-RU.md)
## Commands Generator
请从 [Releases](https://github.com/jie65535/GrasscutterCommandGenerator/releases) 中获取最新版本
请从 [Action](https://github.com/jie65535/GrasscutterCommandGenerator/actions/workflows/build.yml) 中下载最新提交的自动构建版本,或者从 [Releases](https://github.com/jie65535/GrasscutterCommandGenerator/releases) 中下载发布版本(可能落后)
本工具支持 简体中文, 繁中文, English 与 Русский 语言。
本工具支持 简体中文, 繁中文, English 与 Русский 语言。
欢迎大家一起来完善工具的[内置资源](/Source/GrasscutterTools/Resources/zh-cn)。
## Update log
### GrasscutterTools-v1.7.1
![Spawn Entity Screenshort](Doc/Screenshots/6-SpawnEntity.png)
### GrasscutterTools-v1.7.0
![Run Commands](Doc/Screenshots/RunMultipleCommands.png)
![Drop Editor](Doc/Screenshots/15-DropEditor.png)
![Mail Editor](Doc/Screenshots/16-MailEditor.png)
> **Warning**: 应用程序的外观可能与截图上的不同。它也可能包含翻译错误和缺乏某些资源。**我们欢迎各位为此工具做出贡献并<a href="./Source/GrasscutterTools/Resources/zh-cn">改进</a> : )**
## 远程执行
@@ -44,6 +32,57 @@
>
> 如果使用的不是`80`端口则要在url中指定访问的端口号http://127.0.0.1:443
## 更新概要
### GrasscutterTools-v1.11
![HotKey](Doc/Screenshots/21-HotKey.png)
命令行用法:
```bash
GcTools.exe -help
GcTools.exe -version
GcTools.exe -c "cmd arg"
GcTools.exe -c "cmd1 arg" && GcTools -c "cmd2 arg1 arg2"
GcTools.exe -host http://127.0.0.1:443 -token 123456 -c "cmd1 arg1 arg2 | cmd2 | cmd3 arg"
```
### GrasscutterTools-v1.10
![Cutscene](Doc/Screenshots/7-ChangeScene.png)
![Activity Editor](Doc/Screenshots/20-ActivityEditor.png)
### GrasscutterTools-v1.9
![Achievement Page](Doc/Screenshots/19-AchievementPage.png)
### GrasscutterTools-v1.8
![Task page](Doc/Screenshots/18-TaskPage.png)
### GrasscutterTools-v1.7.3
![Spawns](Doc/Screenshots/6-SpawnEntity.png)
![AttackMod](Doc/Screenshots/6.1-AttackMod.png)
![AttackInfuse](Doc/Screenshots/6.2-AttackInfuse.png)
新增[攻击修改](https://github.com/NotThorny/AttackModifier)、[攻击注入](https://github.com/snoobi-seggs/AttackInfusedWithItem)、[切换元素](https://github.com/Penelopeep/SwitchElementTraveller)等插件命令生成
![AttackInfusedWithItem Gif](Doc/Screenshots/AttackMod.gif)
### GrasscutterTools-v1.7.2
![Shop Editor](Doc/Screenshots/17-ShopEditor.png)
### GrasscutterTools-v1.7.1
- 增加了 Gadgets
### GrasscutterTools-v1.7.0
![Run Commands](Doc/Screenshots/RunMultipleCommands.png)
![Drop Editor](Doc/Screenshots/15-DropEditor.png)
![Mail Editor](Doc/Screenshots/16-MailEditor.png)
---
## 软件截图

116
README_zh-tw.md Normal file
View File

@@ -0,0 +1,116 @@
# 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)
[![GitHub release](https://img.shields.io/github/v/release/jie65535/GrasscutterCommandGenerator)](https://github.com/jie65535/GrasscutterCommandGenerator/releases/latest)
[![Build](https://github.com/jie65535/GrasscutterCommandGenerator/actions/workflows/build.yml/badge.svg)](https://github.com/jie65535/GrasscutterCommandGenerator/actions/workflows/build.yml)
[![QQ Group](https://pub.idqqimg.com/wpa/images/group.png)](http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=fBizzp6RwJsIY7gFlmd4L-WG0V3aF8X3&authKey=mTjf%2B7jCIZess1HTRi05e5yi%2FHKA1auMwE8%2FJ960PFWk8WMATST654gWPi4OTHTZ&noverify=0&group_code=835489603)
[English](README.md) | [简体中文](README_zh-cn.md) | 繁體中文 | [Русский](README_ru-RU.md)
## 指令產生工具
請從 [Action](https://github.com/jie65535/GrasscutterCommandGenerator/actions/workflows/build.yml) 中下載最新提交的自動構建版本,或者從 [Releases](https://github.com/jie65535/GrasscutterCommandGenerator/releases) 中下載發布版本(可能落後)
本工具支援 简体中文、繁體中文、English 及 Русский 上述語言。
> **Warning**: 程式中的實際外觀可能會與截圖中的內容不同。其中也可能包含翻譯錯誤及缺乏特定資源。**我們歡迎各位為此工具做出貢獻並[改進](/Source/GrasscutterTools/Resources/zh-tw)**
## 遠端控制
伺服器需要安裝 [gc-opencommand-plugin](https://github.com/jie65535/gc-opencommand-plugin) 插件
![OpenCommand](Doc/Screenshots-tw/OpenCommand.gif)
> 如果你無法連接至伺服器,請確認輸入的伺服器位址是否正確。
>
> 建議將伺服器調整為HTTP模式如下圖所示(config.json):
> ![ConfigHttp](Doc/Screenshots-tw/ConfigHttp.png)
>
> 你可藉由任何瀏覽器輸入網址 http://127.0.0.1/status/server 以測試伺服器是否正常運作。
>
> 如果你並非使用`80`端口, 則須在網址後輸入指定端口: http://127.0.0.1:443
## 更新日誌
### GrasscutterTools-v1.11
![HotKey](Doc/Screenshots/21-HotKey.png)
Commandline Usages:
```bash
GcTools.exe -help
GcTools.exe -version
GcTools.exe -c "cmd arg"
GcTools.exe -c "cmd1 arg" && GcTools -c "cmd2 arg1 arg2"
GcTools.exe -host http://127.0.0.1:443 -token 123456 -c "cmd1 arg1 arg2 | cmd2 | cmd3 arg"
```
### GrasscutterTools-v1.10
![Cutscene](Doc/Screenshots-tw/7-ChangeScene.png)
![Activity Editor](Doc/Screenshots-tw/20-ActivityEditor.png)
### GrasscutterTools-v1.9
![Achievement Page](Doc/Screenshots-tw/19-AchievementPage.png)
### GrasscutterTools-v1.8
![Task page](Doc/Screenshots-tw/18-TaskPage.png)
### GrasscutterTools-v1.7.3
![Spawns](Doc/Screenshots-tw/6-SpawnEntity.png)
![AttackMod](Doc/Screenshots-tw/6.1-AttackMod.png)
![AttackInfuse](Doc/Screenshots-tw/6.2-AttackInfuse.png)
新增 [攻擊修改](https://github.com/NotThorny/AttackModifier)、[攻擊注入](https://github.com/snoobi-seggs/AttackInfusedWithItem)、[主角切換元素](https://github.com/Penelopeep/SwitchElementTraveller)等插件指令產生
![AttackInfusedWithItem Gif](Doc/Screenshots-tw/AttackMod.gif)
### GrasscutterTools-v1.7.2
![Shop Editor](Doc/Screenshots-tw/17-ShopEditor.png)
### GrasscutterTools-v1.7.1
- 新增 Gadgets
### GrasscutterTools-v1.7.0
![Run Commands](Doc/Screenshots-tw/RunMultipleCommands.png)
![Drop Editor](Doc/Screenshots-tw/15-DropEditor.png)
![Mail Editor](Doc/Screenshots-tw/16-MailEditor.png)
---
## 工具截圖
![Logo](Doc/Screenshots-tw/GrasscutterLogo.png)
![Home](Doc/Screenshots-tw/0-Home.png)
![Custom Commands Screenshot](Doc/Screenshots-tw/1-CustomCommands.png)
![Custom Artifact Screenshot](Doc/Screenshots-tw/2-CustomArtifact.png)
![Custom Weapon Screenshort](Doc/Screenshots-tw/3-CustomWeapon.png)
![Give Item Screenshort](Doc/Screenshots-tw/4-GiveItem.png)
![Give Avatar Screenshort](Doc/Screenshots-tw/5-GiveAvatar.png)
![Spawn Entity Screenshort](Doc/Screenshots-tw/6-SpawnEntity.png)
![Change Scene Screenshort](Doc/Screenshots-tw/7-ChangeScene.png)
![Management](Doc/Screenshots-tw/9-Manage.png)
![GachaBannerEditor](Doc/Screenshots-tw/10-GachaBannerEditor.png)
![Text Map Browser](Doc/Screenshots-tw/11-TextMapBrowser.png)
![Remote Screenshort](Doc/Screenshots-tw/12-Remote.png)
![Quest Screenshort](Doc/Screenshots-tw/13-Quest.png)

View File

@@ -52,6 +52,30 @@
<setting name="ShopJsonPath" serializeAs="String">
<value />
</setting>
<setting name="MainFormLocation" serializeAs="String">
<value>0, 0</value>
</setting>
<setting name="MainFormSize" serializeAs="String">
<value>0, 0</value>
</setting>
<setting name="BannersJsonPath" serializeAs="String">
<value />
</setting>
<setting name="IsIncludeUID" serializeAs="String">
<value>False</value>
</setting>
<setting name="NavContainerSplitterDistance" serializeAs="String">
<value>0</value>
</setting>
<setting name="ActivityConfigJsonPath" serializeAs="String">
<value />
</setting>
<setting name="ProjectResourcePath" serializeAs="String">
<value />
</setting>
<setting name="IsUpgraded" serializeAs="String">
<value>False</value>
</setting>
</GrasscutterTools.Properties.Settings>
</userSettings>
</configuration>

View File

@@ -1,186 +0,0 @@
using System;
using System.ComponentModel;
using System.Runtime.InteropServices;
using System.Windows.Forms;
namespace GrasscutterTools.Controls
{
[ToolboxItem(true)]
public class TextBoxXP : TextBox
{
/// <summary>
/// 获得当前进程,以便重绘控件
/// </summary>
/// <param name="hWnd"></param>
/// <returns></returns>
[DllImport("user32.dll")]
private static extern IntPtr GetWindowDC(IntPtr hWnd);
[DllImport("user32.dll")]
private static extern int ReleaseDC(IntPtr hWnd, IntPtr hDC);
private const int EM_SETCUEBANNER = 0x1501;
[DllImport("user32.dll", CharSet = CharSet.Auto)]
private static extern Int32 SendMessage
(IntPtr hWnd, int msg, int wParam, [MarshalAs(UnmanagedType.LPWStr)] string lParam);
/// <summary>
/// 水印文本
/// </summary>
private string _Watermark = "";
private float maximum;
private float minimum;
#region
/// <summary>
/// 是否启用热点效果
/// </summary>
[Category("外观")]
[Browsable(true)]
[Localizable(true)]
[Description("获取或设置输入框水印文本")]
[DefaultValue("")]
public string Watermark
{
get
{
return this._Watermark;
}
set
{
this._Watermark = value;
SendMessage(Handle, EM_SETCUEBANNER, 0, _Watermark);
this.Invalidate();
}
}
/// <summary>
/// 是否只能输入数字
/// </summary>
[Category("行为")]
[Browsable(true)]
[Description("获取或设置TextBox是否只允许输入数字")]
[DefaultValue(false)]
public bool DigitOnly { get; set; }
/// <summary>
/// 转为数值
/// </summary>
public float Number
{
get
{
if (float.TryParse(Text, out float value))
return value;
else
return 0f;
}
}
[Category("数据")]
[Browsable(true)]
[DefaultValue(0)]
[Description("指示小数点后位数")]
public int DecimalPlaces { get; set; }
[Category("数据")]
[Description("获取或设置限制的最大值")]
public float Maximum
{
get
{
return maximum;
}
set
{
maximum = value;
if (minimum > maximum)
{
minimum = maximum;
}
}
}
[Category("数据")]
[Browsable(true)]
[Description("获取或设置限制的最小值")]
public float Minimum
{
get
{
return minimum;
}
set
{
minimum = value;
if (minimum > maximum)
{
maximum = value;
}
}
}
#endregion
/// <summary>
///
/// </summary>
public TextBoxXP()
: base()
{
//BorderStyle = BorderStyle.FixedSingle;
//Font = Styles.StaticResources.DefaultFont;
}
protected override void OnKeyPress(KeyPressEventArgs e)
{
base.OnKeyPress(e);
// 如果只允许输入数字,则判断输入是否为退格或者数字
if (DigitOnly)
{
//IsNumber指定字符串中位于指定位置的字符是否属于数字类别
//IsPunctuation指定字符串中位于指定位置的字符是否属于标点符号类别
//IsControl指定字符串中位于指定位置的字符是否属于控制字符类别
if (!Char.IsNumber(e.KeyChar) && !Char.IsPunctuation(e.KeyChar) && !Char.IsControl(e.KeyChar))
{
e.Handled = true; //获取或设置一个值指示是否处理过System.Windows.Forms.Control.KeyPress事件
}
else if (Char.IsPunctuation(e.KeyChar) && DecimalPlaces > 0)
{
if (e.KeyChar == '.')
{
if (Text.LastIndexOf('.') != -1)
{
e.Handled = true;
}
}
else
{
e.Handled = true;
}
}
}
}
protected override void OnLeave(EventArgs e)
{
base.OnLeave(e);
if (DigitOnly)
{
if (!string.IsNullOrWhiteSpace(Text))
{
if (Number > Maximum)
Text = Maximum.ToString("F" + DecimalPlaces);
if (Number < Minimum)
Text = Minimum.ToString("F" + DecimalPlaces);
}
}
}
}
}

View File

@@ -14,8 +14,9 @@
*
* 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.Threading.Tasks;
using GrasscutterTools.DispatchServer.Model;

View File

@@ -14,8 +14,9 @@
*
* 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.DispatchServer.Model

View File

@@ -1,4 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Weavers xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="FodyWeavers.xsd">
<Costura />
</Weavers>

View File

@@ -0,0 +1,346 @@
namespace GrasscutterTools.Forms
{
partial class FormActivityEditor
{
/// <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(FormActivityEditor));
this.BtnSave = new System.Windows.Forms.Button();
this.BtnLoad = new System.Windows.Forms.Button();
this.ActivityConfigJsonPath = new System.Windows.Forms.TextBox();
this.LblActivityConfigJsonPath = new System.Windows.Forms.Label();
this.GrpAllActivity = new System.Windows.Forms.GroupBox();
this.ListAllActivity = new System.Windows.Forms.ListView();
this.ColumnActivityId = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
this.ColumnActivityName = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
this.GrpFileActivity = new System.Windows.Forms.GroupBox();
this.ListActivityConfigItems = new System.Windows.Forms.ListView();
this.ColActivityId = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
this.ColActivityTitle = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
this.ColActivityBeginTime = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
this.ColActivityEndTime = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
this.GrpActivityInfo = new System.Windows.Forms.GroupBox();
this.LblActivityTitle = new System.Windows.Forms.Label();
this.LblActivityParmEditTip = new System.Windows.Forms.Label();
this.BtnDelete = new System.Windows.Forms.Button();
this.BtnAddOrUpdate = new System.Windows.Forms.Button();
this.DTPEndTime = new System.Windows.Forms.DateTimePicker();
this.DTPBeginTime = new System.Windows.Forms.DateTimePicker();
this.TxtMeetCondList = new System.Windows.Forms.TextBox();
this.NUDScheduleId = new System.Windows.Forms.NumericUpDown();
this.NUDActivityType = new System.Windows.Forms.NumericUpDown();
this.NUDActivityId = new System.Windows.Forms.NumericUpDown();
this.LblEndTime = new System.Windows.Forms.Label();
this.LblBeginTime = new System.Windows.Forms.Label();
this.LblMeetCondList = new System.Windows.Forms.Label();
this.LblScheduleId = new System.Windows.Forms.Label();
this.LblActivityType = new System.Windows.Forms.Label();
this.LblActivityId = new System.Windows.Forms.Label();
this.GrpAllActivity.SuspendLayout();
this.GrpFileActivity.SuspendLayout();
this.GrpActivityInfo.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.NUDScheduleId)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.NUDActivityType)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.NUDActivityId)).BeginInit();
this.SuspendLayout();
//
// BtnSave
//
resources.ApplyResources(this.BtnSave, "BtnSave");
this.BtnSave.Name = "BtnSave";
this.BtnSave.UseVisualStyleBackColor = true;
this.BtnSave.Click += new System.EventHandler(this.BtnSave_Click);
//
// BtnLoad
//
resources.ApplyResources(this.BtnLoad, "BtnLoad");
this.BtnLoad.Name = "BtnLoad";
this.BtnLoad.UseVisualStyleBackColor = true;
this.BtnLoad.Click += new System.EventHandler(this.BtnLoad_Click);
//
// ActivityConfigJsonPath
//
resources.ApplyResources(this.ActivityConfigJsonPath, "ActivityConfigJsonPath");
this.ActivityConfigJsonPath.Name = "ActivityConfigJsonPath";
//
// LblActivityConfigJsonPath
//
resources.ApplyResources(this.LblActivityConfigJsonPath, "LblActivityConfigJsonPath");
this.LblActivityConfigJsonPath.Name = "LblActivityConfigJsonPath";
//
// GrpAllActivity
//
resources.ApplyResources(this.GrpAllActivity, "GrpAllActivity");
this.GrpAllActivity.Controls.Add(this.ListAllActivity);
this.GrpAllActivity.Name = "GrpAllActivity";
this.GrpAllActivity.TabStop = false;
//
// ListAllActivity
//
resources.ApplyResources(this.ListAllActivity, "ListAllActivity");
this.ListAllActivity.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] {
this.ColumnActivityId,
this.ColumnActivityName});
this.ListAllActivity.FullRowSelect = true;
this.ListAllActivity.HideSelection = false;
this.ListAllActivity.MultiSelect = false;
this.ListAllActivity.Name = "ListAllActivity";
this.ListAllActivity.UseCompatibleStateImageBehavior = false;
this.ListAllActivity.View = System.Windows.Forms.View.Details;
this.ListAllActivity.SelectedIndexChanged += new System.EventHandler(this.ListAllActivity_SelectedIndexChanged);
//
// ColumnActivityId
//
resources.ApplyResources(this.ColumnActivityId, "ColumnActivityId");
//
// ColumnActivityName
//
resources.ApplyResources(this.ColumnActivityName, "ColumnActivityName");
//
// GrpFileActivity
//
resources.ApplyResources(this.GrpFileActivity, "GrpFileActivity");
this.GrpFileActivity.Controls.Add(this.ListActivityConfigItems);
this.GrpFileActivity.Name = "GrpFileActivity";
this.GrpFileActivity.TabStop = false;
//
// ListActivityConfigItems
//
resources.ApplyResources(this.ListActivityConfigItems, "ListActivityConfigItems");
this.ListActivityConfigItems.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] {
this.ColActivityId,
this.ColActivityTitle,
this.ColActivityBeginTime,
this.ColActivityEndTime});
this.ListActivityConfigItems.FullRowSelect = true;
this.ListActivityConfigItems.HideSelection = false;
this.ListActivityConfigItems.MultiSelect = false;
this.ListActivityConfigItems.Name = "ListActivityConfigItems";
this.ListActivityConfigItems.UseCompatibleStateImageBehavior = false;
this.ListActivityConfigItems.View = System.Windows.Forms.View.Details;
this.ListActivityConfigItems.SelectedIndexChanged += new System.EventHandler(this.ListActivityConfigItems_SelectedIndexChanged);
//
// ColActivityId
//
resources.ApplyResources(this.ColActivityId, "ColActivityId");
//
// ColActivityTitle
//
resources.ApplyResources(this.ColActivityTitle, "ColActivityTitle");
//
// ColActivityBeginTime
//
resources.ApplyResources(this.ColActivityBeginTime, "ColActivityBeginTime");
//
// ColActivityEndTime
//
resources.ApplyResources(this.ColActivityEndTime, "ColActivityEndTime");
//
// GrpActivityInfo
//
resources.ApplyResources(this.GrpActivityInfo, "GrpActivityInfo");
this.GrpActivityInfo.Controls.Add(this.LblActivityTitle);
this.GrpActivityInfo.Controls.Add(this.LblActivityParmEditTip);
this.GrpActivityInfo.Controls.Add(this.BtnDelete);
this.GrpActivityInfo.Controls.Add(this.BtnAddOrUpdate);
this.GrpActivityInfo.Controls.Add(this.DTPEndTime);
this.GrpActivityInfo.Controls.Add(this.DTPBeginTime);
this.GrpActivityInfo.Controls.Add(this.TxtMeetCondList);
this.GrpActivityInfo.Controls.Add(this.NUDScheduleId);
this.GrpActivityInfo.Controls.Add(this.NUDActivityType);
this.GrpActivityInfo.Controls.Add(this.NUDActivityId);
this.GrpActivityInfo.Controls.Add(this.LblEndTime);
this.GrpActivityInfo.Controls.Add(this.LblBeginTime);
this.GrpActivityInfo.Controls.Add(this.LblMeetCondList);
this.GrpActivityInfo.Controls.Add(this.LblScheduleId);
this.GrpActivityInfo.Controls.Add(this.LblActivityType);
this.GrpActivityInfo.Controls.Add(this.LblActivityId);
this.GrpActivityInfo.Name = "GrpActivityInfo";
this.GrpActivityInfo.TabStop = false;
//
// LblActivityTitle
//
resources.ApplyResources(this.LblActivityTitle, "LblActivityTitle");
this.LblActivityTitle.AutoEllipsis = true;
this.LblActivityTitle.ForeColor = System.Drawing.SystemColors.GrayText;
this.LblActivityTitle.Name = "LblActivityTitle";
//
// LblActivityParmEditTip
//
resources.ApplyResources(this.LblActivityParmEditTip, "LblActivityParmEditTip");
this.LblActivityParmEditTip.ForeColor = System.Drawing.SystemColors.GrayText;
this.LblActivityParmEditTip.Name = "LblActivityParmEditTip";
//
// 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);
//
// DTPEndTime
//
resources.ApplyResources(this.DTPEndTime, "DTPEndTime");
this.DTPEndTime.Name = "DTPEndTime";
//
// DTPBeginTime
//
resources.ApplyResources(this.DTPBeginTime, "DTPBeginTime");
this.DTPBeginTime.Name = "DTPBeginTime";
//
// TxtMeetCondList
//
resources.ApplyResources(this.TxtMeetCondList, "TxtMeetCondList");
this.TxtMeetCondList.Name = "TxtMeetCondList";
//
// NUDScheduleId
//
resources.ApplyResources(this.NUDScheduleId, "NUDScheduleId");
this.NUDScheduleId.Maximum = new decimal(new int[] {
2147483647,
0,
0,
0});
this.NUDScheduleId.Name = "NUDScheduleId";
//
// NUDActivityType
//
resources.ApplyResources(this.NUDActivityType, "NUDActivityType");
this.NUDActivityType.Maximum = new decimal(new int[] {
2147483647,
0,
0,
0});
this.NUDActivityType.Name = "NUDActivityType";
//
// NUDActivityId
//
resources.ApplyResources(this.NUDActivityId, "NUDActivityId");
this.NUDActivityId.Maximum = new decimal(new int[] {
2147483647,
0,
0,
0});
this.NUDActivityId.Name = "NUDActivityId";
this.NUDActivityId.ValueChanged += new System.EventHandler(this.NUDActivityId_ValueChanged);
//
// LblEndTime
//
resources.ApplyResources(this.LblEndTime, "LblEndTime");
this.LblEndTime.Name = "LblEndTime";
//
// LblBeginTime
//
resources.ApplyResources(this.LblBeginTime, "LblBeginTime");
this.LblBeginTime.Name = "LblBeginTime";
//
// LblMeetCondList
//
resources.ApplyResources(this.LblMeetCondList, "LblMeetCondList");
this.LblMeetCondList.Name = "LblMeetCondList";
//
// LblScheduleId
//
resources.ApplyResources(this.LblScheduleId, "LblScheduleId");
this.LblScheduleId.Name = "LblScheduleId";
//
// LblActivityType
//
resources.ApplyResources(this.LblActivityType, "LblActivityType");
this.LblActivityType.Name = "LblActivityType";
//
// LblActivityId
//
resources.ApplyResources(this.LblActivityId, "LblActivityId");
this.LblActivityId.Name = "LblActivityId";
//
// FormActivityEditor
//
resources.ApplyResources(this, "$this");
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.Controls.Add(this.GrpAllActivity);
this.Controls.Add(this.GrpActivityInfo);
this.Controls.Add(this.GrpFileActivity);
this.Controls.Add(this.BtnSave);
this.Controls.Add(this.BtnLoad);
this.Controls.Add(this.ActivityConfigJsonPath);
this.Controls.Add(this.LblActivityConfigJsonPath);
this.Name = "FormActivityEditor";
this.GrpAllActivity.ResumeLayout(false);
this.GrpFileActivity.ResumeLayout(false);
this.GrpActivityInfo.ResumeLayout(false);
this.GrpActivityInfo.PerformLayout();
((System.ComponentModel.ISupportInitialize)(this.NUDScheduleId)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.NUDActivityType)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.NUDActivityId)).EndInit();
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private System.Windows.Forms.Button BtnSave;
private System.Windows.Forms.Button BtnLoad;
private System.Windows.Forms.TextBox ActivityConfigJsonPath;
private System.Windows.Forms.Label LblActivityConfigJsonPath;
private System.Windows.Forms.GroupBox GrpAllActivity;
private System.Windows.Forms.GroupBox GrpFileActivity;
private System.Windows.Forms.GroupBox GrpActivityInfo;
private System.Windows.Forms.ListView ListAllActivity;
private System.Windows.Forms.Label LblEndTime;
private System.Windows.Forms.Label LblBeginTime;
private System.Windows.Forms.Label LblMeetCondList;
private System.Windows.Forms.Label LblScheduleId;
private System.Windows.Forms.Label LblActivityType;
private System.Windows.Forms.Label LblActivityId;
private System.Windows.Forms.Button BtnDelete;
private System.Windows.Forms.Button BtnAddOrUpdate;
private System.Windows.Forms.DateTimePicker DTPEndTime;
private System.Windows.Forms.DateTimePicker DTPBeginTime;
private System.Windows.Forms.TextBox TxtMeetCondList;
private System.Windows.Forms.NumericUpDown NUDScheduleId;
private System.Windows.Forms.NumericUpDown NUDActivityType;
private System.Windows.Forms.NumericUpDown NUDActivityId;
private System.Windows.Forms.Label LblActivityParmEditTip;
private System.Windows.Forms.Label LblActivityTitle;
private System.Windows.Forms.ColumnHeader ColumnActivityId;
private System.Windows.Forms.ColumnHeader ColumnActivityName;
private System.Windows.Forms.ListView ListActivityConfigItems;
private System.Windows.Forms.ColumnHeader ColActivityId;
private System.Windows.Forms.ColumnHeader ColActivityTitle;
private System.Windows.Forms.ColumnHeader ColActivityBeginTime;
private System.Windows.Forms.ColumnHeader ColActivityEndTime;
}
}

View File

@@ -0,0 +1,310 @@
/**
* Grasscutter Tools
* Copyright (C) 2023 jie65535
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published
* by the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*
**/
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Windows.Forms;
using GrasscutterTools.Game;
using GrasscutterTools.Game.Activity;
using GrasscutterTools.Properties;
using GrasscutterTools.Utils;
using Newtonsoft.Json;
namespace GrasscutterTools.Forms
{
public partial class FormActivityEditor : Form
{
#region - -
private List<ActivityConfigItem> ActivityConfigItems = new List<ActivityConfigItem>();
#endregion - -
#region - -
public FormActivityEditor()
{
InitializeComponent();
Icon = Resources.IconGrasscutter;
DTPBeginTime.Value = DateTime.Today;
DTPEndTime.Value = DateTime.Today.AddMonths(1);
}
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
LoadAllActivity();
try
{
// 加载文件路径
var path = Settings.Default.ActivityConfigJsonPath;
ActivityConfigJsonPath.Text = path;
if (!string.IsNullOrEmpty(path) && File.Exists(path))
LoadActivityConfig(path);
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString(), Resources.Error, MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
protected override void OnFormClosed(FormClosedEventArgs e)
{
Settings.Default.ActivityConfigJsonPath = ActivityConfigJsonPath.Text;
base.OnFormClosed(e);
}
#endregion - -
#region - ActivityConfig.json -
/// <summary>
/// 加载按钮点击时触发
/// </summary>
private void BtnLoad_Click(object sender, EventArgs e)
{
try
{
var path = ActivityConfigJsonPath.Text.Trim();
if (path == string.Empty)
{
var dialog = new OpenFileDialog
{
FileName = "ActivityConfig.json",
Filter = "ActivityConfig.Json (*.json)|*.json|All files (*.*)|*.*",
};
var result = dialog.ShowDialog();
if (result == DialogResult.OK)
path = ActivityConfigJsonPath.Text = dialog.FileName;
else
return;
}
// 反序列化
LoadActivityConfig(path);
MessageBox.Show("OK", Resources.Tips, MessageBoxButtons.OK);
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString(), Resources.Error, MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
/// <summary>
/// 加载活动配置
/// </summary>
/// <param name="path">ActivityConfig.json 文件路径</param>
private void LoadActivityConfig(string path)
{
ActivityConfigItems = JsonConvert.DeserializeObject<List<ActivityConfigItem>>(File.ReadAllText(path)) ?? new List<ActivityConfigItem>();
ListActivityConfigItems.BeginUpdate();
ListActivityConfigItems.Items.Clear();
ListActivityConfigItems.Items.AddRange(ActivityConfigItems.Select(Convert).ToArray());
ListActivityConfigItems.EndUpdate();
}
private ListViewItem Convert(ActivityConfigItem item)
{
return new ListViewItem(new[]
{
item.ActivityId.ToString(),
GameData.Activity[item.ActivityId],
item.BeginTime.ToShortDateString(),
item.EndTime.ToShortDateString(),
});
}
/// <summary>
/// 保存按钮点击时触发
/// </summary>
private void BtnSave_Click(object sender, EventArgs e)
{
try
{
var path = ActivityConfigJsonPath.Text.Trim();
if (path == string.Empty)
{
var dialog = new SaveFileDialog
{
FileName = "ActivityConfig.json",
Filter = "ActivityConfig.json (*.json)|*.json|All files (*.*)|*.*",
};
var result = dialog.ShowDialog();
if (result == DialogResult.OK)
path = ActivityConfigJsonPath.Text = dialog.FileName;
else
return;
}
// 序列化
File.WriteAllText(path, JsonConvert.SerializeObject(ActivityConfigItems, Formatting.Indented));
MessageBox.Show("OK", Resources.Tips, MessageBoxButtons.OK);
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString(), Resources.Error, MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
#endregion - ActivityConfig.json -
#region - -
/// <summary>
/// 加载所有活动
/// </summary>
private void LoadAllActivity()
{
ListAllActivity.BeginUpdate();
foreach (var grp in GameData.Activity)
{
var grpControl = ListAllActivity.Groups.Add(grp.Key, grp.Key);
for (var i = 0; i < grp.Value.Count; i++)
{
ListAllActivity.Items.Add(new ListViewItem(new[]
{
grp.Value.Ids[i].ToString(), grp.Value.Names[i]
}, grpControl));
}
}
ListAllActivity.EndUpdate();
}
/// <summary>
/// 所有活动列表选中项改变时触发
/// </summary>
private void ListAllActivity_SelectedIndexChanged(object sender, EventArgs e)
{
try
{
if (ListAllActivity.SelectedItems.Count == 0)
return;
NUDActivityId.Text = ListAllActivity.SelectedItems[0].Text;
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString(), Resources.Error, MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
/// <summary>
/// 活动ID改变时触发
/// </summary>
private void NUDActivityId_ValueChanged(object sender, EventArgs e)
{
// 更新活动名称到提示文本
var activityId = (int)NUDActivityId.Value;
LblActivityTitle.Text = GameData.Activity[activityId];
// 检查是否在列表中,允许删除
var item = ActivityConfigItems.Find(it => it.ActivityId == activityId);
BtnDelete.Enabled = item != null;
}
/// <summary>
/// 点击添加或更新按钮时触发
/// </summary>
private async void BtnAddOrUpdate_Click(object sender, EventArgs e)
{
var activityId = (int)NUDActivityId.Value;
var isNew = false;
var item = ActivityConfigItems.Find(it => it.ActivityId == activityId);
if (item == null)
{
item = new ActivityConfigItem();
isNew = true;
}
item.ActivityId = activityId;
item.ActivityType = (int)NUDActivityType.Value;
item.ScheduleId = (int)NUDScheduleId.Value;
try
{
item.MeetCondList = !string.IsNullOrEmpty(TxtMeetCondList.Text)
? TxtMeetCondList.Text.Split(',').Select(it => int.Parse(it.Trim())).ToList()
: new List<int>();
}
catch (Exception)
{
item.MeetCondList = new List<int>();
}
if (DTPBeginTime.Value > DTPEndTime.Value)
{
// ?
}
item.BeginTime = DTPBeginTime.Value.Date;
item.EndTime = DTPEndTime.Value.Date.AddDays(1).AddSeconds(-1);
if (isNew)
{
ActivityConfigItems.Add(item);
ListActivityConfigItems.Items.Add(Convert(item));
}
BtnDelete.Enabled = true;
await UIUtil.ButtonComplete(BtnAddOrUpdate);
}
/// <summary>
/// 点击删除按钮时触发
/// </summary>
private void BtnDelete_Click(object sender, EventArgs e)
{
var activityId = (int)NUDActivityId.Value;
var index = ActivityConfigItems.FindIndex(it => it.ActivityId == activityId);
if (index != -1)
{
ListActivityConfigItems.Items.RemoveAt(index);
ActivityConfigItems.RemoveAt(index);
}
BtnDelete.Enabled = false;
}
/// <summary>
/// 当前文件活动配置列表选中项改变时触发
/// </summary>
private void ListActivityConfigItems_SelectedIndexChanged(object sender, EventArgs e)
{
if (ListActivityConfigItems.SelectedItems.Count == 0)
return;
var index = ListActivityConfigItems.SelectedIndices[0];
var configItem = ActivityConfigItems[index];
NUDActivityId.Value = configItem.ActivityId;
NUDActivityType.Value = configItem.ActivityType;
NUDScheduleId.Value = configItem.ScheduleId;
TxtMeetCondList.Text = configItem.MeetCondList?.Count > 0
? string.Join(",", configItem.MeetCondList)
: string.Empty;
DTPBeginTime.Value = configItem.BeginTime;
DTPEndTime.Value = configItem.EndTime;
}
#endregion - -
}
}

View File

@@ -0,0 +1,208 @@
<?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="BtnSave.Text" xml:space="preserve">
<value>Save</value>
</data>
<data name="BtnLoad.Text" xml:space="preserve">
<value>Load</value>
</data>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="LblActivityConfigJsonPath.Size" type="System.Drawing.Size, System.Drawing">
<value>145, 17</value>
</data>
<data name="LblActivityConfigJsonPath.Text" xml:space="preserve">
<value>ActivityConfig.json Path:</value>
</data>
<data name="GrpAllActivity.Text" xml:space="preserve">
<value>All Activity by dplek</value>
</data>
<data name="ColumnActivityName.Text" xml:space="preserve">
<value>Activity name</value>
</data>
<data name="GrpFileActivity.Text" xml:space="preserve">
<value>File</value>
</data>
<data name="ColActivityTitle.Text" xml:space="preserve">
<value>Activity name</value>
</data>
<data name="ColActivityBeginTime.Text" xml:space="preserve">
<value>Begin time</value>
</data>
<data name="ColActivityEndTime.Text" xml:space="preserve">
<value>End time</value>
</data>
<data name="GrpActivityInfo.Text" xml:space="preserve">
<value>Activity info</value>
</data>
<data name="LblActivityTitle.Text" xml:space="preserve">
<value>Activity name</value>
</data>
<data name="LblActivityParmEditTip.Location" type="System.Drawing.Point, System.Drawing">
<value>8, 251</value>
</data>
<data name="LblActivityParmEditTip.Size" type="System.Drawing.Size, System.Drawing">
<value>314, 17</value>
</data>
<data name="LblActivityParmEditTip.Text" xml:space="preserve">
<value>Tip: Usually you only need to modify the activity time</value>
</data>
<data name="BtnDelete.Text" xml:space="preserve">
<value>- Delete</value>
</data>
<data name="BtnAddOrUpdate.Text" xml:space="preserve">
<value>√ Add or Update</value>
</data>
<data name="LblEndTime.Size" type="System.Drawing.Size, System.Drawing">
<value>62, 17</value>
</data>
<data name="LblEndTime.Text" xml:space="preserve">
<value>End Time</value>
</data>
<data name="LblBeginTime.Size" type="System.Drawing.Size, System.Drawing">
<value>73, 17</value>
</data>
<data name="LblBeginTime.Text" xml:space="preserve">
<value>Begin Time</value>
</data>
<data name="LblMeetCondList.Size" type="System.Drawing.Size, System.Drawing">
<value>88, 17</value>
</data>
<data name="LblMeetCondList.Text" xml:space="preserve">
<value>MeetCondList</value>
</data>
<data name="LblScheduleId.Size" type="System.Drawing.Size, System.Drawing">
<value>77, 17</value>
</data>
<data name="LblScheduleId.Text" xml:space="preserve">
<value>Schedule ID</value>
</data>
<data name="LblActivityType.Size" type="System.Drawing.Size, System.Drawing">
<value>80, 17</value>
</data>
<data name="LblActivityType.Text" xml:space="preserve">
<value>Activity Type</value>
</data>
<data name="LblActivityId.Size" type="System.Drawing.Size, System.Drawing">
<value>65, 17</value>
</data>
<data name="LblActivityId.Text" xml:space="preserve">
<value>Activity ID</value>
</data>
</root>

View File

@@ -0,0 +1,858 @@
<?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="&gt;&gt;LblActivityId.Parent" xml:space="preserve">
<value>GrpActivityInfo</value>
</data>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="ListAllActivity.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="&gt;&gt;LblActivityConfigJsonPath.ZOrder" xml:space="preserve">
<value>6</value>
</data>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="GrpActivityInfo.Location" type="System.Drawing.Point, System.Drawing">
<value>278, 41</value>
</data>
<data name="LblActivityConfigJsonPath.Text" xml:space="preserve">
<value>ActivityConfig.json 路径:</value>
</data>
<assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="ColActivityEndTime.Width" type="System.Int32, mscorlib">
<value>120</value>
</data>
<data name="&gt;&gt;BtnAddOrUpdate.Parent" xml:space="preserve">
<value>GrpActivityInfo</value>
</data>
<data name="ListActivityConfigItems.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 19</value>
</data>
<data name="&gt;&gt;LblActivityParmEditTip.Parent" xml:space="preserve">
<value>GrpActivityInfo</value>
</data>
<data name="&gt;&gt;LblActivityType.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;LblActivityTitle.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="&gt;&gt;NUDActivityId.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="LblActivityParmEditTip.TabIndex" type="System.Int32, mscorlib">
<value>13</value>
</data>
<data name="NUDActivityType.TabIndex" type="System.Int32, mscorlib">
<value>4</value>
</data>
<data name="BtnLoad.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="NUDScheduleId.Location" type="System.Drawing.Point, System.Drawing">
<value>107, 101</value>
</data>
<data name="BtnAddOrUpdate.TabIndex" type="System.Int32, mscorlib">
<value>14</value>
</data>
<data name="&gt;&gt;NUDScheduleId.ZOrder" xml:space="preserve">
<value>7</value>
</data>
<data name="ListAllActivity.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 19</value>
</data>
<data name="LblScheduleId.Location" type="System.Drawing.Point, System.Drawing">
<value>21, 103</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>
<data name="&gt;&gt;TxtMeetCondList.Name" xml:space="preserve">
<value>TxtMeetCondList</value>
</data>
<data name="LblBeginTime.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="BtnLoad.Location" type="System.Drawing.Point, System.Drawing">
<value>671, 12</value>
</data>
<data name="&gt;&gt;ColActivityEndTime.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="&gt;&gt;BtnDelete.Name" xml:space="preserve">
<value>BtnDelete</value>
</data>
<data name="&gt;&gt;NUDScheduleId.Name" xml:space="preserve">
<value>NUDScheduleId</value>
</data>
<data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
<value>7, 17</value>
</data>
<data name="&gt;&gt;ListAllActivity.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="&gt;&gt;LblActivityType.Name" xml:space="preserve">
<value>LblActivityType</value>
</data>
<data name="LblActivityId.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="LblActivityType.Text" xml:space="preserve">
<value>活动类型</value>
</data>
<data name="&gt;&gt;ListActivityConfigItems.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="&gt;&gt;GrpFileActivity.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="LblEndTime.Location" type="System.Drawing.Point, System.Drawing">
<value>21, 193</value>
</data>
<data name="&gt;&gt;NUDActivityId.Name" xml:space="preserve">
<value>NUDActivityId</value>
</data>
<data name="LblBeginTime.Text" xml:space="preserve">
<value>活动开始时间</value>
</data>
<data name="LblEndTime.Size" type="System.Drawing.Size, System.Drawing">
<value>80, 17</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="BtnSave.TabIndex" type="System.Int32, mscorlib">
<value>3</value>
</data>
<data name="&gt;&gt;GrpAllActivity.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="&gt;&gt;ColumnActivityId.Name" xml:space="preserve">
<value>ColumnActivityId</value>
</data>
<data name="&gt;&gt;BtnSave.Name" xml:space="preserve">
<value>BtnSave</value>
</data>
<data name="&gt;&gt;LblBeginTime.Name" xml:space="preserve">
<value>LblBeginTime</value>
</data>
<data name="&gt;&gt;DTPEndTime.Parent" xml:space="preserve">
<value>GrpActivityInfo</value>
</data>
<data name="&gt;&gt;GrpAllActivity.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="LblEndTime.TabIndex" type="System.Int32, mscorlib">
<value>11</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="&gt;&gt;LblEndTime.Parent" xml:space="preserve">
<value>GrpActivityInfo</value>
</data>
<data name="ColActivityBeginTime.Text" xml:space="preserve">
<value>开始时间</value>
</data>
<data name="GrpActivityInfo.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Bottom, Right</value>
</data>
<data name="&gt;&gt;GrpAllActivity.Name" xml:space="preserve">
<value>GrpAllActivity</value>
</data>
<data name="NUDActivityId.Location" type="System.Drawing.Point, System.Drawing">
<value>107, 43</value>
</data>
<data name="LblBeginTime.Location" type="System.Drawing.Point, System.Drawing">
<value>21, 164</value>
</data>
<data name="BtnSave.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Right</value>
</data>
<data name="BtnDelete.Location" type="System.Drawing.Point, System.Drawing">
<value>199, 271</value>
</data>
<data name="&gt;&gt;LblActivityConfigJsonPath.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="ColActivityId.Text" xml:space="preserve">
<value>ID</value>
</data>
<data name="LblEndTime.Text" xml:space="preserve">
<value>活动结束时间</value>
</data>
<data name="BtnDelete.Text" xml:space="preserve">
<value>- 删除</value>
</data>
<data name="ActivityConfigJsonPath.Location" type="System.Drawing.Point, System.Drawing">
<value>176, 12</value>
</data>
<data name="LblActivityTitle.Size" type="System.Drawing.Size, System.Drawing">
<value>134, 17</value>
</data>
<data name="LblActivityTitle.TabIndex" type="System.Int32, mscorlib">
<value>2</value>
</data>
<data name="LblActivityId.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
</data>
<data name="&gt;&gt;TxtMeetCondList.Parent" xml:space="preserve">
<value>GrpActivityInfo</value>
</data>
<data name="$this.StartPosition" type="System.Windows.Forms.FormStartPosition, System.Windows.Forms">
<value>CenterScreen</value>
</data>
<data name="ColumnActivityId.Text" xml:space="preserve">
<value>ID</value>
</data>
<data name="&gt;&gt;NUDScheduleId.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;LblActivityConfigJsonPath.Name" xml:space="preserve">
<value>LblActivityConfigJsonPath</value>
</data>
<data name="&gt;&gt;ListActivityConfigItems.Name" xml:space="preserve">
<value>ListActivityConfigItems</value>
</data>
<data name="GrpAllActivity.Location" type="System.Drawing.Point, System.Drawing">
<value>612, 41</value>
</data>
<data name="&gt;&gt;BtnDelete.ZOrder" xml:space="preserve">
<value>2</value>
</data>
<data name="&gt;&gt;ColActivityId.Name" xml:space="preserve">
<value>ColActivityId</value>
</data>
<data name="BtnLoad.TabIndex" type="System.Int32, mscorlib">
<value>2</value>
</data>
<data name="&gt;&gt;NUDActivityType.Name" xml:space="preserve">
<value>NUDActivityType</value>
</data>
<data name="GrpFileActivity.Location" type="System.Drawing.Point, System.Drawing">
<value>12, 41</value>
</data>
<data name="LblActivityType.Size" type="System.Drawing.Size, System.Drawing">
<value>56, 17</value>
</data>
<data name="&gt;&gt;BtnAddOrUpdate.ZOrder" xml:space="preserve">
<value>3</value>
</data>
<data name="&gt;&gt;NUDScheduleId.Parent" xml:space="preserve">
<value>GrpActivityInfo</value>
</data>
<data name="GrpAllActivity.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Bottom, Right</value>
</data>
<data name="LblActivityParmEditTip.Text" xml:space="preserve">
<value>提示:通常情况下你只需要修改活动进行时间</value>
</data>
<data name="DTPBeginTime.Size" type="System.Drawing.Size, System.Drawing">
<value>200, 23</value>
</data>
<data name="&gt;&gt;LblActivityId.ZOrder" xml:space="preserve">
<value>15</value>
</data>
<data name="LblScheduleId.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="LblActivityType.TabIndex" type="System.Int32, mscorlib">
<value>3</value>
</data>
<data name="DTPEndTime.Location" type="System.Drawing.Point, System.Drawing">
<value>107, 188</value>
</data>
<data name="&gt;&gt;LblActivityId.Name" xml:space="preserve">
<value>LblActivityId</value>
</data>
<data name="$this.MinimumSize" type="System.Drawing.Size, System.Drawing">
<value>900, 420</value>
</data>
<data name="GrpFileActivity.Text" xml:space="preserve">
<value>当前文件</value>
</data>
<data name="&gt;&gt;TxtMeetCondList.ZOrder" xml:space="preserve">
<value>6</value>
</data>
<data name="&gt;&gt;LblMeetCondList.Parent" xml:space="preserve">
<value>GrpActivityInfo</value>
</data>
<data name="$this.Text" xml:space="preserve">
<value>ActivityConfig.json Editor</value>
</data>
<data name="&gt;&gt;ListActivityConfigItems.Parent" xml:space="preserve">
<value>GrpFileActivity</value>
</data>
<data name="DTPBeginTime.Location" type="System.Drawing.Point, System.Drawing">
<value>107, 159</value>
</data>
<data name="BtnLoad.Size" type="System.Drawing.Size, System.Drawing">
<value>100, 23</value>
</data>
<data name="&gt;&gt;ListActivityConfigItems.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;GrpAllActivity.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="$this.Font" type="System.Drawing.Font, System.Drawing">
<value>Microsoft YaHei UI, 9pt</value>
</data>
<data name="ColActivityId.Width" type="System.Int32, mscorlib">
<value>50</value>
</data>
<data name="&gt;&gt;LblMeetCondList.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="NUDActivityType.Size" type="System.Drawing.Size, System.Drawing">
<value>60, 23</value>
</data>
<data name="&gt;&gt;NUDActivityId.Parent" xml:space="preserve">
<value>GrpActivityInfo</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>
<data name="LblActivityParmEditTip.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="NUDActivityId.TabIndex" type="System.Int32, mscorlib">
<value>1</value>
</data>
<data name="BtnDelete.Size" type="System.Drawing.Size, System.Drawing">
<value>89, 30</value>
</data>
<data name="BtnDelete.TabIndex" type="System.Int32, mscorlib">
<value>15</value>
</data>
<data name="&gt;&gt;BtnLoad.Name" xml:space="preserve">
<value>BtnLoad</value>
</data>
<data name="&gt;&gt;LblEndTime.ZOrder" xml:space="preserve">
<value>10</value>
</data>
<data name="NUDActivityType.Location" type="System.Drawing.Point, System.Drawing">
<value>107, 72</value>
</data>
<data name="&gt;&gt;LblActivityConfigJsonPath.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;NUDActivityType.Parent" xml:space="preserve">
<value>GrpActivityInfo</value>
</data>
<data name="&gt;&gt;GrpActivityInfo.Name" xml:space="preserve">
<value>GrpActivityInfo</value>
</data>
<data name="&gt;&gt;ColActivityId.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="&gt;&gt;GrpFileActivity.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="LblActivityId.Text" xml:space="preserve">
<value>活动ID</value>
</data>
<data name="ColumnActivityId.Width" type="System.Int32, mscorlib">
<value>50</value>
</data>
<data name="LblActivityConfigJsonPath.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="ColActivityBeginTime.Width" type="System.Int32, mscorlib">
<value>120</value>
</data>
<data name="GrpFileActivity.TabIndex" type="System.Int32, mscorlib">
<value>4</value>
</data>
<data name="&gt;&gt;DTPBeginTime.ZOrder" xml:space="preserve">
<value>5</value>
</data>
<data name="&gt;&gt;LblActivityTitle.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;LblActivityType.Parent" xml:space="preserve">
<value>GrpActivityInfo</value>
</data>
<data name="&gt;&gt;DTPBeginTime.Type" xml:space="preserve">
<value>System.Windows.Forms.DateTimePicker, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="BtnAddOrUpdate.Size" type="System.Drawing.Size, System.Drawing">
<value>150, 30</value>
</data>
<data name="ColActivityEndTime.Text" xml:space="preserve">
<value>结束时间</value>
</data>
<data name="&gt;&gt;TxtMeetCondList.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;GrpFileActivity.Name" xml:space="preserve">
<value>GrpFileActivity</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>
<data name="&gt;&gt;LblActivityParmEditTip.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="ActivityConfigJsonPath.TabIndex" type="System.Int32, mscorlib">
<value>1</value>
</data>
<data name="&gt;&gt;ActivityConfigJsonPath.ZOrder" xml:space="preserve">
<value>5</value>
</data>
<data name="ActivityConfigJsonPath.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Left, Right</value>
</data>
<data name="&gt;&gt;BtnLoad.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="LblEndTime.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="&gt;&gt;LblBeginTime.ZOrder" xml:space="preserve">
<value>11</value>
</data>
<data name="BtnLoad.Text" xml:space="preserve">
<value>加载</value>
</data>
<data name="&gt;&gt;LblActivityTitle.Name" xml:space="preserve">
<value>LblActivityTitle</value>
</data>
<data name="GrpAllActivity.TabIndex" type="System.Int32, mscorlib">
<value>6</value>
</data>
<data name="&gt;&gt;DTPBeginTime.Name" xml:space="preserve">
<value>DTPBeginTime</value>
</data>
<data name="TxtMeetCondList.Size" type="System.Drawing.Size, System.Drawing">
<value>200, 23</value>
</data>
<data name="ListActivityConfigItems.Size" type="System.Drawing.Size, System.Drawing">
<value>254, 306</value>
</data>
<data name="LblActivityConfigJsonPath.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
</data>
<data name="&gt;&gt;$this.Name" xml:space="preserve">
<value>FormActivityEditor</value>
</data>
<data name="&gt;&gt;LblScheduleId.ZOrder" xml:space="preserve">
<value>13</value>
</data>
<data name="LblActivityConfigJsonPath.Location" type="System.Drawing.Point, System.Drawing">
<value>17, 15</value>
</data>
<data name="&gt;&gt;LblActivityId.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;ListAllActivity.Parent" xml:space="preserve">
<value>GrpAllActivity</value>
</data>
<data name="LblActivityType.Location" type="System.Drawing.Point, System.Drawing">
<value>21, 74</value>
</data>
<data name="ColActivityTitle.Text" xml:space="preserve">
<value>活动名称</value>
</data>
<data name="&gt;&gt;BtnSave.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="ColumnActivityName.Width" type="System.Int32, mscorlib">
<value>300</value>
</data>
<data name="ListActivityConfigItems.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
</data>
<data name="LblActivityParmEditTip.Size" type="System.Drawing.Size, System.Drawing">
<value>248, 17</value>
</data>
<data name="&gt;&gt;NUDActivityType.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="BtnSave.Location" type="System.Drawing.Point, System.Drawing">
<value>776, 12</value>
</data>
<data name="LblMeetCondList.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="LblActivityTitle.Location" type="System.Drawing.Point, System.Drawing">
<value>173, 45</value>
</data>
<data name="ActivityConfigJsonPath.Size" type="System.Drawing.Size, System.Drawing">
<value>489, 23</value>
</data>
<data name="&gt;&gt;NUDActivityType.ZOrder" xml:space="preserve">
<value>8</value>
</data>
<data name="LblActivityConfigJsonPath.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing">
<value>884, 381</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="GrpAllActivity.Size" type="System.Drawing.Size, System.Drawing">
<value>260, 328</value>
</data>
<data name="BtnSave.Size" type="System.Drawing.Size, System.Drawing">
<value>100, 23</value>
</data>
<data name="LblActivityId.Size" type="System.Drawing.Size, System.Drawing">
<value>45, 17</value>
</data>
<data name="BtnLoad.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Right</value>
</data>
<data name="GrpFileActivity.Size" type="System.Drawing.Size, System.Drawing">
<value>260, 328</value>
</data>
<data name="BtnSave.Text" xml:space="preserve">
<value>保存</value>
</data>
<data name="DTPEndTime.Size" type="System.Drawing.Size, System.Drawing">
<value>200, 23</value>
</data>
<data name="ColActivityTitle.Width" type="System.Int32, mscorlib">
<value>150</value>
</data>
<data name="&gt;&gt;DTPEndTime.Name" xml:space="preserve">
<value>DTPEndTime</value>
</data>
<data name="&gt;&gt;DTPBeginTime.Parent" xml:space="preserve">
<value>GrpActivityInfo</value>
</data>
<data name="$this.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>4, 4, 4, 4</value>
</data>
<data name="&gt;&gt;ColumnActivityName.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="ListAllActivity.Size" type="System.Drawing.Size, System.Drawing">
<value>254, 306</value>
</data>
<data name="&gt;&gt;LblScheduleId.Name" xml:space="preserve">
<value>LblScheduleId</value>
</data>
<data name="&gt;&gt;ListAllActivity.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;LblActivityParmEditTip.Name" xml:space="preserve">
<value>LblActivityParmEditTip</value>
</data>
<data name="&gt;&gt;BtnLoad.ZOrder" xml:space="preserve">
<value>4</value>
</data>
<data name="LblBeginTime.TabIndex" type="System.Int32, mscorlib">
<value>9</value>
</data>
<data name="&gt;&gt;GrpActivityInfo.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="&gt;&gt;GrpActivityInfo.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="GrpActivityInfo.TabIndex" type="System.Int32, mscorlib">
<value>5</value>
</data>
<data name="LblScheduleId.Text" xml:space="preserve">
<value>计划ID</value>
</data>
<data name="LblMeetCondList.Location" type="System.Drawing.Point, System.Drawing">
<value>21, 133</value>
</data>
<data name="GrpFileActivity.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Bottom, Left, Right</value>
</data>
<data name="GrpActivityInfo.Text" xml:space="preserve">
<value>活动信息</value>
</data>
<data name="BtnDelete.Enabled" type="System.Boolean, mscorlib">
<value>False</value>
</data>
<data name="NUDActivityId.Size" type="System.Drawing.Size, System.Drawing">
<value>60, 23</value>
</data>
<data name="&gt;&gt;LblActivityTitle.Parent" xml:space="preserve">
<value>GrpActivityInfo</value>
</data>
<data name="&gt;&gt;LblMeetCondList.ZOrder" xml:space="preserve">
<value>12</value>
</data>
<data name="LblActivityConfigJsonPath.Size" type="System.Drawing.Size, System.Drawing">
<value>153, 17</value>
</data>
<data name="ListAllActivity.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
</data>
<data name="&gt;&gt;BtnAddOrUpdate.Name" xml:space="preserve">
<value>BtnAddOrUpdate</value>
</data>
<data name="GrpActivityInfo.Size" type="System.Drawing.Size, System.Drawing">
<value>328, 328</value>
</data>
<data name="&gt;&gt;ColumnActivityId.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="&gt;&gt;DTPEndTime.ZOrder" xml:space="preserve">
<value>4</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="GrpAllActivity.Text" xml:space="preserve">
<value>已知活动 by dplek</value>
</data>
<data name="BtnAddOrUpdate.Text" xml:space="preserve">
<value>√ 添加或更新</value>
</data>
<data name="ColumnActivityName.Text" xml:space="preserve">
<value>活动名称</value>
</data>
<data name="&gt;&gt;LblScheduleId.Parent" xml:space="preserve">
<value>GrpActivityInfo</value>
</data>
<data name="&gt;&gt;ActivityConfigJsonPath.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="NUDScheduleId.Size" type="System.Drawing.Size, System.Drawing">
<value>80, 23</value>
</data>
<data name="&gt;&gt;ColActivityEndTime.Name" xml:space="preserve">
<value>ColActivityEndTime</value>
</data>
<data name="&gt;&gt;BtnSave.ZOrder" xml:space="preserve">
<value>3</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;GrpFileActivity.ZOrder" xml:space="preserve">
<value>2</value>
</data>
<data name="LblMeetCondList.TabIndex" type="System.Int32, mscorlib">
<value>7</value>
</data>
<data name="TxtMeetCondList.Location" type="System.Drawing.Point, System.Drawing">
<value>107, 130</value>
</data>
<data name="&gt;&gt;LblBeginTime.Parent" xml:space="preserve">
<value>GrpActivityInfo</value>
</data>
<data name="&gt;&gt;ColActivityTitle.Name" xml:space="preserve">
<value>ColActivityTitle</value>
</data>
<data name="LblActivityType.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="&gt;&gt;LblActivityType.ZOrder" xml:space="preserve">
<value>14</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>
</data>
<data name="&gt;&gt;BtnDelete.Parent" xml:space="preserve">
<value>GrpActivityInfo</value>
</data>
<data name="LblMeetCondList.Size" type="System.Drawing.Size, System.Drawing">
<value>80, 17</value>
</data>
<data name="&gt;&gt;LblEndTime.Name" xml:space="preserve">
<value>LblEndTime</value>
</data>
<data name="LblActivityId.Location" type="System.Drawing.Point, System.Drawing">
<value>21, 45</value>
</data>
<data name="BtnSave.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="DTPEndTime.TabIndex" type="System.Int32, mscorlib">
<value>12</value>
</data>
<data name="NUDScheduleId.TabIndex" type="System.Int32, mscorlib">
<value>6</value>
</data>
<data name="&gt;&gt;GrpActivityInfo.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;ColActivityTitle.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="LblScheduleId.Size" type="System.Drawing.Size, System.Drawing">
<value>45, 17</value>
</data>
<data name="&gt;&gt;NUDActivityId.ZOrder" xml:space="preserve">
<value>9</value>
</data>
<data name="&gt;&gt;LblMeetCondList.Name" xml:space="preserve">
<value>LblMeetCondList</value>
</data>
<data name="LblActivityTitle.Text" xml:space="preserve">
<value>活动名称</value>
</data>
<data name="BtnAddOrUpdate.Location" type="System.Drawing.Point, System.Drawing">
<value>43, 271</value>
</data>
<data name="&gt;&gt;LblActivityParmEditTip.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;ColActivityBeginTime.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="TxtMeetCondList.TabIndex" type="System.Int32, mscorlib">
<value>8</value>
</data>
<data name="&gt;&gt;ActivityConfigJsonPath.Name" xml:space="preserve">
<value>ActivityConfigJsonPath</value>
</data>
<data name="DTPBeginTime.TabIndex" type="System.Int32, mscorlib">
<value>10</value>
</data>
<data name="LblActivityParmEditTip.Location" type="System.Drawing.Point, System.Drawing">
<value>40, 251</value>
</data>
<data name="LblBeginTime.Size" type="System.Drawing.Size, System.Drawing">
<value>80, 17</value>
</data>
<data name="LblScheduleId.TabIndex" type="System.Int32, mscorlib">
<value>5</value>
</data>
<data name="&gt;&gt;ColActivityBeginTime.Name" xml:space="preserve">
<value>ColActivityBeginTime</value>
</data>
<data name="&gt;&gt;ColumnActivityName.Name" xml:space="preserve">
<value>ColumnActivityName</value>
</data>
<data name="&gt;&gt;ListAllActivity.Name" xml:space="preserve">
<value>ListAllActivity</value>
</data>
<data name="ListActivityConfigItems.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="&gt;&gt;ActivityConfigJsonPath.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="LblMeetCondList.Text" xml:space="preserve">
<value>满足条件列表</value>
</data>
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
</root>

View File

@@ -0,0 +1,221 @@
<?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="BtnSave.Text" xml:space="preserve">
<value>Сохранить</value>
</data>
<data name="BtnLoad.Text" xml:space="preserve">
<value>Загрузить</value>
</data>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="LblActivityConfigJsonPath.Size" type="System.Drawing.Size, System.Drawing">
<value>147, 17</value>
</data>
<data name="LblActivityConfigJsonPath.Text" xml:space="preserve">
<value>ActivityConfig.json Путь:</value>
</data>
<data name="GrpAllActivity.Text" xml:space="preserve">
<value>Вся деятельность by dplek</value>
</data>
<data name="ColumnActivityName.Text" xml:space="preserve">
<value>Activity name</value>
</data>
<data name="GrpFileActivity.Text" xml:space="preserve">
<value>Текущий файл</value>
</data>
<data name="ColActivityTitle.Text" xml:space="preserve">
<value>Activity name</value>
</data>
<data name="ColActivityBeginTime.Text" xml:space="preserve">
<value>Begin time</value>
</data>
<data name="ColActivityEndTime.Text" xml:space="preserve">
<value>End time</value>
</data>
<data name="GrpActivityInfo.Text" xml:space="preserve">
<value>Информация об активности</value>
</data>
<data name="LblActivityTitle.Text" xml:space="preserve">
<value>Название деятельности</value>
</data>
<data name="LblActivityParmEditTip.Font" type="System.Drawing.Font, System.Drawing">
<value>Microsoft YaHei UI, 8pt</value>
</data>
<data name="LblActivityParmEditTip.Location" type="System.Drawing.Point, System.Drawing">
<value>40, 236</value>
</data>
<data name="LblActivityParmEditTip.Size" type="System.Drawing.Size, System.Drawing">
<value>244, 32</value>
</data>
<data name="LblActivityParmEditTip.Text" xml:space="preserve">
<value>Совет: обычно вам нужно изменить только
время активности</value>
</data>
<data name="BtnDelete.Location" type="System.Drawing.Point, System.Drawing">
<value>213, 271</value>
</data>
<data name="BtnDelete.Text" xml:space="preserve">
<value>- Удалить</value>
</data>
<data name="BtnAddOrUpdate.Location" type="System.Drawing.Point, System.Drawing">
<value>27, 271</value>
</data>
<data name="BtnAddOrUpdate.Size" type="System.Drawing.Size, System.Drawing">
<value>180, 30</value>
</data>
<data name="BtnAddOrUpdate.Text" xml:space="preserve">
<value>√ Добавить или обновить</value>
</data>
<data name="LblEndTime.Size" type="System.Drawing.Size, System.Drawing">
<value>59, 17</value>
</data>
<data name="LblEndTime.Text" xml:space="preserve">
<value>End time</value>
</data>
<data name="LblBeginTime.Size" type="System.Drawing.Size, System.Drawing">
<value>70, 17</value>
</data>
<data name="LblBeginTime.Text" xml:space="preserve">
<value>Begin time</value>
</data>
<data name="LblMeetCondList.Size" type="System.Drawing.Size, System.Drawing">
<value>88, 17</value>
</data>
<data name="LblMeetCondList.Text" xml:space="preserve">
<value>MeetCondList</value>
</data>
<data name="LblScheduleId.Size" type="System.Drawing.Size, System.Drawing">
<value>85, 17</value>
</data>
<data name="LblScheduleId.Text" xml:space="preserve">
<value>Scheduled ID</value>
</data>
<data name="LblActivityType.Size" type="System.Drawing.Size, System.Drawing">
<value>77, 17</value>
</data>
<data name="LblActivityType.Text" xml:space="preserve">
<value>Activty Type</value>
</data>
<data name="LblActivityId.Size" type="System.Drawing.Size, System.Drawing">
<value>65, 17</value>
</data>
<data name="LblActivityId.Text" xml:space="preserve">
<value>Activity ID</value>
</data>
</root>

View File

@@ -0,0 +1,174 @@
<?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="BtnLoad.Text" xml:space="preserve">
<value>加載</value>
</data>
<data name="LblActivityConfigJsonPath.Text" xml:space="preserve">
<value>ActivityConfig.json 路徑:</value>
</data>
<data name="GrpAllActivity.Text" xml:space="preserve">
<value>已知活動 by dplek</value>
</data>
<data name="ColumnActivityName.Text" xml:space="preserve">
<value>活動名稱</value>
</data>
<data name="GrpFileActivity.Text" xml:space="preserve">
<value>當前文件</value>
</data>
<data name="ColActivityTitle.Text" xml:space="preserve">
<value>活動名稱</value>
</data>
<data name="ColActivityBeginTime.Text" xml:space="preserve">
<value>開始時間</value>
</data>
<data name="ColActivityEndTime.Text" xml:space="preserve">
<value>結束時間</value>
</data>
<data name="GrpActivityInfo.Text" xml:space="preserve">
<value>活動信息</value>
</data>
<data name="LblActivityTitle.Text" xml:space="preserve">
<value>活動名稱</value>
</data>
<data name="LblActivityParmEditTip.Text" xml:space="preserve">
<value>提示:通常情況下你只需要修改活動進行時間</value>
</data>
<data name="BtnDelete.Text" xml:space="preserve">
<value>- 刪除</value>
</data>
<data name="LblEndTime.Text" xml:space="preserve">
<value>活動結束時間</value>
</data>
<data name="LblBeginTime.Text" xml:space="preserve">
<value>活動開始時間</value>
</data>
<data name="LblMeetCondList.Text" xml:space="preserve">
<value>滿足條件列表</value>
</data>
<data name="LblScheduleId.Text" xml:space="preserve">
<value>計劃ID</value>
</data>
<data name="LblActivityType.Text" xml:space="preserve">
<value>活動類型</value>
</data>
<data name="LblActivityId.Text" xml:space="preserve">
<value>活動ID</value>
</data>
</root>

View File

@@ -14,8 +14,9 @@
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*
*
**/
using System;
using System.Collections.Generic;
using System.IO;
@@ -98,7 +99,6 @@ namespace GrasscutterTools.Forms
{
// 保存文件路径
Settings.Default.DropJsonPath = TxtDropJsonPath.Text;
Settings.Default.Save();
base.OnFormClosed(e);
}
@@ -486,7 +486,6 @@ namespace GrasscutterTools.Forms
dropList[i] = data;
}
#endregion - -
#region - -

View File

@@ -122,16 +122,16 @@
<value>99, 17</value>
</data>
<data name="LblDropPathLabel.Text" xml:space="preserve">
<value>Drop.json Путь:</value>
<value>Путь до Drop.json:</value>
</data>
<data name="BtnLoad.Text" xml:space="preserve">
<value>Нагрузка</value>
<value>Загрузить</value>
</data>
<data name="BtnSave.Text" xml:space="preserve">
<value>Сохранять</value>
<value>Сохранить</value>
</data>
<data name="GrpDropList.Text" xml:space="preserve">
<value>Drop list</value>
<value>Список дропа</value>
</data>
<data name="BtnCopyAll.Location" type="System.Drawing.Point, System.Drawing">
<value>94, 202</value>
@@ -170,7 +170,7 @@
<value>62, 17</value>
</data>
<data name="LblItemLabel.Text" xml:space="preserve">
<value>предмет:</value>
<value>Предмет:</value>
</data>
<data name="LblWeightLabel.Size" type="System.Drawing.Size, System.Drawing">
<value>39, 17</value>

View File

@@ -14,8 +14,9 @@
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*
*
**/
using System;
using System.Collections.Generic;
using System.Linq;
@@ -99,25 +100,25 @@ namespace GrasscutterTools.Forms
{
try
{
NUDGachaType.Value = banner.GachaType;
NUDScheduleId.Value = banner.ScheduleId;
NUDGachaType.Value = banner.GachaType;
NUDScheduleId.Value = banner.ScheduleId;
CmbBannerType.SelectedIndex = (int)banner.BannerType;
if (string.IsNullOrEmpty(banner.TitlePath) || !int.TryParse(banner.TitlePath.Substring("UI_GACHA_SHOW_PANEL_A".Length, 3), out int prefabId))
CmbPrefab.SelectedIndex = -1;
else
CmbPrefab.SelectedIndex = Array.IndexOf(GameData.GachaBannerPrefabs.Ids, prefabId);
RbCostItem224.Checked = banner.CostItem == 224;
RbCostItem223.Checked = banner.CostItem == 223;
NUDBeginTime.Value = banner.BeginTime;
NUDEndTime.Value = banner.EndTime;
NUDSortId.Value = banner.SortId;
TxtRateUpItems1.Text = string.Join(", ", banner.RateUpItems1);
TxtRateUpItems2.Text = string.Join(", ", banner.RateUpItems2);
NUDBaseYellowWeight.Value = banner.BaseYellowWeight * 0.01M;
NUDBasePurpleWeight.Value = banner.BasePurpleWeight * 0.01M;
NUDEventChance.Value = banner.EventChance;
NUDSoftPity.Value = banner.SoftPity;
NUDHardPity.Value = banner.HardPity;
RbCostItem224.Checked = banner.CostItem == 224;
RbCostItem223.Checked = banner.CostItem == 223;
NUDBeginTime.Value = banner.BeginTime;
NUDEndTime.Value = banner.EndTime;
NUDSortId.Value = banner.SortId;
TxtRateUpItems1.Text = string.Join(", ", banner.RateUpItems1);
TxtRateUpItems2.Text = string.Join(", ", banner.RateUpItems2);
NUDBaseYellowWeight.Value = banner.BaseYellowWeight * 0.01M;
NUDBasePurpleWeight.Value = banner.BasePurpleWeight * 0.01M;
NUDEventChance.Value = banner.EventChance;
NUDSoftPity.Value = banner.SoftPity;
NUDHardPity.Value = banner.HardPity;
InitRateUpItems(banner);
}
catch (Exception ex)
@@ -155,23 +156,23 @@ namespace GrasscutterTools.Forms
var prefabId = GameData.GachaBannerPrefabs.Ids[CmbPrefab.SelectedIndex];
GachaBanner banner = new GachaBanner
{
GachaType = (int)NUDGachaType.Value,
ScheduleId = (int)NUDScheduleId.Value,
BannerType = (BannerType)CmbBannerType.SelectedIndex,
PrefabPath = $"GachaShowPanel_A{prefabId:000}",
GachaType = (int)NUDGachaType.Value,
ScheduleId = (int)NUDScheduleId.Value,
BannerType = (BannerType)CmbBannerType.SelectedIndex,
PrefabPath = $"GachaShowPanel_A{prefabId:000}",
PreviewPrefabPath = $"UI_Tab_GachaShowPanel_A{prefabId:000}",
TitlePath = $"UI_GACHA_SHOW_PANEL_A{prefabId:000}_TITLE",
CostItem = RbCostItem224.Checked ? 224 : 223,
BeginTime = (int)NUDBeginTime.Value,
EndTime = (int)NUDEndTime.Value,
SortId = (int)NUDSortId.Value,
RateUpItems1 = yellowIds,
RateUpItems2 = purpleIds,
BaseYellowWeight = (int)(NUDBaseYellowWeight.Value * 100),
BasePurpleWeight = (int)(NUDBasePurpleWeight.Value * 100),
EventChance = (int)NUDEventChance.Value,
SoftPity = (int)NUDSoftPity.Value,
HardPity = (int)NUDHardPity.Value
TitlePath = $"UI_GACHA_SHOW_PANEL_A{prefabId:000}_TITLE",
CostItem = RbCostItem224.Checked ? 224 : 223,
BeginTime = (int)NUDBeginTime.Value,
EndTime = (int)NUDEndTime.Value,
SortId = (int)NUDSortId.Value,
RateUpItems1 = yellowIds,
RateUpItems2 = purpleIds,
BaseYellowWeight = (int)(NUDBaseYellowWeight.Value * 100),
BasePurpleWeight = (int)(NUDBasePurpleWeight.Value * 100),
EventChance = (int)NUDEventChance.Value,
SoftPity = (int)NUDSoftPity.Value,
HardPity = (int)NUDHardPity.Value
};
return banner;
}

View File

@@ -22,7 +22,6 @@ using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Windows.Forms;
using System.Windows.Forms.DataVisualization.Charting;
using GrasscutterTools.Game;
using GrasscutterTools.Game.Gacha;
@@ -301,7 +300,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");
TxtJson.Text = json.Insert(json.Length - 1, "\r\n");
ShowBanner(banner);
}
}

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