Separate pages

This commit is contained in:
2022-11-26 23:47:46 +08:00
parent 6ab7bac20b
commit 436c4d809c
48 changed files with 12655 additions and 8659 deletions

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -127,150 +127,15 @@
<data name="ChkAutoCopy.Text" xml:space="preserve"> <data name="ChkAutoCopy.Text" xml:space="preserve">
<value>Auto</value> <value>Auto</value>
</data> </data>
<data name="GrpCommand.Text" xml:space="preserve">
<value>Command - [Ctrl] Autorun - [Shift] Append - [Alt] Only run - [|] Split multiple commands</value>
</data>
<data name="BtnInvokeOpenCommand.Text" xml:space="preserve"> <data name="BtnInvokeOpenCommand.Text" xml:space="preserve">
<value>Run(F5)</value> <value>Run(F5)</value>
</data> </data>
<data name="TPRemoteCall.Location" type="System.Drawing.Point, System.Drawing"> <data name="GrpCommand.Text" xml:space="preserve">
<value>4, 26</value> <value>Command - [Ctrl] Autorun - [Shift] Append - [Alt] Only run - [|] Split multiple commands</value>
</data>
<data name="TPRemoteCall.Size" type="System.Drawing.Size, System.Drawing">
<value>652, 245</value>
</data> </data>
<data name="TPRemoteCall.Text" xml:space="preserve"> <data name="TPRemoteCall.Text" xml:space="preserve">
<value>Remote</value> <value>Remote</value>
</data> </data>
<data name="LnkInventoryKamera.Text" xml:space="preserve">
<value>InventoryKamera</value>
</data>
<data name="LblGOODHelp.Text" xml:space="preserve">
<value>Come and import your official server archive into GC!</value>
</data>
<data name="ButtonOpenGOODImport.Text" xml:space="preserve">
<value>Import GOOD</value>
</data>
<data name="LblHostTip.Location" type="System.Drawing.Point, System.Drawing">
<value>108, 16</value>
</data>
<data name="LblHostTip.Size" type="System.Drawing.Size, System.Drawing">
<value>377, 17</value>
</data>
<data name="LblHostTip.Text" xml:space="preserve">
<value>Please be sure https:// or http:// is included with the IP address</value>
</data>
<data name="GrpServerStatus.Text" xml:space="preserve">
<value>Server status</value>
</data>
<data name="LnkOpenCommandLabel.Location" type="System.Drawing.Point, System.Drawing">
<value>13, 63</value>
</data>
<data name="LnkOpenCommandLabel.Size" type="System.Drawing.Size, System.Drawing">
<value>100, 17</value>
</data>
<data name="LnkOpenCommandLabel.Text" xml:space="preserve">
<value>OpenCommand</value>
</data>
<data name="LblOpenCommandSupport.Location" type="System.Drawing.Point, System.Drawing">
<value>119, 63</value>
</data>
<data name="LblServerVersion.Location" type="System.Drawing.Point, System.Drawing">
<value>119, 29</value>
</data>
<data name="LblPlayerCount.Location" type="System.Drawing.Point, System.Drawing">
<value>119, 46</value>
</data>
<data name="LblServerVersionLabel.Location" type="System.Drawing.Point, System.Drawing">
<value>25, 29</value>
</data>
<data name="LblServerVersionLabel.Size" type="System.Drawing.Size, System.Drawing">
<value>88, 17</value>
</data>
<data name="LblServerVersionLabel.Text" xml:space="preserve">
<value>Game version</value>
</data>
<data name="LblPlayerCountLabel.Location" type="System.Drawing.Point, System.Drawing">
<value>34, 46</value>
</data>
<data name="LblPlayerCountLabel.Size" type="System.Drawing.Size, System.Drawing">
<value>79, 17</value>
</data>
<data name="LblPlayerCountLabel.Text" xml:space="preserve">
<value>Player count</value>
</data>
<data name="GrpRemoteCommand.Text" xml:space="preserve">
<value>Remote Cell</value>
</data>
<data name="TPPlayerCheck.Location" type="System.Drawing.Point, System.Drawing">
<value>4, 26</value>
</data>
<data name="TPPlayerCheck.Size" type="System.Drawing.Size, System.Drawing">
<value>296, 109</value>
</data>
<data name="TPPlayerCheck.Text" xml:space="preserve">
<value>Player</value>
</data>
<data name="LnkRCHelp.Size" type="System.Drawing.Size, System.Drawing">
<value>35, 17</value>
</data>
<data name="LnkRCHelp.Text" xml:space="preserve">
<value>Help</value>
</data>
<data name="BtnConnectOpenCommand.Text" xml:space="preserve">
<value>Connect</value>
</data>
<data name="LblVerificationCode.Size" type="System.Drawing.Size, System.Drawing">
<value>39, 17</value>
</data>
<data name="LblVerificationCode.Text" xml:space="preserve">
<value>Code</value>
</data>
<data name="BtnSendVerificationCode.Text" xml:space="preserve">
<value>Send Code</value>
</data>
<data name="TPConsoleCheck.Size" type="System.Drawing.Size, System.Drawing">
<value>296, 111</value>
</data>
<data name="TPConsoleCheck.Text" xml:space="preserve">
<value>Console</value>
</data>
<data name="BtnConsoleConnect.Text" xml:space="preserve">
<value>Connect</value>
</data>
<data name="LblConsoleTip.Text" xml:space="preserve">
<value>Note that normal commands in the console state must specify the target (set include UID)</value>
</data>
<data name="TxtHost.Location" type="System.Drawing.Point, System.Drawing">
<value>136, 36</value>
</data>
<data name="TxtHost.Size" type="System.Drawing.Size, System.Drawing">
<value>175, 23</value>
</data>
<data name="BtnQueryServerStatus.Location" type="System.Drawing.Point, System.Drawing">
<value>317, 36</value>
</data>
<data name="BtnQueryServerStatus.Size" type="System.Drawing.Size, System.Drawing">
<value>65, 23</value>
</data>
<data name="BtnQueryServerStatus.Text" xml:space="preserve">
<value>Query</value>
</data>
<data name="LblHost.Size" type="System.Drawing.Size, System.Drawing">
<value>60, 17</value>
</data>
<data name="LblHost.Text" xml:space="preserve">
<value>Server IP</value>
</data>
<data name="TPAbout.Location" type="System.Drawing.Point, System.Drawing">
<value>4, 26</value>
</data>
<data name="TPAbout.Size" type="System.Drawing.Size, System.Drawing">
<value>652, 245</value>
</data>
<data name="TPAbout.Text" xml:space="preserve">
<value>About</value>
</data>
<data name="LblSupportDescription.Size" type="System.Drawing.Size, System.Drawing"> <data name="LblSupportDescription.Size" type="System.Drawing.Size, System.Drawing">
<value>387, 102</value> <value>387, 102</value>
</data> </data>
@@ -282,17 +147,8 @@ If you think this is helpful to you, you can give me a free Star.
If there is a problem with the command generation, If there is a problem with the command generation,
or there is a new feature request, you can file an issue on Github.</value> or there is a new feature request, you can file an issue on Github.</value>
</data> </data>
<data name="TPManage.Location" type="System.Drawing.Point, System.Drawing"> <data name="TPAbout.Text" xml:space="preserve">
<value>4, 26</value> <value>About</value>
</data>
<data name="TPManage.Size" type="System.Drawing.Size, System.Drawing">
<value>652, 245</value>
</data>
<data name="TPManage.Text" xml:space="preserve">
<value>Manage</value>
</data>
<data name="GrpBanPlayer.Text" xml:space="preserve">
<value>Ban</value>
</data> </data>
<data name="BtnUnban.Text" xml:space="preserve"> <data name="BtnUnban.Text" xml:space="preserve">
<value>Unban</value> <value>Unban</value>
@@ -312,8 +168,8 @@ or there is a new feature request, you can file an issue on Github.</value>
<data name="LblBanUID.Text" xml:space="preserve"> <data name="LblBanUID.Text" xml:space="preserve">
<value>UID</value> <value>UID</value>
</data> </data>
<data name="GrpAccount.Text" xml:space="preserve"> <data name="GrpBanPlayer.Text" xml:space="preserve">
<value>Account</value> <value>Ban</value>
</data> </data>
<data name="ChkAccountSetUid.Size" type="System.Drawing.Size, System.Drawing"> <data name="ChkAccountSetUid.Size" type="System.Drawing.Size, System.Drawing">
<value>49, 21</value> <value>49, 21</value>
@@ -348,8 +204,8 @@ or there is a new feature request, you can file an issue on Github.</value>
<data name="TxtAccountUserName.Size" type="System.Drawing.Size, System.Drawing"> <data name="TxtAccountUserName.Size" type="System.Drawing.Size, System.Drawing">
<value>127, 23</value> <value>127, 23</value>
</data> </data>
<data name="GrpPermission.Text" xml:space="preserve"> <data name="GrpAccount.Text" xml:space="preserve">
<value>Permissions</value> <value>Account</value>
</data> </data>
<data name="CmbPerm.Location" type="System.Drawing.Point, System.Drawing"> <data name="CmbPerm.Location" type="System.Drawing.Point, System.Drawing">
<value>262, 21</value> <value>262, 21</value>
@@ -384,8 +240,11 @@ or there is a new feature request, you can file an issue on Github.</value>
<data name="LblPermUID.Text" xml:space="preserve"> <data name="LblPermUID.Text" xml:space="preserve">
<value>UID</value> <value>UID</value>
</data> </data>
<data name="TPScene.Text" xml:space="preserve"> <data name="GrpPermission.Text" xml:space="preserve">
<value>Scene</value> <value>Permissions</value>
</data>
<data name="TPManage.Text" xml:space="preserve">
<value>Manage</value>
</data> </data>
<data name="RbListDungeons.Location" type="System.Drawing.Point, System.Drawing"> <data name="RbListDungeons.Location" type="System.Drawing.Point, System.Drawing">
<value>255, 7</value> <value>255, 7</value>
@@ -474,14 +333,8 @@ or there is a new feature request, you can file an issue on Github.</value>
Tip: You can quickly teleport through the 'fishing hook' pin on the map in-game. Tip: You can quickly teleport through the 'fishing hook' pin on the map in-game.
In the command, you can use ~ to indicate the current position, and ~N to indicate the relative current N</value> In the command, you can use ~ to indicate the current position, and ~N to indicate the relative current N</value>
</data> </data>
<data name="TPItem.Location" type="System.Drawing.Point, System.Drawing"> <data name="TPScene.Text" xml:space="preserve">
<value>4, 26</value> <value>Scene</value>
</data>
<data name="TPItem.Size" type="System.Drawing.Size, System.Drawing">
<value>652, 245</value>
</data>
<data name="TPItem.Text" xml:space="preserve">
<value>Items</value>
</data> </data>
<data name="LblClearGiveItemLogs.Size" type="System.Drawing.Size, System.Drawing"> <data name="LblClearGiveItemLogs.Size" type="System.Drawing.Size, System.Drawing">
<value>50, 17</value> <value>50, 17</value>
@@ -534,69 +387,12 @@ In the command, you can use ~ to indicate the current position, and ~N to indica
<data name="LblGiveCommandDescription.Text" xml:space="preserve"> <data name="LblGiveCommandDescription.Text" xml:space="preserve">
<value>Give item to player</value> <value>Give item to player</value>
</data> </data>
<data name="TPWeapon.Location" type="System.Drawing.Point, System.Drawing"> <data name="TPItem.Text" xml:space="preserve">
<value>4, 26</value> <value>Items</value>
</data>
<data name="TPWeapon.Size" type="System.Drawing.Size, System.Drawing">
<value>652, 245</value>
</data> </data>
<data name="TPWeapon.Text" xml:space="preserve"> <data name="TPWeapon.Text" xml:space="preserve">
<value>Weapons</value> <value>Weapons</value>
</data> </data>
<data name="BtnGiveAllWeapons.Text" xml:space="preserve">
<value>Give all Weapons</value>
</data>
<data name="LblWeaponDescription.Size" type="System.Drawing.Size, System.Drawing">
<value>86, 17</value>
</data>
<data name="LblWeaponDescription.Text" xml:space="preserve">
<value>Give Weapon</value>
</data>
<data name="LblWeaponRefinement.Location" type="System.Drawing.Point, System.Drawing">
<value>203, 218</value>
</data>
<data name="LblWeaponRefinement.Size" type="System.Drawing.Size, System.Drawing">
<value>73, 17</value>
</data>
<data name="LblWeaponRefinement.Text" xml:space="preserve">
<value>Refinement</value>
</data>
<data name="LblWeaponAmount.Size" type="System.Drawing.Size, System.Drawing">
<value>53, 17</value>
</data>
<data name="LblWeaponAmount.Text" xml:space="preserve">
<value>Amount</value>
</data>
<data name="LblWeaponLevel.Location" type="System.Drawing.Point, System.Drawing">
<value>121, 218</value>
</data>
<data name="LblWeaponLevel.Size" type="System.Drawing.Size, System.Drawing">
<value>20, 17</value>
</data>
<data name="LblWeaponLevel.Text" xml:space="preserve">
<value>Lv</value>
</data>
<data name="NUDWeaponRefinement.Location" type="System.Drawing.Point, System.Drawing">
<value>282, 216</value>
</data>
<data name="NUDWeaponAmout.Location" type="System.Drawing.Point, System.Drawing">
<value>65, 216</value>
</data>
<data name="NUDWeaponLevel.Location" type="System.Drawing.Point, System.Drawing">
<value>147, 216</value>
</data>
<data name="TPAvatar.Location" type="System.Drawing.Point, System.Drawing">
<value>4, 26</value>
</data>
<data name="TPAvatar.Size" type="System.Drawing.Size, System.Drawing">
<value>652, 245</value>
</data>
<data name="TPAvatar.Text" xml:space="preserve">
<value>Avatar</value>
</data>
<data name="GrpSetConstellation.Text" xml:space="preserve">
<value>Constellation</value>
</data>
<data name="LnkSetAllConst.Size" type="System.Drawing.Size, System.Drawing"> <data name="LnkSetAllConst.Size" type="System.Drawing.Size, System.Drawing">
<value>43, 17</value> <value>43, 17</value>
</data> </data>
@@ -609,8 +405,8 @@ In the command, you can use ~ to indicate the current position, and ~N to indica
<data name="LnkSetConst.Text" xml:space="preserve"> <data name="LnkSetConst.Text" xml:space="preserve">
<value>Set current</value> <value>Set current</value>
</data> </data>
<data name="GrpSetStats.Text" xml:space="preserve"> <data name="GrpSetConstellation.Text" xml:space="preserve">
<value>Stats</value> <value>Constellation</value>
</data> </data>
<data name="BtnUnlockStat.Text" xml:space="preserve"> <data name="BtnUnlockStat.Text" xml:space="preserve">
<value>Unlock</value> <value>Unlock</value>
@@ -621,8 +417,8 @@ In the command, you can use ~ to indicate the current position, and ~N to indica
<data name="LblStatTip.Text" xml:space="preserve"> <data name="LblStatTip.Text" xml:space="preserve">
<value>Tip</value> <value>Tip</value>
</data> </data>
<data name="GrpTalentLevel.Text" xml:space="preserve"> <data name="GrpSetStats.Text" xml:space="preserve">
<value>Talent Level</value> <value>Stats</value>
</data> </data>
<data name="LnkTalentAll.Location" type="System.Drawing.Point, System.Drawing"> <data name="LnkTalentAll.Location" type="System.Drawing.Point, System.Drawing">
<value>146, 24</value> <value>146, 24</value>
@@ -663,6 +459,9 @@ In the command, you can use ~ to indicate the current position, and ~N to indica
<data name="NUDTalentLevel.Size" type="System.Drawing.Size, System.Drawing"> <data name="NUDTalentLevel.Size" type="System.Drawing.Size, System.Drawing">
<value>96, 23</value> <value>96, 23</value>
</data> </data>
<data name="GrpTalentLevel.Text" xml:space="preserve">
<value>Talent Level</value>
</data>
<data name="CmbSwitchElement.Items" xml:space="preserve"> <data name="CmbSwitchElement.Items" xml:space="preserve">
<value>White</value> <value>White</value>
</data> </data>
@@ -720,23 +519,8 @@ In the command, you can use ~ to indicate the current position, and ~N to indica
<data name="LblAvatarConstellation.Text" xml:space="preserve"> <data name="LblAvatarConstellation.Text" xml:space="preserve">
<value>Const.</value> <value>Const.</value>
</data> </data>
<data name="TPSpawn.Location" type="System.Drawing.Point, System.Drawing"> <data name="TPAvatar.Text" xml:space="preserve">
<value>4, 26</value> <value>Avatar</value>
</data>
<data name="TPSpawn.Size" type="System.Drawing.Size, System.Drawing">
<value>652, 245</value>
</data>
<data name="TPSpawn.Text" xml:space="preserve">
<value>Spawn</value>
</data>
<data name="TPSpawnArgs.Location" type="System.Drawing.Point, System.Drawing">
<value>4, 26</value>
</data>
<data name="TPSpawnArgs.Size" type="System.Drawing.Size, System.Drawing">
<value>338, 203</value>
</data>
<data name="TPSpawnArgs.Text" xml:space="preserve">
<value>Spawn args</value>
</data> </data>
<data name="NUDEntityAmout.Location" type="System.Drawing.Point, System.Drawing"> <data name="NUDEntityAmout.Location" type="System.Drawing.Point, System.Drawing">
<value>78, 25</value> <value>78, 25</value>
@@ -795,14 +579,8 @@ In the command, you can use ~ to indicate the current position, and ~N to indica
<data name="LblEntityAmount.Text" xml:space="preserve"> <data name="LblEntityAmount.Text" xml:space="preserve">
<value>Amount</value> <value>Amount</value>
</data> </data>
<data name="TPAttackModArgs.Location" type="System.Drawing.Point, System.Drawing"> <data name="TPSpawnArgs.Text" xml:space="preserve">
<value>4, 26</value> <value>Spawn args</value>
</data>
<data name="TPAttackModArgs.Size" type="System.Drawing.Size, System.Drawing">
<value>338, 203</value>
</data>
<data name="TPAttackModArgs.Text" xml:space="preserve">
<value>AttackModifier</value>
</data> </data>
<data name="LblAMPluginTip.Size" type="System.Drawing.Size, System.Drawing"> <data name="LblAMPluginTip.Size" type="System.Drawing.Size, System.Drawing">
<value>121, 17</value> <value>121, 17</value>
@@ -843,8 +621,8 @@ In the command, you can use ~ to indicate the current position, and ~N to indica
<data name="GrpAMSkills.Text" xml:space="preserve"> <data name="GrpAMSkills.Text" xml:space="preserve">
<value>Replace Skill</value> <value>Replace Skill</value>
</data> </data>
<data name="TPAttackInfusedArgs.Text" xml:space="preserve"> <data name="TPAttackModArgs.Text" xml:space="preserve">
<value>AttackInfused</value> <value>AttackModifier</value>
</data> </data>
<data name="LblAiwiRotate.Size" type="System.Drawing.Size, System.Drawing"> <data name="LblAiwiRotate.Size" type="System.Drawing.Size, System.Drawing">
<value>238, 17</value> <value>238, 17</value>
@@ -894,21 +672,12 @@ In the command, you can use ~ to indicate the current position, and ~N to indica
<data name="LblAiwiPlugin.Text" xml:space="preserve"> <data name="LblAiwiPlugin.Text" xml:space="preserve">
<value>Plugin:</value> <value>Plugin:</value>
</data> </data>
<data name="TPSpawnItems.Location" type="System.Drawing.Point, System.Drawing"> <data name="TPAttackInfusedArgs.Text" xml:space="preserve">
<value>4, 26</value> <value>AttackInfused</value>
</data>
<data name="TPSpawnItems.Size" type="System.Drawing.Size, System.Drawing">
<value>280, 203</value>
</data> </data>
<data name="TPSpawnItems.Text" xml:space="preserve"> <data name="TPSpawnItems.Text" xml:space="preserve">
<value>Entities</value> <value>Entities</value>
</data> </data>
<data name="ListEntity.Size" type="System.Drawing.Size, System.Drawing">
<value>274, 167</value>
</data>
<data name="TPSpawnRecords.Text" xml:space="preserve">
<value>Spawn Records</value>
</data>
<data name="BtnSaveSpawnLog.Text" xml:space="preserve"> <data name="BtnSaveSpawnLog.Text" xml:space="preserve">
<value>√ Record</value> <value>√ Record</value>
</data> </data>
@@ -921,17 +690,11 @@ In the command, you can use ~ to indicate the current position, and ~N to indica
<data name="LblClearSpawnLogs.Text" xml:space="preserve"> <data name="LblClearSpawnLogs.Text" xml:space="preserve">
<value>X Clear</value> <value>X Clear</value>
</data> </data>
<data name="TPQuest.Location" type="System.Drawing.Point, System.Drawing"> <data name="TPSpawnRecords.Text" xml:space="preserve">
<value>4, 26</value> <value>Spawn Records</value>
</data> </data>
<data name="TPQuest.Size" type="System.Drawing.Size, System.Drawing"> <data name="TPSpawn.Text" xml:space="preserve">
<value>652, 245</value> <value>Spawn</value>
</data>
<data name="TPQuest.Text" xml:space="preserve">
<value>Quest</value>
</data>
<data name="GrpQuestFilters.Text" xml:space="preserve">
<value>List Filter</value>
</data> </data>
<data name="ChkQuestFilterTEST.Size" type="System.Drawing.Size, System.Drawing"> <data name="ChkQuestFilterTEST.Size" type="System.Drawing.Size, System.Drawing">
<value>51, 21</value> <value>51, 21</value>
@@ -951,6 +714,9 @@ In the command, you can use ~ to indicate the current position, and ~N to indica
<data name="ChkQuestFilterHIDDEN.Text" xml:space="preserve"> <data name="ChkQuestFilterHIDDEN.Text" xml:space="preserve">
<value>Hidden</value> <value>Hidden</value>
</data> </data>
<data name="GrpQuestFilters.Text" xml:space="preserve">
<value>List Filter</value>
</data>
<data name="BtnFinishQuest.Text" xml:space="preserve"> <data name="BtnFinishQuest.Text" xml:space="preserve">
<value>Finish</value> <value>Finish</value>
</data> </data>
@@ -962,192 +728,18 @@ In the command, you can use ~ to indicate the current position, and ~N to indica
Tip: Many quest require server-side scripting support Tip: Many quest require server-side scripting support
Therefore, the quest can be added and finished, but not necessarily work.</value> Therefore, the quest can be added and finished, but not necessarily work.</value>
</data> </data>
<data name="TPArtifact.Location" type="System.Drawing.Point, System.Drawing"> <data name="TPQuest.Text" xml:space="preserve">
<value>4, 26</value> <value>Quest</value>
</data>
<data name="TPArtifact.Size" type="System.Drawing.Size, System.Drawing">
<value>652, 245</value>
</data> </data>
<data name="TPArtifact.Text" xml:space="preserve"> <data name="TPArtifact.Text" xml:space="preserve">
<value>Artifacts</value> <value>Artifacts</value>
</data> </data>
<data name="BtnAddSubAttr.Text" xml:space="preserve">
<value>+ Add</value>
</data>
<data name="LblArtifactPart.Size" type="System.Drawing.Size, System.Drawing">
<value>31, 17</value>
</data>
<data name="LblArtifactPart.Text" xml:space="preserve">
<value>Part</value>
</data>
<data name="LblArtifactSet.Location" type="System.Drawing.Point, System.Drawing">
<value>112, 11</value>
</data>
<data name="LblArtifactSet.Size" type="System.Drawing.Size, System.Drawing">
<value>49, 17</value>
</data>
<data name="LblArtifactSet.Text" xml:space="preserve">
<value>Artifact</value>
</data>
<data name="LblClearSubAttrCheckedList.Size" type="System.Drawing.Size, System.Drawing">
<value>50, 17</value>
</data>
<data name="LblClearSubAttrCheckedList.Text" xml:space="preserve">
<value>X Clear</value>
</data>
<data name="LblArtifactLevel.Location" type="System.Drawing.Point, System.Drawing">
<value>124, 41</value>
</data>
<data name="LblArtifactLevel.Size" type="System.Drawing.Size, System.Drawing">
<value>37, 17</value>
</data>
<data name="LblArtifactLevel.Text" xml:space="preserve">
<value>Level</value>
</data>
<data name="LblSubAttribution.Location" type="System.Drawing.Point, System.Drawing">
<value>105, 102</value>
</data>
<data name="LblSubAttribution.Size" type="System.Drawing.Size, System.Drawing">
<value>56, 17</value>
</data>
<data name="LblSubAttribution.Text" xml:space="preserve">
<value>Sub Stat</value>
</data>
<data name="LblMainAttribution.Location" type="System.Drawing.Point, System.Drawing">
<value>98, 71</value>
</data>
<data name="LblMainAttribution.Size" type="System.Drawing.Size, System.Drawing">
<value>63, 17</value>
</data>
<data name="LblMainAttribution.Text" xml:space="preserve">
<value>Main Stat</value>
</data>
<data name="LblArtifactStars.Size" type="System.Drawing.Size, System.Drawing">
<value>37, 17</value>
</data>
<data name="LblArtifactStars.Text" xml:space="preserve">
<value>Stars</value>
</data>
<data name="TPCustom.Location" type="System.Drawing.Point, System.Drawing">
<value>4, 26</value>
</data>
<data name="TPCustom.Size" type="System.Drawing.Size, System.Drawing">
<value>652, 245</value>
</data>
<data name="TPCustom.Text" xml:space="preserve"> <data name="TPCustom.Text" xml:space="preserve">
<value>Custom</value> <value>Custom</value>
</data> </data>
<data name="BtnExportCustomCommands.Location" type="System.Drawing.Point, System.Drawing">
<value>583, 216</value>
</data>
<data name="BtnExportCustomCommands.Size" type="System.Drawing.Size, System.Drawing">
<value>60, 23</value>
</data>
<data name="BtnExportCustomCommands.Text" xml:space="preserve">
<value>Export</value>
</data>
<data name="BtnLoadCustomCommands.Location" type="System.Drawing.Point, System.Drawing">
<value>517, 216</value>
</data>
<data name="BtnLoadCustomCommands.Size" type="System.Drawing.Size, System.Drawing">
<value>60, 23</value>
</data>
<data name="BtnLoadCustomCommands.Text" xml:space="preserve">
<value>Load</value>
</data>
<data name="LblCustomName.Size" type="System.Drawing.Size, System.Drawing">
<value>30, 17</value>
</data>
<data name="LblCustomName.Text" xml:space="preserve">
<value>Tag</value>
</data>
<data name="groupBox1.Text" xml:space="preserve">
<value>List</value>
</data>
<data name="LnkResetCustomCommands.Location" type="System.Drawing.Point, System.Drawing">
<value>581, -1</value>
</data>
<data name="LnkResetCustomCommands.Size" type="System.Drawing.Size, System.Drawing">
<value>53, 17</value>
</data>
<data name="LnkResetCustomCommands.Text" xml:space="preserve">
<value>Restore</value>
</data>
<data name="BtnRemoveCustomCommand.Location" type="System.Drawing.Point, System.Drawing">
<value>443, 216</value>
</data>
<data name="BtnRemoveCustomCommand.Size" type="System.Drawing.Size, System.Drawing">
<value>70, 23</value>
</data>
<data name="BtnRemoveCustomCommand.Text" xml:space="preserve">
<value>x Delete</value>
</data>
<data name="BtnSaveCustomCommand.Location" type="System.Drawing.Point, System.Drawing">
<value>367, 216</value>
</data>
<data name="BtnSaveCustomCommand.Size" type="System.Drawing.Size, System.Drawing">
<value>70, 23</value>
</data>
<data name="BtnSaveCustomCommand.Text" xml:space="preserve">
<value>√ Save</value>
</data>
<data name="TxtCustomName.Size" type="System.Drawing.Size, System.Drawing">
<value>317, 23</value>
</data>
<data name="TPHome.Text" xml:space="preserve"> <data name="TPHome.Text" xml:space="preserve">
<value>Home</value> <value>Home</value>
</data> </data>
<data name="BtnOpenShopEditor.Text" xml:space="preserve">
<value>Shop Editor</value>
</data>
<data name="BtnOpenDropEditor.Location" type="System.Drawing.Point, System.Drawing">
<value>546, 216</value>
</data>
<data name="BtnOpenDropEditor.Text" xml:space="preserve">
<value>Drop Editor</value>
</data>
<data name="LblAbout.Location" type="System.Drawing.Point, System.Drawing">
<value>74, 38</value>
</data>
<data name="LblAbout.Size" type="System.Drawing.Size, System.Drawing">
<value>158, 24</value>
</data>
<data name="LblAbout.Text" xml:space="preserve">
<value>Have a nice time!</value>
</data>
<data name="BtnOpenTextMap.Size" type="System.Drawing.Size, System.Drawing">
<value>120, 23</value>
</data>
<data name="BtnOpenTextMap.Text" xml:space="preserve">
<value>TextMapBrowser</value>
</data>
<data name="BtnOpenGachaBannerEditor.Text" xml:space="preserve">
<value>Banner Editor</value>
</data>
<data name="GrpSettings.Text" xml:space="preserve">
<value>Settings</value>
</data>
<data name="ChkTopMost.Size" type="System.Drawing.Size, System.Drawing">
<value>109, 21</value>
</data>
<data name="ChkTopMost.Text" xml:space="preserve">
<value>Always on top</value>
</data>
<data name="ChkIncludeUID.Size" type="System.Drawing.Size, System.Drawing">
<value>95, 21</value>
</data>
<data name="ChkIncludeUID.Text" xml:space="preserve">
<value>Include UID</value>
</data>
<data name="TPMail.Location" type="System.Drawing.Point, System.Drawing">
<value>4, 26</value>
</data>
<data name="TPMail.Size" type="System.Drawing.Size, System.Drawing">
<value>652, 245</value>
</data>
<data name="TPMail.Text" xml:space="preserve">
<value>Mail</value>
</data>
<data name="BtnAddMailItem.Text" xml:space="preserve"> <data name="BtnAddMailItem.Text" xml:space="preserve">
<value>+ Add</value> <value>+ Add</value>
</data> </data>
@@ -1178,15 +770,6 @@ Therefore, the quest can be added and finished, but not necessarily work.</value
<data name="LblMailItemLevel.Text" xml:space="preserve"> <data name="LblMailItemLevel.Text" xml:space="preserve">
<value>Level:</value> <value>Level:</value>
</data> </data>
<data name="TPMailList.Location" type="System.Drawing.Point, System.Drawing">
<value>4, 26</value>
</data>
<data name="TPMailList.Size" type="System.Drawing.Size, System.Drawing">
<value>228, 200</value>
</data>
<data name="PanelMailListControls.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 169</value>
</data>
<data name="BtnClearMail.Location" type="System.Drawing.Point, System.Drawing"> <data name="BtnClearMail.Location" type="System.Drawing.Point, System.Drawing">
<value>84, 4</value> <value>84, 4</value>
</data> </data>
@@ -1241,8 +824,7 @@ Therefore, the quest can be added and finished, but not necessarily work.</value
<data name="LblMailSenderLabel.Text" xml:space="preserve"> <data name="LblMailSenderLabel.Text" xml:space="preserve">
<value>Sender:</value> <value>Sender:</value>
</data> </data>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" /> <data name="TPMail.Text" xml:space="preserve">
<data name="$this.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms"> <value>Mail</value>
<value>Inherit</value>
</data> </data>
</root> </root>

File diff suppressed because it is too large Load Diff

View File

@@ -151,175 +151,9 @@
<data name="BtnInvokeOpenCommand.Text" xml:space="preserve"> <data name="BtnInvokeOpenCommand.Text" xml:space="preserve">
<value>Выполнить (F5)</value> <value>Выполнить (F5)</value>
</data> </data>
<data name="TPRemoteCall.Location" type="System.Drawing.Point, System.Drawing">
<value>4, 26</value>
</data>
<data name="TPRemoteCall.Size" type="System.Drawing.Size, System.Drawing">
<value>652, 245</value>
</data>
<data name="TPRemoteCall.Text" xml:space="preserve"> <data name="TPRemoteCall.Text" xml:space="preserve">
<value>OpenCommand</value> <value>OpenCommand</value>
</data> </data>
<data name="LnkInventoryKamera.Text" xml:space="preserve">
<value>InventoryKamera</value>
</data>
<data name="LblGOODHelp.Text" xml:space="preserve">
<value>Приходите и импортируйте свой официальный архив сервера в GC!</value>
</data>
<data name="ButtonOpenGOODImport.Text" xml:space="preserve">
<value>Импортировать GOOD</value>
</data>
<data name="LblHostTip.Location" type="System.Drawing.Point, System.Drawing">
<value>83, 16</value>
</data>
<data name="LblHostTip.Size" type="System.Drawing.Size, System.Drawing">
<value>346, 17</value>
</data>
<data name="LblHostTip.Text" xml:space="preserve">
<value>Убедитесь, что https:// или http:// включены в IP-адрес.</value>
</data>
<data name="GrpServerStatus.Text" xml:space="preserve">
<value>Состояние сервера</value>
</data>
<data name="LnkOpenCommandLabel.Location" type="System.Drawing.Point, System.Drawing">
<value>13, 63</value>
</data>
<data name="LnkOpenCommandLabel.Size" type="System.Drawing.Size, System.Drawing">
<value>100, 17</value>
</data>
<data name="LnkOpenCommandLabel.Text" xml:space="preserve">
<value>OpenCommand</value>
</data>
<data name="LblOpenCommandSupport.Location" type="System.Drawing.Point, System.Drawing">
<value>119, 63</value>
</data>
<data name="LblServerVersion.Location" type="System.Drawing.Point, System.Drawing">
<value>119, 29</value>
</data>
<data name="LblPlayerCount.Location" type="System.Drawing.Point, System.Drawing">
<value>119, 46</value>
</data>
<data name="LblServerVersionLabel.Location" type="System.Drawing.Point, System.Drawing">
<value>27, 29</value>
</data>
<data name="LblServerVersionLabel.Size" type="System.Drawing.Size, System.Drawing">
<value>86, 17</value>
</data>
<data name="LblServerVersionLabel.Text" xml:space="preserve">
<value>Версия игры</value>
</data>
<data name="LblPlayerCountLabel.Location" type="System.Drawing.Point, System.Drawing">
<value>7, 46</value>
</data>
<data name="LblPlayerCountLabel.Size" type="System.Drawing.Size, System.Drawing">
<value>106, 17</value>
</data>
<data name="LblPlayerCountLabel.Text" xml:space="preserve">
<value>Кол-во игроков</value>
</data>
<data name="GrpRemoteCommand.Text" xml:space="preserve">
<value>Удалить ячейку</value>
</data>
<data name="TPPlayerCheck.Location" type="System.Drawing.Point, System.Drawing">
<value>4, 26</value>
</data>
<data name="TPPlayerCheck.Size" type="System.Drawing.Size, System.Drawing">
<value>296, 109</value>
</data>
<data name="TPPlayerCheck.Text" xml:space="preserve">
<value>Игрок</value>
</data>
<data name="LnkRCHelp.Location" type="System.Drawing.Point, System.Drawing">
<value>176, 15</value>
</data>
<data name="LnkRCHelp.Size" type="System.Drawing.Size, System.Drawing">
<value>60, 17</value>
</data>
<data name="LnkRCHelp.Text" xml:space="preserve">
<value>Помощь</value>
</data>
<data name="NUDRemotePlayerId.Location" type="System.Drawing.Point, System.Drawing">
<value>52, 13</value>
</data>
<data name="BtnConnectOpenCommand.Location" type="System.Drawing.Point, System.Drawing">
<value>93, 81</value>
</data>
<data name="BtnConnectOpenCommand.Size" type="System.Drawing.Size, System.Drawing">
<value>110, 23</value>
</data>
<data name="BtnConnectOpenCommand.Text" xml:space="preserve">
<value>Подключиться</value>
</data>
<data name="LblVerificationCode.Size" type="System.Drawing.Size, System.Drawing">
<value>31, 17</value>
</data>
<data name="LblVerificationCode.Text" xml:space="preserve">
<value>Код</value>
</data>
<data name="BtnSendVerificationCode.Location" type="System.Drawing.Point, System.Drawing">
<value>176, 42</value>
</data>
<data name="BtnSendVerificationCode.Size" type="System.Drawing.Size, System.Drawing">
<value>110, 23</value>
</data>
<data name="BtnSendVerificationCode.Text" xml:space="preserve">
<value>Отправить код</value>
</data>
<data name="NUDVerificationCode.Location" type="System.Drawing.Point, System.Drawing">
<value>52, 42</value>
</data>
<data name="LblRemotePlayerId.Location" type="System.Drawing.Point, System.Drawing">
<value>16, 15</value>
</data>
<data name="TPConsoleCheck.Size" type="System.Drawing.Size, System.Drawing">
<value>296, 111</value>
</data>
<data name="TPConsoleCheck.Text" xml:space="preserve">
<value>Консоль</value>
</data>
<data name="BtnConsoleConnect.Text" xml:space="preserve">
<value>Подключиться (консоль)</value>
</data>
<data name="LblConsoleTip.Font" type="System.Drawing.Font, System.Drawing">
<value>Microsoft YaHei UI, 8pt, style=Italic</value>
</data>
<data name="LblConsoleTip.Location" type="System.Drawing.Point, System.Drawing">
<value>15, 34</value>
</data>
<data name="LblConsoleTip.Size" type="System.Drawing.Size, System.Drawing">
<value>275, 48</value>
</data>
<data name="LblConsoleTip.Text" xml:space="preserve">
<value>Обратите внимание, что обычные команды в консоли должны указывать UID цели
(установите галочку галочку "Включить UID" на главной)</value>
</data>
<data name="TxtHost.Location" type="System.Drawing.Point, System.Drawing">
<value>111, 36</value>
</data>
<data name="TxtHost.Size" type="System.Drawing.Size, System.Drawing">
<value>204, 23</value>
</data>
<data name="BtnQueryServerStatus.Location" type="System.Drawing.Point, System.Drawing">
<value>317, 36</value>
</data>
<data name="BtnQueryServerStatus.Size" type="System.Drawing.Size, System.Drawing">
<value>65, 23</value>
</data>
<data name="BtnQueryServerStatus.Text" xml:space="preserve">
<value>Запрос</value>
</data>
<data name="LblHost.Size" type="System.Drawing.Size, System.Drawing">
<value>35, 17</value>
</data>
<data name="LblHost.Text" xml:space="preserve">
<value>Хост</value>
</data>
<data name="TPAbout.Location" type="System.Drawing.Point, System.Drawing">
<value>4, 26</value>
</data>
<data name="TPAbout.Size" type="System.Drawing.Size, System.Drawing">
<value>652, 245</value>
</data>
<data name="TPAbout.Text" xml:space="preserve"> <data name="TPAbout.Text" xml:space="preserve">
<value>Справка</value> <value>Справка</value>
</data> </data>
@@ -339,12 +173,6 @@
Спасибо: Dhar_Jinxed Спасибо: Dhar_Jinxed
</value> </value>
</data> </data>
<data name="TPManage.Location" type="System.Drawing.Point, System.Drawing">
<value>4, 26</value>
</data>
<data name="TPManage.Size" type="System.Drawing.Size, System.Drawing">
<value>652, 245</value>
</data>
<data name="TPManage.Text" xml:space="preserve"> <data name="TPManage.Text" xml:space="preserve">
<value>Аккаунты</value> <value>Аккаунты</value>
</data> </data>
@@ -591,12 +419,6 @@
Подсказка: вы можете быстро телепортироваться через отметку «рыболовный крючок» на миникарте в игре. Подсказка: вы можете быстро телепортироваться через отметку «рыболовный крючок» на миникарте в игре.
В команде вы можете использовать ~, чтобы указать текущую позицию, и ~N, чтобы указать смещение на N относительно текущей позиции</value> В команде вы можете использовать ~, чтобы указать текущую позицию, и ~N, чтобы указать смещение на N относительно текущей позиции</value>
</data> </data>
<data name="TPItem.Location" type="System.Drawing.Point, System.Drawing">
<value>4, 26</value>
</data>
<data name="TPItem.Size" type="System.Drawing.Size, System.Drawing">
<value>652, 245</value>
</data>
<data name="TPItem.Text" xml:space="preserve"> <data name="TPItem.Text" xml:space="preserve">
<value>Предметы</value> <value>Предметы</value>
</data> </data>
@@ -672,69 +494,12 @@
<data name="LblGiveCommandDescription.Text" xml:space="preserve"> <data name="LblGiveCommandDescription.Text" xml:space="preserve">
<value>Дать предмет игроку</value> <value>Дать предмет игроку</value>
</data> </data>
<data name="TPWeapon.Location" type="System.Drawing.Point, System.Drawing">
<value>4, 26</value>
</data>
<data name="TPWeapon.Size" type="System.Drawing.Size, System.Drawing">
<value>652, 245</value>
</data>
<data name="TPWeapon.Text" xml:space="preserve"> <data name="TPWeapon.Text" xml:space="preserve">
<value>Оружие</value> <value>Оружие</value>
</data> </data>
<data name="BtnGiveAllWeapons.Text" xml:space="preserve">
<value>Дать всё оружие</value>
</data>
<data name="LblWeaponDescription.Size" type="System.Drawing.Size, System.Drawing">
<value>87, 17</value>
</data>
<data name="LblWeaponDescription.Text" xml:space="preserve">
<value>Дать оружие</value>
</data>
<data name="LblWeaponRefinement.Location" type="System.Drawing.Point, System.Drawing">
<value>207, 218</value>
</data>
<data name="LblWeaponRefinement.Size" type="System.Drawing.Size, System.Drawing">
<value>115, 17</value>
</data>
<data name="LblWeaponRefinement.Text" xml:space="preserve">
<value>Ур. пробуждения</value>
</data>
<data name="LblWeaponAmount.Size" type="System.Drawing.Size, System.Drawing">
<value>51, 17</value>
</data>
<data name="LblWeaponAmount.Text" xml:space="preserve">
<value>Кол-во</value>
</data>
<data name="LblWeaponLevel.Location" type="System.Drawing.Point, System.Drawing">
<value>119, 218</value>
</data>
<data name="LblWeaponLevel.Size" type="System.Drawing.Size, System.Drawing">
<value>26, 17</value>
</data>
<data name="LblWeaponLevel.Text" xml:space="preserve">
<value>Ур.</value>
</data>
<data name="NUDWeaponRefinement.Location" type="System.Drawing.Point, System.Drawing">
<value>323, 216</value>
</data>
<data name="NUDWeaponAmout.Location" type="System.Drawing.Point, System.Drawing">
<value>63, 216</value>
</data>
<data name="NUDWeaponLevel.Location" type="System.Drawing.Point, System.Drawing">
<value>151, 216</value>
</data>
<data name="TPAvatar.Location" type="System.Drawing.Point, System.Drawing">
<value>4, 26</value>
</data>
<data name="TPAvatar.Size" type="System.Drawing.Size, System.Drawing">
<value>652, 245</value>
</data>
<data name="TPAvatar.Text" xml:space="preserve"> <data name="TPAvatar.Text" xml:space="preserve">
<value>Персонаж</value> <value>Персонаж</value>
</data> </data>
<data name="GrpSetConstellation.Location" type="System.Drawing.Point, System.Drawing">
<value>288, 172</value>
</data>
<data name="GrpSetConstellation.Text" xml:space="preserve"> <data name="GrpSetConstellation.Text" xml:space="preserve">
<value>Установить созвездие</value> <value>Установить созвездие</value>
</data> </data>
@@ -753,9 +518,6 @@
<data name="LnkSetConst.Text" xml:space="preserve"> <data name="LnkSetConst.Text" xml:space="preserve">
<value>текущий</value> <value>текущий</value>
</data> </data>
<data name="GrpSetStats.Location" type="System.Drawing.Point, System.Drawing">
<value>288, 9</value>
</data>
<data name="GrpSetStats.Text" xml:space="preserve"> <data name="GrpSetStats.Text" xml:space="preserve">
<value>Статистика</value> <value>Статистика</value>
</data> </data>
@@ -771,9 +533,6 @@
<data name="LblStatTip.Text" xml:space="preserve"> <data name="LblStatTip.Text" xml:space="preserve">
<value>Подсказка</value> <value>Подсказка</value>
</data> </data>
<data name="GrpTalentLevel.Location" type="System.Drawing.Point, System.Drawing">
<value>288, 111</value>
</data>
<data name="GrpTalentLevel.Text" xml:space="preserve"> <data name="GrpTalentLevel.Text" xml:space="preserve">
<value>Уровень таланта</value> <value>Уровень таланта</value>
</data> </data>
@@ -816,9 +575,6 @@
<data name="NUDTalentLevel.Size" type="System.Drawing.Size, System.Drawing"> <data name="NUDTalentLevel.Size" type="System.Drawing.Size, System.Drawing">
<value>94, 23</value> <value>94, 23</value>
</data> </data>
<data name="GrpGiveAvatar.Location" type="System.Drawing.Point, System.Drawing">
<value>32, 9</value>
</data>
<data name="GrpGiveAvatar.Text" xml:space="preserve"> <data name="GrpGiveAvatar.Text" xml:space="preserve">
<value>Выдать персонажа</value> <value>Выдать персонажа</value>
</data> </data>
@@ -924,21 +680,9 @@
<data name="NUDAvatarSkillLevel.Size" type="System.Drawing.Size, System.Drawing"> <data name="NUDAvatarSkillLevel.Size" type="System.Drawing.Size, System.Drawing">
<value>114, 23</value> <value>114, 23</value>
</data> </data>
<data name="TPSpawn.Location" type="System.Drawing.Point, System.Drawing">
<value>4, 26</value>
</data>
<data name="TPSpawn.Size" type="System.Drawing.Size, System.Drawing">
<value>652, 245</value>
</data>
<data name="TPSpawn.Text" xml:space="preserve"> <data name="TPSpawn.Text" xml:space="preserve">
<value>Спавн</value> <value>Спавн</value>
</data> </data>
<data name="TPSpawnArgs.Location" type="System.Drawing.Point, System.Drawing">
<value>4, 26</value>
</data>
<data name="TPSpawnArgs.Size" type="System.Drawing.Size, System.Drawing">
<value>338, 203</value>
</data>
<data name="TPSpawnArgs.Text" xml:space="preserve"> <data name="TPSpawnArgs.Text" xml:space="preserve">
<value>Спавн</value> <value>Спавн</value>
</data> </data>
@@ -996,12 +740,6 @@
<data name="LblEntityAmount.Text" xml:space="preserve"> <data name="LblEntityAmount.Text" xml:space="preserve">
<value>Кол.</value> <value>Кол.</value>
</data> </data>
<data name="TPAttackModArgs.Location" type="System.Drawing.Point, System.Drawing">
<value>4, 26</value>
</data>
<data name="TPAttackModArgs.Size" type="System.Drawing.Size, System.Drawing">
<value>338, 203</value>
</data>
<data name="TPAttackModArgs.Text" xml:space="preserve"> <data name="TPAttackModArgs.Text" xml:space="preserve">
<value>Изменение атаки</value> <value>Изменение атаки</value>
</data> </data>
@@ -1101,18 +839,9 @@
<data name="LblAiwiPlugin.Text" xml:space="preserve"> <data name="LblAiwiPlugin.Text" xml:space="preserve">
<value>Плагин</value> <value>Плагин</value>
</data> </data>
<data name="TPSpawnItems.Location" type="System.Drawing.Point, System.Drawing">
<value>4, 26</value>
</data>
<data name="TPSpawnItems.Size" type="System.Drawing.Size, System.Drawing">
<value>280, 203</value>
</data>
<data name="TPSpawnItems.Text" xml:space="preserve"> <data name="TPSpawnItems.Text" xml:space="preserve">
<value>Список объектов</value> <value>Список объектов</value>
</data> </data>
<data name="ListEntity.Size" type="System.Drawing.Size, System.Drawing">
<value>274, 167</value>
</data>
<data name="TPSpawnRecords.Text" xml:space="preserve"> <data name="TPSpawnRecords.Text" xml:space="preserve">
<value>Записи спавнов</value> <value>Записи спавнов</value>
</data> </data>
@@ -1140,12 +869,6 @@
<data name="LblClearSpawnLogs.Text" xml:space="preserve"> <data name="LblClearSpawnLogs.Text" xml:space="preserve">
<value>X Очистить</value> <value>X Очистить</value>
</data> </data>
<data name="TPQuest.Location" type="System.Drawing.Point, System.Drawing">
<value>4, 26</value>
</data>
<data name="TPQuest.Size" type="System.Drawing.Size, System.Drawing">
<value>652, 245</value>
</data>
<data name="TPQuest.Text" xml:space="preserve"> <data name="TPQuest.Text" xml:space="preserve">
<value>Квест</value> <value>Квест</value>
</data> </data>
@@ -1181,234 +904,15 @@
Внимание: для многих квестов требуются скрипты таковых на стороне сервера. Внимание: для многих квестов требуются скрипты таковых на стороне сервера.
Поэтому квест может быть добавлен или отозван через консоль, но завершён игроком - вряд ли.</value> Поэтому квест может быть добавлен или отозван через консоль, но завершён игроком - вряд ли.</value>
</data> </data>
<data name="TPArtifact.Location" type="System.Drawing.Point, System.Drawing">
<value>4, 26</value>
</data>
<data name="TPArtifact.Size" type="System.Drawing.Size, System.Drawing">
<value>652, 245</value>
</data>
<data name="TPArtifact.Text" xml:space="preserve"> <data name="TPArtifact.Text" xml:space="preserve">
<value>Артефакт</value> <value>Артефакт</value>
</data> </data>
<data name="BtnAddSubAttr.Size" type="System.Drawing.Size, System.Drawing">
<value>100, 23</value>
</data>
<data name="BtnAddSubAttr.Text" xml:space="preserve">
<value>+ Добавить</value>
</data>
<data name="LblArtifactPart.Location" type="System.Drawing.Point, System.Drawing">
<value>306, 11</value>
</data>
<data name="LblArtifactPart.Size" type="System.Drawing.Size, System.Drawing">
<value>42, 17</value>
</data>
<data name="LblArtifactPart.Text" xml:space="preserve">
<value>Часть</value>
</data>
<data name="CmbArtifactPart.Location" type="System.Drawing.Point, System.Drawing">
<value>349, 8</value>
</data>
<data name="CmbArtifactPart.Size" type="System.Drawing.Size, System.Drawing">
<value>107, 25</value>
</data>
<data name="LblArtifactSet.Location" type="System.Drawing.Point, System.Drawing">
<value>97, 11</value>
</data>
<data name="LblArtifactSet.Size" type="System.Drawing.Size, System.Drawing">
<value>64, 17</value>
</data>
<data name="LblArtifactSet.Text" xml:space="preserve">
<value>Артефакт</value>
</data>
<data name="LblClearSubAttrCheckedList.Size" type="System.Drawing.Size, System.Drawing">
<value>76, 17</value>
</data>
<data name="LblClearSubAttrCheckedList.Text" xml:space="preserve">
<value>X Очистить</value>
</data>
<data name="LblArtifactLevel.Location" type="System.Drawing.Point, System.Drawing">
<value>101, 41</value>
</data>
<data name="LblArtifactLevel.Size" type="System.Drawing.Size, System.Drawing">
<value>60, 17</value>
</data>
<data name="LblArtifactLevel.Text" xml:space="preserve">
<value>Уровень</value>
</data>
<data name="LblSubAttribution.Location" type="System.Drawing.Point, System.Drawing">
<value>96, 101</value>
</data>
<data name="LblSubAttribution.Size" type="System.Drawing.Size, System.Drawing">
<value>65, 17</value>
</data>
<data name="LblSubAttribution.Text" xml:space="preserve">
<value>Всп. Стат.</value>
</data>
<data name="LblMainAttribution.Location" type="System.Drawing.Point, System.Drawing">
<value>79, 71</value>
</data>
<data name="LblMainAttribution.Size" type="System.Drawing.Size, System.Drawing">
<value>82, 17</value>
</data>
<data name="LblMainAttribution.Text" xml:space="preserve">
<value>Основ. Стат.</value>
</data>
<data name="LblArtifactStars.Location" type="System.Drawing.Point, System.Drawing">
<value>333, 41</value>
</data>
<data name="LblArtifactStars.Size" type="System.Drawing.Size, System.Drawing">
<value>51, 17</value>
</data>
<data name="LblArtifactStars.Text" xml:space="preserve">
<value>Звезды</value>
</data>
<data name="TPCustom.Location" type="System.Drawing.Point, System.Drawing">
<value>4, 26</value>
</data>
<data name="TPCustom.Size" type="System.Drawing.Size, System.Drawing">
<value>652, 245</value>
</data>
<data name="TPCustom.Text" xml:space="preserve"> <data name="TPCustom.Text" xml:space="preserve">
<value>Кастомное</value> <value>Кастомное</value>
</data> </data>
<data name="BtnExportCustomCommands.Location" type="System.Drawing.Point, System.Drawing">
<value>536, 216</value>
</data>
<data name="BtnExportCustomCommands.Size" type="System.Drawing.Size, System.Drawing">
<value>70, 23</value>
</data>
<data name="BtnExportCustomCommands.Text" xml:space="preserve">
<value>Экспорт</value>
</data>
<data name="BtnLoadCustomCommands.Location" type="System.Drawing.Point, System.Drawing">
<value>450, 216</value>
</data>
<data name="BtnLoadCustomCommands.Size" type="System.Drawing.Size, System.Drawing">
<value>80, 23</value>
</data>
<data name="BtnLoadCustomCommands.Text" xml:space="preserve">
<value>Загрузить</value>
</data>
<data name="LblCustomName.Size" type="System.Drawing.Size, System.Drawing">
<value>34, 17</value>
</data>
<data name="LblCustomName.Text" xml:space="preserve">
<value>Имя</value>
</data>
<data name="groupBox1.Text" xml:space="preserve">
<value>Список</value>
</data>
<data name="LnkResetCustomCommands.Location" type="System.Drawing.Point, System.Drawing">
<value>535, -1</value>
</data>
<data name="LnkResetCustomCommands.Size" type="System.Drawing.Size, System.Drawing">
<value>66, 17</value>
</data>
<data name="LnkResetCustomCommands.Text" xml:space="preserve">
<value>Сбросить</value>
</data>
<data name="BtnRemoveCustomCommand.Location" type="System.Drawing.Point, System.Drawing">
<value>369, 216</value>
</data>
<data name="BtnRemoveCustomCommand.Size" type="System.Drawing.Size, System.Drawing">
<value>75, 23</value>
</data>
<data name="BtnRemoveCustomCommand.Text" xml:space="preserve">
<value>x Удалить</value>
</data>
<data name="BtnSaveCustomCommand.Location" type="System.Drawing.Point, System.Drawing">
<value>268, 216</value>
</data>
<data name="BtnSaveCustomCommand.Size" type="System.Drawing.Size, System.Drawing">
<value>95, 23</value>
</data>
<data name="BtnSaveCustomCommand.Text" xml:space="preserve">
<value>√ Сохранить</value>
</data>
<data name="TxtCustomName.Location" type="System.Drawing.Point, System.Drawing">
<value>58, 216</value>
</data>
<data name="TxtCustomName.Size" type="System.Drawing.Size, System.Drawing">
<value>204, 23</value>
</data>
<data name="TPHome.Text" xml:space="preserve"> <data name="TPHome.Text" xml:space="preserve">
<value>Главная</value> <value>Главная</value>
</data> </data>
<data name="BtnOpenShopEditor.Location" type="System.Drawing.Point, System.Drawing">
<value>313, 179</value>
</data>
<data name="BtnOpenShopEditor.Size" type="System.Drawing.Size, System.Drawing">
<value>140, 23</value>
</data>
<data name="BtnOpenShopEditor.Text" xml:space="preserve">
<value>Редактор магазина</value>
</data>
<data name="BtnOpenDropEditor.Location" type="System.Drawing.Point, System.Drawing">
<value>459, 208</value>
</data>
<data name="BtnOpenDropEditor.Size" type="System.Drawing.Size, System.Drawing">
<value>187, 23</value>
</data>
<data name="BtnOpenDropEditor.Text" xml:space="preserve">
<value>Редактор дропа</value>
</data>
<data name="LnkNewVersion.Location" type="System.Drawing.Point, System.Drawing">
<value>6, 100</value>
</data>
<data name="LblAbout.Location" type="System.Drawing.Point, System.Drawing">
<value>12, 37</value>
</data>
<data name="LblAbout.Size" type="System.Drawing.Size, System.Drawing">
<value>314, 24</value>
</data>
<data name="LblAbout.Text" xml:space="preserve">
<value>Желаем приятно провести время!</value>
</data>
<data name="BtnOpenTextMap.Location" type="System.Drawing.Point, System.Drawing">
<value>526, 179</value>
</data>
<data name="BtnOpenTextMap.Size" type="System.Drawing.Size, System.Drawing">
<value>120, 23</value>
</data>
<data name="BtnOpenTextMap.Text" xml:space="preserve">
<value>Браузер карт</value>
</data>
<data name="BtnOpenGachaBannerEditor.Location" type="System.Drawing.Point, System.Drawing">
<value>313, 208</value>
</data>
<data name="BtnOpenGachaBannerEditor.Size" type="System.Drawing.Size, System.Drawing">
<value>140, 23</value>
</data>
<data name="BtnOpenGachaBannerEditor.Text" xml:space="preserve">
<value>Редактор баннеров</value>
</data>
<data name="GrasscutterToolsIcon.Size" type="System.Drawing.Size, System.Drawing">
<value>333, 196</value>
</data>
<data name="GrpSettings.Location" type="System.Drawing.Point, System.Drawing">
<value>6, 120</value>
</data>
<data name="GrpSettings.Text" xml:space="preserve">
<value>Настройки</value>
</data>
<data name="ChkTopMost.Size" type="System.Drawing.Size, System.Drawing">
<value>140, 21</value>
</data>
<data name="ChkTopMost.Text" xml:space="preserve">
<value>Последняя версия</value>
</data>
<data name="ChkIncludeUID.Size" type="System.Drawing.Size, System.Drawing">
<value>113, 21</value>
</data>
<data name="ChkIncludeUID.Text" xml:space="preserve">
<value>Включить UID</value>
</data>
<data name="TPMail.Location" type="System.Drawing.Point, System.Drawing">
<value>4, 26</value>
</data>
<data name="TPMail.Size" type="System.Drawing.Size, System.Drawing">
<value>652, 245</value>
</data>
<data name="TPMail.Text" xml:space="preserve"> <data name="TPMail.Text" xml:space="preserve">
<value>Почта</value> <value>Почта</value>
</data> </data>
@@ -1457,18 +961,9 @@
<data name="LblMailItemLevel.Text" xml:space="preserve"> <data name="LblMailItemLevel.Text" xml:space="preserve">
<value>Уровень</value> <value>Уровень</value>
</data> </data>
<data name="TPMailList.Location" type="System.Drawing.Point, System.Drawing">
<value>4, 26</value>
</data>
<data name="TPMailList.Size" type="System.Drawing.Size, System.Drawing">
<value>228, 200</value>
</data>
<data name="TPMailList.Text" xml:space="preserve"> <data name="TPMailList.Text" xml:space="preserve">
<value>Список рассылки</value> <value>Список рассылки</value>
</data> </data>
<data name="PanelMailListControls.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 169</value>
</data>
<data name="BtnClearMail.Location" type="System.Drawing.Point, System.Drawing"> <data name="BtnClearMail.Location" type="System.Drawing.Point, System.Drawing">
<value>114, 5</value> <value>114, 5</value>
</data> </data>
@@ -1568,8 +1063,4 @@
<data name="LblMailSenderLabel.Text" xml:space="preserve"> <data name="LblMailSenderLabel.Text" xml:space="preserve">
<value>Отправитель:</value> <value>Отправитель:</value>
</data> </data>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="$this.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>Inherit</value>
</data>
</root> </root>

View File

@@ -129,64 +129,12 @@
<data name="GrpCommand.Text" xml:space="preserve"> <data name="GrpCommand.Text" xml:space="preserve">
<value>命令 - [Ctrl] 自動執行 - [Shift] 拼接命令 - [Alt] 僅執行 - [|] 分割多條命令</value> <value>命令 - [Ctrl] 自動執行 - [Shift] 拼接命令 - [Alt] 僅執行 - [|] 分割多條命令</value>
</data> </data>
<data name="LnkInventoryKamera.Text" xml:space="preserve">
<value>存檔掃描開源工具</value>
</data>
<data name="LblGOODHelp.Text" xml:space="preserve">
<value>快來把你的官服存檔導入GC吧</value>
</data>
<data name="ButtonOpenGOODImport.Text" xml:space="preserve">
<value>導入GOOD檔案</value>
</data>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /> <assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="LblHostTip.Size" type="System.Drawing.Size, System.Drawing"> <data name="TPRemoteCall.Location" type="System.Drawing.Point, System.Drawing">
<value>206, 17</value> <value>4, 22</value>
</data> </data>
<data name="LblHostTip.Text" xml:space="preserve"> <data name="TPRemoteCall.Size" type="System.Drawing.Size, System.Drawing">
<value>請確保地址中包含 http:// 或 https://</value> <value>652, 249</value>
</data>
<data name="LnkOpenCommandLabel.Text" xml:space="preserve">
<value>遠程執行插件</value>
</data>
<data name="LblServerVersionLabel.Text" xml:space="preserve">
<value>遊戲版本</value>
</data>
<data name="LblPlayerCountLabel.Text" xml:space="preserve">
<value>當前玩家數</value>
</data>
<data name="GrpServerStatus.Text" xml:space="preserve">
<value>伺服器狀態</value>
</data>
<data name="LnkRCHelp.Text" xml:space="preserve">
<value>幫助</value>
</data>
<data name="BtnConnectOpenCommand.Text" xml:space="preserve">
<value>連接</value>
</data>
<data name="LblVerificationCode.Text" xml:space="preserve">
<value>驗證碼</value>
</data>
<data name="BtnSendVerificationCode.Text" xml:space="preserve">
<value>發送驗證碼</value>
</data>
<data name="TPPlayerCheck.Text" xml:space="preserve">
<value>玩家驗證</value>
</data>
<data name="BtnConsoleConnect.Text" xml:space="preserve">
<value>連接</value>
</data>
<data name="LblConsoleTip.Text" xml:space="preserve">
<value>請注意,控制台狀態下普通命令必須指定目標
即設置包含UID</value>
</data>
<data name="GrpRemoteCommand.Text" xml:space="preserve">
<value>遠程執行</value>
</data>
<data name="BtnQueryServerStatus.Text" xml:space="preserve">
<value>查詢</value>
</data>
<data name="LblHost.Text" xml:space="preserve">
<value>伺服器地址</value>
</data> </data>
<data name="TPRemoteCall.Text" xml:space="preserve"> <data name="TPRemoteCall.Text" xml:space="preserve">
<value>遠程</value> <value>遠程</value>
@@ -202,6 +150,12 @@
如果願意請我喝一杯奶茶,那就更好了 : ) 如果願意請我喝一杯奶茶,那就更好了 : )
指令生成有問題或者有新的功能請求都可以來Github提出</value> 指令生成有問題或者有新的功能請求都可以來Github提出</value>
</data> </data>
<data name="TPAbout.Location" type="System.Drawing.Point, System.Drawing">
<value>4, 22</value>
</data>
<data name="TPAbout.Size" type="System.Drawing.Size, System.Drawing">
<value>652, 249</value>
</data>
<data name="TPAbout.Text" xml:space="preserve"> <data name="TPAbout.Text" xml:space="preserve">
<value>關於</value> <value>關於</value>
</data> </data>
@@ -232,6 +186,12 @@
<data name="GrpPermission.Text" xml:space="preserve"> <data name="GrpPermission.Text" xml:space="preserve">
<value>權限管理</value> <value>權限管理</value>
</data> </data>
<data name="TPManage.Location" type="System.Drawing.Point, System.Drawing">
<value>4, 22</value>
</data>
<data name="TPManage.Size" type="System.Drawing.Size, System.Drawing">
<value>652, 249</value>
</data>
<data name="RbListDungeons.Text" xml:space="preserve"> <data name="RbListDungeons.Text" xml:space="preserve">
<value>祕境</value> <value>祕境</value>
</data> </data>
@@ -286,28 +246,17 @@
<value>給玩家指定物品 <value>給玩家指定物品
說明:可選擇直接給到背包或者掉落到世界</value> 說明:可選擇直接給到背包或者掉落到世界</value>
</data> </data>
<data name="BtnGiveAllWeapons.Text" xml:space="preserve"> <data name="TPItem.Location" type="System.Drawing.Point, System.Drawing">
<value>獲得所有武器</value> <value>4, 22</value>
</data> </data>
<data name="LblWeaponDescription.Text" xml:space="preserve"> <data name="TPItem.Size" type="System.Drawing.Size, System.Drawing">
<value>獲取武器 <value>652, 249</value>
說明:設定等級會自動設定突破等級
&gt;20級突破1
&gt;40級突破2
&gt;50級突破3
&gt;60級突破4
&gt;70級突破5
&gt;80級突破6</value>
</data> </data>
<data name="LblWeaponRefinement.Text" xml:space="preserve"> <data name="TPWeapon.Location" type="System.Drawing.Point, System.Drawing">
<value>精煉等級</value> <value>4, 22</value>
</data> </data>
<data name="LblWeaponAmount.Text" xml:space="preserve"> <data name="TPWeapon.Size" type="System.Drawing.Size, System.Drawing">
<value>數量</value> <value>652, 249</value>
</data>
<data name="LblWeaponLevel.Text" xml:space="preserve">
<value>等級</value>
</data> </data>
<data name="LnkSetAllConst.Text" xml:space="preserve"> <data name="LnkSetAllConst.Text" xml:space="preserve">
<value>設置所有角色</value> <value>設置所有角色</value>
@@ -315,9 +264,6 @@
<data name="LnkSetConst.Text" xml:space="preserve"> <data name="LnkSetConst.Text" xml:space="preserve">
<value>設置當前角色</value> <value>設置當前角色</value>
</data> </data>
<data name="GrpSetConstellation.Location" type="System.Drawing.Point, System.Drawing">
<value>288, 174</value>
</data>
<data name="GrpSetConstellation.Text" xml:space="preserve"> <data name="GrpSetConstellation.Text" xml:space="preserve">
<value>設置命座</value> <value>設置命座</value>
</data> </data>
@@ -327,18 +273,12 @@
<data name="BtnLockStat.Text" xml:space="preserve"> <data name="BtnLockStat.Text" xml:space="preserve">
<value>鎖定</value> <value>鎖定</value>
</data> </data>
<data name="GrpSetStats.Location" type="System.Drawing.Point, System.Drawing">
<value>288, 11</value>
</data>
<data name="GrpSetStats.Text" xml:space="preserve"> <data name="GrpSetStats.Text" xml:space="preserve">
<value>角色屬性</value> <value>角色屬性</value>
</data> </data>
<data name="LnkTalentNormalATK.Text" xml:space="preserve"> <data name="LnkTalentNormalATK.Text" xml:space="preserve">
<value>普通攻擊</value> <value>普通攻擊</value>
</data> </data>
<data name="GrpTalentLevel.Location" type="System.Drawing.Point, System.Drawing">
<value>288, 113</value>
</data>
<data name="GrpTalentLevel.Text" xml:space="preserve"> <data name="GrpTalentLevel.Text" xml:space="preserve">
<value>技能等級</value> <value>技能等級</value>
</data> </data>
@@ -360,8 +300,11 @@
<data name="LblAvatarSkillLevelLabel.Text" xml:space="preserve"> <data name="LblAvatarSkillLevelLabel.Text" xml:space="preserve">
<value>技能等級</value> <value>技能等級</value>
</data> </data>
<data name="GrpGiveAvatar.Location" type="System.Drawing.Point, System.Drawing"> <data name="TPAvatar.Location" type="System.Drawing.Point, System.Drawing">
<value>32, 11</value> <value>4, 22</value>
</data>
<data name="TPAvatar.Size" type="System.Drawing.Size, System.Drawing">
<value>652, 249</value>
</data> </data>
<data name="LblSpawnVersionRequireTip.Text" xml:space="preserve"> <data name="LblSpawnVersionRequireTip.Text" xml:space="preserve">
<value>以下參數至少要求 GC v1.3.1</value> <value>以下參數至少要求 GC v1.3.1</value>
@@ -387,6 +330,12 @@
<data name="LblEntityAmount.Text" xml:space="preserve"> <data name="LblEntityAmount.Text" xml:space="preserve">
<value>數量</value> <value>數量</value>
</data> </data>
<data name="TPSpawnArgs.Location" type="System.Drawing.Point, System.Drawing">
<value>4, 22</value>
</data>
<data name="TPSpawnArgs.Size" type="System.Drawing.Size, System.Drawing">
<value>338, 199</value>
</data>
<data name="TPSpawnArgs.Text" xml:space="preserve"> <data name="TPSpawnArgs.Text" xml:space="preserve">
<value>生成參數</value> <value>生成參數</value>
</data> </data>
@@ -411,6 +360,12 @@
<data name="GrpAMSkills.Text" xml:space="preserve"> <data name="GrpAMSkills.Text" xml:space="preserve">
<value>替換技能</value> <value>替換技能</value>
</data> </data>
<data name="TPAttackModArgs.Location" type="System.Drawing.Point, System.Drawing">
<value>4, 22</value>
</data>
<data name="TPAttackModArgs.Size" type="System.Drawing.Size, System.Drawing">
<value>338, 199</value>
</data>
<data name="TPAttackModArgs.Text" xml:space="preserve"> <data name="TPAttackModArgs.Text" xml:space="preserve">
<value>攻擊修改參數</value> <value>攻擊修改參數</value>
</data> </data>
@@ -435,21 +390,48 @@
<data name="BtnAiwiClear.Text" xml:space="preserve"> <data name="BtnAiwiClear.Text" xml:space="preserve">
<value>清空實體</value> <value>清空實體</value>
</data> </data>
<data name="TPAttackInfusedArgs.Size" type="System.Drawing.Size, System.Drawing">
<value>338, 191</value>
</data>
<data name="TPAttackInfusedArgs.Text" xml:space="preserve"> <data name="TPAttackInfusedArgs.Text" xml:space="preserve">
<value>攻擊注入參數</value> <value>攻擊注入參數</value>
</data> </data>
<data name="TCSpawnSettings.Size" type="System.Drawing.Size, System.Drawing">
<value>346, 221</value>
</data>
<data name="ListEntity.Size" type="System.Drawing.Size, System.Drawing">
<value>274, 163</value>
</data>
<data name="TPSpawnItems.Location" type="System.Drawing.Point, System.Drawing">
<value>4, 22</value>
</data>
<data name="TPSpawnItems.Size" type="System.Drawing.Size, System.Drawing">
<value>280, 199</value>
</data>
<data name="TPSpawnItems.Text" xml:space="preserve"> <data name="TPSpawnItems.Text" xml:space="preserve">
<value>實體列表</value> <value>實體列表</value>
</data> </data>
<data name="ListSpawnLogs.Size" type="System.Drawing.Size, System.Drawing">
<value>274, 156</value>
</data>
<data name="BtnSaveSpawnLog.Text" xml:space="preserve"> <data name="BtnSaveSpawnLog.Text" xml:space="preserve">
<value>√ 記錄</value> <value>√ 記錄</value>
</data> </data>
<data name="BtnRemoveSpawnLog.Text" xml:space="preserve"> <data name="BtnRemoveSpawnLog.Text" xml:space="preserve">
<value>× 刪除</value> <value>× 刪除</value>
</data> </data>
<data name="FLPSpawnRecordControls.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 159</value>
</data>
<data name="TPSpawnRecords.Size" type="System.Drawing.Size, System.Drawing">
<value>280, 191</value>
</data>
<data name="TPSpawnRecords.Text" xml:space="preserve"> <data name="TPSpawnRecords.Text" xml:space="preserve">
<value>生成記錄本</value> <value>生成記錄本</value>
</data> </data>
<data name="TCSpawnItems.Size" type="System.Drawing.Size, System.Drawing">
<value>288, 221</value>
</data>
<data name="ChkQuestFilterTEST.Text" xml:space="preserve"> <data name="ChkQuestFilterTEST.Text" xml:space="preserve">
<value>測試任務</value> <value>測試任務</value>
</data> </data>
@@ -473,84 +455,33 @@
提示:許多任務需要服務端腳本支持 提示:許多任務需要服務端腳本支持
囙此任務可以接,可以完成,但是不一定可以做</value> 囙此任務可以接,可以完成,但是不一定可以做</value>
</data> </data>
<data name="TPQuest.Location" type="System.Drawing.Point, System.Drawing">
<value>4, 22</value>
</data>
<data name="TPQuest.Size" type="System.Drawing.Size, System.Drawing">
<value>652, 249</value>
</data>
<data name="TPQuest.Text" xml:space="preserve"> <data name="TPQuest.Text" xml:space="preserve">
<value>任務</value> <value>任務</value>
</data> </data>
<data name="LblArtifactSet.Text" xml:space="preserve"> <data name="TPArtifact.Location" type="System.Drawing.Point, System.Drawing">
<value>套裝</value> <value>4, 22</value>
</data> </data>
<data name="LblArtifactLevel.Text" xml:space="preserve"> <data name="TPArtifact.Size" type="System.Drawing.Size, System.Drawing">
<value>等級</value> <value>652, 249</value>
</data>
<data name="LblSubAttribution.Text" xml:space="preserve">
<value>副詞條</value>
</data>
<data name="LblMainAttribution.Text" xml:space="preserve">
<value>主詞條</value>
</data>
<data name="LblArtifactStars.Text" xml:space="preserve">
<value>星級</value>
</data> </data>
<data name="TPArtifact.Text" xml:space="preserve"> <data name="TPArtifact.Text" xml:space="preserve">
<value>聖遺物</value> <value>聖遺物</value>
</data> </data>
<data name="BtnExportCustomCommands.Text" xml:space="preserve"> <data name="TPCustom.Location" type="System.Drawing.Point, System.Drawing">
<value>導出</value> <value>4, 22</value>
</data> </data>
<data name="BtnLoadCustomCommands.Text" xml:space="preserve"> <data name="TPCustom.Size" type="System.Drawing.Size, System.Drawing">
<value>載入</value> <value>652, 249</value>
</data>
<data name="LblCustomName.Text" xml:space="preserve">
<value>標籤</value>
</data>
<data name="BtnRemoveCustomCommand.Text" xml:space="preserve">
<value>× 刪除</value>
</data> </data>
<data name="TPCustom.Text" xml:space="preserve"> <data name="TPCustom.Text" xml:space="preserve">
<value>自定義</value> <value>自定義</value>
</data> </data>
<data name="BtnOpenShopEditor.Location" type="System.Drawing.Point, System.Drawing">
<value>313, 171</value>
</data>
<data name="BtnOpenShopEditor.Text" xml:space="preserve">
<value>商店編輯器</value>
</data>
<data name="BtnOpenDropEditor.Location" type="System.Drawing.Point, System.Drawing">
<value>525, 200</value>
</data>
<data name="BtnOpenDropEditor.Text" xml:space="preserve">
<value>掉落物編輯器</value>
</data>
<data name="LnkNewVersion.Location" type="System.Drawing.Point, System.Drawing">
<value>6, 92</value>
</data>
<data name="LblAbout.Location" type="System.Drawing.Point, System.Drawing">
<value>88, 28</value>
</data>
<data name="BtnOpenTextMap.Location" type="System.Drawing.Point, System.Drawing">
<value>419, 200</value>
</data>
<data name="BtnOpenTextMap.Text" xml:space="preserve">
<value>文本瀏覽器</value>
</data>
<data name="BtnOpenGachaBannerEditor.Location" type="System.Drawing.Point, System.Drawing">
<value>313, 200</value>
</data>
<data name="BtnOpenGachaBannerEditor.Text" xml:space="preserve">
<value>獎池編輯器</value>
</data>
<data name="GrasscutterToolsIcon.Size" type="System.Drawing.Size, System.Drawing">
<value>333, 188</value>
</data>
<data name="ChkTopMost.Size" type="System.Drawing.Size, System.Drawing">
<value>51, 21</value>
</data>
<data name="ChkTopMost.Text" xml:space="preserve">
<value>置頂</value>
</data>
<data name="GrpSettings.Location" type="System.Drawing.Point, System.Drawing">
<value>6, 112</value>
</data>
<data name="TPHome.Text" xml:space="preserve"> <data name="TPHome.Text" xml:space="preserve">
<value>主頁</value> <value>主頁</value>
</data> </data>
@@ -578,6 +509,15 @@
<data name="BtnRemoveMail.Text" xml:space="preserve"> <data name="BtnRemoveMail.Text" xml:space="preserve">
<value>- 刪除</value> <value>- 刪除</value>
</data> </data>
<data name="PanelMailListControls.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 173</value>
</data>
<data name="TPMailList.Location" type="System.Drawing.Point, System.Drawing">
<value>4, 22</value>
</data>
<data name="TPMailList.Size" type="System.Drawing.Size, System.Drawing">
<value>228, 204</value>
</data>
<data name="BtnSendMail.Text" xml:space="preserve"> <data name="BtnSendMail.Text" xml:space="preserve">
<value>發送</value> <value>發送</value>
</data> </data>
@@ -590,7 +530,17 @@
<data name="LblMailSenderLabel.Text" xml:space="preserve"> <data name="LblMailSenderLabel.Text" xml:space="preserve">
<value>發件人:</value> <value>發件人:</value>
</data> </data>
<data name="TPMail.Location" type="System.Drawing.Point, System.Drawing">
<value>4, 22</value>
</data>
<data name="TPMail.Size" type="System.Drawing.Size, System.Drawing">
<value>652, 249</value>
</data>
<data name="TPMail.Text" xml:space="preserve"> <data name="TPMail.Text" xml:space="preserve">
<value>郵件</value> <value>郵件</value>
</data> </data>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="$this.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
</root> </root>

View File

@@ -1,4 +1,7 @@
/** 
using System.Collections.Generic;
using System.Text;
/**
* Grasscutter Tools * Grasscutter Tools
* Copyright (C) 2022 jie65535 * Copyright (C) 2022 jie65535
* *
@@ -29,5 +32,37 @@ namespace GrasscutterTools.Game
public string Name { get; set; } public string Name { get; set; }
public string Command { get; set; } public string Command { get; set; }
/// <summary>
/// 获取命令记录
/// (反序列化)
/// </summary>
/// <param name="commandsText">命令记录文本(示例:"标签1\n命令1\n标签2\n命令2..."</param>
/// <returns>命令列表</returns>
public static List<GameCommand> Parse(string commandsText)
{
var lines = commandsText.Split('\n');
List<GameCommand> commands = new List<GameCommand>(lines.Length / 2);
for (int i = 0; i < lines.Length - 1; i += 2)
commands.Add(new GameCommand(lines[i].Trim(), lines[i + 1].Trim()));
return commands;
}
/// <summary>
/// 获取命令记录文本
/// (序列化)
/// </summary>
/// <param name="commands">命令列表</param>
/// <returns>命令记录文本(示例:"标签1\n命令1\n标签2\n命令2..."</returns>
public static string ToString(List<GameCommand> commands)
{
StringBuilder builder = new StringBuilder();
foreach (var cmd in commands)
{
builder.AppendLine(cmd.Name);
builder.AppendLine(cmd.Command);
}
return builder.ToString();
}
} }
} }

View File

@@ -160,6 +160,45 @@
<Compile Include="GOOD\Weapon.cs" /> <Compile Include="GOOD\Weapon.cs" />
<Compile Include="OpenCommand\OpenCommandAPI.cs" /> <Compile Include="OpenCommand\OpenCommandAPI.cs" />
<Compile Include="MultiLanguage.cs" /> <Compile Include="MultiLanguage.cs" />
<Compile Include="Pages\BasePage.cs">
<SubType>UserControl</SubType>
</Compile>
<Compile Include="Pages\PageCustomCommands.cs">
<SubType>UserControl</SubType>
</Compile>
<Compile Include="Pages\PageCustomCommands.Designer.cs">
<DependentUpon>PageCustomCommands.cs</DependentUpon>
</Compile>
<Compile Include="Pages\PageGiveArtifact.cs">
<SubType>UserControl</SubType>
</Compile>
<Compile Include="Pages\PageGiveArtifact.Designer.cs">
<DependentUpon>PageGiveArtifact.cs</DependentUpon>
</Compile>
<Compile Include="Pages\PageGiveWeapon.cs">
<SubType>UserControl</SubType>
</Compile>
<Compile Include="Pages\PageGiveWeapon.Designer.cs">
<DependentUpon>PageGiveWeapon.cs</DependentUpon>
</Compile>
<Compile Include="Pages\PageHome.cs">
<SubType>UserControl</SubType>
</Compile>
<Compile Include="Pages\PageHome.Designer.cs">
<DependentUpon>PageHome.cs</DependentUpon>
</Compile>
<Compile Include="Pages\PageOpenCommand.cs">
<SubType>UserControl</SubType>
</Compile>
<Compile Include="Pages\PageOpenCommand.Designer.cs">
<DependentUpon>PageOpenCommand.cs</DependentUpon>
</Compile>
<Compile Include="Pages\PageSpawn.cs">
<SubType>UserControl</SubType>
</Compile>
<Compile Include="Pages\PageSpawn.Designer.cs">
<DependentUpon>PageSpawn.cs</DependentUpon>
</Compile>
<Compile Include="Program.cs" /> <Compile Include="Program.cs" />
<Compile Include="Properties\AssemblyInfo.cs" /> <Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="Properties\Resources.zh-TW.Designer.cs"> <Compile Include="Properties\Resources.zh-TW.Designer.cs">
@@ -168,6 +207,7 @@
<DesignTime>True</DesignTime> <DesignTime>True</DesignTime>
</Compile> </Compile>
<Compile Include="Utils\ArtifactUtils.cs" /> <Compile Include="Utils\ArtifactUtils.cs" />
<Compile Include="Utils\Common.cs" />
<Compile Include="Utils\HttpHelper.cs" /> <Compile Include="Utils\HttpHelper.cs" />
<Compile Include="Utils\ReleaseAPI.cs" /> <Compile Include="Utils\ReleaseAPI.cs" />
<Compile Include="Utils\UIUtil.cs" /> <Compile Include="Utils\UIUtil.cs" />
@@ -260,6 +300,78 @@
<EmbeddedResource Include="Forms\FormTextMapBrowser.zh-TW.resx"> <EmbeddedResource Include="Forms\FormTextMapBrowser.zh-TW.resx">
<DependentUpon>FormTextMapBrowser.cs</DependentUpon> <DependentUpon>FormTextMapBrowser.cs</DependentUpon>
</EmbeddedResource> </EmbeddedResource>
<EmbeddedResource Include="Pages\PageCustomCommands.en-US.resx">
<DependentUpon>PageCustomCommands.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Pages\PageCustomCommands.resx">
<DependentUpon>PageCustomCommands.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Pages\PageCustomCommands.ru-RU.resx">
<DependentUpon>PageCustomCommands.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Pages\PageCustomCommands.zh-TW.resx">
<DependentUpon>PageCustomCommands.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Pages\PageGiveArtifact.en-US.resx">
<DependentUpon>PageGiveArtifact.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Pages\PageGiveArtifact.resx">
<DependentUpon>PageGiveArtifact.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Pages\PageGiveArtifact.ru-RU.resx">
<DependentUpon>PageGiveArtifact.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Pages\PageGiveArtifact.zh-TW.resx">
<DependentUpon>PageGiveArtifact.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Pages\PageGiveWeapon.en-US.resx">
<DependentUpon>PageGiveWeapon.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Pages\PageGiveWeapon.resx">
<DependentUpon>PageGiveWeapon.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Pages\PageGiveWeapon.ru-RU.resx">
<DependentUpon>PageGiveWeapon.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Pages\PageGiveWeapon.zh-TW.resx">
<DependentUpon>PageGiveWeapon.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Pages\PageHome.en-US.resx">
<DependentUpon>PageHome.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Pages\PageHome.resx">
<DependentUpon>PageHome.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Pages\PageHome.ru-RU.resx">
<DependentUpon>PageHome.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Pages\PageHome.zh-TW.resx">
<DependentUpon>PageHome.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Pages\PageOpenCommand.en-US.resx">
<DependentUpon>PageOpenCommand.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Pages\PageOpenCommand.resx">
<DependentUpon>PageOpenCommand.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Pages\PageOpenCommand.ru-RU.resx">
<DependentUpon>PageOpenCommand.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Pages\PageOpenCommand.zh-TW.resx">
<DependentUpon>PageOpenCommand.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Pages\PageSpawn.en-US.resx">
<DependentUpon>PageSpawn.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Pages\PageSpawn.resx">
<DependentUpon>PageSpawn.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Pages\PageSpawn.ru-RU.resx">
<DependentUpon>PageSpawn.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Pages\PageSpawn.zh-TW.resx">
<DependentUpon>PageSpawn.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Properties\Resources.zh-TW.resx"> <EmbeddedResource Include="Properties\Resources.zh-TW.resx">
<Generator>ResXFileCodeGenerator</Generator> <Generator>ResXFileCodeGenerator</Generator>
<LastGenOutput>Resources.zh-TW.Designer.cs</LastGenOutput> <LastGenOutput>Resources.zh-TW.Designer.cs</LastGenOutput>

View File

@@ -44,7 +44,7 @@ namespace GrasscutterTools
/// </summary> /// </summary>
/// <param name="form">加载语言的窗口</param> /// <param name="form">加载语言的窗口</param>
/// <param name="formType">窗口的类型</param> /// <param name="formType">窗口的类型</param>
public static void LoadLanguage(Form form, Type formType) public static void LoadLanguage(Control form, Type formType)
{ {
if (form != null) if (form != null)
{ {
@@ -77,8 +77,15 @@ namespace GrasscutterTools
foreach (Control c in control.Controls) foreach (Control c in control.Controls)
{ {
resources.ApplyResources(c, c.Name); if (c is UserControl uc)
Loading(c, resources); {
LoadLanguage(uc, uc.GetType());
}
else
{
resources.ApplyResources(c, c.Name);
Loading(c, resources);
}
} }
} }

View File

@@ -0,0 +1,68 @@
using System;
using System.Drawing;
using System.Threading.Tasks;
using System.Windows.Forms;
using GrasscutterTools.Game;
using GrasscutterTools.Utils;
namespace GrasscutterTools.Pages
{
internal class BasePage : UserControl
{
public BasePage()
{
Font = new Font("Microsoft YaHei UI", 9, GraphicsUnit.Point);
//Size = new Size(652, 245);
Size = new Size(646, 239);
BackColor = Color.FromArgb(0xF9, 0xF9, 0xF9);
Margin = new Padding(0);
}
#region - -
protected static CommandVersion CommandVersion => Common.CommandVersion;
public delegate void SetCommandHandler(string command, string args = "");
/// <summary>
/// 设置命令
/// </summary>
/// <param name="command">命令</param>
/// <param name="args">参数</param>
public SetCommandHandler SetCommand { get; set; }
public delegate Task<bool> RunCommandsHandler(string[] commands);
/// <summary>
/// 运行命令
/// </summary>
public RunCommandsHandler RunCommands { get; set; }
/// <summary>
/// 获取当前输入框命令
/// </summary>
public Func<string> GetCommand { get; set; }
#endregion
#region - -
/// <summary>
/// 加载时触发(修改语言时会再次触发)
/// </summary>
public virtual void OnLoad() { }
/// <summary>
/// 进入页面时触发(可触发多次)
/// </summary>
public virtual void OnEnter() { }
/// <summary>
/// 关闭时触发(用于保存页面数据)
/// </summary>
public virtual void OnClosed() { }
#endregion
}
}

View File

@@ -0,0 +1,134 @@
namespace GrasscutterTools.Pages
{
partial class PageCustomCommands
{
/// <summary>
/// 必需的设计器变量。
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// 清理所有正在使用的资源。
/// </summary>
/// <param name="disposing">如果应释放托管资源,为 true否则为 false。</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region
/// <summary>
/// 设计器支持所需的方法 - 不要修改
/// 使用代码编辑器修改此方法的内容。
/// </summary>
private void InitializeComponent()
{
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(PageCustomCommands));
this.BtnExportCustomCommands = new System.Windows.Forms.Button();
this.BtnLoadCustomCommands = new System.Windows.Forms.Button();
this.LblCustomName = new System.Windows.Forms.Label();
this.GrpCustomCommands = new System.Windows.Forms.GroupBox();
this.LnkResetCustomCommands = new System.Windows.Forms.LinkLabel();
this.FLPCustomCommands = new System.Windows.Forms.FlowLayoutPanel();
this.BtnRemoveCustomCommand = new System.Windows.Forms.Button();
this.BtnSaveCustomCommand = new System.Windows.Forms.Button();
this.TxtCustomName = new System.Windows.Forms.TextBox();
this.GrpCustomCommands.SuspendLayout();
this.SuspendLayout();
//
// BtnExportCustomCommands
//
resources.ApplyResources(this.BtnExportCustomCommands, "BtnExportCustomCommands");
this.BtnExportCustomCommands.Name = "BtnExportCustomCommands";
this.BtnExportCustomCommands.UseVisualStyleBackColor = true;
this.BtnExportCustomCommands.Click += new System.EventHandler(this.BtnExport_Click);
//
// BtnLoadCustomCommands
//
resources.ApplyResources(this.BtnLoadCustomCommands, "BtnLoadCustomCommands");
this.BtnLoadCustomCommands.Name = "BtnLoadCustomCommands";
this.BtnLoadCustomCommands.UseVisualStyleBackColor = true;
this.BtnLoadCustomCommands.Click += new System.EventHandler(this.BtnImport_Click);
//
// LblCustomName
//
resources.ApplyResources(this.LblCustomName, "LblCustomName");
this.LblCustomName.Name = "LblCustomName";
//
// GrpCustomCommands
//
resources.ApplyResources(this.GrpCustomCommands, "GrpCustomCommands");
this.GrpCustomCommands.Controls.Add(this.LnkResetCustomCommands);
this.GrpCustomCommands.Controls.Add(this.FLPCustomCommands);
this.GrpCustomCommands.Name = "GrpCustomCommands";
this.GrpCustomCommands.TabStop = false;
//
// LnkResetCustomCommands
//
resources.ApplyResources(this.LnkResetCustomCommands, "LnkResetCustomCommands");
this.LnkResetCustomCommands.Name = "LnkResetCustomCommands";
this.LnkResetCustomCommands.TabStop = true;
this.LnkResetCustomCommands.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.LnkResetCustomCommands_LinkClicked);
//
// FLPCustomCommands
//
resources.ApplyResources(this.FLPCustomCommands, "FLPCustomCommands");
this.FLPCustomCommands.Name = "FLPCustomCommands";
//
// BtnRemoveCustomCommand
//
resources.ApplyResources(this.BtnRemoveCustomCommand, "BtnRemoveCustomCommand");
this.BtnRemoveCustomCommand.Name = "BtnRemoveCustomCommand";
this.BtnRemoveCustomCommand.UseVisualStyleBackColor = true;
this.BtnRemoveCustomCommand.Click += new System.EventHandler(this.BtnRemoveCustomCommand_Click);
//
// BtnSaveCustomCommand
//
resources.ApplyResources(this.BtnSaveCustomCommand, "BtnSaveCustomCommand");
this.BtnSaveCustomCommand.Name = "BtnSaveCustomCommand";
this.BtnSaveCustomCommand.UseVisualStyleBackColor = true;
this.BtnSaveCustomCommand.Click += new System.EventHandler(this.BtnSaveCustomCommand_Click);
//
// TxtCustomName
//
resources.ApplyResources(this.TxtCustomName, "TxtCustomName");
this.TxtCustomName.Name = "TxtCustomName";
this.TxtCustomName.KeyDown += new System.Windows.Forms.KeyEventHandler(this.TxtCustomName_KeyDown);
//
// PageCustomCommands
//
resources.ApplyResources(this, "$this");
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.Controls.Add(this.BtnExportCustomCommands);
this.Controls.Add(this.BtnLoadCustomCommands);
this.Controls.Add(this.LblCustomName);
this.Controls.Add(this.GrpCustomCommands);
this.Controls.Add(this.BtnRemoveCustomCommand);
this.Controls.Add(this.BtnSaveCustomCommand);
this.Controls.Add(this.TxtCustomName);
this.Name = "PageCustomCommands";
this.GrpCustomCommands.ResumeLayout(false);
this.GrpCustomCommands.PerformLayout();
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private System.Windows.Forms.Button BtnExportCustomCommands;
private System.Windows.Forms.Button BtnLoadCustomCommands;
private System.Windows.Forms.Label LblCustomName;
private System.Windows.Forms.GroupBox GrpCustomCommands;
private System.Windows.Forms.LinkLabel LnkResetCustomCommands;
private System.Windows.Forms.FlowLayoutPanel FLPCustomCommands;
private System.Windows.Forms.Button BtnRemoveCustomCommand;
private System.Windows.Forms.Button BtnSaveCustomCommand;
private System.Windows.Forms.TextBox TxtCustomName;
}
}

View File

@@ -0,0 +1,233 @@
using System;
using System.IO;
using System.Text;
using System.Windows.Forms;
using GrasscutterTools.Properties;
using GrasscutterTools.Utils;
namespace GrasscutterTools.Pages
{
internal partial class PageCustomCommands : BasePage
{
public PageCustomCommands()
{
InitializeComponent();
}
/// <summary>
/// 自定义命令保存位置
/// </summary>
private readonly string CustomCommandsFilePath = Path.Combine(Application.LocalUserAppDataPath, "CustomCommands.txt");
/// <summary>
/// 自定义命令是否存在更改
/// </summary>
private bool CustomCommandsChanged;
/// <summary>
/// 加载自定义命令
/// </summary>
public override void OnLoad()
{
if (File.Exists(CustomCommandsFilePath))
LoadCustomCommandControls(File.ReadAllText(CustomCommandsFilePath));
else
LoadCustomCommandControls(Resources.CustomCommands);
CustomCommandsChanged = false;
}
/// <summary>
/// 加载自定义命令控件列表
/// </summary>
/// <param name="commands">命令集(示例:"标签1\n命令1\n标签2\n命令2"</param>
private void LoadCustomCommandControls(string commands)
{
FLPCustomCommands.Controls.Clear();
var lines = commands.Split('\n');
for (int i = 0; i < lines.Length - 1; i += 2)
AddCustomCommand(lines[i].Trim(), lines[i + 1].Trim());
}
/// <summary>
/// 保存自定义命令
/// </summary>
public override void OnClosed()
{
if (CustomCommandsChanged)
File.WriteAllText(CustomCommandsFilePath, SaveCustomCommandControls());
}
/// <summary>
/// 保存自定义命令控件列表
/// </summary>
/// <returns>命令集(示例:"标签1\n命令1\n标签2\n命令2"</returns>
private string SaveCustomCommandControls()
{
StringBuilder builder = new StringBuilder();
foreach (LinkLabel lnk in FLPCustomCommands.Controls)
{
builder.AppendLine(lnk.Text);
builder.AppendLine(lnk.Tag as string);
}
return builder.ToString();
}
/// <summary>
/// 自定义命令点击时触发
/// </summary>
private void CustomCommand_Click(object sender, LinkLabelLinkClickedEventArgs e)
{
if (sender is LinkLabel lnk && lnk.Tag is string command)
{
TxtCustomName.Text = lnk.Text;
SetCommand(command);
}
}
/// <summary>
/// 自定义命令文本框回车时触发
/// </summary>
private void TxtCustomName_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter) BtnSaveCustomCommand_Click(BtnSaveCustomCommand, e);
}
/// <summary>
/// 点击保存自定义命令列表时触发
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private async void BtnSaveCustomCommand_Click(object sender, EventArgs e)
{
var name = TxtCustomName.Text.Trim();
if (string.IsNullOrEmpty(name))
{
MessageBox.Show(Resources.CommandTagCannotBeEmpty, Resources.Error, MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
var command = GetCommand().Trim();
if (string.IsNullOrEmpty(command))
{
MessageBox.Show(Resources.CommandContentCannotBeEmpty, Resources.Error, MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
foreach (LinkLabel lnk in FLPCustomCommands.Controls)
{
if (lnk.Text == name)
{
lnk.Tag = command;
CustomCommandsChanged = true;
await UIUtil.ButtonComplete(BtnSaveCustomCommand);
return;
}
}
CustomCommandsChanged = true;
AddCustomCommand(name, command);
await UIUtil.ButtonComplete(BtnSaveCustomCommand);
}
/// <summary>
/// 添加自定义命令
/// </summary>
/// <param name="name">标签</param>
/// <param name="command">命令</param>
private void AddCustomCommand(string name, string command)
{
var lnk = new LinkLabel
{
Text = name,
Tag = command,
AutoSize = true,
};
lnk.LinkClicked += CustomCommand_Click;
FLPCustomCommands.Controls.Add(lnk);
}
/// <summary>
/// 点击移除自定义命令按钮时触发
/// </summary>
private async void BtnRemoveCustomCommand_Click(object sender, EventArgs e)
{
if (string.IsNullOrWhiteSpace(TxtCustomName.Text))
{
MessageBox.Show(Resources.CommandTagCannotBeEmpty, Resources.Error, MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
var name = TxtCustomName.Text.Trim();
foreach (LinkLabel lnk in FLPCustomCommands.Controls)
{
if (lnk.Text == name && MessageBox.Show(Resources.AskConfirmDeletion, Resources.Tips, MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
{
FLPCustomCommands.Controls.Remove(lnk);
CustomCommandsChanged = true;
//TxtCustomName.Text = "";
//TxtCommand.Text = "";
await UIUtil.ButtonComplete(BtnRemoveCustomCommand);
return;
}
}
MessageBox.Show(Resources.CommandNotFound, Resources.Error, MessageBoxButtons.OK, MessageBoxIcon.Error);
}
/// <summary>
/// 点击导入自定义命令时触发
/// </summary>
private void BtnImport_Click(object sender, EventArgs e)
{
var dialog = new OpenFileDialog
{
Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*"
};
if (dialog.ShowDialog() == DialogResult.OK)
{
using (var stream = dialog.OpenFile())
using (var reader = new StreamReader(stream))
{
LoadCustomCommandControls(reader.ReadToEnd());
CustomCommandsChanged = true;
}
}
}
/// <summary>
/// 点击导出自定义命令时触发
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void BtnExport_Click(object sender, EventArgs e)
{
var dialog = new SaveFileDialog
{
FileName = "Commands.txt",
Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*"
};
if (dialog.ShowDialog() == DialogResult.OK)
{
using (var stream = dialog.OpenFile())
using (var writer = new StreamWriter(stream))
{
writer.Write(SaveCustomCommandControls());
}
}
}
/// <summary>
/// 点击重置链接按钮时触发
/// </summary>
private void LnkResetCustomCommands_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
if (MessageBox.Show(Resources.RestoreCustomCommands, Resources.Tips, MessageBoxButtons.YesNo, MessageBoxIcon.Warning) == DialogResult.Yes)
{
if (File.Exists(CustomCommandsFilePath))
File.Delete(CustomCommandsFilePath);
LoadCustomCommandControls(Resources.CustomCommands);
}
}
}
}

View File

@@ -0,0 +1,178 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="BtnExportCustomCommands.Location" type="System.Drawing.Point, System.Drawing">
<value>573, 209</value>
</data>
<data name="BtnExportCustomCommands.Size" type="System.Drawing.Size, System.Drawing">
<value>70, 23</value>
</data>
<data name="BtnExportCustomCommands.Text" xml:space="preserve">
<value>Export</value>
</data>
<data name="BtnLoadCustomCommands.Location" type="System.Drawing.Point, System.Drawing">
<value>497, 209</value>
</data>
<data name="BtnLoadCustomCommands.Size" type="System.Drawing.Size, System.Drawing">
<value>70, 23</value>
</data>
<data name="BtnLoadCustomCommands.Text" xml:space="preserve">
<value>Load</value>
</data>
<data name="LblCustomName.Size" type="System.Drawing.Size, System.Drawing">
<value>30, 17</value>
</data>
<data name="LblCustomName.Text" xml:space="preserve">
<value>Tag</value>
</data>
<data name="GrpCustomCommands.Text" xml:space="preserve">
<value>List</value>
</data>
<data name="LnkResetCustomCommands.Location" type="System.Drawing.Point, System.Drawing">
<value>581, -1</value>
</data>
<data name="LnkResetCustomCommands.Size" type="System.Drawing.Size, System.Drawing">
<value>53, 17</value>
</data>
<data name="LnkResetCustomCommands.Text" xml:space="preserve">
<value>Restore</value>
</data>
<data name="BtnRemoveCustomCommand.Location" type="System.Drawing.Point, System.Drawing">
<value>421, 209</value>
</data>
<data name="BtnRemoveCustomCommand.Size" type="System.Drawing.Size, System.Drawing">
<value>70, 23</value>
</data>
<data name="BtnRemoveCustomCommand.Text" xml:space="preserve">
<value>× Delete</value>
</data>
<data name="BtnSaveCustomCommand.Location" type="System.Drawing.Point, System.Drawing">
<value>345, 209</value>
</data>
<data name="BtnSaveCustomCommand.Size" type="System.Drawing.Size, System.Drawing">
<value>70, 23</value>
</data>
<data name="BtnSaveCustomCommand.Text" xml:space="preserve">
<value>√ Save</value>
</data>
<data name="TxtCustomName.Size" type="System.Drawing.Size, System.Drawing">
<value>298, 23</value>
</data>
</root>

View File

@@ -0,0 +1,399 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="BtnExportCustomCommands.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Bottom, Right</value>
</data>
<data name="BtnExportCustomCommands.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="BtnExportCustomCommands.Location" type="System.Drawing.Point, System.Drawing">
<value>590, 209</value>
</data>
<data name="BtnExportCustomCommands.Size" type="System.Drawing.Size, System.Drawing">
<value>50, 23</value>
</data>
<assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="BtnExportCustomCommands.TabIndex" type="System.Int32, mscorlib">
<value>14</value>
</data>
<data name="BtnExportCustomCommands.Text" xml:space="preserve">
<value>导出</value>
</data>
<data name="&gt;&gt;BtnExportCustomCommands.Name" xml:space="preserve">
<value>BtnExportCustomCommands</value>
</data>
<data name="&gt;&gt;BtnExportCustomCommands.Type" xml:space="preserve">
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;BtnExportCustomCommands.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;BtnExportCustomCommands.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="BtnLoadCustomCommands.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Bottom, Right</value>
</data>
<data name="BtnLoadCustomCommands.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="BtnLoadCustomCommands.Location" type="System.Drawing.Point, System.Drawing">
<value>534, 209</value>
</data>
<data name="BtnLoadCustomCommands.Size" type="System.Drawing.Size, System.Drawing">
<value>50, 23</value>
</data>
<data name="BtnLoadCustomCommands.TabIndex" type="System.Int32, mscorlib">
<value>13</value>
</data>
<data name="BtnLoadCustomCommands.Text" xml:space="preserve">
<value>载入</value>
</data>
<data name="&gt;&gt;BtnLoadCustomCommands.Name" xml:space="preserve">
<value>BtnLoadCustomCommands</value>
</data>
<data name="&gt;&gt;BtnLoadCustomCommands.Type" xml:space="preserve">
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;BtnLoadCustomCommands.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;BtnLoadCustomCommands.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="LblCustomName.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Bottom, Left</value>
</data>
<data name="LblCustomName.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="LblCustomName.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="LblCustomName.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 212</value>
</data>
<data name="LblCustomName.Size" type="System.Drawing.Size, System.Drawing">
<value>32, 17</value>
</data>
<data name="LblCustomName.TabIndex" type="System.Int32, mscorlib">
<value>9</value>
</data>
<data name="LblCustomName.Text" xml:space="preserve">
<value>标签</value>
</data>
<data name="&gt;&gt;LblCustomName.Name" xml:space="preserve">
<value>LblCustomName</value>
</data>
<data name="&gt;&gt;LblCustomName.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;LblCustomName.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;LblCustomName.ZOrder" xml:space="preserve">
<value>2</value>
</data>
<data name="GrpCustomCommands.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Bottom, Left, Right</value>
</data>
<data name="LnkResetCustomCommands.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Right</value>
</data>
<data name="LnkResetCustomCommands.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="LnkResetCustomCommands.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="LnkResetCustomCommands.Location" type="System.Drawing.Point, System.Drawing">
<value>602, -1</value>
</data>
<data name="LnkResetCustomCommands.Size" type="System.Drawing.Size, System.Drawing">
<value>32, 17</value>
</data>
<data name="LnkResetCustomCommands.TabIndex" type="System.Int32, mscorlib">
<value>8</value>
</data>
<data name="LnkResetCustomCommands.Text" xml:space="preserve">
<value>重置</value>
</data>
<data name="&gt;&gt;LnkResetCustomCommands.Name" xml:space="preserve">
<value>LnkResetCustomCommands</value>
</data>
<data name="&gt;&gt;LnkResetCustomCommands.Type" xml:space="preserve">
<value>System.Windows.Forms.LinkLabel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;LnkResetCustomCommands.Parent" xml:space="preserve">
<value>GrpCustomCommands</value>
</data>
<data name="&gt;&gt;LnkResetCustomCommands.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="FLPCustomCommands.AutoScroll" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="FLPCustomCommands.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="FLPCustomCommands.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 19</value>
</data>
<data name="FLPCustomCommands.Size" type="System.Drawing.Size, System.Drawing">
<value>634, 174</value>
</data>
<data name="FLPCustomCommands.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
</data>
<data name="&gt;&gt;FLPCustomCommands.Name" xml:space="preserve">
<value>FLPCustomCommands</value>
</data>
<data name="&gt;&gt;FLPCustomCommands.Type" xml:space="preserve">
<value>System.Windows.Forms.FlowLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;FLPCustomCommands.Parent" xml:space="preserve">
<value>GrpCustomCommands</value>
</data>
<data name="&gt;&gt;FLPCustomCommands.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="GrpCustomCommands.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 7</value>
</data>
<data name="GrpCustomCommands.Size" type="System.Drawing.Size, System.Drawing">
<value>640, 196</value>
</data>
<data name="GrpCustomCommands.TabIndex" type="System.Int32, mscorlib">
<value>8</value>
</data>
<data name="GrpCustomCommands.Text" xml:space="preserve">
<value>列表</value>
</data>
<data name="&gt;&gt;GrpCustomCommands.Name" xml:space="preserve">
<value>GrpCustomCommands</value>
</data>
<data name="&gt;&gt;GrpCustomCommands.Type" xml:space="preserve">
<value>System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;GrpCustomCommands.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;GrpCustomCommands.ZOrder" xml:space="preserve">
<value>3</value>
</data>
<data name="BtnRemoveCustomCommand.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Bottom, Right</value>
</data>
<data name="BtnRemoveCustomCommand.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="BtnRemoveCustomCommand.Location" type="System.Drawing.Point, System.Drawing">
<value>468, 209</value>
</data>
<data name="BtnRemoveCustomCommand.Size" type="System.Drawing.Size, System.Drawing">
<value>60, 23</value>
</data>
<data name="BtnRemoveCustomCommand.TabIndex" type="System.Int32, mscorlib">
<value>12</value>
</data>
<data name="BtnRemoveCustomCommand.Text" xml:space="preserve">
<value>× 删除</value>
</data>
<data name="&gt;&gt;BtnRemoveCustomCommand.Name" xml:space="preserve">
<value>BtnRemoveCustomCommand</value>
</data>
<data name="&gt;&gt;BtnRemoveCustomCommand.Type" xml:space="preserve">
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;BtnRemoveCustomCommand.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;BtnRemoveCustomCommand.ZOrder" xml:space="preserve">
<value>4</value>
</data>
<data name="BtnSaveCustomCommand.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Bottom, Right</value>
</data>
<data name="BtnSaveCustomCommand.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="BtnSaveCustomCommand.Location" type="System.Drawing.Point, System.Drawing">
<value>402, 209</value>
</data>
<data name="BtnSaveCustomCommand.Size" type="System.Drawing.Size, System.Drawing">
<value>60, 23</value>
</data>
<data name="BtnSaveCustomCommand.TabIndex" type="System.Int32, mscorlib">
<value>11</value>
</data>
<data name="BtnSaveCustomCommand.Text" xml:space="preserve">
<value>√ 保存</value>
</data>
<data name="&gt;&gt;BtnSaveCustomCommand.Name" xml:space="preserve">
<value>BtnSaveCustomCommand</value>
</data>
<data name="&gt;&gt;BtnSaveCustomCommand.Type" xml:space="preserve">
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;BtnSaveCustomCommand.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;BtnSaveCustomCommand.ZOrder" xml:space="preserve">
<value>5</value>
</data>
<data name="TxtCustomName.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Bottom, Left, Right</value>
</data>
<data name="TxtCustomName.Location" type="System.Drawing.Point, System.Drawing">
<value>41, 209</value>
</data>
<data name="TxtCustomName.Size" type="System.Drawing.Size, System.Drawing">
<value>355, 23</value>
</data>
<data name="TxtCustomName.TabIndex" type="System.Int32, mscorlib">
<value>10</value>
</data>
<data name="&gt;&gt;TxtCustomName.Name" xml:space="preserve">
<value>TxtCustomName</value>
</data>
<data name="&gt;&gt;TxtCustomName.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;TxtCustomName.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;TxtCustomName.ZOrder" xml:space="preserve">
<value>6</value>
</data>
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
<value>7, 17</value>
</data>
<data name="&gt;&gt;$this.Name" xml:space="preserve">
<value>PageCustomCommands</value>
</data>
<data name="&gt;&gt;$this.Type" xml:space="preserve">
<value>GrasscutterTools.Pages.BasePage, GrasscutterTools, Version=1.7.4.0, Culture=neutral, PublicKeyToken=de2b1c089621e923</value>
</data>
</root>

View File

@@ -0,0 +1,178 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="BtnExportCustomCommands.Location" type="System.Drawing.Point, System.Drawing">
<value>545, 209</value>
</data>
<data name="BtnExportCustomCommands.Size" type="System.Drawing.Size, System.Drawing">
<value>95, 23</value>
</data>
<data name="BtnExportCustomCommands.Text" xml:space="preserve">
<value>Экспорт</value>
</data>
<data name="BtnLoadCustomCommands.Location" type="System.Drawing.Point, System.Drawing">
<value>444, 209</value>
</data>
<data name="BtnLoadCustomCommands.Size" type="System.Drawing.Size, System.Drawing">
<value>95, 23</value>
</data>
<data name="BtnLoadCustomCommands.Text" xml:space="preserve">
<value>Загрузить</value>
</data>
<data name="LblCustomName.Size" type="System.Drawing.Size, System.Drawing">
<value>34, 17</value>
</data>
<data name="LblCustomName.Text" xml:space="preserve">
<value>Имя</value>
</data>
<data name="GrpCustomCommands.Text" xml:space="preserve">
<value>Список</value>
</data>
<data name="LnkResetCustomCommands.Location" type="System.Drawing.Point, System.Drawing">
<value>568, -1</value>
</data>
<data name="LnkResetCustomCommands.Size" type="System.Drawing.Size, System.Drawing">
<value>66, 17</value>
</data>
<data name="LnkResetCustomCommands.Text" xml:space="preserve">
<value>Сбросить</value>
</data>
<data name="BtnRemoveCustomCommand.Location" type="System.Drawing.Point, System.Drawing">
<value>343, 209</value>
</data>
<data name="BtnRemoveCustomCommand.Size" type="System.Drawing.Size, System.Drawing">
<value>95, 23</value>
</data>
<data name="BtnRemoveCustomCommand.Text" xml:space="preserve">
<value>x Удалить</value>
</data>
<data name="BtnSaveCustomCommand.Location" type="System.Drawing.Point, System.Drawing">
<value>242, 209</value>
</data>
<data name="BtnSaveCustomCommand.Size" type="System.Drawing.Size, System.Drawing">
<value>95, 23</value>
</data>
<data name="BtnSaveCustomCommand.Text" xml:space="preserve">
<value>√ Сохранить</value>
</data>
<data name="TxtCustomName.Size" type="System.Drawing.Size, System.Drawing">
<value>195, 23</value>
</data>
</root>

View File

@@ -0,0 +1,132 @@
<?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="BtnExportCustomCommands.Text" xml:space="preserve">
<value>導出</value>
</data>
<data name="BtnLoadCustomCommands.Text" xml:space="preserve">
<value>載入</value>
</data>
<data name="LblCustomName.Text" xml:space="preserve">
<value>標籤</value>
</data>
<data name="BtnRemoveCustomCommand.Text" xml:space="preserve">
<value>× 刪除</value>
</data>
</root>

View File

@@ -0,0 +1,279 @@
namespace GrasscutterTools.Pages
{
partial class PageGiveArtifact
{
/// <summary>
/// 必需的设计器变量。
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// 清理所有正在使用的资源。
/// </summary>
/// <param name="disposing">如果应释放托管资源,为 true否则为 false。</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region
/// <summary>
/// 设计器支持所需的方法 - 不要修改
/// 使用代码编辑器修改此方法的内容。
/// </summary>
private void InitializeComponent()
{
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(PageGiveArtifact));
this.LnkCharacterBuilder = new System.Windows.Forms.LinkLabel();
this.LblArtifactLevelTip = new System.Windows.Forms.Label();
this.BtnAddSubAttr = new System.Windows.Forms.Button();
this.LblArtifactName = new System.Windows.Forms.Label();
this.LblArtifactPart = new System.Windows.Forms.Label();
this.CmbArtifactPart = new System.Windows.Forms.ComboBox();
this.CmbArtifactSet = new System.Windows.Forms.ComboBox();
this.LblArtifactSet = new System.Windows.Forms.Label();
this.NUDSubAttributionTimes = new System.Windows.Forms.NumericUpDown();
this.CmbSubAttributionValue = new System.Windows.Forms.ComboBox();
this.CmbSubAttribution = new System.Windows.Forms.ComboBox();
this.LblClearSubAttrCheckedList = new System.Windows.Forms.Label();
this.ListSubAttributionChecked = new System.Windows.Forms.ListBox();
this.LblArtifactLevel = new System.Windows.Forms.Label();
this.LblSubAttribution = new System.Windows.Forms.Label();
this.CmbMainAttribution = new System.Windows.Forms.ComboBox();
this.LblMainAttribution = new System.Windows.Forms.Label();
this.NUDArtifactLevel = new System.Windows.Forms.NumericUpDown();
this.LblArtifactStars = new System.Windows.Forms.Label();
this.NUDArtifactStars = new System.Windows.Forms.NumericUpDown();
((System.ComponentModel.ISupportInitialize)(this.NUDSubAttributionTimes)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.NUDArtifactLevel)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.NUDArtifactStars)).BeginInit();
this.SuspendLayout();
//
// LnkCharacterBuilder
//
resources.ApplyResources(this.LnkCharacterBuilder, "LnkCharacterBuilder");
this.LnkCharacterBuilder.Name = "LnkCharacterBuilder";
this.LnkCharacterBuilder.TabStop = true;
this.LnkCharacterBuilder.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.LnkCharacterBuilder_LinkClicked);
//
// LblArtifactLevelTip
//
resources.ApplyResources(this.LblArtifactLevelTip, "LblArtifactLevelTip");
this.LblArtifactLevelTip.ForeColor = System.Drawing.SystemColors.ControlDarkDark;
this.LblArtifactLevelTip.Name = "LblArtifactLevelTip";
//
// BtnAddSubAttr
//
resources.ApplyResources(this.BtnAddSubAttr, "BtnAddSubAttr");
this.BtnAddSubAttr.Name = "BtnAddSubAttr";
this.BtnAddSubAttr.UseVisualStyleBackColor = true;
this.BtnAddSubAttr.Click += new System.EventHandler(this.BtnAddSubAttr_Click);
//
// LblArtifactName
//
resources.ApplyResources(this.LblArtifactName, "LblArtifactName");
this.LblArtifactName.Name = "LblArtifactName";
//
// LblArtifactPart
//
resources.ApplyResources(this.LblArtifactPart, "LblArtifactPart");
this.LblArtifactPart.Name = "LblArtifactPart";
//
// CmbArtifactPart
//
resources.ApplyResources(this.CmbArtifactPart, "CmbArtifactPart");
this.CmbArtifactPart.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.CmbArtifactPart.DropDownWidth = 125;
this.CmbArtifactPart.FormattingEnabled = true;
this.CmbArtifactPart.Name = "CmbArtifactPart";
this.CmbArtifactPart.SelectedIndexChanged += new System.EventHandler(this.CmbArtifactPart_SelectedIndexChanged);
//
// CmbArtifactSet
//
resources.ApplyResources(this.CmbArtifactSet, "CmbArtifactSet");
this.CmbArtifactSet.AutoCompleteMode = System.Windows.Forms.AutoCompleteMode.SuggestAppend;
this.CmbArtifactSet.AutoCompleteSource = System.Windows.Forms.AutoCompleteSource.ListItems;
this.CmbArtifactSet.FormattingEnabled = true;
this.CmbArtifactSet.Name = "CmbArtifactSet";
this.CmbArtifactSet.SelectedIndexChanged += new System.EventHandler(this.CmbArtifactSet_SelectedIndexChanged);
//
// LblArtifactSet
//
resources.ApplyResources(this.LblArtifactSet, "LblArtifactSet");
this.LblArtifactSet.Name = "LblArtifactSet";
//
// NUDSubAttributionTimes
//
resources.ApplyResources(this.NUDSubAttributionTimes, "NUDSubAttributionTimes");
this.NUDSubAttributionTimes.Maximum = new decimal(new int[] {
1000,
0,
0,
0});
this.NUDSubAttributionTimes.Minimum = new decimal(new int[] {
1,
0,
0,
0});
this.NUDSubAttributionTimes.Name = "NUDSubAttributionTimes";
this.NUDSubAttributionTimes.Value = new decimal(new int[] {
1,
0,
0,
0});
//
// CmbSubAttributionValue
//
resources.ApplyResources(this.CmbSubAttributionValue, "CmbSubAttributionValue");
this.CmbSubAttributionValue.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.CmbSubAttributionValue.FormattingEnabled = true;
this.CmbSubAttributionValue.Name = "CmbSubAttributionValue";
//
// CmbSubAttribution
//
resources.ApplyResources(this.CmbSubAttribution, "CmbSubAttribution");
this.CmbSubAttribution.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.CmbSubAttribution.FormattingEnabled = true;
this.CmbSubAttribution.Name = "CmbSubAttribution";
this.CmbSubAttribution.SelectedIndexChanged += new System.EventHandler(this.CmbSubAttribution_SelectedIndexChanged);
//
// LblClearSubAttrCheckedList
//
resources.ApplyResources(this.LblClearSubAttrCheckedList, "LblClearSubAttrCheckedList");
this.LblClearSubAttrCheckedList.Cursor = System.Windows.Forms.Cursors.Hand;
this.LblClearSubAttrCheckedList.Name = "LblClearSubAttrCheckedList";
this.LblClearSubAttrCheckedList.Click += new System.EventHandler(this.LblClearSubAttrCheckedList_Click);
//
// ListSubAttributionChecked
//
resources.ApplyResources(this.ListSubAttributionChecked, "ListSubAttributionChecked");
this.ListSubAttributionChecked.FormattingEnabled = true;
this.ListSubAttributionChecked.Name = "ListSubAttributionChecked";
this.ListSubAttributionChecked.SelectedIndexChanged += new System.EventHandler(this.ListSubAttributionChecked_SelectedIndexChanged);
//
// LblArtifactLevel
//
resources.ApplyResources(this.LblArtifactLevel, "LblArtifactLevel");
this.LblArtifactLevel.Name = "LblArtifactLevel";
//
// LblSubAttribution
//
resources.ApplyResources(this.LblSubAttribution, "LblSubAttribution");
this.LblSubAttribution.Name = "LblSubAttribution";
//
// CmbMainAttribution
//
resources.ApplyResources(this.CmbMainAttribution, "CmbMainAttribution");
this.CmbMainAttribution.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.CmbMainAttribution.FormattingEnabled = true;
this.CmbMainAttribution.Name = "CmbMainAttribution";
//
// LblMainAttribution
//
resources.ApplyResources(this.LblMainAttribution, "LblMainAttribution");
this.LblMainAttribution.Name = "LblMainAttribution";
//
// NUDArtifactLevel
//
resources.ApplyResources(this.NUDArtifactLevel, "NUDArtifactLevel");
this.NUDArtifactLevel.Maximum = new decimal(new int[] {
20,
0,
0,
0});
this.NUDArtifactLevel.Name = "NUDArtifactLevel";
this.NUDArtifactLevel.Value = new decimal(new int[] {
20,
0,
0,
0});
this.NUDArtifactLevel.ValueChanged += new System.EventHandler(this.ArtifactInputChanged);
//
// LblArtifactStars
//
resources.ApplyResources(this.LblArtifactStars, "LblArtifactStars");
this.LblArtifactStars.Name = "LblArtifactStars";
//
// NUDArtifactStars
//
resources.ApplyResources(this.NUDArtifactStars, "NUDArtifactStars");
this.NUDArtifactStars.Maximum = new decimal(new int[] {
5,
0,
0,
0});
this.NUDArtifactStars.Minimum = new decimal(new int[] {
1,
0,
0,
0});
this.NUDArtifactStars.Name = "NUDArtifactStars";
this.NUDArtifactStars.Value = new decimal(new int[] {
5,
0,
0,
0});
this.NUDArtifactStars.ValueChanged += new System.EventHandler(this.ArtifactInputChanged);
//
// PageGiveArtifact
//
resources.ApplyResources(this, "$this");
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.Controls.Add(this.LnkCharacterBuilder);
this.Controls.Add(this.LblArtifactLevelTip);
this.Controls.Add(this.BtnAddSubAttr);
this.Controls.Add(this.LblArtifactName);
this.Controls.Add(this.LblArtifactPart);
this.Controls.Add(this.CmbArtifactPart);
this.Controls.Add(this.CmbArtifactSet);
this.Controls.Add(this.LblArtifactSet);
this.Controls.Add(this.NUDSubAttributionTimes);
this.Controls.Add(this.CmbSubAttributionValue);
this.Controls.Add(this.CmbSubAttribution);
this.Controls.Add(this.LblClearSubAttrCheckedList);
this.Controls.Add(this.ListSubAttributionChecked);
this.Controls.Add(this.LblArtifactLevel);
this.Controls.Add(this.LblSubAttribution);
this.Controls.Add(this.CmbMainAttribution);
this.Controls.Add(this.LblMainAttribution);
this.Controls.Add(this.NUDArtifactLevel);
this.Controls.Add(this.LblArtifactStars);
this.Controls.Add(this.NUDArtifactStars);
this.Name = "PageGiveArtifact";
((System.ComponentModel.ISupportInitialize)(this.NUDSubAttributionTimes)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.NUDArtifactLevel)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.NUDArtifactStars)).EndInit();
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private System.Windows.Forms.LinkLabel LnkCharacterBuilder;
private System.Windows.Forms.Label LblArtifactLevelTip;
private System.Windows.Forms.Button BtnAddSubAttr;
private System.Windows.Forms.Label LblArtifactName;
private System.Windows.Forms.Label LblArtifactPart;
private System.Windows.Forms.ComboBox CmbArtifactPart;
private System.Windows.Forms.ComboBox CmbArtifactSet;
private System.Windows.Forms.Label LblArtifactSet;
private System.Windows.Forms.NumericUpDown NUDSubAttributionTimes;
private System.Windows.Forms.ComboBox CmbSubAttributionValue;
private System.Windows.Forms.ComboBox CmbSubAttribution;
private System.Windows.Forms.Label LblClearSubAttrCheckedList;
private System.Windows.Forms.ListBox ListSubAttributionChecked;
private System.Windows.Forms.Label LblArtifactLevel;
private System.Windows.Forms.Label LblSubAttribution;
private System.Windows.Forms.ComboBox CmbMainAttribution;
private System.Windows.Forms.Label LblMainAttribution;
private System.Windows.Forms.NumericUpDown NUDArtifactLevel;
private System.Windows.Forms.Label LblArtifactStars;
private System.Windows.Forms.NumericUpDown NUDArtifactStars;
}
}

View File

@@ -0,0 +1,248 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;
using GrasscutterTools.Game;
using GrasscutterTools.Properties;
using GrasscutterTools.Utils;
namespace GrasscutterTools.Pages
{
internal partial class PageGiveArtifact : BasePage
{
public PageGiveArtifact()
{
InitializeComponent();
if (DesignMode) return;
CommandVersion.VersionChanged += (_, _1) => ChangeTPArtifact();
}
/// <summary>
/// 副词条集
/// </summary>
private Dictionary<string, List<KeyValuePair<int, string>>> subAttrs;
/// <summary>
/// 部位标签集
/// </summary>
private string[] ArtifactPartLabels;
/// <summary>
/// 初始化圣遗物列表
/// </summary>
public override void OnLoad()
{
CmbArtifactSet.Items.Clear();
CmbArtifactSet.Items.AddRange(GameData.ArtifactCats.Names);
CmbMainAttribution.Items.Clear();
CmbMainAttribution.Items.AddRange(GameData.ArtifactMainAttribution.Lines);
subAttrs = new Dictionary<string, List<KeyValuePair<int, string>>>();
for (int i = 0; i < GameData.ArtifactSubAttribution.Count; i++)
{
var name = GameData.ArtifactSubAttribution.Names[i];
var pi = name.IndexOf('+');
var prefix = name.Substring(0, pi);
var value = name.Substring(pi);
if (!subAttrs.TryGetValue(prefix, out List<KeyValuePair<int, string>> list))
{
list = new List<KeyValuePair<int, string>>();
subAttrs[prefix] = list;
}
list.Add(new KeyValuePair<int, string>(GameData.ArtifactSubAttribution.Ids[i], value));
}
CmbSubAttribution.Items.Clear();
CmbSubAttribution.Items.AddRange(subAttrs.Keys.ToArray());
ArtifactPartLabels = Resources.ArtifactPartLabels.Split(',');
ChangeTPArtifact();
}
/// <summary>
/// 圣遗物套装下拉框选中项改变时触发
/// </summary>
private void CmbArtifactSet_SelectedIndexChanged(object sender, EventArgs e)
{
if (CmbArtifactSet.SelectedIndex < 0)
return;
var setId = GameData.ArtifactCats.Ids[CmbArtifactSet.SelectedIndex];
var beginIndex = Array.FindIndex(GameData.Artifacts.Ids, id => id / 1000 == setId);
var endIndex = Array.FindLastIndex(GameData.Artifacts.Ids, id => id / 1000 == setId);
// 限制星级输入范围
NUDArtifactStars.Minimum = GameData.Artifacts.Ids[beginIndex] / 100 % 10;
NUDArtifactStars.Maximum = GameData.Artifacts.Ids[endIndex] / 100 % 10;
var parts = GameData.Artifacts.Names.Skip(beginIndex).Take(endIndex - beginIndex + 1).Distinct().ToArray();
var i = CmbArtifactPart.SelectedIndex;
CmbArtifactPart.Items.Clear();
CmbArtifactPart.Items.AddRange(parts);
if (i < parts.Length) // 重新选中
CmbArtifactPart.SelectedIndex = i;
ArtifactInputChanged(sender, e);
}
/// <summary>
/// 圣遗物部件选中项改变时触发
/// </summary>
private void CmbArtifactPart_SelectedIndexChanged(object sender, EventArgs e)
{
if (CmbArtifactPart.SelectedIndex < 0)
{
LblArtifactName.Text = "";
return;
}
var name = CmbArtifactPart.SelectedItem as string;
var id = GameData.Artifacts.Ids[Array.IndexOf(GameData.Artifacts.Names, name)];
var pardIndex = id / 10 % 10 - 1;
if (pardIndex < ArtifactPartLabels?.Length)
LblArtifactName.Text = ArtifactPartLabels[pardIndex];
else
LblArtifactName.Text = "";
ArtifactInputChanged(sender, e);
}
/// <summary>
/// 圣遗物页面输入改变时调用
/// </summary>
private void ArtifactInputChanged(object sender, EventArgs e)
{
// 圣遗物ID五位数ABCDE其中AB是圣遗物类型魔女/水/风套......
// C是星级5就是五星D是圣遗物部位E是初始词条数量
if (CmbArtifactSet.SelectedIndex < 0 || CmbArtifactPart.SelectedIndex < 0)
return;
//var setId = GameData.ArtifactCats.Ids[CmbArtifactSet.SelectedIndex];
//var part = CmbArtifactPart.SelectedIndex+1;
//var index = Array.FindLastIndex(
// GameData.Artifacts.Ids,
// it => it / 1000 == setId // 套装ID
// //&& it / 100 % 10 == NUDArtifactStars.Value // 星级
// && it / 10 % 10 == part // 部位
// );
var name = CmbArtifactPart.SelectedItem as string;
var id = GameData.Artifacts.Ids[Array.LastIndexOf(GameData.Artifacts.Names, name)];
id = id / 1000 * 1000 + (int)NUDArtifactStars.Value * 100 + id % 100;
if (CmbMainAttribution.SelectedIndex < 0)
{
if (CommandVersion.Check(CommandVersion.V1_2_2))
SetCommand("/give", $"{id} lv{NUDArtifactLevel.Value}");
else
SetCommand("/giveart", $"{id} {NUDArtifactLevel.Value}");
}
else
{
var t = CmbMainAttribution.SelectedItem as string;
var mainAttr = ItemMap.ToId(t);
var subAttrs = "";
if (ListSubAttributionChecked.Items.Count > 0)
{
var subAttrDir = new Dictionary<int, int>(ListSubAttributionChecked.Items.Count);
foreach (string item in ListSubAttributionChecked.Items)
{
var subId = ItemMap.ToId(item);
var times = int.Parse(item.Substring(item.LastIndexOf('x') + 1));
if (subAttrDir.ContainsKey(subId))
subAttrDir[subId] += times;
else
subAttrDir[subId] = times;
}
foreach (var kv in subAttrDir)
{
if (kv.Value > 1)
subAttrs += $"{kv.Key},{kv.Value} ";
else
subAttrs += $"{kv.Key} ";
}
}
if (CommandVersion.Check(CommandVersion.V1_2_2))
SetCommand("/give", $"{id} lv{NUDArtifactLevel.Value} {mainAttr} {subAttrs}");
else
SetCommand("/giveart", $"{id} {mainAttr} {subAttrs}{NUDArtifactLevel.Value}");
}
}
/// <summary>
/// 副词条下拉框选中项改变时触发
/// </summary>
private void CmbSubAttribution_SelectedIndexChanged(object sender, EventArgs e)
{
CmbSubAttributionValue.Items.Clear();
if (CmbSubAttribution.SelectedIndex >= 0)
{
CmbSubAttributionValue.Items.AddRange(subAttrs[CmbSubAttribution.SelectedItem as string].Select(kv => kv.Value).ToArray());
CmbSubAttributionValue.SelectedIndex = 0;
}
}
/// <summary>
/// 点击添加副词条按钮时触发
/// </summary>
private void BtnAddSubAttr_Click(object sender, EventArgs e)
{
if (CmbSubAttribution.SelectedIndex >= 0 && CmbSubAttributionValue.SelectedIndex >= 0)
{
var name = CmbSubAttribution.SelectedItem as string;
var kv = subAttrs[name][CmbSubAttributionValue.SelectedIndex];
ListSubAttributionChecked.Items.Add($"{kv.Key}:{name}{kv.Value} x{NUDSubAttributionTimes.Value}");
ArtifactInputChanged(null, EventArgs.Empty);
}
}
/// <summary>
/// 已添加的副词条列表选中项改变时触发
/// </summary>
private void ListSubAttributionChecked_SelectedIndexChanged(object sender, EventArgs e)
{
if (ListSubAttributionChecked.SelectedIndex >= 0)
{
ListSubAttributionChecked.Items.RemoveAt(ListSubAttributionChecked.SelectedIndex);
ListSubAttributionChecked.ClearSelected();
ArtifactInputChanged(null, EventArgs.Empty);
}
}
/// <summary>
/// 清除词条链接标签点击时触发
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void LblClearSubAttrCheckedList_Click(object sender, EventArgs e)
{
CmbMainAttribution.SelectedIndex = -1;
ListSubAttributionChecked.Items.Clear();
ArtifactInputChanged(null, EventArgs.Empty);
}
/// <summary>
/// 改变圣遗物等级输入范围旧版本范围是1-21
/// </summary>
private void ChangeTPArtifact()
{
if (CommandVersion.Check(CommandVersion.V1_2_2))
{
NUDArtifactLevel.Minimum = 0;
NUDArtifactLevel.Maximum = 20;
}
else
{
NUDArtifactLevel.Minimum = 1;
NUDArtifactLevel.Maximum = 21;
}
LblArtifactLevelTip.Text = $"[{NUDArtifactLevel.Minimum}-{NUDArtifactLevel.Maximum}]";
}
/// <summary>
/// 点击CharacterBuilder链接标签时触发
/// </summary>
private void LnkCharacterBuilder_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
UIUtil.OpenURL("https://github.com/Penelopeep/CharacterBuilder");
}
}
}

View File

@@ -0,0 +1,184 @@
<?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="BtnAddSubAttr.Text" xml:space="preserve">
<value>+ Add</value>
</data>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="LblArtifactPart.Location" type="System.Drawing.Point, System.Drawing">
<value>294, 7</value>
</data>
<data name="LblArtifactPart.Size" type="System.Drawing.Size, System.Drawing">
<value>31, 17</value>
</data>
<data name="LblArtifactPart.Text" xml:space="preserve">
<value>Part</value>
</data>
<data name="LblArtifactSet.Location" type="System.Drawing.Point, System.Drawing">
<value>107, 7</value>
</data>
<data name="LblArtifactSet.Size" type="System.Drawing.Size, System.Drawing">
<value>49, 17</value>
</data>
<data name="LblArtifactSet.Text" xml:space="preserve">
<value>Artifact</value>
</data>
<data name="LblClearSubAttrCheckedList.Size" type="System.Drawing.Size, System.Drawing">
<value>50, 17</value>
</data>
<data name="LblClearSubAttrCheckedList.Text" xml:space="preserve">
<value>X Clear</value>
</data>
<data name="LblArtifactLevel.Location" type="System.Drawing.Point, System.Drawing">
<value>119, 37</value>
</data>
<data name="LblArtifactLevel.Size" type="System.Drawing.Size, System.Drawing">
<value>37, 17</value>
</data>
<data name="LblArtifactLevel.Text" xml:space="preserve">
<value>Level</value>
</data>
<data name="LblSubAttribution.Location" type="System.Drawing.Point, System.Drawing">
<value>100, 97</value>
</data>
<data name="LblSubAttribution.Size" type="System.Drawing.Size, System.Drawing">
<value>56, 17</value>
</data>
<data name="LblSubAttribution.Text" xml:space="preserve">
<value>Sub Stat</value>
</data>
<data name="LblMainAttribution.Location" type="System.Drawing.Point, System.Drawing">
<value>93, 67</value>
</data>
<data name="LblMainAttribution.Size" type="System.Drawing.Size, System.Drawing">
<value>63, 17</value>
</data>
<data name="LblMainAttribution.Text" xml:space="preserve">
<value>Main Stat</value>
</data>
<data name="LblArtifactStars.Location" type="System.Drawing.Point, System.Drawing">
<value>343, 37</value>
</data>
<data name="LblArtifactStars.Size" type="System.Drawing.Size, System.Drawing">
<value>37, 17</value>
</data>
<data name="LblArtifactStars.Text" xml:space="preserve">
<value>Stars</value>
</data>
</root>

View File

@@ -0,0 +1,711 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="LnkCharacterBuilder.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Bottom, Right</value>
</data>
<assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="LnkCharacterBuilder.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="LnkCharacterBuilder.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="LnkCharacterBuilder.Location" type="System.Drawing.Point, System.Drawing">
<value>534, 214</value>
</data>
<data name="LnkCharacterBuilder.Size" type="System.Drawing.Size, System.Drawing">
<value>109, 17</value>
</data>
<data name="LnkCharacterBuilder.TabIndex" type="System.Int32, mscorlib">
<value>18</value>
</data>
<data name="LnkCharacterBuilder.Text" xml:space="preserve">
<value>Character Builder</value>
</data>
<data name="&gt;&gt;LnkCharacterBuilder.Name" xml:space="preserve">
<value>LnkCharacterBuilder</value>
</data>
<data name="&gt;&gt;LnkCharacterBuilder.Type" xml:space="preserve">
<value>System.Windows.Forms.LinkLabel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;LnkCharacterBuilder.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;LnkCharacterBuilder.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="LblArtifactLevelTip.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top</value>
</data>
<data name="LblArtifactLevelTip.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="LblArtifactLevelTip.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="LblArtifactLevelTip.Location" type="System.Drawing.Point, System.Drawing">
<value>218, 37</value>
</data>
<data name="LblArtifactLevelTip.Size" type="System.Drawing.Size, System.Drawing">
<value>42, 17</value>
</data>
<data name="LblArtifactLevelTip.TabIndex" type="System.Int32, mscorlib">
<value>6</value>
</data>
<data name="LblArtifactLevelTip.Text" xml:space="preserve">
<value>[0-20]</value>
</data>
<data name="&gt;&gt;LblArtifactLevelTip.Name" xml:space="preserve">
<value>LblArtifactLevelTip</value>
</data>
<data name="&gt;&gt;LblArtifactLevelTip.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;LblArtifactLevelTip.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;LblArtifactLevelTip.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="BtnAddSubAttr.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top</value>
</data>
<data name="BtnAddSubAttr.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="BtnAddSubAttr.Location" type="System.Drawing.Point, System.Drawing">
<value>460, 125</value>
</data>
<data name="BtnAddSubAttr.Size" type="System.Drawing.Size, System.Drawing">
<value>75, 23</value>
</data>
<data name="BtnAddSubAttr.TabIndex" type="System.Int32, mscorlib">
<value>16</value>
</data>
<data name="BtnAddSubAttr.Text" xml:space="preserve">
<value>+ 添加</value>
</data>
<data name="&gt;&gt;BtnAddSubAttr.Name" xml:space="preserve">
<value>BtnAddSubAttr</value>
</data>
<data name="&gt;&gt;BtnAddSubAttr.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;BtnAddSubAttr.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;BtnAddSubAttr.ZOrder" xml:space="preserve">
<value>2</value>
</data>
<data name="LblArtifactName.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top</value>
</data>
<data name="LblArtifactName.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="LblArtifactName.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="LblArtifactName.Location" type="System.Drawing.Point, System.Drawing">
<value>457, 7</value>
</data>
<data name="LblArtifactName.Size" type="System.Drawing.Size, System.Drawing">
<value>0, 17</value>
</data>
<data name="LblArtifactName.TabIndex" type="System.Int32, mscorlib">
<value>24</value>
</data>
<data name="&gt;&gt;LblArtifactName.Name" xml:space="preserve">
<value>LblArtifactName</value>
</data>
<data name="&gt;&gt;LblArtifactName.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;LblArtifactName.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;LblArtifactName.ZOrder" xml:space="preserve">
<value>3</value>
</data>
<data name="LblArtifactPart.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top</value>
</data>
<data name="LblArtifactPart.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="LblArtifactPart.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="LblArtifactPart.Location" type="System.Drawing.Point, System.Drawing">
<value>293, 7</value>
</data>
<data name="LblArtifactPart.Size" type="System.Drawing.Size, System.Drawing">
<value>32, 17</value>
</data>
<data name="LblArtifactPart.TabIndex" type="System.Int32, mscorlib">
<value>2</value>
</data>
<data name="LblArtifactPart.Text" xml:space="preserve">
<value>部位</value>
</data>
<data name="&gt;&gt;LblArtifactPart.Name" xml:space="preserve">
<value>LblArtifactPart</value>
</data>
<data name="&gt;&gt;LblArtifactPart.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;LblArtifactPart.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;LblArtifactPart.ZOrder" xml:space="preserve">
<value>4</value>
</data>
<data name="CmbArtifactPart.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top</value>
</data>
<data name="CmbArtifactPart.Location" type="System.Drawing.Point, System.Drawing">
<value>331, 4</value>
</data>
<data name="CmbArtifactPart.Size" type="System.Drawing.Size, System.Drawing">
<value>120, 25</value>
</data>
<data name="CmbArtifactPart.TabIndex" type="System.Int32, mscorlib">
<value>3</value>
</data>
<data name="&gt;&gt;CmbArtifactPart.Name" xml:space="preserve">
<value>CmbArtifactPart</value>
</data>
<data name="&gt;&gt;CmbArtifactPart.Type" xml:space="preserve">
<value>System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;CmbArtifactPart.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;CmbArtifactPart.ZOrder" xml:space="preserve">
<value>5</value>
</data>
<data name="CmbArtifactSet.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top</value>
</data>
<data name="CmbArtifactSet.Location" type="System.Drawing.Point, System.Drawing">
<value>162, 4</value>
</data>
<data name="CmbArtifactSet.Size" type="System.Drawing.Size, System.Drawing">
<value>125, 25</value>
</data>
<data name="CmbArtifactSet.TabIndex" type="System.Int32, mscorlib">
<value>1</value>
</data>
<data name="&gt;&gt;CmbArtifactSet.Name" xml:space="preserve">
<value>CmbArtifactSet</value>
</data>
<data name="&gt;&gt;CmbArtifactSet.Type" xml:space="preserve">
<value>System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;CmbArtifactSet.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;CmbArtifactSet.ZOrder" xml:space="preserve">
<value>6</value>
</data>
<data name="LblArtifactSet.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top</value>
</data>
<data name="LblArtifactSet.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="LblArtifactSet.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="LblArtifactSet.Location" type="System.Drawing.Point, System.Drawing">
<value>124, 7</value>
</data>
<data name="LblArtifactSet.Size" type="System.Drawing.Size, System.Drawing">
<value>32, 17</value>
</data>
<data name="LblArtifactSet.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
</data>
<data name="LblArtifactSet.Text" xml:space="preserve">
<value>套装</value>
</data>
<data name="&gt;&gt;LblArtifactSet.Name" xml:space="preserve">
<value>LblArtifactSet</value>
</data>
<data name="&gt;&gt;LblArtifactSet.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;LblArtifactSet.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;LblArtifactSet.ZOrder" xml:space="preserve">
<value>7</value>
</data>
<data name="NUDSubAttributionTimes.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top</value>
</data>
<data name="NUDSubAttributionTimes.Location" type="System.Drawing.Point, System.Drawing">
<value>460, 96</value>
</data>
<data name="NUDSubAttributionTimes.Size" type="System.Drawing.Size, System.Drawing">
<value>51, 23</value>
</data>
<data name="NUDSubAttributionTimes.TabIndex" type="System.Int32, mscorlib">
<value>14</value>
</data>
<data name="&gt;&gt;NUDSubAttributionTimes.Name" xml:space="preserve">
<value>NUDSubAttributionTimes</value>
</data>
<data name="&gt;&gt;NUDSubAttributionTimes.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;NUDSubAttributionTimes.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;NUDSubAttributionTimes.ZOrder" xml:space="preserve">
<value>8</value>
</data>
<data name="CmbSubAttributionValue.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top</value>
</data>
<data name="CmbSubAttributionValue.Location" type="System.Drawing.Point, System.Drawing">
<value>331, 94</value>
</data>
<data name="CmbSubAttributionValue.Size" type="System.Drawing.Size, System.Drawing">
<value>120, 25</value>
</data>
<data name="CmbSubAttributionValue.TabIndex" type="System.Int32, mscorlib">
<value>13</value>
</data>
<data name="&gt;&gt;CmbSubAttributionValue.Name" xml:space="preserve">
<value>CmbSubAttributionValue</value>
</data>
<data name="&gt;&gt;CmbSubAttributionValue.Type" xml:space="preserve">
<value>System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;CmbSubAttributionValue.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;CmbSubAttributionValue.ZOrder" xml:space="preserve">
<value>9</value>
</data>
<data name="CmbSubAttribution.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top</value>
</data>
<data name="CmbSubAttribution.Location" type="System.Drawing.Point, System.Drawing">
<value>162, 95</value>
</data>
<data name="CmbSubAttribution.Size" type="System.Drawing.Size, System.Drawing">
<value>163, 25</value>
</data>
<data name="CmbSubAttribution.TabIndex" type="System.Int32, mscorlib">
<value>12</value>
</data>
<data name="&gt;&gt;CmbSubAttribution.Name" xml:space="preserve">
<value>CmbSubAttribution</value>
</data>
<data name="&gt;&gt;CmbSubAttribution.Type" xml:space="preserve">
<value>System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;CmbSubAttribution.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;CmbSubAttribution.ZOrder" xml:space="preserve">
<value>10</value>
</data>
<data name="LblClearSubAttrCheckedList.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top</value>
</data>
<data name="LblClearSubAttrCheckedList.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="LblClearSubAttrCheckedList.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="LblClearSubAttrCheckedList.Location" type="System.Drawing.Point, System.Drawing">
<value>457, 214</value>
</data>
<data name="LblClearSubAttrCheckedList.Size" type="System.Drawing.Size, System.Drawing">
<value>44, 17</value>
</data>
<data name="LblClearSubAttrCheckedList.TabIndex" type="System.Int32, mscorlib">
<value>17</value>
</data>
<data name="LblClearSubAttrCheckedList.Text" xml:space="preserve">
<value>X 清空</value>
</data>
<data name="&gt;&gt;LblClearSubAttrCheckedList.Name" xml:space="preserve">
<value>LblClearSubAttrCheckedList</value>
</data>
<data name="&gt;&gt;LblClearSubAttrCheckedList.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;LblClearSubAttrCheckedList.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;LblClearSubAttrCheckedList.ZOrder" xml:space="preserve">
<value>11</value>
</data>
<data name="ListSubAttributionChecked.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Bottom</value>
</data>
<data name="ListSubAttributionChecked.ItemHeight" type="System.Int32, mscorlib">
<value>17</value>
</data>
<data name="ListSubAttributionChecked.Location" type="System.Drawing.Point, System.Drawing">
<value>162, 125</value>
</data>
<data name="ListSubAttributionChecked.Size" type="System.Drawing.Size, System.Drawing">
<value>289, 106</value>
</data>
<data name="ListSubAttributionChecked.TabIndex" type="System.Int32, mscorlib">
<value>15</value>
</data>
<data name="&gt;&gt;ListSubAttributionChecked.Name" xml:space="preserve">
<value>ListSubAttributionChecked</value>
</data>
<data name="&gt;&gt;ListSubAttributionChecked.Type" xml:space="preserve">
<value>System.Windows.Forms.ListBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;ListSubAttributionChecked.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;ListSubAttributionChecked.ZOrder" xml:space="preserve">
<value>12</value>
</data>
<data name="LblArtifactLevel.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top</value>
</data>
<data name="LblArtifactLevel.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="LblArtifactLevel.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="LblArtifactLevel.Location" type="System.Drawing.Point, System.Drawing">
<value>124, 37</value>
</data>
<data name="LblArtifactLevel.Size" type="System.Drawing.Size, System.Drawing">
<value>32, 17</value>
</data>
<data name="LblArtifactLevel.TabIndex" type="System.Int32, mscorlib">
<value>4</value>
</data>
<data name="LblArtifactLevel.Text" xml:space="preserve">
<value>等级</value>
</data>
<data name="&gt;&gt;LblArtifactLevel.Name" xml:space="preserve">
<value>LblArtifactLevel</value>
</data>
<data name="&gt;&gt;LblArtifactLevel.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;LblArtifactLevel.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;LblArtifactLevel.ZOrder" xml:space="preserve">
<value>13</value>
</data>
<data name="LblSubAttribution.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top</value>
</data>
<data name="LblSubAttribution.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="LblSubAttribution.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="LblSubAttribution.Location" type="System.Drawing.Point, System.Drawing">
<value>112, 98</value>
</data>
<data name="LblSubAttribution.Size" type="System.Drawing.Size, System.Drawing">
<value>44, 17</value>
</data>
<data name="LblSubAttribution.TabIndex" type="System.Int32, mscorlib">
<value>11</value>
</data>
<data name="LblSubAttribution.Text" xml:space="preserve">
<value>副词条</value>
</data>
<data name="&gt;&gt;LblSubAttribution.Name" xml:space="preserve">
<value>LblSubAttribution</value>
</data>
<data name="&gt;&gt;LblSubAttribution.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;LblSubAttribution.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;LblSubAttribution.ZOrder" xml:space="preserve">
<value>14</value>
</data>
<data name="CmbMainAttribution.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top</value>
</data>
<data name="CmbMainAttribution.Location" type="System.Drawing.Point, System.Drawing">
<value>162, 64</value>
</data>
<data name="CmbMainAttribution.Size" type="System.Drawing.Size, System.Drawing">
<value>289, 25</value>
</data>
<data name="CmbMainAttribution.TabIndex" type="System.Int32, mscorlib">
<value>10</value>
</data>
<data name="&gt;&gt;CmbMainAttribution.Name" xml:space="preserve">
<value>CmbMainAttribution</value>
</data>
<data name="&gt;&gt;CmbMainAttribution.Type" xml:space="preserve">
<value>System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;CmbMainAttribution.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;CmbMainAttribution.ZOrder" xml:space="preserve">
<value>15</value>
</data>
<data name="LblMainAttribution.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top</value>
</data>
<data name="LblMainAttribution.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="LblMainAttribution.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="LblMainAttribution.Location" type="System.Drawing.Point, System.Drawing">
<value>112, 67</value>
</data>
<data name="LblMainAttribution.Size" type="System.Drawing.Size, System.Drawing">
<value>44, 17</value>
</data>
<data name="LblMainAttribution.TabIndex" type="System.Int32, mscorlib">
<value>9</value>
</data>
<data name="LblMainAttribution.Text" xml:space="preserve">
<value>主词条</value>
</data>
<data name="&gt;&gt;LblMainAttribution.Name" xml:space="preserve">
<value>LblMainAttribution</value>
</data>
<data name="&gt;&gt;LblMainAttribution.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;LblMainAttribution.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;LblMainAttribution.ZOrder" xml:space="preserve">
<value>16</value>
</data>
<data name="NUDArtifactLevel.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top</value>
</data>
<data name="NUDArtifactLevel.Location" type="System.Drawing.Point, System.Drawing">
<value>162, 35</value>
</data>
<data name="NUDArtifactLevel.Size" type="System.Drawing.Size, System.Drawing">
<value>50, 23</value>
</data>
<data name="NUDArtifactLevel.TabIndex" type="System.Int32, mscorlib">
<value>5</value>
</data>
<data name="&gt;&gt;NUDArtifactLevel.Name" xml:space="preserve">
<value>NUDArtifactLevel</value>
</data>
<data name="&gt;&gt;NUDArtifactLevel.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;NUDArtifactLevel.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;NUDArtifactLevel.ZOrder" xml:space="preserve">
<value>17</value>
</data>
<data name="LblArtifactStars.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top</value>
</data>
<data name="LblArtifactStars.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="LblArtifactStars.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="LblArtifactStars.Location" type="System.Drawing.Point, System.Drawing">
<value>348, 37</value>
</data>
<data name="LblArtifactStars.Size" type="System.Drawing.Size, System.Drawing">
<value>32, 17</value>
</data>
<data name="LblArtifactStars.TabIndex" type="System.Int32, mscorlib">
<value>7</value>
</data>
<data name="LblArtifactStars.Text" xml:space="preserve">
<value>星级</value>
</data>
<data name="&gt;&gt;LblArtifactStars.Name" xml:space="preserve">
<value>LblArtifactStars</value>
</data>
<data name="&gt;&gt;LblArtifactStars.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;LblArtifactStars.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;LblArtifactStars.ZOrder" xml:space="preserve">
<value>18</value>
</data>
<data name="NUDArtifactStars.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top</value>
</data>
<data name="NUDArtifactStars.Location" type="System.Drawing.Point, System.Drawing">
<value>386, 35</value>
</data>
<data name="NUDArtifactStars.Size" type="System.Drawing.Size, System.Drawing">
<value>65, 23</value>
</data>
<data name="NUDArtifactStars.TabIndex" type="System.Int32, mscorlib">
<value>8</value>
</data>
<data name="&gt;&gt;NUDArtifactStars.Name" xml:space="preserve">
<value>NUDArtifactStars</value>
</data>
<data name="&gt;&gt;NUDArtifactStars.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;NUDArtifactStars.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;NUDArtifactStars.ZOrder" xml:space="preserve">
<value>19</value>
</data>
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
<value>7, 17</value>
</data>
<data name="&gt;&gt;$this.Name" xml:space="preserve">
<value>PageGiveArtifact</value>
</data>
<data name="&gt;&gt;$this.Type" xml:space="preserve">
<value>GrasscutterTools.Pages.BasePage, GrasscutterTools, Version=1.7.4.0, Culture=neutral, PublicKeyToken=de2b1c089621e923</value>
</data>
</root>

View File

@@ -0,0 +1,190 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="BtnAddSubAttr.Size" type="System.Drawing.Size, System.Drawing">
<value>100, 23</value>
</data>
<data name="BtnAddSubAttr.Text" xml:space="preserve">
<value>+ Добавить</value>
</data>
<data name="LblArtifactPart.Location" type="System.Drawing.Point, System.Drawing">
<value>283, 7</value>
</data>
<data name="LblArtifactPart.Size" type="System.Drawing.Size, System.Drawing">
<value>42, 17</value>
</data>
<data name="LblArtifactPart.Text" xml:space="preserve">
<value>Часть</value>
</data>
<data name="CmbArtifactSet.Size" type="System.Drawing.Size, System.Drawing">
<value>115, 25</value>
</data>
<data name="LblArtifactSet.Location" type="System.Drawing.Point, System.Drawing">
<value>92, 7</value>
</data>
<data name="LblArtifactSet.Size" type="System.Drawing.Size, System.Drawing">
<value>64, 17</value>
</data>
<data name="LblArtifactSet.Text" xml:space="preserve">
<value>Артефакт</value>
</data>
<data name="LblClearSubAttrCheckedList.Size" type="System.Drawing.Size, System.Drawing">
<value>76, 17</value>
</data>
<data name="LblClearSubAttrCheckedList.Text" xml:space="preserve">
<value>X Очистить</value>
</data>
<data name="LblArtifactLevel.Location" type="System.Drawing.Point, System.Drawing">
<value>96, 37</value>
</data>
<data name="LblArtifactLevel.Size" type="System.Drawing.Size, System.Drawing">
<value>60, 17</value>
</data>
<data name="LblArtifactLevel.Text" xml:space="preserve">
<value>Уровень</value>
</data>
<data name="LblSubAttribution.Location" type="System.Drawing.Point, System.Drawing">
<value>91, 97</value>
</data>
<data name="LblSubAttribution.Size" type="System.Drawing.Size, System.Drawing">
<value>65, 17</value>
</data>
<data name="LblSubAttribution.Text" xml:space="preserve">
<value>Всп. Стат.</value>
</data>
<data name="LblMainAttribution.Location" type="System.Drawing.Point, System.Drawing">
<value>74, 67</value>
</data>
<data name="LblMainAttribution.Size" type="System.Drawing.Size, System.Drawing">
<value>82, 17</value>
</data>
<data name="LblMainAttribution.Text" xml:space="preserve">
<value>Основ. Стат.</value>
</data>
<data name="LblArtifactStars.Location" type="System.Drawing.Point, System.Drawing">
<value>329, 37</value>
</data>
<data name="LblArtifactStars.Size" type="System.Drawing.Size, System.Drawing">
<value>51, 17</value>
</data>
<data name="LblArtifactStars.Text" xml:space="preserve">
<value>Звезды</value>
</data>
</root>

View File

@@ -0,0 +1,135 @@
<?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="LblArtifactSet.Text" xml:space="preserve">
<value>套裝</value>
</data>
<data name="LblArtifactLevel.Text" xml:space="preserve">
<value>等級</value>
</data>
<data name="LblSubAttribution.Text" xml:space="preserve">
<value>副詞條</value>
</data>
<data name="LblMainAttribution.Text" xml:space="preserve">
<value>主詞條</value>
</data>
<data name="LblArtifactStars.Text" xml:space="preserve">
<value>星級</value>
</data>
</root>

View File

@@ -0,0 +1,181 @@
namespace GrasscutterTools.Pages
{
partial class PageGiveWeapon
{
/// <summary>
/// 必需的设计器变量。
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// 清理所有正在使用的资源。
/// </summary>
/// <param name="disposing">如果应释放托管资源,为 true否则为 false。</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region
/// <summary>
/// 设计器支持所需的方法 - 不要修改
/// 使用代码编辑器修改此方法的内容。
/// </summary>
private void InitializeComponent()
{
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(PageGiveWeapon));
this.BtnGiveAllWeapons = new System.Windows.Forms.Button();
this.TxtWeaponFilter = new System.Windows.Forms.TextBox();
this.LblWeaponDescription = new System.Windows.Forms.Label();
this.LblWeaponRefinement = new System.Windows.Forms.Label();
this.LblWeaponAmount = new System.Windows.Forms.Label();
this.LblWeaponLevel = new System.Windows.Forms.Label();
this.NUDWeaponRefinement = new System.Windows.Forms.NumericUpDown();
this.NUDWeaponAmout = new System.Windows.Forms.NumericUpDown();
this.NUDWeaponLevel = new System.Windows.Forms.NumericUpDown();
this.ListWeapons = new System.Windows.Forms.ListBox();
((System.ComponentModel.ISupportInitialize)(this.NUDWeaponRefinement)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.NUDWeaponAmout)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.NUDWeaponLevel)).BeginInit();
this.SuspendLayout();
//
// BtnGiveAllWeapons
//
resources.ApplyResources(this.BtnGiveAllWeapons, "BtnGiveAllWeapons");
this.BtnGiveAllWeapons.Name = "BtnGiveAllWeapons";
this.BtnGiveAllWeapons.UseVisualStyleBackColor = true;
this.BtnGiveAllWeapons.Click += new System.EventHandler(this.BtnGiveAllWeapons_Click);
//
// TxtWeaponFilter
//
resources.ApplyResources(this.TxtWeaponFilter, "TxtWeaponFilter");
this.TxtWeaponFilter.Name = "TxtWeaponFilter";
this.TxtWeaponFilter.TextChanged += new System.EventHandler(this.TxtWeaponFilter_TextChanged);
//
// LblWeaponDescription
//
resources.ApplyResources(this.LblWeaponDescription, "LblWeaponDescription");
this.LblWeaponDescription.Name = "LblWeaponDescription";
//
// LblWeaponRefinement
//
resources.ApplyResources(this.LblWeaponRefinement, "LblWeaponRefinement");
this.LblWeaponRefinement.Name = "LblWeaponRefinement";
//
// LblWeaponAmount
//
resources.ApplyResources(this.LblWeaponAmount, "LblWeaponAmount");
this.LblWeaponAmount.Name = "LblWeaponAmount";
//
// LblWeaponLevel
//
resources.ApplyResources(this.LblWeaponLevel, "LblWeaponLevel");
this.LblWeaponLevel.Name = "LblWeaponLevel";
//
// NUDWeaponRefinement
//
resources.ApplyResources(this.NUDWeaponRefinement, "NUDWeaponRefinement");
this.NUDWeaponRefinement.Maximum = new decimal(new int[] {
5,
0,
0,
0});
this.NUDWeaponRefinement.Minimum = new decimal(new int[] {
1,
0,
0,
0});
this.NUDWeaponRefinement.Name = "NUDWeaponRefinement";
this.NUDWeaponRefinement.Value = new decimal(new int[] {
5,
0,
0,
0});
this.NUDWeaponRefinement.ValueChanged += new System.EventHandler(this.WeaponValueChanged);
//
// NUDWeaponAmout
//
resources.ApplyResources(this.NUDWeaponAmout, "NUDWeaponAmout");
this.NUDWeaponAmout.Minimum = new decimal(new int[] {
1,
0,
0,
0});
this.NUDWeaponAmout.Name = "NUDWeaponAmout";
this.NUDWeaponAmout.Value = new decimal(new int[] {
1,
0,
0,
0});
this.NUDWeaponAmout.ValueChanged += new System.EventHandler(this.WeaponValueChanged);
//
// NUDWeaponLevel
//
resources.ApplyResources(this.NUDWeaponLevel, "NUDWeaponLevel");
this.NUDWeaponLevel.Maximum = new decimal(new int[] {
90,
0,
0,
0});
this.NUDWeaponLevel.Minimum = new decimal(new int[] {
1,
0,
0,
0});
this.NUDWeaponLevel.Name = "NUDWeaponLevel";
this.NUDWeaponLevel.Value = new decimal(new int[] {
90,
0,
0,
0});
this.NUDWeaponLevel.ValueChanged += new System.EventHandler(this.WeaponValueChanged);
//
// ListWeapons
//
resources.ApplyResources(this.ListWeapons, "ListWeapons");
this.ListWeapons.FormattingEnabled = true;
this.ListWeapons.Name = "ListWeapons";
this.ListWeapons.SelectedIndexChanged += new System.EventHandler(this.WeaponValueChanged);
//
// PageGiveWeapon
//
resources.ApplyResources(this, "$this");
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.Controls.Add(this.ListWeapons);
this.Controls.Add(this.TxtWeaponFilter);
this.Controls.Add(this.NUDWeaponRefinement);
this.Controls.Add(this.LblWeaponRefinement);
this.Controls.Add(this.NUDWeaponLevel);
this.Controls.Add(this.LblWeaponLevel);
this.Controls.Add(this.NUDWeaponAmout);
this.Controls.Add(this.LblWeaponAmount);
this.Controls.Add(this.BtnGiveAllWeapons);
this.Controls.Add(this.LblWeaponDescription);
this.Name = "PageGiveWeapon";
((System.ComponentModel.ISupportInitialize)(this.NUDWeaponRefinement)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.NUDWeaponAmout)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.NUDWeaponLevel)).EndInit();
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private System.Windows.Forms.Button BtnGiveAllWeapons;
private System.Windows.Forms.TextBox TxtWeaponFilter;
private System.Windows.Forms.Label LblWeaponDescription;
private System.Windows.Forms.Label LblWeaponRefinement;
private System.Windows.Forms.Label LblWeaponAmount;
private System.Windows.Forms.Label LblWeaponLevel;
private System.Windows.Forms.NumericUpDown NUDWeaponRefinement;
private System.Windows.Forms.NumericUpDown NUDWeaponAmout;
private System.Windows.Forms.NumericUpDown NUDWeaponLevel;
private System.Windows.Forms.ListBox ListWeapons;
}
}

View File

@@ -0,0 +1,64 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using GrasscutterTools.Game;
using GrasscutterTools.Utils;
namespace GrasscutterTools.Pages
{
internal partial class PageGiveWeapon : BasePage
{
public PageGiveWeapon()
{
InitializeComponent();
}
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
if (DesignMode) return;
ListWeapons.Items.Clear();
ListWeapons.Items.AddRange(GameData.Weapons.Lines);
}
/// <summary>
/// 武器列表过滤器文本改变时触发
/// </summary>
private void TxtWeaponFilter_TextChanged(object sender, EventArgs e)
{
UIUtil.ListBoxFilter(ListWeapons, GameData.Weapons.Lines, TxtWeaponFilter.Text);
}
/// <summary>
/// 武器页面输入改变时触发
/// </summary>
private void WeaponValueChanged(object sender, EventArgs e)
{
var name = ListWeapons.SelectedItem as string;
if (!string.IsNullOrEmpty(name))
{
var id = ItemMap.ToId(name);
if (CommandVersion.Check(CommandVersion.V1_2_2))
SetCommand("/give", $"{id} x{NUDWeaponAmout.Value} lv{NUDWeaponLevel.Value} r{NUDWeaponRefinement.Value}");
else
SetCommand("/give", $"{id} {NUDWeaponAmout.Value} {NUDWeaponLevel.Value} {NUDWeaponRefinement.Value}");
}
}
/// <summary>
/// 点击获取所有武器按钮时触发
/// </summary>
private void BtnGiveAllWeapons_Click(object sender, EventArgs e)
{
SetCommand("/give", $"weapons x{NUDWeaponAmout.Value} lv{NUDWeaponLevel.Value} r{NUDWeaponRefinement.Value}");
}
}
}

View File

@@ -0,0 +1,163 @@
<?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="BtnGiveAllWeapons.Text" xml:space="preserve">
<value>Give all Weapons</value>
</data>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="LblWeaponDescription.Size" type="System.Drawing.Size, System.Drawing">
<value>86, 17</value>
</data>
<data name="LblWeaponDescription.Text" xml:space="preserve">
<value>Give Weapon</value>
</data>
<data name="LblWeaponRefinement.Location" type="System.Drawing.Point, System.Drawing">
<value>220, 216</value>
</data>
<data name="LblWeaponRefinement.Size" type="System.Drawing.Size, System.Drawing">
<value>73, 17</value>
</data>
<data name="LblWeaponRefinement.Text" xml:space="preserve">
<value>Refinement</value>
</data>
<data name="LblWeaponAmount.Size" type="System.Drawing.Size, System.Drawing">
<value>53, 17</value>
</data>
<data name="LblWeaponAmount.Text" xml:space="preserve">
<value>Amount</value>
</data>
<data name="LblWeaponLevel.Location" type="System.Drawing.Point, System.Drawing">
<value>121, 216</value>
</data>
<data name="LblWeaponLevel.Size" type="System.Drawing.Size, System.Drawing">
<value>37, 17</value>
</data>
<data name="LblWeaponLevel.Text" xml:space="preserve">
<value>Level</value>
</data>
<data name="NUDWeaponRefinement.Location" type="System.Drawing.Point, System.Drawing">
<value>299, 214</value>
</data>
<data name="NUDWeaponAmout.Location" type="System.Drawing.Point, System.Drawing">
<value>65, 214</value>
</data>
<data name="NUDWeaponLevel.Location" type="System.Drawing.Point, System.Drawing">
<value>164, 214</value>
</data>
</root>

View File

@@ -0,0 +1,431 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="BtnGiveAllWeapons.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Bottom, Left</value>
</data>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="BtnGiveAllWeapons.Font" type="System.Drawing.Font, System.Drawing">
<value>Microsoft YaHei UI, 10pt</value>
</data>
<data name="BtnGiveAllWeapons.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="BtnGiveAllWeapons.Location" type="System.Drawing.Point, System.Drawing">
<value>9, 173</value>
</data>
<data name="BtnGiveAllWeapons.Size" type="System.Drawing.Size, System.Drawing">
<value>150, 35</value>
</data>
<assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="BtnGiveAllWeapons.TabIndex" type="System.Int32, mscorlib">
<value>1</value>
</data>
<data name="BtnGiveAllWeapons.Text" xml:space="preserve">
<value>获得所有武器</value>
</data>
<data name="&gt;&gt;BtnGiveAllWeapons.Name" xml:space="preserve">
<value>BtnGiveAllWeapons</value>
</data>
<data name="&gt;&gt;BtnGiveAllWeapons.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;BtnGiveAllWeapons.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;BtnGiveAllWeapons.ZOrder" xml:space="preserve">
<value>8</value>
</data>
<data name="TxtWeaponFilter.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Right</value>
</data>
<data name="TxtWeaponFilter.Location" type="System.Drawing.Point, System.Drawing">
<value>443, 3</value>
</data>
<data name="TxtWeaponFilter.Size" type="System.Drawing.Size, System.Drawing">
<value>200, 23</value>
</data>
<data name="TxtWeaponFilter.TabIndex" type="System.Int32, mscorlib">
<value>8</value>
</data>
<data name="&gt;&gt;TxtWeaponFilter.Name" xml:space="preserve">
<value>TxtWeaponFilter</value>
</data>
<data name="&gt;&gt;TxtWeaponFilter.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;TxtWeaponFilter.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;TxtWeaponFilter.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="LblWeaponDescription.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Bottom, Left, Right</value>
</data>
<data name="LblWeaponDescription.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="LblWeaponDescription.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="LblWeaponDescription.Location" type="System.Drawing.Point, System.Drawing">
<value>6, 8</value>
</data>
<data name="LblWeaponDescription.Size" type="System.Drawing.Size, System.Drawing">
<value>200, 153</value>
</data>
<data name="LblWeaponDescription.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
</data>
<data name="LblWeaponDescription.Text" xml:space="preserve">
<value>获取武器
说明:设置等级会自动设置突破等级
&gt;20级 突破1
&gt;40级 突破2
&gt;50级 突破3
&gt;60级 突破4
&gt;70级 突破5
&gt;80级 突破6</value>
</data>
<data name="&gt;&gt;LblWeaponDescription.Name" xml:space="preserve">
<value>LblWeaponDescription</value>
</data>
<data name="&gt;&gt;LblWeaponDescription.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;LblWeaponDescription.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;LblWeaponDescription.ZOrder" xml:space="preserve">
<value>9</value>
</data>
<data name="LblWeaponRefinement.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Bottom, Left</value>
</data>
<data name="LblWeaponRefinement.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="LblWeaponRefinement.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="LblWeaponRefinement.Location" type="System.Drawing.Point, System.Drawing">
<value>194, 216</value>
</data>
<data name="LblWeaponRefinement.Size" type="System.Drawing.Size, System.Drawing">
<value>56, 17</value>
</data>
<data name="LblWeaponRefinement.TabIndex" type="System.Int32, mscorlib">
<value>6</value>
</data>
<data name="LblWeaponRefinement.Text" xml:space="preserve">
<value>精炼等级</value>
</data>
<data name="&gt;&gt;LblWeaponRefinement.Name" xml:space="preserve">
<value>LblWeaponRefinement</value>
</data>
<data name="&gt;&gt;LblWeaponRefinement.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;LblWeaponRefinement.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;LblWeaponRefinement.ZOrder" xml:space="preserve">
<value>3</value>
</data>
<data name="LblWeaponAmount.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Bottom, Left</value>
</data>
<data name="LblWeaponAmount.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="LblWeaponAmount.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="LblWeaponAmount.Location" type="System.Drawing.Point, System.Drawing">
<value>6, 216</value>
</data>
<data name="LblWeaponAmount.Size" type="System.Drawing.Size, System.Drawing">
<value>32, 17</value>
</data>
<data name="LblWeaponAmount.TabIndex" type="System.Int32, mscorlib">
<value>2</value>
</data>
<data name="LblWeaponAmount.Text" xml:space="preserve">
<value>数量</value>
</data>
<data name="&gt;&gt;LblWeaponAmount.Name" xml:space="preserve">
<value>LblWeaponAmount</value>
</data>
<data name="&gt;&gt;LblWeaponAmount.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;LblWeaponAmount.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;LblWeaponAmount.ZOrder" xml:space="preserve">
<value>7</value>
</data>
<data name="LblWeaponLevel.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Bottom, Left</value>
</data>
<data name="LblWeaponLevel.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="LblWeaponLevel.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="LblWeaponLevel.Location" type="System.Drawing.Point, System.Drawing">
<value>100, 216</value>
</data>
<data name="LblWeaponLevel.Size" type="System.Drawing.Size, System.Drawing">
<value>32, 17</value>
</data>
<data name="LblWeaponLevel.TabIndex" type="System.Int32, mscorlib">
<value>4</value>
</data>
<data name="LblWeaponLevel.Text" xml:space="preserve">
<value>等级</value>
</data>
<data name="&gt;&gt;LblWeaponLevel.Name" xml:space="preserve">
<value>LblWeaponLevel</value>
</data>
<data name="&gt;&gt;LblWeaponLevel.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;LblWeaponLevel.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;LblWeaponLevel.ZOrder" xml:space="preserve">
<value>5</value>
</data>
<data name="NUDWeaponRefinement.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Bottom, Left</value>
</data>
<data name="NUDWeaponRefinement.Location" type="System.Drawing.Point, System.Drawing">
<value>256, 214</value>
</data>
<data name="NUDWeaponRefinement.Size" type="System.Drawing.Size, System.Drawing">
<value>50, 23</value>
</data>
<data name="NUDWeaponRefinement.TabIndex" type="System.Int32, mscorlib">
<value>7</value>
</data>
<data name="&gt;&gt;NUDWeaponRefinement.Name" xml:space="preserve">
<value>NUDWeaponRefinement</value>
</data>
<data name="&gt;&gt;NUDWeaponRefinement.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;NUDWeaponRefinement.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;NUDWeaponRefinement.ZOrder" xml:space="preserve">
<value>2</value>
</data>
<data name="NUDWeaponAmout.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Bottom, Left</value>
</data>
<data name="NUDWeaponAmout.Location" type="System.Drawing.Point, System.Drawing">
<value>44, 214</value>
</data>
<data name="NUDWeaponAmout.Size" type="System.Drawing.Size, System.Drawing">
<value>50, 23</value>
</data>
<data name="NUDWeaponAmout.TabIndex" type="System.Int32, mscorlib">
<value>3</value>
</data>
<data name="&gt;&gt;NUDWeaponAmout.Name" xml:space="preserve">
<value>NUDWeaponAmout</value>
</data>
<data name="&gt;&gt;NUDWeaponAmout.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;NUDWeaponAmout.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;NUDWeaponAmout.ZOrder" xml:space="preserve">
<value>6</value>
</data>
<data name="NUDWeaponLevel.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Bottom, Left</value>
</data>
<data name="NUDWeaponLevel.Location" type="System.Drawing.Point, System.Drawing">
<value>138, 214</value>
</data>
<data name="NUDWeaponLevel.Size" type="System.Drawing.Size, System.Drawing">
<value>50, 23</value>
</data>
<data name="NUDWeaponLevel.TabIndex" type="System.Int32, mscorlib">
<value>5</value>
</data>
<data name="&gt;&gt;NUDWeaponLevel.Name" xml:space="preserve">
<value>NUDWeaponLevel</value>
</data>
<data name="&gt;&gt;NUDWeaponLevel.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;NUDWeaponLevel.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;NUDWeaponLevel.ZOrder" xml:space="preserve">
<value>4</value>
</data>
<data name="ListWeapons.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Bottom, Right</value>
</data>
<data name="ListWeapons.ItemHeight" type="System.Int32, mscorlib">
<value>17</value>
</data>
<data name="ListWeapons.Location" type="System.Drawing.Point, System.Drawing">
<value>443, 29</value>
</data>
<data name="ListWeapons.Size" type="System.Drawing.Size, System.Drawing">
<value>200, 208</value>
</data>
<data name="ListWeapons.TabIndex" type="System.Int32, mscorlib">
<value>9</value>
</data>
<data name="&gt;&gt;ListWeapons.Name" xml:space="preserve">
<value>ListWeapons</value>
</data>
<data name="&gt;&gt;ListWeapons.Type" xml:space="preserve">
<value>System.Windows.Forms.ListBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;ListWeapons.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;ListWeapons.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
<value>7, 17</value>
</data>
<data name="&gt;&gt;$this.Name" xml:space="preserve">
<value>PageGiveWeapon</value>
</data>
<data name="&gt;&gt;$this.Type" xml:space="preserve">
<value>GrasscutterTools.Pages.BasePage, GrasscutterTools, Version=1.7.4.0, Culture=neutral, PublicKeyToken=de2b1c089621e923</value>
</data>
</root>

View File

@@ -0,0 +1,163 @@
<?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="BtnGiveAllWeapons.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="LblWeaponDescription.Size" type="System.Drawing.Size, System.Drawing">
<value>87, 17</value>
</data>
<data name="LblWeaponDescription.Text" xml:space="preserve">
<value>Дать оружие</value>
</data>
<data name="LblWeaponRefinement.Location" type="System.Drawing.Point, System.Drawing">
<value>207, 216</value>
</data>
<data name="LblWeaponRefinement.Size" type="System.Drawing.Size, System.Drawing">
<value>115, 17</value>
</data>
<data name="LblWeaponRefinement.Text" xml:space="preserve">
<value>Ур. пробуждения</value>
</data>
<data name="LblWeaponAmount.Size" type="System.Drawing.Size, System.Drawing">
<value>51, 17</value>
</data>
<data name="LblWeaponAmount.Text" xml:space="preserve">
<value>Кол-во</value>
</data>
<data name="LblWeaponLevel.Location" type="System.Drawing.Point, System.Drawing">
<value>119, 216</value>
</data>
<data name="LblWeaponLevel.Size" type="System.Drawing.Size, System.Drawing">
<value>26, 17</value>
</data>
<data name="LblWeaponLevel.Text" xml:space="preserve">
<value>Ур.</value>
</data>
<data name="NUDWeaponRefinement.Location" type="System.Drawing.Point, System.Drawing">
<value>328, 214</value>
</data>
<data name="NUDWeaponAmout.Location" type="System.Drawing.Point, System.Drawing">
<value>63, 214</value>
</data>
<data name="NUDWeaponLevel.Location" type="System.Drawing.Point, System.Drawing">
<value>151, 214</value>
</data>
</root>

View File

@@ -0,0 +1,143 @@
<?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="BtnGiveAllWeapons.Text" xml:space="preserve">
<value>獲得所有武器</value>
</data>
<data name="LblWeaponDescription.Text" xml:space="preserve">
<value>獲取武器
說明:設定等級會自動設定突破等級
&gt;20級突破1
&gt;40級突破2
&gt;50級突破3
&gt;60級突破4
&gt;70級突破5
&gt;80級突破6</value>
</data>
<data name="LblWeaponRefinement.Text" xml:space="preserve">
<value>精煉等級</value>
</data>
<data name="LblWeaponAmount.Text" xml:space="preserve">
<value>數量</value>
</data>
<data name="LblWeaponLevel.Text" xml:space="preserve">
<value>等級</value>
</data>
</root>

View File

@@ -0,0 +1,211 @@
namespace GrasscutterTools.Pages
{
partial class PageHome
{
/// <summary>
/// 必需的设计器变量。
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// 清理所有正在使用的资源。
/// </summary>
/// <param name="disposing">如果应释放托管资源,为 true否则为 false。</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region
/// <summary>
/// 设计器支持所需的方法 - 不要修改
/// 使用代码编辑器修改此方法的内容。
/// </summary>
private void InitializeComponent()
{
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(PageHome));
this.BtnOpenShopEditor = new System.Windows.Forms.Button();
this.BtnOpenDropEditor = new System.Windows.Forms.Button();
this.LnkNewVersion = new System.Windows.Forms.LinkLabel();
this.LblAbout = new System.Windows.Forms.Label();
this.BtnOpenTextMap = new System.Windows.Forms.Button();
this.BtnOpenGachaBannerEditor = new System.Windows.Forms.Button();
this.GrasscutterToolsIcon = new System.Windows.Forms.PictureBox();
this.GrpSettings = new System.Windows.Forms.GroupBox();
this.LblGCVersion = new System.Windows.Forms.Label();
this.CmbGcVersions = new System.Windows.Forms.ComboBox();
this.ChkTopMost = new System.Windows.Forms.CheckBox();
this.CmbLanguage = new System.Windows.Forms.ComboBox();
this.LblLanguage = new System.Windows.Forms.Label();
this.NUDUid = new System.Windows.Forms.NumericUpDown();
this.ChkIncludeUID = new System.Windows.Forms.CheckBox();
this.LblDefaultUid = new System.Windows.Forms.Label();
((System.ComponentModel.ISupportInitialize)(this.GrasscutterToolsIcon)).BeginInit();
this.GrpSettings.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.NUDUid)).BeginInit();
this.SuspendLayout();
//
// BtnOpenShopEditor
//
resources.ApplyResources(this.BtnOpenShopEditor, "BtnOpenShopEditor");
this.BtnOpenShopEditor.Name = "BtnOpenShopEditor";
this.BtnOpenShopEditor.UseVisualStyleBackColor = true;
this.BtnOpenShopEditor.Click += new System.EventHandler(this.BtnOpenShopEditor_Click);
//
// BtnOpenDropEditor
//
resources.ApplyResources(this.BtnOpenDropEditor, "BtnOpenDropEditor");
this.BtnOpenDropEditor.Name = "BtnOpenDropEditor";
this.BtnOpenDropEditor.UseVisualStyleBackColor = true;
this.BtnOpenDropEditor.Click += new System.EventHandler(this.BtnOpenDropEditor_Click);
//
// LnkNewVersion
//
resources.ApplyResources(this.LnkNewVersion, "LnkNewVersion");
this.LnkNewVersion.Name = "LnkNewVersion";
this.LnkNewVersion.TabStop = true;
this.LnkNewVersion.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.LnkNewVersion_LinkClicked);
//
// LblAbout
//
resources.ApplyResources(this.LblAbout, "LblAbout");
this.LblAbout.Name = "LblAbout";
//
// BtnOpenTextMap
//
resources.ApplyResources(this.BtnOpenTextMap, "BtnOpenTextMap");
this.BtnOpenTextMap.Name = "BtnOpenTextMap";
this.BtnOpenTextMap.UseVisualStyleBackColor = true;
this.BtnOpenTextMap.Click += new System.EventHandler(this.BtnOpenTextMap_Click);
//
// BtnOpenGachaBannerEditor
//
resources.ApplyResources(this.BtnOpenGachaBannerEditor, "BtnOpenGachaBannerEditor");
this.BtnOpenGachaBannerEditor.Name = "BtnOpenGachaBannerEditor";
this.BtnOpenGachaBannerEditor.UseVisualStyleBackColor = true;
this.BtnOpenGachaBannerEditor.Click += new System.EventHandler(this.BtnOpenGachaBannerEditor_Click);
//
// GrasscutterToolsIcon
//
resources.ApplyResources(this.GrasscutterToolsIcon, "GrasscutterToolsIcon");
this.GrasscutterToolsIcon.Image = global::GrasscutterTools.Properties.Resources.ImgIconGrasscutter;
this.GrasscutterToolsIcon.Name = "GrasscutterToolsIcon";
this.GrasscutterToolsIcon.TabStop = false;
//
// GrpSettings
//
resources.ApplyResources(this.GrpSettings, "GrpSettings");
this.GrpSettings.Controls.Add(this.LblGCVersion);
this.GrpSettings.Controls.Add(this.CmbGcVersions);
this.GrpSettings.Controls.Add(this.ChkTopMost);
this.GrpSettings.Controls.Add(this.CmbLanguage);
this.GrpSettings.Controls.Add(this.LblLanguage);
this.GrpSettings.Controls.Add(this.NUDUid);
this.GrpSettings.Controls.Add(this.ChkIncludeUID);
this.GrpSettings.Controls.Add(this.LblDefaultUid);
this.GrpSettings.Name = "GrpSettings";
this.GrpSettings.TabStop = false;
//
// LblGCVersion
//
resources.ApplyResources(this.LblGCVersion, "LblGCVersion");
this.LblGCVersion.Name = "LblGCVersion";
//
// CmbGcVersions
//
this.CmbGcVersions.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.CmbGcVersions.FormattingEnabled = true;
resources.ApplyResources(this.CmbGcVersions, "CmbGcVersions");
this.CmbGcVersions.Name = "CmbGcVersions";
//
// ChkTopMost
//
resources.ApplyResources(this.ChkTopMost, "ChkTopMost");
this.ChkTopMost.Name = "ChkTopMost";
this.ChkTopMost.UseVisualStyleBackColor = true;
//
// CmbLanguage
//
this.CmbLanguage.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.CmbLanguage.FormattingEnabled = true;
resources.ApplyResources(this.CmbLanguage, "CmbLanguage");
this.CmbLanguage.Name = "CmbLanguage";
//
// LblLanguage
//
resources.ApplyResources(this.LblLanguage, "LblLanguage");
this.LblLanguage.Name = "LblLanguage";
//
// NUDUid
//
resources.ApplyResources(this.NUDUid, "NUDUid");
this.NUDUid.Maximum = new decimal(new int[] {
2147483647,
0,
0,
0});
this.NUDUid.Name = "NUDUid";
this.NUDUid.Value = new decimal(new int[] {
10001,
0,
0,
0});
//
// ChkIncludeUID
//
resources.ApplyResources(this.ChkIncludeUID, "ChkIncludeUID");
this.ChkIncludeUID.Name = "ChkIncludeUID";
this.ChkIncludeUID.UseVisualStyleBackColor = true;
//
// LblDefaultUid
//
resources.ApplyResources(this.LblDefaultUid, "LblDefaultUid");
this.LblDefaultUid.Name = "LblDefaultUid";
//
// PageHome
//
resources.ApplyResources(this, "$this");
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.Controls.Add(this.LblAbout);
this.Controls.Add(this.BtnOpenTextMap);
this.Controls.Add(this.BtnOpenGachaBannerEditor);
this.Controls.Add(this.BtnOpenDropEditor);
this.Controls.Add(this.BtnOpenShopEditor);
this.Controls.Add(this.GrasscutterToolsIcon);
this.Controls.Add(this.GrpSettings);
this.Controls.Add(this.LnkNewVersion);
this.Name = "PageHome";
((System.ComponentModel.ISupportInitialize)(this.GrasscutterToolsIcon)).EndInit();
this.GrpSettings.ResumeLayout(false);
this.GrpSettings.PerformLayout();
((System.ComponentModel.ISupportInitialize)(this.NUDUid)).EndInit();
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private System.Windows.Forms.Button BtnOpenShopEditor;
private System.Windows.Forms.Button BtnOpenDropEditor;
private System.Windows.Forms.LinkLabel LnkNewVersion;
private System.Windows.Forms.Label LblAbout;
private System.Windows.Forms.Button BtnOpenTextMap;
private System.Windows.Forms.Button BtnOpenGachaBannerEditor;
private System.Windows.Forms.PictureBox GrasscutterToolsIcon;
private System.Windows.Forms.GroupBox GrpSettings;
private System.Windows.Forms.Label LblGCVersion;
private System.Windows.Forms.ComboBox CmbGcVersions;
private System.Windows.Forms.CheckBox ChkTopMost;
private System.Windows.Forms.ComboBox CmbLanguage;
private System.Windows.Forms.Label LblLanguage;
private System.Windows.Forms.NumericUpDown NUDUid;
private System.Windows.Forms.CheckBox ChkIncludeUID;
private System.Windows.Forms.Label LblDefaultUid;
}
}

View File

@@ -0,0 +1,183 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;
using GrasscutterTools.Forms;
using GrasscutterTools.Game;
using GrasscutterTools.Properties;
using GrasscutterTools.Utils;
namespace GrasscutterTools.Pages
{
internal partial class PageHome : BasePage
{
/// <summary>
/// 初始化首页设置
/// </summary>
public PageHome()
{
InitializeComponent();
if (DesignMode) return;
LoadVersion();
// 玩家UID
NUDUid.Value = Settings.Default.Uid;
NUDUid.ValueChanged += (o, e) => Settings.Default.Uid = NUDUid.Value;
// 置顶
ChkTopMost.Checked = Settings.Default.IsTopMost;
ChkTopMost.CheckedChanged += (o, e) => Settings.Default.IsTopMost = ParentForm.TopMost = ChkTopMost.Checked;
// 命令版本初始化
if (Version.TryParse(Settings.Default.CommandVersion, out Version current))
CommandVersion.Current = current;
CmbGcVersions.DataSource = CommandVersion.List.Select(it => it.ToString(3)).ToList();
CmbGcVersions.SelectedIndex = Array.IndexOf(CommandVersion.List, CommandVersion.Current);
CmbGcVersions.SelectedIndexChanged += (o, e) => CommandVersion.Current = CommandVersion.List[CmbGcVersions.SelectedIndex];
CommandVersion.VersionChanged += (o, e) => Settings.Default.CommandVersion = CommandVersion.Current.ToString(3);
// 初始化多语言
CmbLanguage.DataSource = MultiLanguage.LanguageNames;
if (string.IsNullOrEmpty(Settings.Default.DefaultLanguage))
{
// 如果未选择语言,则默认载入本地语言
var i = Array.IndexOf(MultiLanguage.Languages, Thread.CurrentThread.CurrentUICulture);
// 仅支持时切换,避免重复加载
if (i > 0) CmbLanguage.SelectedIndex = i;
}
else
{
CmbLanguage.SelectedIndex = Array.IndexOf(MultiLanguage.Languages, Settings.Default.DefaultLanguage);
}
CmbLanguage.SelectedIndexChanged += CmbLanguage_SelectedIndexChanged;
#if !DEBUG // 仅正式版
// 检查更新,但不要弹窗
Task.Run(async () => { try { await LoadUpdate(); } catch { /* 启动时检查更新,忽略异常 */ }});
#endif
}
#region - Check update -
/// <summary>
/// 应用版本
/// </summary>
private Version AppVersion;
/// <summary>
/// 加载应用版本
/// </summary>
private void LoadVersion()
{
AppVersion = System.Reflection.Assembly.GetExecutingAssembly().GetName().Version;
}
private ReleaseAPI.ReleaseInfo LastestInfo = null;
private Version lastestVersion = null;
private async Task LoadUpdate()
{
var info = await ReleaseAPI.GetReleasesLastest("jie65535", "GrasscutterCommandGenerator");
if (Version.TryParse(info.TagName.Substring(1), out lastestVersion) && AppVersion < lastestVersion)
{
if (!string.IsNullOrEmpty(Settings.Default.CheckedLastVersion)
&& Version.TryParse(Settings.Default.CheckedLastVersion, out Version checkedVersion)
&& checkedVersion >= lastestVersion)
return;
LastestInfo = info;
BeginInvoke(new Action(() =>
{
LnkNewVersion.Visible = true;
LnkNewVersion.Text = Resources.CheckToNewVersion;
this.Text += " - " + Resources.CheckToNewVersion;
}));
}
}
#endregion - Check update -
private static void ToTop(Form form)
{
form.TopMost = true;
form.TopMost = false;
}
private readonly Dictionary<string, Form> MyForms = new Dictionary<string, Form>();
private void ShowForm<T>(string tag) where T : Form, new()
{
if (!MyForms.TryGetValue(tag, out var form) || form.IsDisposed)
form = new T();
MyForms[tag] = form;
if (form.IsHandleCreated)
ToTop(form);
else
form.Show();
}
/// <summary>
/// 点击打开卡池编辑器时触发
/// </summary>
private void BtnOpenGachaBannerEditor_Click(object sender, EventArgs e)
=> ShowForm<FormGachaBannersEditor3>("BannersEditor");
/// <summary>
/// 点击打开文本浏览器时触发
/// </summary>
private void BtnOpenTextMap_Click(object sender, EventArgs e)
=> ShowForm<FormTextMapBrowser>("TextMapBrowser");
/// <summary>
/// 点击打开掉落物编辑器时触发
/// </summary>
private void BtnOpenDropEditor_Click(object sender, EventArgs e)
=> ShowForm<FormDropEditor>("DropEditor");
/// <summary>
/// 点击打开商店编辑器时触发
/// </summary>
private void BtnOpenShopEditor_Click(object sender, EventArgs e)
=> ShowForm<FormShopEditor>("ShopEditor");
/// <summary>
/// 语言选中项改变时触发
/// </summary>
private void CmbLanguage_SelectedIndexChanged(object sender, EventArgs e)
{
if (CmbLanguage.SelectedIndex < 0) return;
// 切换默认语言
MultiLanguage.SetDefaultLanguage(MultiLanguage.Languages[CmbLanguage.SelectedIndex]);
// 动态更改语言
MultiLanguage.LoadLanguage(ParentForm, ParentForm.GetType());
}
/// <summary>
/// 点击检查更新时触发
/// </summary>
private void LnkNewVersion_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
if (LastestInfo != null)
{
var r = MessageBox.Show(
string.Format(Resources.NewVersionInfo, LastestInfo.Name, LastestInfo.CraeteTime.ToLocalTime(), LastestInfo.Body),
Resources.CheckToNewVersion,
MessageBoxButtons.YesNo,
MessageBoxIcon.Information);
if (r == DialogResult.Yes)
UIUtil.OpenURL(LastestInfo.Url);
else if (r == DialogResult.No)
Settings.Default.CheckedLastVersion = lastestVersion.ToString();
}
else
{
// 没有更新,隐藏
LnkNewVersion.Visible = false;
}
}
}
}

View File

@@ -0,0 +1,154 @@
<?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="BtnOpenShopEditor.Text" xml:space="preserve">
<value>Shop Editor</value>
</data>
<data name="BtnOpenDropEditor.Text" xml:space="preserve">
<value>Drop Editor</value>
</data>
<data name="LblAbout.Text" xml:space="preserve">
<value>Have a nice time!</value>
</data>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="BtnOpenTextMap.Size" type="System.Drawing.Size, System.Drawing">
<value>120, 23</value>
</data>
<data name="BtnOpenTextMap.Text" xml:space="preserve">
<value>TextMapBrowser</value>
</data>
<data name="BtnOpenGachaBannerEditor.Text" xml:space="preserve">
<value>Gacha Editor</value>
</data>
<data name="GrpSettings.Text" xml:space="preserve">
<value>Settings</value>
</data>
<data name="ChkTopMost.Size" type="System.Drawing.Size, System.Drawing">
<value>109, 21</value>
</data>
<data name="ChkTopMost.Text" xml:space="preserve">
<value>Always on top</value>
</data>
<data name="ChkIncludeUID.Size" type="System.Drawing.Size, System.Drawing">
<value>95, 21</value>
</data>
<data name="ChkIncludeUID.Text" xml:space="preserve">
<value>Include UID</value>
</data>
</root>

View File

@@ -0,0 +1,693 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="BtnOpenShopEditor.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Bottom, Left</value>
</data>
<data name="BtnOpenShopEditor.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="BtnOpenShopEditor.Location" type="System.Drawing.Point, System.Drawing">
<value>310, 184</value>
</data>
<data name="BtnOpenShopEditor.Size" type="System.Drawing.Size, System.Drawing">
<value>100, 23</value>
</data>
<assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="BtnOpenShopEditor.TabIndex" type="System.Int32, mscorlib">
<value>3</value>
</data>
<data name="BtnOpenShopEditor.Text" xml:space="preserve">
<value>商店编辑器</value>
</data>
<data name="&gt;&gt;BtnOpenShopEditor.Name" xml:space="preserve">
<value>BtnOpenShopEditor</value>
</data>
<data name="&gt;&gt;BtnOpenShopEditor.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;BtnOpenShopEditor.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;BtnOpenShopEditor.ZOrder" xml:space="preserve">
<value>4</value>
</data>
<data name="BtnOpenDropEditor.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Bottom, Left</value>
</data>
<data name="BtnOpenDropEditor.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="BtnOpenDropEditor.Location" type="System.Drawing.Point, System.Drawing">
<value>416, 184</value>
</data>
<data name="BtnOpenDropEditor.Size" type="System.Drawing.Size, System.Drawing">
<value>100, 23</value>
</data>
<data name="BtnOpenDropEditor.TabIndex" type="System.Int32, mscorlib">
<value>4</value>
</data>
<data name="BtnOpenDropEditor.Text" xml:space="preserve">
<value>掉落物编辑器</value>
</data>
<data name="&gt;&gt;BtnOpenDropEditor.Name" xml:space="preserve">
<value>BtnOpenDropEditor</value>
</data>
<data name="&gt;&gt;BtnOpenDropEditor.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;BtnOpenDropEditor.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;BtnOpenDropEditor.ZOrder" xml:space="preserve">
<value>3</value>
</data>
<data name="LnkNewVersion.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Bottom, Left</value>
</data>
<data name="LnkNewVersion.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="LnkNewVersion.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="LnkNewVersion.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 105</value>
</data>
<data name="LnkNewVersion.Size" type="System.Drawing.Size, System.Drawing">
<value>104, 17</value>
</data>
<data name="LnkNewVersion.TabIndex" type="System.Int32, mscorlib">
<value>1</value>
</data>
<data name="LnkNewVersion.Text" xml:space="preserve">
<value>New Version Tip</value>
</data>
<data name="LnkNewVersion.Visible" type="System.Boolean, mscorlib">
<value>False</value>
</data>
<data name="&gt;&gt;LnkNewVersion.Name" xml:space="preserve">
<value>LnkNewVersion</value>
</data>
<data name="&gt;&gt;LnkNewVersion.Type" xml:space="preserve">
<value>System.Windows.Forms.LinkLabel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;LnkNewVersion.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;LnkNewVersion.ZOrder" xml:space="preserve">
<value>7</value>
</data>
<data name="LblAbout.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Bottom, Left</value>
</data>
<data name="LblAbout.Font" type="System.Drawing.Font, System.Drawing">
<value>Microsoft YaHei UI, 13pt</value>
</data>
<data name="LblAbout.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="LblAbout.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 3</value>
</data>
<data name="LblAbout.Size" type="System.Drawing.Size, System.Drawing">
<value>320, 102</value>
</data>
<data name="LblAbout.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
</data>
<data name="LblAbout.Text" xml:space="preserve">
<value>祝你玩得愉快!</value>
</data>
<data name="LblAbout.TextAlign" type="System.Drawing.ContentAlignment, System.Drawing">
<value>MiddleCenter</value>
</data>
<data name="&gt;&gt;LblAbout.Name" xml:space="preserve">
<value>LblAbout</value>
</data>
<data name="&gt;&gt;LblAbout.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;LblAbout.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;LblAbout.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="BtnOpenTextMap.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Bottom, Left</value>
</data>
<data name="BtnOpenTextMap.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="BtnOpenTextMap.Location" type="System.Drawing.Point, System.Drawing">
<value>416, 213</value>
</data>
<data name="BtnOpenTextMap.Size" type="System.Drawing.Size, System.Drawing">
<value>100, 23</value>
</data>
<data name="BtnOpenTextMap.TabIndex" type="System.Int32, mscorlib">
<value>6</value>
</data>
<data name="BtnOpenTextMap.Text" xml:space="preserve">
<value>文本浏览器</value>
</data>
<data name="&gt;&gt;BtnOpenTextMap.Name" xml:space="preserve">
<value>BtnOpenTextMap</value>
</data>
<data name="&gt;&gt;BtnOpenTextMap.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;BtnOpenTextMap.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;BtnOpenTextMap.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="BtnOpenGachaBannerEditor.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Bottom, Left</value>
</data>
<data name="BtnOpenGachaBannerEditor.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="BtnOpenGachaBannerEditor.Location" type="System.Drawing.Point, System.Drawing">
<value>310, 213</value>
</data>
<data name="BtnOpenGachaBannerEditor.Size" type="System.Drawing.Size, System.Drawing">
<value>100, 23</value>
</data>
<data name="BtnOpenGachaBannerEditor.TabIndex" type="System.Int32, mscorlib">
<value>5</value>
</data>
<data name="BtnOpenGachaBannerEditor.Text" xml:space="preserve">
<value>奖池编辑器</value>
</data>
<data name="&gt;&gt;BtnOpenGachaBannerEditor.Name" xml:space="preserve">
<value>BtnOpenGachaBannerEditor</value>
</data>
<data name="&gt;&gt;BtnOpenGachaBannerEditor.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;BtnOpenGachaBannerEditor.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;BtnOpenGachaBannerEditor.ZOrder" xml:space="preserve">
<value>2</value>
</data>
<data name="GrasscutterToolsIcon.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Bottom, Left, Right</value>
</data>
<data name="GrasscutterToolsIcon.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="GrasscutterToolsIcon.Location" type="System.Drawing.Point, System.Drawing">
<value>310, 3</value>
</data>
<data name="GrasscutterToolsIcon.Size" type="System.Drawing.Size, System.Drawing">
<value>333, 175</value>
</data>
<data name="GrasscutterToolsIcon.SizeMode" type="System.Windows.Forms.PictureBoxSizeMode, System.Windows.Forms">
<value>CenterImage</value>
</data>
<data name="GrasscutterToolsIcon.TabIndex" type="System.Int32, mscorlib">
<value>14</value>
</data>
<data name="&gt;&gt;GrasscutterToolsIcon.Name" xml:space="preserve">
<value>GrasscutterToolsIcon</value>
</data>
<data name="&gt;&gt;GrasscutterToolsIcon.Type" xml:space="preserve">
<value>System.Windows.Forms.PictureBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;GrasscutterToolsIcon.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;GrasscutterToolsIcon.ZOrder" xml:space="preserve">
<value>5</value>
</data>
<data name="GrpSettings.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Bottom, Left</value>
</data>
<data name="&gt;&gt;LblGCVersion.Name" xml:space="preserve">
<value>LblGCVersion</value>
</data>
<data name="&gt;&gt;LblGCVersion.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;LblGCVersion.Parent" xml:space="preserve">
<value>GrpSettings</value>
</data>
<data name="&gt;&gt;LblGCVersion.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="&gt;&gt;CmbGcVersions.Name" xml:space="preserve">
<value>CmbGcVersions</value>
</data>
<data name="&gt;&gt;CmbGcVersions.Type" xml:space="preserve">
<value>System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;CmbGcVersions.Parent" xml:space="preserve">
<value>GrpSettings</value>
</data>
<data name="&gt;&gt;CmbGcVersions.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="&gt;&gt;ChkTopMost.Name" xml:space="preserve">
<value>ChkTopMost</value>
</data>
<data name="&gt;&gt;ChkTopMost.Type" xml:space="preserve">
<value>System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;ChkTopMost.Parent" xml:space="preserve">
<value>GrpSettings</value>
</data>
<data name="&gt;&gt;ChkTopMost.ZOrder" xml:space="preserve">
<value>2</value>
</data>
<data name="&gt;&gt;CmbLanguage.Name" xml:space="preserve">
<value>CmbLanguage</value>
</data>
<data name="&gt;&gt;CmbLanguage.Type" xml:space="preserve">
<value>System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;CmbLanguage.Parent" xml:space="preserve">
<value>GrpSettings</value>
</data>
<data name="&gt;&gt;CmbLanguage.ZOrder" xml:space="preserve">
<value>3</value>
</data>
<data name="&gt;&gt;LblLanguage.Name" xml:space="preserve">
<value>LblLanguage</value>
</data>
<data name="&gt;&gt;LblLanguage.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;LblLanguage.Parent" xml:space="preserve">
<value>GrpSettings</value>
</data>
<data name="&gt;&gt;LblLanguage.ZOrder" xml:space="preserve">
<value>4</value>
</data>
<data name="&gt;&gt;NUDUid.Name" xml:space="preserve">
<value>NUDUid</value>
</data>
<data name="&gt;&gt;NUDUid.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;NUDUid.Parent" xml:space="preserve">
<value>GrpSettings</value>
</data>
<data name="&gt;&gt;NUDUid.ZOrder" xml:space="preserve">
<value>5</value>
</data>
<data name="&gt;&gt;ChkIncludeUID.Name" xml:space="preserve">
<value>ChkIncludeUID</value>
</data>
<data name="&gt;&gt;ChkIncludeUID.Type" xml:space="preserve">
<value>System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;ChkIncludeUID.Parent" xml:space="preserve">
<value>GrpSettings</value>
</data>
<data name="&gt;&gt;ChkIncludeUID.ZOrder" xml:space="preserve">
<value>6</value>
</data>
<data name="&gt;&gt;LblDefaultUid.Name" xml:space="preserve">
<value>LblDefaultUid</value>
</data>
<data name="&gt;&gt;LblDefaultUid.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;LblDefaultUid.Parent" xml:space="preserve">
<value>GrpSettings</value>
</data>
<data name="&gt;&gt;LblDefaultUid.ZOrder" xml:space="preserve">
<value>7</value>
</data>
<data name="GrpSettings.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 125</value>
</data>
<data name="GrpSettings.Size" type="System.Drawing.Size, System.Drawing">
<value>301, 111</value>
</data>
<data name="GrpSettings.TabIndex" type="System.Int32, mscorlib">
<value>2</value>
</data>
<data name="GrpSettings.Text" xml:space="preserve">
<value>设置</value>
</data>
<data name="&gt;&gt;GrpSettings.Name" xml:space="preserve">
<value>GrpSettings</value>
</data>
<data name="&gt;&gt;GrpSettings.Type" xml:space="preserve">
<value>System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;GrpSettings.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;GrpSettings.ZOrder" xml:space="preserve">
<value>6</value>
</data>
<data name="LblGCVersion.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="LblGCVersion.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="LblGCVersion.Location" type="System.Drawing.Point, System.Drawing">
<value>7, 83</value>
</data>
<data name="LblGCVersion.Size" type="System.Drawing.Size, System.Drawing">
<value>25, 17</value>
</data>
<data name="LblGCVersion.TabIndex" type="System.Int32, mscorlib">
<value>5</value>
</data>
<data name="LblGCVersion.Text" xml:space="preserve">
<value>GC</value>
</data>
<data name="&gt;&gt;LblGCVersion.Name" xml:space="preserve">
<value>LblGCVersion</value>
</data>
<data name="&gt;&gt;LblGCVersion.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;LblGCVersion.Parent" xml:space="preserve">
<value>GrpSettings</value>
</data>
<data name="&gt;&gt;LblGCVersion.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="CmbGcVersions.Location" type="System.Drawing.Point, System.Drawing">
<value>41, 80</value>
</data>
<data name="CmbGcVersions.Size" type="System.Drawing.Size, System.Drawing">
<value>100, 25</value>
</data>
<data name="CmbGcVersions.TabIndex" type="System.Int32, mscorlib">
<value>6</value>
</data>
<data name="&gt;&gt;CmbGcVersions.Name" xml:space="preserve">
<value>CmbGcVersions</value>
</data>
<data name="&gt;&gt;CmbGcVersions.Type" xml:space="preserve">
<value>System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;CmbGcVersions.Parent" xml:space="preserve">
<value>GrpSettings</value>
</data>
<data name="&gt;&gt;CmbGcVersions.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="ChkTopMost.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="ChkTopMost.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="ChkTopMost.Location" type="System.Drawing.Point, System.Drawing">
<value>147, 82</value>
</data>
<data name="ChkTopMost.Size" type="System.Drawing.Size, System.Drawing">
<value>75, 21</value>
</data>
<data name="ChkTopMost.TabIndex" type="System.Int32, mscorlib">
<value>7</value>
</data>
<data name="ChkTopMost.Text" xml:space="preserve">
<value>窗口置顶</value>
</data>
<data name="&gt;&gt;ChkTopMost.Name" xml:space="preserve">
<value>ChkTopMost</value>
</data>
<data name="&gt;&gt;ChkTopMost.Type" xml:space="preserve">
<value>System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;ChkTopMost.Parent" xml:space="preserve">
<value>GrpSettings</value>
</data>
<data name="&gt;&gt;ChkTopMost.ZOrder" xml:space="preserve">
<value>2</value>
</data>
<data name="CmbLanguage.Location" type="System.Drawing.Point, System.Drawing">
<value>41, 51</value>
</data>
<data name="CmbLanguage.Size" type="System.Drawing.Size, System.Drawing">
<value>100, 25</value>
</data>
<data name="CmbLanguage.TabIndex" type="System.Int32, mscorlib">
<value>3</value>
</data>
<data name="&gt;&gt;CmbLanguage.Name" xml:space="preserve">
<value>CmbLanguage</value>
</data>
<data name="&gt;&gt;CmbLanguage.Type" xml:space="preserve">
<value>System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;CmbLanguage.Parent" xml:space="preserve">
<value>GrpSettings</value>
</data>
<data name="&gt;&gt;CmbLanguage.ZOrder" xml:space="preserve">
<value>3</value>
</data>
<data name="LblLanguage.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="LblLanguage.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="LblLanguage.Location" type="System.Drawing.Point, System.Drawing">
<value>147, 54</value>
</data>
<data name="LblLanguage.Size" type="System.Drawing.Size, System.Drawing">
<value>128, 17</value>
</data>
<data name="LblLanguage.TabIndex" type="System.Int32, mscorlib">
<value>4</value>
</data>
<data name="LblLanguage.Text" xml:space="preserve">
<value>语言/Language/язык</value>
</data>
<data name="&gt;&gt;LblLanguage.Name" xml:space="preserve">
<value>LblLanguage</value>
</data>
<data name="&gt;&gt;LblLanguage.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;LblLanguage.Parent" xml:space="preserve">
<value>GrpSettings</value>
</data>
<data name="&gt;&gt;LblLanguage.ZOrder" xml:space="preserve">
<value>4</value>
</data>
<data name="NUDUid.Location" type="System.Drawing.Point, System.Drawing">
<value>41, 22</value>
</data>
<data name="NUDUid.Size" type="System.Drawing.Size, System.Drawing">
<value>100, 23</value>
</data>
<data name="NUDUid.TabIndex" type="System.Int32, mscorlib">
<value>1</value>
</data>
<data name="&gt;&gt;NUDUid.Name" xml:space="preserve">
<value>NUDUid</value>
</data>
<data name="&gt;&gt;NUDUid.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;NUDUid.Parent" xml:space="preserve">
<value>GrpSettings</value>
</data>
<data name="&gt;&gt;NUDUid.ZOrder" xml:space="preserve">
<value>5</value>
</data>
<data name="ChkIncludeUID.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="ChkIncludeUID.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="ChkIncludeUID.Location" type="System.Drawing.Point, System.Drawing">
<value>147, 23</value>
</data>
<data name="ChkIncludeUID.Size" type="System.Drawing.Size, System.Drawing">
<value>133, 21</value>
</data>
<data name="ChkIncludeUID.TabIndex" type="System.Int32, mscorlib">
<value>2</value>
</data>
<data name="ChkIncludeUID.Text" xml:space="preserve">
<value>生成的命令包含UID</value>
</data>
<data name="&gt;&gt;ChkIncludeUID.Name" xml:space="preserve">
<value>ChkIncludeUID</value>
</data>
<data name="&gt;&gt;ChkIncludeUID.Type" xml:space="preserve">
<value>System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;ChkIncludeUID.Parent" xml:space="preserve">
<value>GrpSettings</value>
</data>
<data name="&gt;&gt;ChkIncludeUID.ZOrder" xml:space="preserve">
<value>6</value>
</data>
<data name="LblDefaultUid.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="LblDefaultUid.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="LblDefaultUid.Location" type="System.Drawing.Point, System.Drawing">
<value>7, 24</value>
</data>
<data name="LblDefaultUid.Size" type="System.Drawing.Size, System.Drawing">
<value>30, 17</value>
</data>
<data name="LblDefaultUid.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
</data>
<data name="LblDefaultUid.Text" xml:space="preserve">
<value>UID</value>
</data>
<data name="&gt;&gt;LblDefaultUid.Name" xml:space="preserve">
<value>LblDefaultUid</value>
</data>
<data name="&gt;&gt;LblDefaultUid.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;LblDefaultUid.Parent" xml:space="preserve">
<value>GrpSettings</value>
</data>
<data name="&gt;&gt;LblDefaultUid.ZOrder" xml:space="preserve">
<value>7</value>
</data>
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
<value>7, 17</value>
</data>
<data name="&gt;&gt;$this.Name" xml:space="preserve">
<value>PageHome</value>
</data>
<data name="&gt;&gt;$this.Type" xml:space="preserve">
<value>GrasscutterTools.Pages.BasePage, GrasscutterTools, Version=1.7.4.0, Culture=neutral, PublicKeyToken=de2b1c089621e923</value>
</data>
</root>

View File

@@ -0,0 +1,169 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="BtnOpenShopEditor.Size" type="System.Drawing.Size, System.Drawing">
<value>140, 23</value>
</data>
<data name="BtnOpenShopEditor.Text" xml:space="preserve">
<value>Редактор магазина</value>
</data>
<data name="BtnOpenDropEditor.Location" type="System.Drawing.Point, System.Drawing">
<value>456, 184</value>
</data>
<data name="BtnOpenDropEditor.Size" type="System.Drawing.Size, System.Drawing">
<value>140, 23</value>
</data>
<data name="BtnOpenDropEditor.Text" xml:space="preserve">
<value>Браузер карт</value>
</data>
<data name="LblAbout.Text" xml:space="preserve">
<value>Желаем приятно провести время!</value>
</data>
<data name="BtnOpenTextMap.Location" type="System.Drawing.Point, System.Drawing">
<value>456, 213</value>
</data>
<data name="BtnOpenTextMap.Size" type="System.Drawing.Size, System.Drawing">
<value>140, 23</value>
</data>
<data name="BtnOpenTextMap.Text" xml:space="preserve">
<value>Редактор дропа</value>
</data>
<data name="BtnOpenGachaBannerEditor.Size" type="System.Drawing.Size, System.Drawing">
<value>140, 23</value>
</data>
<data name="BtnOpenGachaBannerEditor.Text" xml:space="preserve">
<value>Редактор баннеров</value>
</data>
<data name="ChkTopMost.Size" type="System.Drawing.Size, System.Drawing">
<value>140, 21</value>
</data>
<data name="ChkTopMost.Text" xml:space="preserve">
<value>Последняя версия</value>
</data>
<data name="ChkIncludeUID.Size" type="System.Drawing.Size, System.Drawing">
<value>113, 21</value>
</data>
<data name="ChkIncludeUID.Text" xml:space="preserve">
<value>Включить UID</value>
</data>
<data name="GrpSettings.Text" xml:space="preserve">
<value>Настройки</value>
</data>
</root>

View File

@@ -0,0 +1,138 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="BtnOpenShopEditor.Text" xml:space="preserve">
<value>商店編輯器</value>
</data>
<data name="BtnOpenDropEditor.Text" xml:space="preserve">
<value>掉落物編輯器</value>
</data>
<data name="BtnOpenTextMap.Text" xml:space="preserve">
<value>文本瀏覽器</value>
</data>
<data name="BtnOpenGachaBannerEditor.Text" xml:space="preserve">
<value>獎池編輯器</value>
</data>
<data name="GrpSettings.Text" xml:space="preserve">
<value>設置</value>
</data>
<data name="ChkTopMost.Text" xml:space="preserve">
<value>窗口置頂</value>
</data>
</root>

View File

@@ -0,0 +1,367 @@
namespace GrasscutterTools.Pages
{
partial class PageOpenCommand
{
/// <summary>
/// 必需的设计器变量。
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// 清理所有正在使用的资源。
/// </summary>
/// <param name="disposing">如果应释放托管资源,为 true否则为 false。</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region
/// <summary>
/// 设计器支持所需的方法 - 不要修改
/// 使用代码编辑器修改此方法的内容。
/// </summary>
private void InitializeComponent()
{
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(PageOpenCommand));
this.LnkLinks = new System.Windows.Forms.LinkLabel();
this.LnkGOODHelp = new System.Windows.Forms.LinkLabel();
this.LnkInventoryKamera = new System.Windows.Forms.LinkLabel();
this.LblGOODHelp = new System.Windows.Forms.Label();
this.ButtonOpenGOODImport = new System.Windows.Forms.Button();
this.LblHostTip = new System.Windows.Forms.Label();
this.GrpServerStatus = new System.Windows.Forms.GroupBox();
this.LnkOpenCommandLabel = new System.Windows.Forms.LinkLabel();
this.LblOpenCommandSupport = new System.Windows.Forms.Label();
this.LblServerVersion = new System.Windows.Forms.Label();
this.LblPlayerCount = new System.Windows.Forms.Label();
this.LblServerVersionLabel = new System.Windows.Forms.Label();
this.LblPlayerCountLabel = new System.Windows.Forms.Label();
this.GrpRemoteCommand = new System.Windows.Forms.GroupBox();
this.TPOpenCommandCheck = new System.Windows.Forms.TabControl();
this.TPPlayerCheck = new System.Windows.Forms.TabPage();
this.LnkRCHelp = new System.Windows.Forms.LinkLabel();
this.NUDRemotePlayerId = new System.Windows.Forms.NumericUpDown();
this.BtnConnectOpenCommand = new System.Windows.Forms.Button();
this.LblVerificationCode = new System.Windows.Forms.Label();
this.BtnSendVerificationCode = new System.Windows.Forms.Button();
this.NUDVerificationCode = new System.Windows.Forms.NumericUpDown();
this.LblRemotePlayerId = new System.Windows.Forms.Label();
this.TPConsoleCheck = new System.Windows.Forms.TabPage();
this.BtnConsoleConnect = new System.Windows.Forms.Button();
this.TxtToken = new System.Windows.Forms.TextBox();
this.LblToken = new System.Windows.Forms.Label();
this.LblConsoleTip = new System.Windows.Forms.Label();
this.TxtHost = new System.Windows.Forms.TextBox();
this.BtnQueryServerStatus = new System.Windows.Forms.Button();
this.LblHost = new System.Windows.Forms.Label();
this.GrpServerStatus.SuspendLayout();
this.GrpRemoteCommand.SuspendLayout();
this.TPOpenCommandCheck.SuspendLayout();
this.TPPlayerCheck.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.NUDRemotePlayerId)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.NUDVerificationCode)).BeginInit();
this.TPConsoleCheck.SuspendLayout();
this.SuspendLayout();
//
// LnkLinks
//
resources.ApplyResources(this.LnkLinks, "LnkLinks");
this.LnkLinks.Name = "LnkLinks";
this.LnkLinks.TabStop = true;
this.LnkLinks.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.LnkLinks_LinkClicked);
//
// LnkGOODHelp
//
resources.ApplyResources(this.LnkGOODHelp, "LnkGOODHelp");
this.LnkGOODHelp.Cursor = System.Windows.Forms.Cursors.Help;
this.LnkGOODHelp.Name = "LnkGOODHelp";
this.LnkGOODHelp.TabStop = true;
this.LnkGOODHelp.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.LnkGOODHelp_LinkClicked);
//
// LnkInventoryKamera
//
resources.ApplyResources(this.LnkInventoryKamera, "LnkInventoryKamera");
this.LnkInventoryKamera.Name = "LnkInventoryKamera";
this.LnkInventoryKamera.TabStop = true;
this.LnkInventoryKamera.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.LnkInventoryKamera_LinkClicked);
//
// LblGOODHelp
//
resources.ApplyResources(this.LblGOODHelp, "LblGOODHelp");
this.LblGOODHelp.Name = "LblGOODHelp";
//
// ButtonOpenGOODImport
//
resources.ApplyResources(this.ButtonOpenGOODImport, "ButtonOpenGOODImport");
this.ButtonOpenGOODImport.Name = "ButtonOpenGOODImport";
this.ButtonOpenGOODImport.UseVisualStyleBackColor = true;
//
// LblHostTip
//
resources.ApplyResources(this.LblHostTip, "LblHostTip");
this.LblHostTip.ForeColor = System.Drawing.SystemColors.GrayText;
this.LblHostTip.Name = "LblHostTip";
//
// GrpServerStatus
//
resources.ApplyResources(this.GrpServerStatus, "GrpServerStatus");
this.GrpServerStatus.Controls.Add(this.LnkOpenCommandLabel);
this.GrpServerStatus.Controls.Add(this.LblOpenCommandSupport);
this.GrpServerStatus.Controls.Add(this.LblServerVersion);
this.GrpServerStatus.Controls.Add(this.LblPlayerCount);
this.GrpServerStatus.Controls.Add(this.LblServerVersionLabel);
this.GrpServerStatus.Controls.Add(this.LblPlayerCountLabel);
this.GrpServerStatus.Name = "GrpServerStatus";
this.GrpServerStatus.TabStop = false;
//
// LnkOpenCommandLabel
//
resources.ApplyResources(this.LnkOpenCommandLabel, "LnkOpenCommandLabel");
this.LnkOpenCommandLabel.Name = "LnkOpenCommandLabel";
this.LnkOpenCommandLabel.TabStop = true;
this.LnkOpenCommandLabel.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.LnkOpenCommandLabel_LinkClicked);
//
// LblOpenCommandSupport
//
resources.ApplyResources(this.LblOpenCommandSupport, "LblOpenCommandSupport");
this.LblOpenCommandSupport.Name = "LblOpenCommandSupport";
//
// LblServerVersion
//
resources.ApplyResources(this.LblServerVersion, "LblServerVersion");
this.LblServerVersion.Name = "LblServerVersion";
//
// LblPlayerCount
//
resources.ApplyResources(this.LblPlayerCount, "LblPlayerCount");
this.LblPlayerCount.Name = "LblPlayerCount";
//
// LblServerVersionLabel
//
resources.ApplyResources(this.LblServerVersionLabel, "LblServerVersionLabel");
this.LblServerVersionLabel.Name = "LblServerVersionLabel";
//
// LblPlayerCountLabel
//
resources.ApplyResources(this.LblPlayerCountLabel, "LblPlayerCountLabel");
this.LblPlayerCountLabel.Name = "LblPlayerCountLabel";
//
// GrpRemoteCommand
//
resources.ApplyResources(this.GrpRemoteCommand, "GrpRemoteCommand");
this.GrpRemoteCommand.Controls.Add(this.TPOpenCommandCheck);
this.GrpRemoteCommand.Name = "GrpRemoteCommand";
this.GrpRemoteCommand.TabStop = false;
//
// TPOpenCommandCheck
//
this.TPOpenCommandCheck.Controls.Add(this.TPPlayerCheck);
this.TPOpenCommandCheck.Controls.Add(this.TPConsoleCheck);
resources.ApplyResources(this.TPOpenCommandCheck, "TPOpenCommandCheck");
this.TPOpenCommandCheck.Name = "TPOpenCommandCheck";
this.TPOpenCommandCheck.SelectedIndex = 0;
//
// TPPlayerCheck
//
this.TPPlayerCheck.Controls.Add(this.LnkRCHelp);
this.TPPlayerCheck.Controls.Add(this.NUDRemotePlayerId);
this.TPPlayerCheck.Controls.Add(this.BtnConnectOpenCommand);
this.TPPlayerCheck.Controls.Add(this.LblVerificationCode);
this.TPPlayerCheck.Controls.Add(this.BtnSendVerificationCode);
this.TPPlayerCheck.Controls.Add(this.NUDVerificationCode);
this.TPPlayerCheck.Controls.Add(this.LblRemotePlayerId);
resources.ApplyResources(this.TPPlayerCheck, "TPPlayerCheck");
this.TPPlayerCheck.Name = "TPPlayerCheck";
this.TPPlayerCheck.UseVisualStyleBackColor = true;
//
// LnkRCHelp
//
resources.ApplyResources(this.LnkRCHelp, "LnkRCHelp");
this.LnkRCHelp.Name = "LnkRCHelp";
this.LnkRCHelp.TabStop = true;
this.LnkRCHelp.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.LnkRCHelp_LinkClicked);
//
// NUDRemotePlayerId
//
resources.ApplyResources(this.NUDRemotePlayerId, "NUDRemotePlayerId");
this.NUDRemotePlayerId.Maximum = new decimal(new int[] {
2147483647,
0,
0,
0});
this.NUDRemotePlayerId.Name = "NUDRemotePlayerId";
this.NUDRemotePlayerId.Value = new decimal(new int[] {
10001,
0,
0,
0});
this.NUDRemotePlayerId.KeyDown += new System.Windows.Forms.KeyEventHandler(this.NUDRemotePlayerId_KeyDown);
//
// BtnConnectOpenCommand
//
resources.ApplyResources(this.BtnConnectOpenCommand, "BtnConnectOpenCommand");
this.BtnConnectOpenCommand.Name = "BtnConnectOpenCommand";
this.BtnConnectOpenCommand.UseVisualStyleBackColor = true;
this.BtnConnectOpenCommand.Click += new System.EventHandler(this.BtnConnectOpenCommand_Click);
//
// LblVerificationCode
//
resources.ApplyResources(this.LblVerificationCode, "LblVerificationCode");
this.LblVerificationCode.Name = "LblVerificationCode";
//
// BtnSendVerificationCode
//
resources.ApplyResources(this.BtnSendVerificationCode, "BtnSendVerificationCode");
this.BtnSendVerificationCode.Name = "BtnSendVerificationCode";
this.BtnSendVerificationCode.UseVisualStyleBackColor = true;
this.BtnSendVerificationCode.Click += new System.EventHandler(this.BtnSendVerificationCode_Click);
//
// NUDVerificationCode
//
resources.ApplyResources(this.NUDVerificationCode, "NUDVerificationCode");
this.NUDVerificationCode.Maximum = new decimal(new int[] {
9999,
0,
0,
0});
this.NUDVerificationCode.Minimum = new decimal(new int[] {
1000,
0,
0,
0});
this.NUDVerificationCode.Name = "NUDVerificationCode";
this.NUDVerificationCode.Value = new decimal(new int[] {
1000,
0,
0,
0});
this.NUDVerificationCode.KeyDown += new System.Windows.Forms.KeyEventHandler(this.NUDVerificationCode_KeyDown);
//
// LblRemotePlayerId
//
resources.ApplyResources(this.LblRemotePlayerId, "LblRemotePlayerId");
this.LblRemotePlayerId.Name = "LblRemotePlayerId";
//
// TPConsoleCheck
//
this.TPConsoleCheck.Controls.Add(this.BtnConsoleConnect);
this.TPConsoleCheck.Controls.Add(this.TxtToken);
this.TPConsoleCheck.Controls.Add(this.LblToken);
this.TPConsoleCheck.Controls.Add(this.LblConsoleTip);
resources.ApplyResources(this.TPConsoleCheck, "TPConsoleCheck");
this.TPConsoleCheck.Name = "TPConsoleCheck";
this.TPConsoleCheck.UseVisualStyleBackColor = true;
//
// BtnConsoleConnect
//
resources.ApplyResources(this.BtnConsoleConnect, "BtnConsoleConnect");
this.BtnConsoleConnect.Name = "BtnConsoleConnect";
this.BtnConsoleConnect.UseVisualStyleBackColor = true;
this.BtnConsoleConnect.Click += new System.EventHandler(this.BtnConsoleConnect_Click);
//
// TxtToken
//
resources.ApplyResources(this.TxtToken, "TxtToken");
this.TxtToken.Name = "TxtToken";
this.TxtToken.KeyDown += new System.Windows.Forms.KeyEventHandler(this.TxtToken_KeyDown);
//
// LblToken
//
resources.ApplyResources(this.LblToken, "LblToken");
this.LblToken.Name = "LblToken";
//
// LblConsoleTip
//
resources.ApplyResources(this.LblConsoleTip, "LblConsoleTip");
this.LblConsoleTip.Name = "LblConsoleTip";
//
// TxtHost
//
resources.ApplyResources(this.TxtHost, "TxtHost");
this.TxtHost.Name = "TxtHost";
this.TxtHost.KeyDown += new System.Windows.Forms.KeyEventHandler(this.TxtHost_KeyDown);
//
// BtnQueryServerStatus
//
resources.ApplyResources(this.BtnQueryServerStatus, "BtnQueryServerStatus");
this.BtnQueryServerStatus.Name = "BtnQueryServerStatus";
this.BtnQueryServerStatus.UseVisualStyleBackColor = true;
this.BtnQueryServerStatus.Click += new System.EventHandler(this.BtnQueryServerStatus_Click);
//
// LblHost
//
resources.ApplyResources(this.LblHost, "LblHost");
this.LblHost.Name = "LblHost";
//
// PageOpenCommand
//
resources.ApplyResources(this, "$this");
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.Controls.Add(this.LnkLinks);
this.Controls.Add(this.LnkGOODHelp);
this.Controls.Add(this.LnkInventoryKamera);
this.Controls.Add(this.LblGOODHelp);
this.Controls.Add(this.ButtonOpenGOODImport);
this.Controls.Add(this.LblHostTip);
this.Controls.Add(this.GrpServerStatus);
this.Controls.Add(this.GrpRemoteCommand);
this.Controls.Add(this.TxtHost);
this.Controls.Add(this.BtnQueryServerStatus);
this.Controls.Add(this.LblHost);
this.Name = "PageOpenCommand";
this.GrpServerStatus.ResumeLayout(false);
this.GrpServerStatus.PerformLayout();
this.GrpRemoteCommand.ResumeLayout(false);
this.TPOpenCommandCheck.ResumeLayout(false);
this.TPPlayerCheck.ResumeLayout(false);
this.TPPlayerCheck.PerformLayout();
((System.ComponentModel.ISupportInitialize)(this.NUDRemotePlayerId)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.NUDVerificationCode)).EndInit();
this.TPConsoleCheck.ResumeLayout(false);
this.TPConsoleCheck.PerformLayout();
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private System.Windows.Forms.LinkLabel LnkLinks;
private System.Windows.Forms.LinkLabel LnkGOODHelp;
private System.Windows.Forms.LinkLabel LnkInventoryKamera;
private System.Windows.Forms.Label LblGOODHelp;
private System.Windows.Forms.Button ButtonOpenGOODImport;
private System.Windows.Forms.Label LblHostTip;
private System.Windows.Forms.GroupBox GrpServerStatus;
private System.Windows.Forms.LinkLabel LnkOpenCommandLabel;
private System.Windows.Forms.Label LblOpenCommandSupport;
private System.Windows.Forms.Label LblServerVersion;
private System.Windows.Forms.Label LblPlayerCount;
private System.Windows.Forms.Label LblServerVersionLabel;
private System.Windows.Forms.Label LblPlayerCountLabel;
private System.Windows.Forms.GroupBox GrpRemoteCommand;
private System.Windows.Forms.TabControl TPOpenCommandCheck;
private System.Windows.Forms.TabPage TPPlayerCheck;
private System.Windows.Forms.LinkLabel LnkRCHelp;
private System.Windows.Forms.NumericUpDown NUDRemotePlayerId;
private System.Windows.Forms.Button BtnConnectOpenCommand;
private System.Windows.Forms.Label LblVerificationCode;
private System.Windows.Forms.Button BtnSendVerificationCode;
private System.Windows.Forms.NumericUpDown NUDVerificationCode;
private System.Windows.Forms.Label LblRemotePlayerId;
private System.Windows.Forms.TabPage TPConsoleCheck;
private System.Windows.Forms.Button BtnConsoleConnect;
private System.Windows.Forms.TextBox TxtToken;
private System.Windows.Forms.Label LblToken;
private System.Windows.Forms.Label LblConsoleTip;
private System.Windows.Forms.TextBox TxtHost;
private System.Windows.Forms.Button BtnQueryServerStatus;
private System.Windows.Forms.Label LblHost;
}
}

View File

@@ -0,0 +1,457 @@
using System;
using System.Collections.Generic;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Threading.Tasks;
using System.Windows.Forms;
using GrasscutterTools.DispatchServer;
using GrasscutterTools.Game;
using GrasscutterTools.GOOD;
using GrasscutterTools.OpenCommand;
using GrasscutterTools.Properties;
using GrasscutterTools.Utils;
using Newtonsoft.Json;
namespace GrasscutterTools.Pages
{
internal partial class PageOpenCommand : BasePage
{
public PageOpenCommand()
{
InitializeComponent();
if (DesignMode) return;
NUDRemotePlayerId.Value = Settings.Default.RemoteUid;
TxtHost.Text = Settings.Default.Host;
if (!string.IsNullOrEmpty(Settings.Default.Host) && !string.IsNullOrEmpty(Settings.Default.TokenCache))
{
Common.OC = new OpenCommandAPI(Settings.Default.Host, Settings.Default.TokenCache);
TxtToken.Text = Settings.Default.TokenCache;
Task.Delay(1000).ContinueWith(_ => ShowTipInRunButton?.Invoke(Resources.TokenRestoredFromCache));
}
}
/// <summary>
/// 在运行按钮上显示提示,要求主窗口设置
/// </summary>
public Action<string> ShowTipInRunButton { get; set; }
public override void OnEnter()
{
#if !DEBUG
if (string.IsNullOrEmpty(Settings.Default.Host) || string.IsNullOrEmpty(Settings.Default.TokenCache))
{
// 自动尝试查询本地服务端地址,降低使用门槛
Task.Run(async () =>
{
var localhosts = new string[] {
"http://127.0.0.1:443",
"https://127.0.0.1",
"http://127.0.0.1",
"https://127.0.0.1:80",
"http://127.0.0.1:8080",
"https://127.0.0.1:8080",
};
foreach (var host in localhosts)
{
try
{
await UpdateServerStatus(host);
// 自动填写本地服务端地址
TxtHost.Text = host;
break;
}
catch (Exception)
{
// Ignore
}
}
});
}
#endif
}
/// <summary>
/// 保存开放命令参数
/// </summary>
public override void OnClosed()
{
Settings.Default.RemoteUid = NUDRemotePlayerId.Value;
Settings.Default.Host = TxtHost.Text;
Settings.Default.TokenCache = Common.OC?.Token;
}
/// <summary>
/// 更新服务器状态
/// </summary>
/// <param name="host">主机地址</param>
private async Task UpdateServerStatus(string host)
{
// "http://127.0.0.1/" -> "http://127.0.0.1"
host = host.TrimEnd('/');
var status = await DispatchServerAPI.QueryServerStatus(host);
LblServerVersion.Text = status.Version;
if (status.MaxPlayer >= 0)
LblPlayerCount.Text = $"{status.PlayerCount}/{status.MaxPlayer}";
else
LblPlayerCount.Text = status.PlayerCount.ToString();
}
/// <summary>
/// 输入服务器地址按下回车时触发
/// </summary>
private void TxtHost_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter) BtnQueryServerStatus_Click(BtnQueryServerStatus, e);
}
/// <summary>
/// 点击查询服务器状态按钮时触发
/// </summary>
private async void BtnQueryServerStatus_Click(object sender, EventArgs e)
{
var btn = sender as Button;
btn.Enabled = false;
btn.Cursor = Cursors.WaitCursor;
try
{
try
{
await UpdateServerStatus(TxtHost.Text);
}
catch (Exception ex)
{
MessageBox.Show(Resources.QueryServerStatusFailed + ex.Message, Resources.Error, MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
Common.OC = new OpenCommandAPI(TxtHost.Text);
if (await Common.OC.Ping())
{
LblOpenCommandSupport.Text = "√";
LblOpenCommandSupport.ForeColor = Color.Green;
GrpRemoteCommand.Enabled = true;
}
else
{
LblOpenCommandSupport.Text = "×";
LblOpenCommandSupport.ForeColor = Color.Red;
GrpRemoteCommand.Enabled = false;
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, Resources.Error, MessageBoxButtons.OK, MessageBoxIcon.Error);
}
finally
{
btn.Cursor = Cursors.Default;
btn.Enabled = true;
}
}
/// <summary>
/// 玩家ID输入框按下回车时触发
/// </summary>
private void NUDRemotePlayerId_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter) BtnSendVerificationCode_Click(BtnSendVerificationCode, e);
}
/// <summary>
/// 点击发送校验码按钮时触发
/// </summary>
private async void BtnSendVerificationCode_Click(object sender, EventArgs e)
{
var btn = sender as Button;
var t = btn.Text;
btn.Enabled = false;
NUDRemotePlayerId.Enabled = false;
try
{
btn.Text = Resources.CodeSending;
await Common.OC.SendCode((int)NUDRemotePlayerId.Value);
BtnConnectOpenCommand.Enabled = true;
NUDVerificationCode.Enabled = true;
NUDVerificationCode.Focus();
for (int i = 60; i > 0 && !Common.OC.CanInvoke; i--)
{
btn.Text = string.Format(Resources.CodeResendTip, i);
await Task.Delay(1000);
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, Resources.Error, MessageBoxButtons.OK, MessageBoxIcon.Error);
}
finally
{
btn.Text = t;
btn.Enabled = true;
NUDRemotePlayerId.Enabled = true;
}
}
/// <summary>
/// 验证码输入框按下回车时触发
/// </summary>
private void NUDVerificationCode_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter) BtnConnectOpenCommand_Click(BtnConnectOpenCommand, e);
}
/// <summary>
/// 点击连接到开放命令按钮时触发
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private async void BtnConnectOpenCommand_Click(object sender, EventArgs e)
{
var btn = sender as Button;
btn.Enabled = false;
try
{
await Common.OC.Verify((int)NUDVerificationCode.Value);
GrpRemoteCommand.Enabled = false;
ShowTipInRunButton?.Invoke(Resources.ConnectedTip);
ButtonOpenGOODImport.Enabled = true;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, Resources.Error, MessageBoxButtons.OK, MessageBoxIcon.Error);
}
finally
{
btn.Cursor = Cursors.Default;
btn.Enabled = true;
}
}
/// <summary>
/// Token 输入框按下回车时触发
/// </summary>
private void TxtToken_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter) BtnConsoleConnect_Click(BtnConsoleConnect, e);
}
/// <summary>
/// 点击控制台连接按钮时触发
/// </summary>
private void BtnConsoleConnect_Click(object sender, EventArgs e)
{
if (string.IsNullOrEmpty(TxtToken.Text))
{
MessageBox.Show(Resources.TokenCannotBeEmpty, Resources.Error, MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
Common.OC.Token = TxtToken.Text;
BtnConnectOpenCommand_Click(sender, e);
}
/// <summary>
/// 点击开放命令标签时触发
/// </summary>
private void LnkOpenCommandLabel_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
UIUtil.OpenURL("https://github.com/jie65535/gc-opencommand-plugin");
}
/// <summary>
/// 点击帮助连接标签时触发
/// </summary>
private void LnkRCHelp_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
MessageBox.Show(Resources.OpenCommandHelp, Resources.Help, MessageBoxButtons.OK, MessageBoxIcon.Information);
}
/// <summary>
/// 点击库存扫描链接标签时触发
/// </summary>
private void LnkInventoryKamera_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
UIUtil.OpenURL("https://github.com/Andrewthe13th/Inventory_Kamera");
}
/// <summary>
/// 点击GOOD帮助链接标签时触发
/// </summary>
private void LnkGOODHelp_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
UIUtil.OpenURL("https://frzyc.github.io/genshin-optimizer/#/doc");
}
/// <summary>
/// 点击链接帮助标签时触发
/// </summary>
private void LnkLinks_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
var links = new List<string>
{
"https://frzyc.github.io/genshin-optimizer/",
"https://genshin.aspirine.su/",
"https://genshin.mingyulab.com/",
"https://genshin-center.com/",
"https://github.com/Andrewthe13th/Inventory_Kamera",
"https://github.com/daydreaming666/Amenoma",
"https://seelie.me/",
"https://www.mona-uranai.com/",
};
MessageBox.Show(string.Join("\n", links), "Links", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
#region - GOOD -
/// <summary>
/// 点击GOOD导入存档按钮时触发
/// </summary>
private async void ButtonOpenGOODImport_Click(object sender, EventArgs e)
{
if (Common.OC == null || !Common.OC.CanInvoke)
{
UIUtil.ShowTip(Resources.RequireOpenCommandTip, ButtonOpenGOODImport);
return;
}
OpenFileDialog openFileDialog1 = new OpenFileDialog
{
Filter = "GOOD file (*.GOOD;*.json)|*.GOOD;*.json|All files (*.*)|*.*",
};
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
if (DialogResult.Yes != MessageBox.Show(Resources.GOODImportText + openFileDialog1.FileName + "?",
Resources.GOODImportTitle, MessageBoxButtons.YesNo))
return;
try
{
GOOD.GOOD good = JsonConvert.DeserializeObject<GOOD.GOOD>(File.ReadAllText(openFileDialog1.FileName));
var commands_list = new List<string>();
var missingItems = new List<string>();
if (good.Characters != null)
{
foreach (var character in good.Characters)
{
if (character.Name != "Traveler")
{
if (GOODData.Avatars.TryGetValue(character.Name, out var character_id))
{
if (CommandVersion.Check(CommandVersion.V1_4_1))
{
// 取最低的技能等级
var skillLevel = Math.Min(Math.Min(character.Talents.Auto, character.Talents.Skill), character.Talents.Burst);
commands_list.Add($"/give {character_id} lv{character.Level} c{character.Constellation} sl{skillLevel}");
}
else
commands_list.Add($"/give {character_id} lv{character.Level} c{character.Constellation}");
}
else
missingItems.Add(character.Name);
// TODO: Implement command to set talent level when giving character in Grasscutter
}
}
}
if (good.Weapons != null)
{
foreach (var weapon in good.Weapons)
{
if (GOODData.Weapons.TryGetValue(weapon.Name, out var weapon_id))
commands_list.Add($"/give {weapon_id} lv{weapon.Level} r{weapon.RefinementLevel}");
else
missingItems.Add(weapon.Name);
// TODO: Implement command to give weapon directly to character in Grasscutter
}
}
if (good.Artifacts != null)
{
foreach (var artifact in good.Artifacts)
{
// Format: set rarity slot
if (!GOODData.ArtifactCats.TryGetValue(artifact.SetName, out var artifact_set_id))
{
missingItems.Add(artifact.SetName);
continue;
}
var artifact_id = artifact_set_id * 1000 + artifact.Rarity * 100 + GOODData.ArtifactSlotMap[artifact.GearSlot] * 10;
for (int i = 4; i > 0; i--)
{
if (Array.IndexOf(GameData.Artifacts.Ids, artifact_id + i) != -1)
{
artifact_id += i;
break;
}
}
if (artifact_id % 10 == 0)
artifact_id += 4;
var artifact_mainStat_id = GOODData.ArtifactMainAttribution[artifact.MainStat];
var artifact_substats = "";
var artifact_substat_prefix = artifact.Rarity + "0";
int substat_count = 0;
foreach (var substat in artifact.SubStats)
{
if (substat.Value <= 0)
continue;
substat_count++;
var substat_key = substat.Stat;
var substat_key_id = GOODData.ArtifactSubAttribution[substat_key];
var substat_indices = ArtifactUtils.SplitSubstats(substat_key, artifact.Rarity, substat.Value);
foreach (int index in substat_indices)
{
artifact_substats += artifact_substat_prefix + substat_key_id + index.ToString() + " ";
}
}
// HACK: Add def+2 substat to counteract Grasscutter automatically adding another substat
if (substat_count == 4)
artifact_substats += "101081 ";
commands_list.Add($"/give {artifact_id} lv{artifact.Level} {artifact_mainStat_id} {artifact_substats}");
// TODO: Implement command to give artifact directly to character in Grasscutter
}
}
// TODO: Materials
//if (good.Materials != null)
//{
// foreach (var material in good.Materials)
// {
// }
//}
var msg = string.Format("Loaded {0} Characters\nLoaded {1} Weapons\nLoaded {2} Artifacts\n",
good.Characters?.Count ?? 0,
good.Weapons?.Count ?? 0,
good.Artifacts?.Count ?? 0
);
if (missingItems.Count > 0)
{
msg += string.Format("There are {0} pieces of data that cannot be parsed, including:\n{1}",
missingItems.Count,
string.Join("\n", missingItems.Take(10)));
if (missingItems.Count > 10)
msg += "......";
}
msg += "Do you want to start?";
if (DialogResult.Yes != MessageBox.Show(msg, Resources.Tips, MessageBoxButtons.YesNo, MessageBoxIcon.Information))
return;
if (await RunCommands(commands_list.ToArray()))
MessageBox.Show(Resources.GOODImportSuccess);
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString(), Resources.Error, MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
}
#endregion - GOOD -
}
}

View File

@@ -0,0 +1,220 @@
<?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="LnkInventoryKamera.Text" xml:space="preserve">
<value>InventoryKamera</value>
</data>
<data name="LblGOODHelp.Text" xml:space="preserve">
<value>Come and import your official server archive into GC!</value>
</data>
<data name="ButtonOpenGOODImport.Text" xml:space="preserve">
<value>Import GOOD</value>
</data>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="LblHostTip.Size" type="System.Drawing.Size, System.Drawing">
<value>377, 17</value>
</data>
<data name="LblHostTip.Text" xml:space="preserve">
<value>Please be sure https:// or http:// is included with the IP address</value>
</data>
<data name="GrpServerStatus.Text" xml:space="preserve">
<value>Server status</value>
</data>
<data name="LnkOpenCommandLabel.Location" type="System.Drawing.Point, System.Drawing">
<value>13, 63</value>
</data>
<data name="LnkOpenCommandLabel.Size" type="System.Drawing.Size, System.Drawing">
<value>100, 17</value>
</data>
<data name="LnkOpenCommandLabel.Text" xml:space="preserve">
<value>OpenCommand</value>
</data>
<data name="LblOpenCommandSupport.Location" type="System.Drawing.Point, System.Drawing">
<value>119, 63</value>
</data>
<data name="LblServerVersion.Location" type="System.Drawing.Point, System.Drawing">
<value>119, 29</value>
</data>
<data name="LblPlayerCount.Location" type="System.Drawing.Point, System.Drawing">
<value>119, 46</value>
</data>
<data name="LblServerVersionLabel.Location" type="System.Drawing.Point, System.Drawing">
<value>25, 29</value>
</data>
<data name="LblServerVersionLabel.Size" type="System.Drawing.Size, System.Drawing">
<value>88, 17</value>
</data>
<data name="LblServerVersionLabel.Text" xml:space="preserve">
<value>Game version</value>
</data>
<data name="LblPlayerCountLabel.Location" type="System.Drawing.Point, System.Drawing">
<value>34, 46</value>
</data>
<data name="LblPlayerCountLabel.Size" type="System.Drawing.Size, System.Drawing">
<value>79, 17</value>
</data>
<data name="LblPlayerCountLabel.Text" xml:space="preserve">
<value>Player count</value>
</data>
<data name="GrpRemoteCommand.Text" xml:space="preserve">
<value>Open Command</value>
</data>
<data name="TPPlayerCheck.Text" xml:space="preserve">
<value>Player</value>
</data>
<data name="LnkRCHelp.Size" type="System.Drawing.Size, System.Drawing">
<value>35, 17</value>
</data>
<data name="LnkRCHelp.Text" xml:space="preserve">
<value>Help</value>
</data>
<data name="BtnConnectOpenCommand.Text" xml:space="preserve">
<value>Connect</value>
</data>
<data name="LblVerificationCode.Size" type="System.Drawing.Size, System.Drawing">
<value>39, 17</value>
</data>
<data name="LblVerificationCode.Text" xml:space="preserve">
<value>Code</value>
</data>
<data name="BtnSendVerificationCode.Text" xml:space="preserve">
<value>Send Code</value>
</data>
<data name="TPConsoleCheck.Size" type="System.Drawing.Size, System.Drawing">
<value>296, 109</value>
</data>
<data name="TPConsoleCheck.Text" xml:space="preserve">
<value>Console</value>
</data>
<data name="BtnConsoleConnect.Text" xml:space="preserve">
<value>Connect</value>
</data>
<data name="LblConsoleTip.Text" xml:space="preserve">
<value>Note that normal commands in the console state must specify the target (set include UID)</value>
</data>
<data name="BtnQueryServerStatus.Text" xml:space="preserve">
<value>Query</value>
</data>
<data name="LblHost.Size" type="System.Drawing.Size, System.Drawing">
<value>78, 17</value>
</data>
<data name="LblHost.Text" xml:space="preserve">
<value>Server Addr</value>
</data>
</root>

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,273 @@
<?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="LnkInventoryKamera.Text" xml:space="preserve">
<value>InventoryKamera</value>
</data>
<data name="LblGOODHelp.Text" xml:space="preserve">
<value>Приходите и импортируйте свой официальный архив сервера в GC!</value>
</data>
<data name="ButtonOpenGOODImport.Text" xml:space="preserve">
<value>Импортировать GOOD</value>
</data>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="LblHostTip.Size" type="System.Drawing.Size, System.Drawing">
<value>346, 17</value>
</data>
<data name="LblHostTip.Text" xml:space="preserve">
<value>Убедитесь, что https:// или http:// включены в IP-адрес.</value>
</data>
<data name="GrpServerStatus.Text" xml:space="preserve">
<value>Состояние сервера</value>
</data>
<data name="LnkOpenCommandLabel.Size" type="System.Drawing.Size, System.Drawing">
<value>100, 17</value>
</data>
<data name="LnkOpenCommandLabel.Text" xml:space="preserve">
<value>OpenCommand</value>
</data>
<data name="LblOpenCommandSupport.Location" type="System.Drawing.Point, System.Drawing">
<value>119, 62</value>
</data>
<data name="LblServerVersion.Location" type="System.Drawing.Point, System.Drawing">
<value>119, 28</value>
</data>
<data name="LblPlayerCount.Location" type="System.Drawing.Point, System.Drawing">
<value>119, 45</value>
</data>
<data name="LblServerVersionLabel.Location" type="System.Drawing.Point, System.Drawing">
<value>27, 28</value>
</data>
<data name="LblServerVersionLabel.Size" type="System.Drawing.Size, System.Drawing">
<value>86, 17</value>
</data>
<data name="LblServerVersionLabel.Text" xml:space="preserve">
<value>Версия игры</value>
</data>
<data name="LblPlayerCountLabel.Location" type="System.Drawing.Point, System.Drawing">
<value>7, 45</value>
</data>
<data name="LblPlayerCountLabel.Size" type="System.Drawing.Size, System.Drawing">
<value>106, 17</value>
</data>
<data name="LblPlayerCountLabel.Text" xml:space="preserve">
<value>Кол-во игроков</value>
</data>
<data name="GrpRemoteCommand.Text" xml:space="preserve">
<value>Open Command</value>
</data>
<data name="TPPlayerCheck.Text" xml:space="preserve">
<value>Игрок</value>
</data>
<data name="LnkRCHelp.Location" type="System.Drawing.Point, System.Drawing">
<value>179, 15</value>
</data>
<data name="LnkRCHelp.Size" type="System.Drawing.Size, System.Drawing">
<value>60, 17</value>
</data>
<data name="LnkRCHelp.Text" xml:space="preserve">
<value>Помощь</value>
</data>
<data name="NUDRemotePlayerId.Location" type="System.Drawing.Point, System.Drawing">
<value>55, 13</value>
</data>
<data name="BtnConnectOpenCommand.Location" type="System.Drawing.Point, System.Drawing">
<value>93, 82</value>
</data>
<data name="BtnConnectOpenCommand.Size" type="System.Drawing.Size, System.Drawing">
<value>110, 23</value>
</data>
<data name="BtnConnectOpenCommand.Text" xml:space="preserve">
<value>Подключиться</value>
</data>
<data name="LblVerificationCode.Location" type="System.Drawing.Point, System.Drawing">
<value>18, 44</value>
</data>
<data name="LblVerificationCode.Size" type="System.Drawing.Size, System.Drawing">
<value>31, 17</value>
</data>
<data name="LblVerificationCode.Text" xml:space="preserve">
<value>Код</value>
</data>
<data name="BtnSendVerificationCode.Location" type="System.Drawing.Point, System.Drawing">
<value>179, 42</value>
</data>
<data name="BtnSendVerificationCode.Size" type="System.Drawing.Size, System.Drawing">
<value>110, 23</value>
</data>
<data name="BtnSendVerificationCode.Text" xml:space="preserve">
<value>Отправить код</value>
</data>
<data name="NUDVerificationCode.Location" type="System.Drawing.Point, System.Drawing">
<value>55, 42</value>
</data>
<data name="LblRemotePlayerId.Location" type="System.Drawing.Point, System.Drawing">
<value>19, 15</value>
</data>
<data name="TPConsoleCheck.Size" type="System.Drawing.Size, System.Drawing">
<value>296, 109</value>
</data>
<data name="TPConsoleCheck.Text" xml:space="preserve">
<value>Консоль</value>
</data>
<data name="BtnConsoleConnect.Location" type="System.Drawing.Point, System.Drawing">
<value>93, 82</value>
</data>
<data name="BtnConsoleConnect.Size" type="System.Drawing.Size, System.Drawing">
<value>110, 23</value>
</data>
<data name="BtnConsoleConnect.Text" xml:space="preserve">
<value>Подключиться</value>
</data>
<data name="LblConsoleTip.Font" type="System.Drawing.Font, System.Drawing">
<value>Microsoft YaHei UI, 8pt, style=Italic</value>
</data>
<data name="LblConsoleTip.Location" type="System.Drawing.Point, System.Drawing">
<value>15, 34</value>
</data>
<data name="LblConsoleTip.Size" type="System.Drawing.Size, System.Drawing">
<value>275, 48</value>
</data>
<data name="LblConsoleTip.Text" xml:space="preserve">
<value>Обратите внимание, что обычные команды в консоли должны указывать UID цели
(установите галочку галочку "Включить UID" на главной)
</value>
</data>
<data name="TxtHost.Location" type="System.Drawing.Point, System.Drawing">
<value>103, 34</value>
</data>
<data name="TxtHost.Size" type="System.Drawing.Size, System.Drawing">
<value>200, 23</value>
</data>
<data name="BtnQueryServerStatus.Location" type="System.Drawing.Point, System.Drawing">
<value>309, 34</value>
</data>
<data name="BtnQueryServerStatus.Size" type="System.Drawing.Size, System.Drawing">
<value>65, 23</value>
</data>
<data name="BtnQueryServerStatus.Text" xml:space="preserve">
<value>Запрос</value>
</data>
<data name="LblHost.Size" type="System.Drawing.Size, System.Drawing">
<value>35, 17</value>
</data>
<data name="LblHost.Text" xml:space="preserve">
<value>Хост</value>
</data>
</root>

View File

@@ -0,0 +1,173 @@
<?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="LnkInventoryKamera.Text" xml:space="preserve">
<value>檔案掃描開源工具</value>
</data>
<data name="LblGOODHelp.Text" xml:space="preserve">
<value>快來把你的官服檔案導入GC吧</value>
</data>
<data name="ButtonOpenGOODImport.Text" xml:space="preserve">
<value>導入GOOD檔案</value>
</data>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="LblHostTip.Size" type="System.Drawing.Size, System.Drawing">
<value>206, 17</value>
</data>
<data name="LblHostTip.Text" xml:space="preserve">
<value>請確保地址中包含 http:// 或 https://</value>
</data>
<data name="GrpServerStatus.Text" xml:space="preserve">
<value>伺服器狀態</value>
</data>
<data name="LnkOpenCommandLabel.Text" xml:space="preserve">
<value>遠程執行插件</value>
</data>
<data name="LblServerVersionLabel.Text" xml:space="preserve">
<value>遊戲版本</value>
</data>
<data name="LblPlayerCountLabel.Text" xml:space="preserve">
<value>當前玩家數</value>
</data>
<data name="LnkRCHelp.Text" xml:space="preserve">
<value>幫助</value>
</data>
<data name="BtnConnectOpenCommand.Text" xml:space="preserve">
<value>連接</value>
</data>
<data name="LblVerificationCode.Text" xml:space="preserve">
<value>驗證碼</value>
</data>
<data name="BtnSendVerificationCode.Text" xml:space="preserve">
<value>發送驗證碼</value>
</data>
<data name="TPConsoleCheck.Size" type="System.Drawing.Size, System.Drawing">
<value>296, 109</value>
</data>
<data name="LblConsoleTip.Text" xml:space="preserve">
<value>請注意,控制台狀態下普通命令必須指定目標
即設置包含UID</value>
</data>
<data name="BtnQueryServerStatus.Text" xml:space="preserve">
<value>查詢</value>
</data>
<data name="LblHost.Text" xml:space="preserve">
<value>伺服器地址</value>
</data>
</root>

View File

@@ -0,0 +1,889 @@
namespace GrasscutterTools.Pages
{
partial class PageSpawn
{
/// <summary>
/// 必需的设计器变量。
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// 清理所有正在使用的资源。
/// </summary>
/// <param name="disposing">如果应释放托管资源,为 true否则为 false。</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region
/// <summary>
/// 设计器支持所需的方法 - 不要修改
/// 使用代码编辑器修改此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.components = new System.ComponentModel.Container();
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(PageSpawn));
this.TCSpawnSettings = new System.Windows.Forms.TabControl();
this.TPSpawnArgs = new System.Windows.Forms.TabPage();
this.NUDEntityDef = new System.Windows.Forms.NumericUpDown();
this.NUDEntityAtk = new System.Windows.Forms.NumericUpDown();
this.NUDEntityHp = new System.Windows.Forms.NumericUpDown();
this.NUDEntityMaxHp = new System.Windows.Forms.NumericUpDown();
this.NUDEntityPosZ = new System.Windows.Forms.NumericUpDown();
this.NUDEntityPosY = new System.Windows.Forms.NumericUpDown();
this.NUDEntityPosX = new System.Windows.Forms.NumericUpDown();
this.NUDEntityAmout = new System.Windows.Forms.NumericUpDown();
this.NUDEntityLevel = new System.Windows.Forms.NumericUpDown();
this.LblSpawnVersionRequireTip = new System.Windows.Forms.Label();
this.LblInfiniteHpTip = new System.Windows.Forms.Label();
this.LblEntityDef = new System.Windows.Forms.Label();
this.LblEntityAtk = new System.Windows.Forms.Label();
this.LblEntityHp = new System.Windows.Forms.Label();
this.LblEntityMaxHp = new System.Windows.Forms.Label();
this.LblEntitySpawnPostion = new System.Windows.Forms.Label();
this.LblEntityLevel = new System.Windows.Forms.Label();
this.LblEntityAmount = new System.Windows.Forms.Label();
this.TPAttackModArgs = new System.Windows.Forms.TabPage();
this.LblAMPluginTip = new System.Windows.Forms.Label();
this.LblAMPluginIntroduction = new System.Windows.Forms.Label();
this.LblAMPlugin = new System.Windows.Forms.Label();
this.LnkAMOff = new System.Windows.Forms.LinkLabel();
this.LnkAMOn = new System.Windows.Forms.LinkLabel();
this.BtnAtReload = new System.Windows.Forms.Button();
this.BtnAtClear = new System.Windows.Forms.Button();
this.LnkAttackModifierPlugin = new System.Windows.Forms.LinkLabel();
this.GrpAMSkills = new System.Windows.Forms.GroupBox();
this.TxtAtEntityQ = new System.Windows.Forms.TextBox();
this.TxtAtEntityE = new System.Windows.Forms.TextBox();
this.TxtAtEntityN = new System.Windows.Forms.TextBox();
this.RbAtQ = new System.Windows.Forms.RadioButton();
this.RbAtE = new System.Windows.Forms.RadioButton();
this.RbAtN = new System.Windows.Forms.RadioButton();
this.TPAttackInfusedArgs = new System.Windows.Forms.TabPage();
this.NUDAiwiRotateZ = new System.Windows.Forms.NumericUpDown();
this.NUDAiwiRotateY = new System.Windows.Forms.NumericUpDown();
this.NUDAiwiRotateX = new System.Windows.Forms.NumericUpDown();
this.LblAiwiRotate = new System.Windows.Forms.Label();
this.NUDAiwiSpread = new System.Windows.Forms.NumericUpDown();
this.LblAiwiSpread = new System.Windows.Forms.Label();
this.NUDAiwiCount = new System.Windows.Forms.NumericUpDown();
this.NUDAiwiHeight = new System.Windows.Forms.NumericUpDown();
this.NUDAiwiRadius = new System.Windows.Forms.NumericUpDown();
this.LblAiwiCount = new System.Windows.Forms.Label();
this.LblAiwiHeight = new System.Windows.Forms.Label();
this.LblAiwiRadius = new System.Windows.Forms.Label();
this.BtnAttackInfuse = new System.Windows.Forms.Button();
this.BtnAiwiReload = new System.Windows.Forms.Button();
this.BtnAiwiClear = new System.Windows.Forms.Button();
this.BtnAiwiReset = new System.Windows.Forms.Button();
this.LblAiwiPlugin = new System.Windows.Forms.Label();
this.LnkAttackInfusedWithItem = new System.Windows.Forms.LinkLabel();
this.TCSpawnItems = new System.Windows.Forms.TabControl();
this.TPSpawnItems = new System.Windows.Forms.TabPage();
this.ListEntity = new System.Windows.Forms.ListBox();
this.PanelEntityFilterBar = new System.Windows.Forms.Panel();
this.TxtEntityFilter = new System.Windows.Forms.TextBox();
this.BtnFilterEntity = new System.Windows.Forms.Button();
this.TPSpawnRecords = new System.Windows.Forms.TabPage();
this.ListSpawnLogs = new System.Windows.Forms.ListBox();
this.FLPSpawnRecordControls = new System.Windows.Forms.FlowLayoutPanel();
this.BtnSaveSpawnLog = new System.Windows.Forms.Button();
this.BtnRemoveSpawnLog = new System.Windows.Forms.Button();
this.LblClearSpawnLogs = new System.Windows.Forms.Label();
this.MenuSpawnEntityFilter = new System.Windows.Forms.ContextMenuStrip(this.components);
this.TCSpawnSettings.SuspendLayout();
this.TPSpawnArgs.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.NUDEntityDef)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.NUDEntityAtk)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.NUDEntityHp)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.NUDEntityMaxHp)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.NUDEntityPosZ)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.NUDEntityPosY)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.NUDEntityPosX)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.NUDEntityAmout)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.NUDEntityLevel)).BeginInit();
this.TPAttackModArgs.SuspendLayout();
this.GrpAMSkills.SuspendLayout();
this.TPAttackInfusedArgs.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.NUDAiwiRotateZ)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.NUDAiwiRotateY)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.NUDAiwiRotateX)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.NUDAiwiSpread)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.NUDAiwiCount)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.NUDAiwiHeight)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.NUDAiwiRadius)).BeginInit();
this.TCSpawnItems.SuspendLayout();
this.TPSpawnItems.SuspendLayout();
this.PanelEntityFilterBar.SuspendLayout();
this.TPSpawnRecords.SuspendLayout();
this.FLPSpawnRecordControls.SuspendLayout();
this.SuspendLayout();
//
// TCSpawnSettings
//
resources.ApplyResources(this.TCSpawnSettings, "TCSpawnSettings");
this.TCSpawnSettings.Controls.Add(this.TPSpawnArgs);
this.TCSpawnSettings.Controls.Add(this.TPAttackModArgs);
this.TCSpawnSettings.Controls.Add(this.TPAttackInfusedArgs);
this.TCSpawnSettings.Name = "TCSpawnSettings";
this.TCSpawnSettings.SelectedIndex = 0;
//
// TPSpawnArgs
//
resources.ApplyResources(this.TPSpawnArgs, "TPSpawnArgs");
this.TPSpawnArgs.Controls.Add(this.NUDEntityDef);
this.TPSpawnArgs.Controls.Add(this.NUDEntityAtk);
this.TPSpawnArgs.Controls.Add(this.NUDEntityHp);
this.TPSpawnArgs.Controls.Add(this.NUDEntityMaxHp);
this.TPSpawnArgs.Controls.Add(this.NUDEntityPosZ);
this.TPSpawnArgs.Controls.Add(this.NUDEntityPosY);
this.TPSpawnArgs.Controls.Add(this.NUDEntityPosX);
this.TPSpawnArgs.Controls.Add(this.NUDEntityAmout);
this.TPSpawnArgs.Controls.Add(this.NUDEntityLevel);
this.TPSpawnArgs.Controls.Add(this.LblSpawnVersionRequireTip);
this.TPSpawnArgs.Controls.Add(this.LblInfiniteHpTip);
this.TPSpawnArgs.Controls.Add(this.LblEntityDef);
this.TPSpawnArgs.Controls.Add(this.LblEntityAtk);
this.TPSpawnArgs.Controls.Add(this.LblEntityHp);
this.TPSpawnArgs.Controls.Add(this.LblEntityMaxHp);
this.TPSpawnArgs.Controls.Add(this.LblEntitySpawnPostion);
this.TPSpawnArgs.Controls.Add(this.LblEntityLevel);
this.TPSpawnArgs.Controls.Add(this.LblEntityAmount);
this.TPSpawnArgs.Name = "TPSpawnArgs";
this.TPSpawnArgs.UseVisualStyleBackColor = true;
//
// NUDEntityDef
//
resources.ApplyResources(this.NUDEntityDef, "NUDEntityDef");
this.NUDEntityDef.Maximum = new decimal(new int[] {
2147483647,
0,
0,
0});
this.NUDEntityDef.Minimum = new decimal(new int[] {
1,
0,
0,
-2147483648});
this.NUDEntityDef.Name = "NUDEntityDef";
this.NUDEntityDef.Value = new decimal(new int[] {
1,
0,
0,
-2147483648});
this.NUDEntityDef.ValueChanged += new System.EventHandler(this.SpawnEntityInputChanged);
//
// NUDEntityAtk
//
resources.ApplyResources(this.NUDEntityAtk, "NUDEntityAtk");
this.NUDEntityAtk.Maximum = new decimal(new int[] {
2147483647,
0,
0,
0});
this.NUDEntityAtk.Minimum = new decimal(new int[] {
1,
0,
0,
-2147483648});
this.NUDEntityAtk.Name = "NUDEntityAtk";
this.NUDEntityAtk.Value = new decimal(new int[] {
1,
0,
0,
-2147483648});
this.NUDEntityAtk.ValueChanged += new System.EventHandler(this.SpawnEntityInputChanged);
//
// NUDEntityHp
//
resources.ApplyResources(this.NUDEntityHp, "NUDEntityHp");
this.NUDEntityHp.Maximum = new decimal(new int[] {
2147483647,
0,
0,
0});
this.NUDEntityHp.Minimum = new decimal(new int[] {
1,
0,
0,
-2147483648});
this.NUDEntityHp.Name = "NUDEntityHp";
this.NUDEntityHp.Value = new decimal(new int[] {
1,
0,
0,
-2147483648});
this.NUDEntityHp.ValueChanged += new System.EventHandler(this.SpawnEntityInputChanged);
//
// NUDEntityMaxHp
//
resources.ApplyResources(this.NUDEntityMaxHp, "NUDEntityMaxHp");
this.NUDEntityMaxHp.Maximum = new decimal(new int[] {
2147483647,
0,
0,
0});
this.NUDEntityMaxHp.Minimum = new decimal(new int[] {
1,
0,
0,
-2147483648});
this.NUDEntityMaxHp.Name = "NUDEntityMaxHp";
this.NUDEntityMaxHp.Value = new decimal(new int[] {
1,
0,
0,
-2147483648});
this.NUDEntityMaxHp.ValueChanged += new System.EventHandler(this.SpawnEntityInputChanged);
//
// NUDEntityPosZ
//
resources.ApplyResources(this.NUDEntityPosZ, "NUDEntityPosZ");
this.NUDEntityPosZ.Maximum = new decimal(new int[] {
2147483647,
0,
0,
0});
this.NUDEntityPosZ.Minimum = new decimal(new int[] {
-2147483648,
0,
0,
-2147483648});
this.NUDEntityPosZ.Name = "NUDEntityPosZ";
this.NUDEntityPosZ.ValueChanged += new System.EventHandler(this.SpawnEntityInputChanged);
//
// NUDEntityPosY
//
resources.ApplyResources(this.NUDEntityPosY, "NUDEntityPosY");
this.NUDEntityPosY.Maximum = new decimal(new int[] {
2147483647,
0,
0,
0});
this.NUDEntityPosY.Minimum = new decimal(new int[] {
-2147483648,
0,
0,
-2147483648});
this.NUDEntityPosY.Name = "NUDEntityPosY";
this.NUDEntityPosY.ValueChanged += new System.EventHandler(this.SpawnEntityInputChanged);
//
// NUDEntityPosX
//
resources.ApplyResources(this.NUDEntityPosX, "NUDEntityPosX");
this.NUDEntityPosX.Maximum = new decimal(new int[] {
2147483647,
0,
0,
0});
this.NUDEntityPosX.Minimum = new decimal(new int[] {
-2147483648,
0,
0,
-2147483648});
this.NUDEntityPosX.Name = "NUDEntityPosX";
this.NUDEntityPosX.ValueChanged += new System.EventHandler(this.SpawnEntityInputChanged);
//
// NUDEntityAmout
//
resources.ApplyResources(this.NUDEntityAmout, "NUDEntityAmout");
this.NUDEntityAmout.Maximum = new decimal(new int[] {
1000,
0,
0,
0});
this.NUDEntityAmout.Minimum = new decimal(new int[] {
1,
0,
0,
0});
this.NUDEntityAmout.Name = "NUDEntityAmout";
this.NUDEntityAmout.Value = new decimal(new int[] {
1,
0,
0,
0});
this.NUDEntityAmout.ValueChanged += new System.EventHandler(this.SpawnEntityInputChanged);
//
// NUDEntityLevel
//
resources.ApplyResources(this.NUDEntityLevel, "NUDEntityLevel");
this.NUDEntityLevel.Maximum = new decimal(new int[] {
90,
0,
0,
0});
this.NUDEntityLevel.Minimum = new decimal(new int[] {
1,
0,
0,
0});
this.NUDEntityLevel.Name = "NUDEntityLevel";
this.NUDEntityLevel.Value = new decimal(new int[] {
1,
0,
0,
0});
this.NUDEntityLevel.ValueChanged += new System.EventHandler(this.SpawnEntityInputChanged);
//
// LblSpawnVersionRequireTip
//
resources.ApplyResources(this.LblSpawnVersionRequireTip, "LblSpawnVersionRequireTip");
this.LblSpawnVersionRequireTip.ForeColor = System.Drawing.SystemColors.GrayText;
this.LblSpawnVersionRequireTip.Name = "LblSpawnVersionRequireTip";
//
// LblInfiniteHpTip
//
resources.ApplyResources(this.LblInfiniteHpTip, "LblInfiniteHpTip");
this.LblInfiniteHpTip.ForeColor = System.Drawing.SystemColors.GrayText;
this.LblInfiniteHpTip.Name = "LblInfiniteHpTip";
//
// LblEntityDef
//
resources.ApplyResources(this.LblEntityDef, "LblEntityDef");
this.LblEntityDef.Name = "LblEntityDef";
//
// LblEntityAtk
//
resources.ApplyResources(this.LblEntityAtk, "LblEntityAtk");
this.LblEntityAtk.Name = "LblEntityAtk";
//
// LblEntityHp
//
resources.ApplyResources(this.LblEntityHp, "LblEntityHp");
this.LblEntityHp.Name = "LblEntityHp";
//
// LblEntityMaxHp
//
resources.ApplyResources(this.LblEntityMaxHp, "LblEntityMaxHp");
this.LblEntityMaxHp.Name = "LblEntityMaxHp";
//
// LblEntitySpawnPostion
//
resources.ApplyResources(this.LblEntitySpawnPostion, "LblEntitySpawnPostion");
this.LblEntitySpawnPostion.Name = "LblEntitySpawnPostion";
//
// LblEntityLevel
//
resources.ApplyResources(this.LblEntityLevel, "LblEntityLevel");
this.LblEntityLevel.Name = "LblEntityLevel";
//
// LblEntityAmount
//
resources.ApplyResources(this.LblEntityAmount, "LblEntityAmount");
this.LblEntityAmount.Name = "LblEntityAmount";
//
// TPAttackModArgs
//
resources.ApplyResources(this.TPAttackModArgs, "TPAttackModArgs");
this.TPAttackModArgs.Controls.Add(this.LblAMPluginTip);
this.TPAttackModArgs.Controls.Add(this.LblAMPluginIntroduction);
this.TPAttackModArgs.Controls.Add(this.LblAMPlugin);
this.TPAttackModArgs.Controls.Add(this.LnkAMOff);
this.TPAttackModArgs.Controls.Add(this.LnkAMOn);
this.TPAttackModArgs.Controls.Add(this.BtnAtReload);
this.TPAttackModArgs.Controls.Add(this.BtnAtClear);
this.TPAttackModArgs.Controls.Add(this.LnkAttackModifierPlugin);
this.TPAttackModArgs.Controls.Add(this.GrpAMSkills);
this.TPAttackModArgs.Name = "TPAttackModArgs";
this.TPAttackModArgs.UseVisualStyleBackColor = true;
//
// LblAMPluginTip
//
resources.ApplyResources(this.LblAMPluginTip, "LblAMPluginTip");
this.LblAMPluginTip.ForeColor = System.Drawing.SystemColors.GrayText;
this.LblAMPluginTip.Name = "LblAMPluginTip";
//
// LblAMPluginIntroduction
//
resources.ApplyResources(this.LblAMPluginIntroduction, "LblAMPluginIntroduction");
this.LblAMPluginIntroduction.Name = "LblAMPluginIntroduction";
//
// LblAMPlugin
//
resources.ApplyResources(this.LblAMPlugin, "LblAMPlugin");
this.LblAMPlugin.Name = "LblAMPlugin";
//
// LnkAMOff
//
resources.ApplyResources(this.LnkAMOff, "LnkAMOff");
this.LnkAMOff.Name = "LnkAMOff";
this.LnkAMOff.TabStop = true;
this.LnkAMOff.Tag = "off";
this.LnkAMOff.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.OnAttackModifierCommand);
//
// LnkAMOn
//
resources.ApplyResources(this.LnkAMOn, "LnkAMOn");
this.LnkAMOn.Name = "LnkAMOn";
this.LnkAMOn.TabStop = true;
this.LnkAMOn.Tag = "on";
this.LnkAMOn.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.OnAttackModifierCommand);
//
// BtnAtReload
//
resources.ApplyResources(this.BtnAtReload, "BtnAtReload");
this.BtnAtReload.Name = "BtnAtReload";
this.BtnAtReload.Tag = "reload";
this.BtnAtReload.UseVisualStyleBackColor = true;
//
// BtnAtClear
//
resources.ApplyResources(this.BtnAtClear, "BtnAtClear");
this.BtnAtClear.Name = "BtnAtClear";
this.BtnAtClear.Tag = "remove";
this.BtnAtClear.UseVisualStyleBackColor = true;
//
// LnkAttackModifierPlugin
//
resources.ApplyResources(this.LnkAttackModifierPlugin, "LnkAttackModifierPlugin");
this.LnkAttackModifierPlugin.Name = "LnkAttackModifierPlugin";
this.LnkAttackModifierPlugin.TabStop = true;
this.LnkAttackModifierPlugin.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.LnkAttackModifierPlugin_LinkClicked);
//
// GrpAMSkills
//
resources.ApplyResources(this.GrpAMSkills, "GrpAMSkills");
this.GrpAMSkills.Controls.Add(this.TxtAtEntityQ);
this.GrpAMSkills.Controls.Add(this.TxtAtEntityE);
this.GrpAMSkills.Controls.Add(this.TxtAtEntityN);
this.GrpAMSkills.Controls.Add(this.RbAtQ);
this.GrpAMSkills.Controls.Add(this.RbAtE);
this.GrpAMSkills.Controls.Add(this.RbAtN);
this.GrpAMSkills.Name = "GrpAMSkills";
this.GrpAMSkills.TabStop = false;
//
// TxtAtEntityQ
//
resources.ApplyResources(this.TxtAtEntityQ, "TxtAtEntityQ");
this.TxtAtEntityQ.Name = "TxtAtEntityQ";
this.TxtAtEntityQ.ReadOnly = true;
//
// TxtAtEntityE
//
resources.ApplyResources(this.TxtAtEntityE, "TxtAtEntityE");
this.TxtAtEntityE.Name = "TxtAtEntityE";
this.TxtAtEntityE.ReadOnly = true;
//
// TxtAtEntityN
//
resources.ApplyResources(this.TxtAtEntityN, "TxtAtEntityN");
this.TxtAtEntityN.Name = "TxtAtEntityN";
this.TxtAtEntityN.ReadOnly = true;
//
// RbAtQ
//
resources.ApplyResources(this.RbAtQ, "RbAtQ");
this.RbAtQ.Name = "RbAtQ";
this.RbAtQ.UseVisualStyleBackColor = true;
this.RbAtQ.CheckedChanged += new System.EventHandler(this.OnAttackModifierInputChanged);
//
// RbAtE
//
resources.ApplyResources(this.RbAtE, "RbAtE");
this.RbAtE.Name = "RbAtE";
this.RbAtE.UseVisualStyleBackColor = true;
this.RbAtE.CheckedChanged += new System.EventHandler(this.OnAttackModifierInputChanged);
//
// RbAtN
//
resources.ApplyResources(this.RbAtN, "RbAtN");
this.RbAtN.Checked = true;
this.RbAtN.Name = "RbAtN";
this.RbAtN.TabStop = true;
this.RbAtN.UseVisualStyleBackColor = true;
this.RbAtN.CheckedChanged += new System.EventHandler(this.OnAttackModifierInputChanged);
//
// TPAttackInfusedArgs
//
resources.ApplyResources(this.TPAttackInfusedArgs, "TPAttackInfusedArgs");
this.TPAttackInfusedArgs.Controls.Add(this.NUDAiwiRotateZ);
this.TPAttackInfusedArgs.Controls.Add(this.NUDAiwiRotateY);
this.TPAttackInfusedArgs.Controls.Add(this.NUDAiwiRotateX);
this.TPAttackInfusedArgs.Controls.Add(this.LblAiwiRotate);
this.TPAttackInfusedArgs.Controls.Add(this.NUDAiwiSpread);
this.TPAttackInfusedArgs.Controls.Add(this.LblAiwiSpread);
this.TPAttackInfusedArgs.Controls.Add(this.NUDAiwiCount);
this.TPAttackInfusedArgs.Controls.Add(this.NUDAiwiHeight);
this.TPAttackInfusedArgs.Controls.Add(this.NUDAiwiRadius);
this.TPAttackInfusedArgs.Controls.Add(this.LblAiwiCount);
this.TPAttackInfusedArgs.Controls.Add(this.LblAiwiHeight);
this.TPAttackInfusedArgs.Controls.Add(this.LblAiwiRadius);
this.TPAttackInfusedArgs.Controls.Add(this.BtnAttackInfuse);
this.TPAttackInfusedArgs.Controls.Add(this.BtnAiwiReload);
this.TPAttackInfusedArgs.Controls.Add(this.BtnAiwiClear);
this.TPAttackInfusedArgs.Controls.Add(this.BtnAiwiReset);
this.TPAttackInfusedArgs.Controls.Add(this.LblAiwiPlugin);
this.TPAttackInfusedArgs.Controls.Add(this.LnkAttackInfusedWithItem);
this.TPAttackInfusedArgs.Name = "TPAttackInfusedArgs";
this.TPAttackInfusedArgs.UseVisualStyleBackColor = true;
//
// NUDAiwiRotateZ
//
resources.ApplyResources(this.NUDAiwiRotateZ, "NUDAiwiRotateZ");
this.NUDAiwiRotateZ.Maximum = new decimal(new int[] {
2147483647,
0,
0,
0});
this.NUDAiwiRotateZ.Minimum = new decimal(new int[] {
-2147483648,
0,
0,
-2147483648});
this.NUDAiwiRotateZ.Name = "NUDAiwiRotateZ";
//
// NUDAiwiRotateY
//
resources.ApplyResources(this.NUDAiwiRotateY, "NUDAiwiRotateY");
this.NUDAiwiRotateY.Maximum = new decimal(new int[] {
2147483647,
0,
0,
0});
this.NUDAiwiRotateY.Minimum = new decimal(new int[] {
-2147483648,
0,
0,
-2147483648});
this.NUDAiwiRotateY.Name = "NUDAiwiRotateY";
//
// NUDAiwiRotateX
//
resources.ApplyResources(this.NUDAiwiRotateX, "NUDAiwiRotateX");
this.NUDAiwiRotateX.Maximum = new decimal(new int[] {
2147483647,
0,
0,
0});
this.NUDAiwiRotateX.Minimum = new decimal(new int[] {
-2147483648,
0,
0,
-2147483648});
this.NUDAiwiRotateX.Name = "NUDAiwiRotateX";
//
// LblAiwiRotate
//
resources.ApplyResources(this.LblAiwiRotate, "LblAiwiRotate");
this.LblAiwiRotate.Name = "LblAiwiRotate";
//
// NUDAiwiSpread
//
resources.ApplyResources(this.NUDAiwiSpread, "NUDAiwiSpread");
this.NUDAiwiSpread.DecimalPlaces = 2;
this.NUDAiwiSpread.Maximum = new decimal(new int[] {
2147483647,
0,
0,
0});
this.NUDAiwiSpread.Name = "NUDAiwiSpread";
//
// LblAiwiSpread
//
resources.ApplyResources(this.LblAiwiSpread, "LblAiwiSpread");
this.LblAiwiSpread.Name = "LblAiwiSpread";
//
// NUDAiwiCount
//
resources.ApplyResources(this.NUDAiwiCount, "NUDAiwiCount");
this.NUDAiwiCount.Maximum = new decimal(new int[] {
2147483647,
0,
0,
0});
this.NUDAiwiCount.Name = "NUDAiwiCount";
//
// NUDAiwiHeight
//
resources.ApplyResources(this.NUDAiwiHeight, "NUDAiwiHeight");
this.NUDAiwiHeight.Maximum = new decimal(new int[] {
2147483647,
0,
0,
0});
this.NUDAiwiHeight.Name = "NUDAiwiHeight";
//
// NUDAiwiRadius
//
resources.ApplyResources(this.NUDAiwiRadius, "NUDAiwiRadius");
this.NUDAiwiRadius.Maximum = new decimal(new int[] {
2147483647,
0,
0,
0});
this.NUDAiwiRadius.Name = "NUDAiwiRadius";
//
// LblAiwiCount
//
resources.ApplyResources(this.LblAiwiCount, "LblAiwiCount");
this.LblAiwiCount.Name = "LblAiwiCount";
//
// LblAiwiHeight
//
resources.ApplyResources(this.LblAiwiHeight, "LblAiwiHeight");
this.LblAiwiHeight.Name = "LblAiwiHeight";
//
// LblAiwiRadius
//
resources.ApplyResources(this.LblAiwiRadius, "LblAiwiRadius");
this.LblAiwiRadius.Name = "LblAiwiRadius";
//
// BtnAttackInfuse
//
resources.ApplyResources(this.BtnAttackInfuse, "BtnAttackInfuse");
this.BtnAttackInfuse.Name = "BtnAttackInfuse";
this.BtnAttackInfuse.UseVisualStyleBackColor = true;
this.BtnAttackInfuse.Click += new System.EventHandler(this.BtnAttackInfuse_Click);
//
// BtnAiwiReload
//
resources.ApplyResources(this.BtnAiwiReload, "BtnAiwiReload");
this.BtnAiwiReload.Name = "BtnAiwiReload";
this.BtnAiwiReload.Tag = "config";
this.BtnAiwiReload.UseVisualStyleBackColor = true;
this.BtnAiwiReload.Click += new System.EventHandler(this.OnAttackInfusedCommand);
//
// BtnAiwiClear
//
resources.ApplyResources(this.BtnAiwiClear, "BtnAiwiClear");
this.BtnAiwiClear.Name = "BtnAiwiClear";
this.BtnAiwiClear.Tag = "clear";
this.BtnAiwiClear.UseVisualStyleBackColor = true;
this.BtnAiwiClear.Click += new System.EventHandler(this.OnAttackInfusedCommand);
//
// BtnAiwiReset
//
resources.ApplyResources(this.BtnAiwiReset, "BtnAiwiReset");
this.BtnAiwiReset.Name = "BtnAiwiReset";
this.BtnAiwiReset.Tag = "none";
this.BtnAiwiReset.UseVisualStyleBackColor = true;
this.BtnAiwiReset.Click += new System.EventHandler(this.OnAttackInfusedCommand);
//
// LblAiwiPlugin
//
resources.ApplyResources(this.LblAiwiPlugin, "LblAiwiPlugin");
this.LblAiwiPlugin.Name = "LblAiwiPlugin";
//
// LnkAttackInfusedWithItem
//
resources.ApplyResources(this.LnkAttackInfusedWithItem, "LnkAttackInfusedWithItem");
this.LnkAttackInfusedWithItem.Name = "LnkAttackInfusedWithItem";
this.LnkAttackInfusedWithItem.TabStop = true;
this.LnkAttackInfusedWithItem.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.LnkAttackInfusedWithItem_LinkClicked);
//
// TCSpawnItems
//
resources.ApplyResources(this.TCSpawnItems, "TCSpawnItems");
this.TCSpawnItems.Controls.Add(this.TPSpawnItems);
this.TCSpawnItems.Controls.Add(this.TPSpawnRecords);
this.TCSpawnItems.Name = "TCSpawnItems";
this.TCSpawnItems.SelectedIndex = 0;
//
// TPSpawnItems
//
resources.ApplyResources(this.TPSpawnItems, "TPSpawnItems");
this.TPSpawnItems.Controls.Add(this.ListEntity);
this.TPSpawnItems.Controls.Add(this.PanelEntityFilterBar);
this.TPSpawnItems.Name = "TPSpawnItems";
this.TPSpawnItems.UseVisualStyleBackColor = true;
//
// ListEntity
//
resources.ApplyResources(this.ListEntity, "ListEntity");
this.ListEntity.FormattingEnabled = true;
this.ListEntity.Name = "ListEntity";
this.ListEntity.SelectedIndexChanged += new System.EventHandler(this.ListEntity_SelectedIndexChanged);
//
// PanelEntityFilterBar
//
resources.ApplyResources(this.PanelEntityFilterBar, "PanelEntityFilterBar");
this.PanelEntityFilterBar.Controls.Add(this.TxtEntityFilter);
this.PanelEntityFilterBar.Controls.Add(this.BtnFilterEntity);
this.PanelEntityFilterBar.Name = "PanelEntityFilterBar";
//
// TxtEntityFilter
//
resources.ApplyResources(this.TxtEntityFilter, "TxtEntityFilter");
this.TxtEntityFilter.Name = "TxtEntityFilter";
this.TxtEntityFilter.TextChanged += new System.EventHandler(this.TxtEntityFilter_TextChanged);
//
// BtnFilterEntity
//
resources.ApplyResources(this.BtnFilterEntity, "BtnFilterEntity");
this.BtnFilterEntity.Name = "BtnFilterEntity";
this.BtnFilterEntity.UseVisualStyleBackColor = true;
this.BtnFilterEntity.Click += new System.EventHandler(this.BtnFilterEntity_Click);
//
// TPSpawnRecords
//
resources.ApplyResources(this.TPSpawnRecords, "TPSpawnRecords");
this.TPSpawnRecords.Controls.Add(this.ListSpawnLogs);
this.TPSpawnRecords.Controls.Add(this.FLPSpawnRecordControls);
this.TPSpawnRecords.Name = "TPSpawnRecords";
this.TPSpawnRecords.UseVisualStyleBackColor = true;
//
// ListSpawnLogs
//
resources.ApplyResources(this.ListSpawnLogs, "ListSpawnLogs");
this.ListSpawnLogs.FormattingEnabled = true;
this.ListSpawnLogs.Name = "ListSpawnLogs";
this.ListSpawnLogs.SelectedIndexChanged += new System.EventHandler(this.ListSpawnLogs_SelectedIndexChanged);
//
// FLPSpawnRecordControls
//
resources.ApplyResources(this.FLPSpawnRecordControls, "FLPSpawnRecordControls");
this.FLPSpawnRecordControls.Controls.Add(this.BtnSaveSpawnLog);
this.FLPSpawnRecordControls.Controls.Add(this.BtnRemoveSpawnLog);
this.FLPSpawnRecordControls.Controls.Add(this.LblClearSpawnLogs);
this.FLPSpawnRecordControls.Name = "FLPSpawnRecordControls";
//
// BtnSaveSpawnLog
//
resources.ApplyResources(this.BtnSaveSpawnLog, "BtnSaveSpawnLog");
this.BtnSaveSpawnLog.Name = "BtnSaveSpawnLog";
this.BtnSaveSpawnLog.UseVisualStyleBackColor = true;
this.BtnSaveSpawnLog.Click += new System.EventHandler(this.BtnSaveSpawnLog_Click);
//
// BtnRemoveSpawnLog
//
resources.ApplyResources(this.BtnRemoveSpawnLog, "BtnRemoveSpawnLog");
this.BtnRemoveSpawnLog.Name = "BtnRemoveSpawnLog";
this.BtnRemoveSpawnLog.UseVisualStyleBackColor = true;
this.BtnRemoveSpawnLog.Click += new System.EventHandler(this.BtnRemoveSpawnLog_Click);
//
// LblClearSpawnLogs
//
resources.ApplyResources(this.LblClearSpawnLogs, "LblClearSpawnLogs");
this.LblClearSpawnLogs.Cursor = System.Windows.Forms.Cursors.Hand;
this.LblClearSpawnLogs.Name = "LblClearSpawnLogs";
this.LblClearSpawnLogs.Click += new System.EventHandler(this.LblClearSpawnLogs_Click);
//
// MenuSpawnEntityFilter
//
resources.ApplyResources(this.MenuSpawnEntityFilter, "MenuSpawnEntityFilter");
this.MenuSpawnEntityFilter.Name = "MenuSpawnEntityFilter";
//
// PageSpawn
//
resources.ApplyResources(this, "$this");
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.Controls.Add(this.TCSpawnSettings);
this.Controls.Add(this.TCSpawnItems);
this.Name = "PageSpawn";
this.TCSpawnSettings.ResumeLayout(false);
this.TPSpawnArgs.ResumeLayout(false);
this.TPSpawnArgs.PerformLayout();
((System.ComponentModel.ISupportInitialize)(this.NUDEntityDef)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.NUDEntityAtk)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.NUDEntityHp)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.NUDEntityMaxHp)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.NUDEntityPosZ)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.NUDEntityPosY)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.NUDEntityPosX)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.NUDEntityAmout)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.NUDEntityLevel)).EndInit();
this.TPAttackModArgs.ResumeLayout(false);
this.TPAttackModArgs.PerformLayout();
this.GrpAMSkills.ResumeLayout(false);
this.GrpAMSkills.PerformLayout();
this.TPAttackInfusedArgs.ResumeLayout(false);
this.TPAttackInfusedArgs.PerformLayout();
((System.ComponentModel.ISupportInitialize)(this.NUDAiwiRotateZ)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.NUDAiwiRotateY)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.NUDAiwiRotateX)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.NUDAiwiSpread)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.NUDAiwiCount)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.NUDAiwiHeight)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.NUDAiwiRadius)).EndInit();
this.TCSpawnItems.ResumeLayout(false);
this.TPSpawnItems.ResumeLayout(false);
this.PanelEntityFilterBar.ResumeLayout(false);
this.PanelEntityFilterBar.PerformLayout();
this.TPSpawnRecords.ResumeLayout(false);
this.TPSpawnRecords.PerformLayout();
this.FLPSpawnRecordControls.ResumeLayout(false);
this.FLPSpawnRecordControls.PerformLayout();
this.ResumeLayout(false);
}
#endregion
private System.Windows.Forms.TabControl TCSpawnSettings;
private System.Windows.Forms.TabPage TPSpawnArgs;
private System.Windows.Forms.NumericUpDown NUDEntityDef;
private System.Windows.Forms.NumericUpDown NUDEntityAtk;
private System.Windows.Forms.NumericUpDown NUDEntityHp;
private System.Windows.Forms.NumericUpDown NUDEntityMaxHp;
private System.Windows.Forms.NumericUpDown NUDEntityPosZ;
private System.Windows.Forms.NumericUpDown NUDEntityPosY;
private System.Windows.Forms.NumericUpDown NUDEntityPosX;
private System.Windows.Forms.NumericUpDown NUDEntityAmout;
private System.Windows.Forms.NumericUpDown NUDEntityLevel;
private System.Windows.Forms.Label LblSpawnVersionRequireTip;
private System.Windows.Forms.Label LblInfiniteHpTip;
private System.Windows.Forms.Label LblEntityDef;
private System.Windows.Forms.Label LblEntityAtk;
private System.Windows.Forms.Label LblEntityHp;
private System.Windows.Forms.Label LblEntityMaxHp;
private System.Windows.Forms.Label LblEntitySpawnPostion;
private System.Windows.Forms.Label LblEntityLevel;
private System.Windows.Forms.Label LblEntityAmount;
private System.Windows.Forms.TabPage TPAttackModArgs;
private System.Windows.Forms.Label LblAMPluginTip;
private System.Windows.Forms.Label LblAMPluginIntroduction;
private System.Windows.Forms.Label LblAMPlugin;
private System.Windows.Forms.LinkLabel LnkAMOff;
private System.Windows.Forms.LinkLabel LnkAMOn;
private System.Windows.Forms.Button BtnAtReload;
private System.Windows.Forms.Button BtnAtClear;
private System.Windows.Forms.LinkLabel LnkAttackModifierPlugin;
private System.Windows.Forms.GroupBox GrpAMSkills;
private System.Windows.Forms.TextBox TxtAtEntityQ;
private System.Windows.Forms.TextBox TxtAtEntityE;
private System.Windows.Forms.TextBox TxtAtEntityN;
private System.Windows.Forms.RadioButton RbAtQ;
private System.Windows.Forms.RadioButton RbAtE;
private System.Windows.Forms.RadioButton RbAtN;
private System.Windows.Forms.TabPage TPAttackInfusedArgs;
private System.Windows.Forms.NumericUpDown NUDAiwiRotateZ;
private System.Windows.Forms.NumericUpDown NUDAiwiRotateY;
private System.Windows.Forms.NumericUpDown NUDAiwiRotateX;
private System.Windows.Forms.Label LblAiwiRotate;
private System.Windows.Forms.NumericUpDown NUDAiwiSpread;
private System.Windows.Forms.Label LblAiwiSpread;
private System.Windows.Forms.NumericUpDown NUDAiwiCount;
private System.Windows.Forms.NumericUpDown NUDAiwiHeight;
private System.Windows.Forms.NumericUpDown NUDAiwiRadius;
private System.Windows.Forms.Label LblAiwiCount;
private System.Windows.Forms.Label LblAiwiHeight;
private System.Windows.Forms.Label LblAiwiRadius;
private System.Windows.Forms.Button BtnAttackInfuse;
private System.Windows.Forms.Button BtnAiwiReload;
private System.Windows.Forms.Button BtnAiwiClear;
private System.Windows.Forms.Button BtnAiwiReset;
private System.Windows.Forms.Label LblAiwiPlugin;
private System.Windows.Forms.LinkLabel LnkAttackInfusedWithItem;
private System.Windows.Forms.TabControl TCSpawnItems;
private System.Windows.Forms.TabPage TPSpawnItems;
private System.Windows.Forms.ListBox ListEntity;
private System.Windows.Forms.Panel PanelEntityFilterBar;
private System.Windows.Forms.TextBox TxtEntityFilter;
private System.Windows.Forms.Button BtnFilterEntity;
private System.Windows.Forms.TabPage TPSpawnRecords;
private System.Windows.Forms.ListBox ListSpawnLogs;
private System.Windows.Forms.FlowLayoutPanel FLPSpawnRecordControls;
private System.Windows.Forms.Button BtnSaveSpawnLog;
private System.Windows.Forms.Button BtnRemoveSpawnLog;
private System.Windows.Forms.Label LblClearSpawnLogs;
private System.Windows.Forms.ContextMenuStrip MenuSpawnEntityFilter;
}
}

View File

@@ -0,0 +1,365 @@
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Windows.Forms;
using GrasscutterTools.Game;
using GrasscutterTools.Properties;
using GrasscutterTools.Utils;
namespace GrasscutterTools.Pages
{
internal partial class PageSpawn : BasePage
{
public PageSpawn()
{
InitializeComponent();
InitSpawnRecord();
}
public override void OnLoad()
{
InitEntityList();
}
public override void OnClosed()
{
SaveSpawnRecord();
}
#region -- --
/// <summary>
/// 初始化实体列表
/// </summary>
private void InitEntityList()
{
// 初始化列表类型过滤器
MenuSpawnEntityFilter.SuspendLayout();
MenuSpawnEntityFilter.Items.Clear();
void AddTypes(ItemMapGroup group)
{
foreach (var kv in group)
{
var item = new ToolStripMenuItem
{
Text = kv.Key,
Tag = kv.Value.Lines,
};
item.Click += OnEntityTypeFilterClick;
MenuSpawnEntityFilter.Items.Add(item);
}
}
//MenuSpawnEntityFilter.Items.Add(new ToolStripLabel("Monsters"));
AddTypes(GameData.Monsters);
MenuSpawnEntityFilter.Items.Add(new ToolStripSeparator());
//MenuSpawnEntityFilter.Items.Add(new ToolStripLabel("Gadgets"));
AddTypes(GameData.Gadgets);
MenuSpawnEntityFilter.ResumeLayout();
// 默认显示所有
SelectedEntityTypeLines = GameData.Monsters.AllLines.Concat(GameData.Gadgets.AllLines).ToArray();
LoadEntityList();
}
/// <summary>
/// 当前选中的实体类型行
/// </summary>
private string[] SelectedEntityTypeLines;
/// <summary>
/// 实体类型过滤器类型选中时触发
/// </summary>
private void OnEntityTypeFilterClick(object sender, EventArgs e)
{
var btn = sender as ToolStripMenuItem;
SelectedEntityTypeLines = btn.Tag as string[];
LoadEntityList();
}
/// <summary>
/// 加载实体列表
/// </summary>
private void LoadEntityList()
{
UIUtil.ListBoxFilter(ListEntity, SelectedEntityTypeLines, TxtEntityFilter.Text);
}
/// <summary>
/// 实体列表过滤器文本改变时触发
/// </summary>
private void TxtEntityFilter_TextChanged(object sender, EventArgs e)
{
LoadEntityList();
}
/// <summary>
/// 实体列表类型过滤按钮点击时触发
/// </summary>
private void BtnFilterEntity_Click(object sender, EventArgs e)
{
MenuSpawnEntityFilter.Show(BtnFilterEntity, 0, BtnFilterEntity.Height);
}
/// <summary>
/// 实体列表选中项改变时触发
/// </summary>
private void ListEntity_SelectedIndexChanged(object sender, EventArgs e)
{
// 根据当前所在页面确定要做的事情
// 攻击修改界面
if (TCSpawnSettings.SelectedTab == TPAttackModArgs)
{
OnAttackModifierInputChanged(sender, e);
}
// 攻击注入界面
else if (TCSpawnSettings.SelectedTab == TPAttackInfusedArgs)
{
// 无事发生,因为要页面上点击按钮才会生成命令
}
// 生成参数界面 或其它
else
{
// 触发输入改变事件
SpawnEntityInputChanged(sender, e);
}
}
#endregion -- --
#region -- --
/// <summary>
/// 生成命令记录文件路径
/// </summary>
private readonly string SpawnCommandsRecordPath = Path.Combine(Application.LocalUserAppDataPath, "SpawnCommands.txt");
/// <summary>
/// 生成命令记录
/// </summary>
private List<GameCommand> SpawnCommands;
/// <summary>
/// 初始化生成记录
/// </summary>
private void InitSpawnRecord()
{
if (File.Exists(SpawnCommandsRecordPath))
{
SpawnCommands = GameCommand.Parse(File.ReadAllText(SpawnCommandsRecordPath));
ListSpawnLogs.Items.AddRange(SpawnCommands.Select(c => c.Name).ToArray());
}
else
{
SpawnCommands = new List<GameCommand>();
}
}
/// <summary>
/// 保存生成记录
/// </summary>
private void SaveSpawnRecord()
{
File.WriteAllText(SpawnCommandsRecordPath, GameCommand.ToString(SpawnCommands));
}
/// <summary>
/// 生成记录列表选中项改变时触发
/// </summary>
private void ListSpawnLogs_SelectedIndexChanged(object sender, EventArgs e)
{
if (ListSpawnLogs.SelectedIndex >= 0)
{
BtnRemoveSpawnLog.Enabled = true;
SetCommand(SpawnCommands[ListSpawnLogs.SelectedIndex].Command);
}
else
{
BtnRemoveSpawnLog.Enabled = false;
}
}
/// <summary>
/// 点击保存生成记录按钮时触发
/// </summary>
private void BtnSaveSpawnLog_Click(object sender, EventArgs e)
{
// 不再重新生成,直接记录当前命令行的内容
//if (GenSpawnEntityCommand())
{
var cmdText = GetCommand();
var cmd = new GameCommand($"{ListEntity.SelectedItem} | {cmdText}", cmdText);
SpawnCommands.Add(cmd);
ListSpawnLogs.Items.Add(cmd.Name);
SaveSpawnRecord();
}
}
/// <summary>
/// 点击移除生成记录按钮时触发
/// </summary>
private void BtnRemoveSpawnLog_Click(object sender, EventArgs e)
{
if (ListSpawnLogs.SelectedIndex >= 0)
{
SpawnCommands.RemoveAt(ListSpawnLogs.SelectedIndex);
ListSpawnLogs.Items.RemoveAt(ListSpawnLogs.SelectedIndex);
SaveSpawnRecord();
}
}
/// <summary>
/// 点击清空生成记录按钮时触发
/// </summary>
private void LblClearSpawnLogs_Click(object sender, EventArgs e)
{
if (MessageBox.Show(Resources.AskConfirmDeletion, Resources.Tips, MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
{
SpawnCommands.Clear();
ListSpawnLogs.Items.Clear();
SaveSpawnRecord();
}
}
#endregion -- --
#region -- --
/// <summary>
/// 生成页面输入改变时触发
/// </summary>
private void SpawnEntityInputChanged(object sender, EventArgs e)
{
if (ListEntity.SelectedIndex == -1) return;
var selectedItem = ListEntity.SelectedItem as string;
var id = ItemMap.ToId(selectedItem);
if (CommandVersion.Check(CommandVersion.V1_3_1))
{
var args = id.ToString();
void CheckAndConnect(NumericUpDown input, int value, string prefix)
{
if (input.Value > value)
args += prefix + input.Value;
}
CheckAndConnect(NUDEntityAmout, 1, " x");
CheckAndConnect(NUDEntityLevel, 1, " lv");
CheckAndConnect(NUDEntityHp, -1, " hp");
CheckAndConnect(NUDEntityMaxHp, 0, " maxhp");
CheckAndConnect(NUDEntityAtk, -1, " atk");
CheckAndConnect(NUDEntityDef, -1, " def");
if (NUDEntityPosX.Value != 0 || NUDEntityPosY.Value != 0 || NUDEntityPosZ.Value != 0)
args += $" {NUDEntityPosX.Value} {NUDEntityPosY.Value} {NUDEntityPosZ.Value}";
SetCommand("/spawn", args);
}
else
{
SetCommand("/spawn", $"{id} {NUDEntityAmout.Value} {NUDEntityLevel.Value}");
}
}
#endregion -- --
#region -- --
/// <summary>
/// 攻击修改插件链接标签点击时触发
/// </summary>
private void LnkAttackModifierPlugin_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
UIUtil.OpenURL("https://github.com/NotThorny/AttackModifier");
}
/// <summary>
/// 攻击修改输入改变事件
/// </summary>
private void OnAttackModifierInputChanged(object sender, EventArgs e)
{
if (ListEntity.SelectedIndex == -1) return;
var selectedItem = ListEntity.SelectedItem as string;
var id = ItemMap.ToId(selectedItem);
char skill;
if (RbAtE.Checked)
{
skill = 'e';
TxtAtEntityE.Text = selectedItem;
}
else if (RbAtQ.Checked)
{
skill = 'q';
TxtAtEntityQ.Text = selectedItem;
}
else
{
skill = 'n';
TxtAtEntityN.Text = selectedItem;
}
SetCommand("/at", $"set {skill} {id}");
}
/// <summary>
/// 攻击修改页面命令事件
/// </summary>
private void OnAttackModifierCommand(object sender, EventArgs e)
{
SetCommand("/at", (sender as Control).Tag as string);
}
#endregion -- --
#region -- --
/// <summary>
/// 攻击注入插件链接标签点击时触发
/// </summary>
private void LnkAttackInfusedWithItem_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
UIUtil.OpenURL("https://github.com/snoobi-seggs/AttackInfusedWithItem");
}
/// <summary>
/// 攻击注入页面命令事件
/// </summary>
private void OnAttackInfusedCommand(object sender, EventArgs e)
{
SetCommand("/snoospawn", (sender as Control).Tag as string);
}
/// <summary>
/// 点击攻击注入按钮时触发
/// </summary>
private void BtnAttackInfuse_Click(object sender, EventArgs e)
{
if (ListEntity.SelectedIndex == -1) return;
var selectedItem = ListEntity.SelectedItem as string;
var id = ItemMap.ToId(selectedItem);
var args = string.Empty;
var flag = false;
void ConnectArg(NumericUpDown input)
{
if (flag || input.Value != 0)
{
flag = true;
args = " " + input.Value + args;
}
}
ConnectArg(NUDAiwiRotateZ);
ConnectArg(NUDAiwiRotateY);
ConnectArg(NUDAiwiRotateX);
ConnectArg(NUDAiwiSpread);
ConnectArg(NUDAiwiCount);
ConnectArg(NUDAiwiHeight);
ConnectArg(NUDAiwiRadius);
SetCommand("/snoospawn", id.ToString() + args);
//SetCommand("/at", $"{id} {NUDAiwiRadius.Value} {NUDAiwiHeight.Value} {NUDAiwiCount.Value} {NUDAiwiSpread.Value} {NUDAiwiRotateX.Value} {NUDAiwiRotateY.Value} {NUDAiwiRotateZ.Value}");
}
#endregion -- --
}
}

View File

@@ -0,0 +1,292 @@
<?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="TPSpawnArgs.Text" xml:space="preserve">
<value>Spawn args</value>
</data>
<data name="TPAttackModArgs.Text" xml:space="preserve">
<value>AttackModifier</value>
</data>
<data name="TPAttackInfusedArgs.Text" xml:space="preserve">
<value>AttackInfused</value>
</data>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="LblSpawnVersionRequireTip.Size" type="System.Drawing.Size, System.Drawing">
<value>144, 17</value>
</data>
<data name="LblSpawnVersionRequireTip.Text" xml:space="preserve">
<value>v Require GC &gt; v1.3.1 v</value>
</data>
<data name="LblInfiniteHpTip.Size" type="System.Drawing.Size, System.Drawing">
<value>98, 17</value>
</data>
<data name="LblInfiniteHpTip.Text" xml:space="preserve">
<value>HP 0 for infinite</value>
</data>
<data name="LblEntityDef.Size" type="System.Drawing.Size, System.Drawing">
<value>55, 17</value>
</data>
<data name="LblEntityDef.Text" xml:space="preserve">
<value>Defense</value>
</data>
<data name="LblEntityAtk.Size" type="System.Drawing.Size, System.Drawing">
<value>44, 17</value>
</data>
<data name="LblEntityAtk.Text" xml:space="preserve">
<value>Attack</value>
</data>
<data name="LblEntityHp.Size" type="System.Drawing.Size, System.Drawing">
<value>24, 17</value>
</data>
<data name="LblEntityHp.Text" xml:space="preserve">
<value>HP</value>
</data>
<data name="LblEntityMaxHp.Location" type="System.Drawing.Point, System.Drawing">
<value>182, 82</value>
</data>
<data name="LblEntityMaxHp.Size" type="System.Drawing.Size, System.Drawing">
<value>53, 17</value>
</data>
<data name="LblEntityMaxHp.Text" xml:space="preserve">
<value>Max HP</value>
</data>
<data name="LblEntitySpawnPostion.Text" xml:space="preserve">
<value>Pos: x: y: z:</value>
</data>
<data name="LblEntityLevel.Location" type="System.Drawing.Point, System.Drawing">
<value>200, 27</value>
</data>
<data name="LblEntityLevel.Size" type="System.Drawing.Size, System.Drawing">
<value>37, 17</value>
</data>
<data name="LblEntityLevel.Text" xml:space="preserve">
<value>Level</value>
</data>
<data name="LblEntityAmount.Size" type="System.Drawing.Size, System.Drawing">
<value>53, 17</value>
</data>
<data name="LblEntityAmount.Text" xml:space="preserve">
<value>Amount</value>
</data>
<data name="LblAMPluginTip.Size" type="System.Drawing.Size, System.Drawing">
<value>121, 17</value>
</data>
<data name="LblAMPluginTip.Text" xml:space="preserve">
<value>Meet the real Thor!</value>
</data>
<data name="LblAMPluginIntroduction.Size" type="System.Drawing.Size, System.Drawing">
<value>326, 17</value>
</data>
<data name="LblAMPluginIntroduction.Text" xml:space="preserve">
<value>This plugin can use Gadget to replace character attack</value>
</data>
<data name="LblAMPlugin.Size" type="System.Drawing.Size, System.Drawing">
<value>46, 17</value>
</data>
<data name="LblAMPlugin.Text" xml:space="preserve">
<value>Plugin:</value>
</data>
<data name="LnkAMOff.Size" type="System.Drawing.Size, System.Drawing">
<value>26, 17</value>
</data>
<data name="LnkAMOff.Text" xml:space="preserve">
<value>Off</value>
</data>
<data name="LnkAMOn.Size" type="System.Drawing.Size, System.Drawing">
<value>25, 17</value>
</data>
<data name="LnkAMOn.Text" xml:space="preserve">
<value>On</value>
</data>
<data name="BtnAtReload.Text" xml:space="preserve">
<value>Reload config</value>
</data>
<data name="BtnAtClear.Text" xml:space="preserve">
<value>Clear all gadgets</value>
</data>
<data name="GrpAMSkills.Text" xml:space="preserve">
<value>Replace Skill</value>
</data>
<data name="LblAiwiRotate.Size" type="System.Drawing.Size, System.Drawing">
<value>238, 17</value>
</data>
<data name="LblAiwiRotate.Text" xml:space="preserve">
<value>Rot: x: y: z:</value>
</data>
<data name="LblAiwiSpread.Size" type="System.Drawing.Size, System.Drawing">
<value>50, 17</value>
</data>
<data name="LblAiwiSpread.Text" xml:space="preserve">
<value>Spread</value>
</data>
<data name="LblAiwiCount.Size" type="System.Drawing.Size, System.Drawing">
<value>42, 17</value>
</data>
<data name="LblAiwiCount.Text" xml:space="preserve">
<value>Count</value>
</data>
<data name="LblAiwiHeight.Size" type="System.Drawing.Size, System.Drawing">
<value>46, 17</value>
</data>
<data name="LblAiwiHeight.Text" xml:space="preserve">
<value>Height</value>
</data>
<data name="LblAiwiRadius.Size" type="System.Drawing.Size, System.Drawing">
<value>47, 17</value>
</data>
<data name="LblAiwiRadius.Text" xml:space="preserve">
<value>Radius</value>
</data>
<data name="BtnAttackInfuse.Text" xml:space="preserve">
<value>Attack Infuse</value>
</data>
<data name="BtnAiwiReload.Text" xml:space="preserve">
<value>Reload config</value>
</data>
<data name="BtnAiwiClear.Text" xml:space="preserve">
<value>Clear</value>
</data>
<data name="BtnAiwiReset.Text" xml:space="preserve">
<value>Reset</value>
</data>
<data name="LblAiwiPlugin.Size" type="System.Drawing.Size, System.Drawing">
<value>46, 17</value>
</data>
<data name="LblAiwiPlugin.Text" xml:space="preserve">
<value>Plugin:</value>
</data>
<data name="TPSpawnItems.Text" xml:space="preserve">
<value>Entities</value>
</data>
<data name="TPSpawnRecords.Text" xml:space="preserve">
<value>Spawn Records</value>
</data>
<data name="BtnSaveSpawnLog.Text" xml:space="preserve">
<value>√ Record</value>
</data>
<data name="BtnRemoveSpawnLog.Text" xml:space="preserve">
<value>× Delete</value>
</data>
<data name="LblClearSpawnLogs.Size" type="System.Drawing.Size, System.Drawing">
<value>50, 17</value>
</data>
<data name="LblClearSpawnLogs.Text" xml:space="preserve">
<value>X Clear</value>
</data>
</root>

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,295 @@
<?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="TPSpawnArgs.Text" xml:space="preserve">
<value>Спавн</value>
</data>
<data name="TPAttackModArgs.Text" xml:space="preserve">
<value>Изменение атаки</value>
</data>
<data name="TPAttackInfusedArgs.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="LblSpawnVersionRequireTip.Size" type="System.Drawing.Size, System.Drawing">
<value>149, 17</value>
</data>
<data name="LblSpawnVersionRequireTip.Text" xml:space="preserve">
<value>Требуется GC &gt;= v1.3.1</value>
</data>
<data name="LblInfiniteHpTip.Size" type="System.Drawing.Size, System.Drawing">
<value>157, 17</value>
</data>
<data name="LblInfiniteHpTip.Text" xml:space="preserve">
<value>HP 0 для бесконечности</value>
</data>
<data name="LblEntityDef.Size" type="System.Drawing.Size, System.Drawing">
<value>53, 17</value>
</data>
<data name="LblEntityDef.Text" xml:space="preserve">
<value>Защита</value>
</data>
<data name="LblEntityAtk.Size" type="System.Drawing.Size, System.Drawing">
<value>42, 17</value>
</data>
<data name="LblEntityAtk.Text" xml:space="preserve">
<value>Атака</value>
</data>
<data name="LblEntityHp.Size" type="System.Drawing.Size, System.Drawing">
<value>24, 17</value>
</data>
<data name="LblEntityHp.Text" xml:space="preserve">
<value>HP</value>
</data>
<data name="LblEntityMaxHp.Size" type="System.Drawing.Size, System.Drawing">
<value>63, 17</value>
</data>
<data name="LblEntityMaxHp.Text" xml:space="preserve">
<value>Макс. HP</value>
</data>
<data name="LblEntitySpawnPostion.Size" type="System.Drawing.Size, System.Drawing">
<value>238, 17</value>
</data>
<data name="LblEntitySpawnPostion.Text" xml:space="preserve">
<value>Поз x: y: z:</value>
</data>
<data name="LblEntityLevel.Size" type="System.Drawing.Size, System.Drawing">
<value>26, 17</value>
</data>
<data name="LblEntityLevel.Text" xml:space="preserve">
<value>Ур.</value>
</data>
<data name="LblEntityAmount.Size" type="System.Drawing.Size, System.Drawing">
<value>34, 17</value>
</data>
<data name="LblEntityAmount.Text" xml:space="preserve">
<value>Кол.</value>
</data>
<data name="LblAMPluginTip.Size" type="System.Drawing.Size, System.Drawing">
<value>190, 17</value>
</data>
<data name="LblAMPluginTip.Text" xml:space="preserve">
<value>Встречайте настоящего Тора!</value>
</data>
<data name="LblAMPluginIntroduction.Size" type="System.Drawing.Size, System.Drawing">
<value>213, 17</value>
</data>
<data name="LblAMPluginIntroduction.Text" xml:space="preserve">
<value>Атаки можно заменить гаджетом</value>
</data>
<data name="LblAMPlugin.Size" type="System.Drawing.Size, System.Drawing">
<value>52, 17</value>
</data>
<data name="LblAMPlugin.Text" xml:space="preserve">
<value>Плагин</value>
</data>
<data name="LnkAMOff.Location" type="System.Drawing.Point, System.Drawing">
<value>194, 3</value>
</data>
<data name="LnkAMOff.Size" type="System.Drawing.Size, System.Drawing">
<value>41, 17</value>
</data>
<data name="LnkAMOff.Text" xml:space="preserve">
<value>выкл.</value>
</data>
<data name="LnkAMOn.Size" type="System.Drawing.Size, System.Drawing">
<value>32, 17</value>
</data>
<data name="LnkAMOn.Text" xml:space="preserve">
<value>вкл.</value>
</data>
<data name="BtnAtReload.Text" xml:space="preserve">
<value>Перезагрузить</value>
</data>
<data name="BtnAtClear.Text" xml:space="preserve">
<value>Очистить гаджеты</value>
</data>
<data name="GrpAMSkills.Text" xml:space="preserve">
<value>Замена навыков</value>
</data>
<data name="LblAiwiRotate.Size" type="System.Drawing.Size, System.Drawing">
<value>241, 17</value>
</data>
<data name="LblAiwiRotate.Text" xml:space="preserve">
<value>Повер. x: y: z:</value>
</data>
<data name="LblAiwiSpread.Location" type="System.Drawing.Point, System.Drawing">
<value>152, 74</value>
</data>
<data name="LblAiwiSpread.Size" type="System.Drawing.Size, System.Drawing">
<value>74, 17</value>
</data>
<data name="LblAiwiSpread.Text" xml:space="preserve">
<value>Распростр.</value>
</data>
<data name="LblAiwiCount.Size" type="System.Drawing.Size, System.Drawing">
<value>51, 17</value>
</data>
<data name="LblAiwiCount.Text" xml:space="preserve">
<value>Кол-во</value>
</data>
<data name="LblAiwiHeight.Size" type="System.Drawing.Size, System.Drawing">
<value>51, 17</value>
</data>
<data name="LblAiwiHeight.Text" xml:space="preserve">
<value>Высота</value>
</data>
<data name="LblAiwiRadius.Size" type="System.Drawing.Size, System.Drawing">
<value>49, 17</value>
</data>
<data name="LblAiwiRadius.Text" xml:space="preserve">
<value>Радиус</value>
</data>
<data name="BtnAttackInfuse.Text" xml:space="preserve">
<value>Создать инфузию</value>
</data>
<data name="BtnAiwiReload.Text" xml:space="preserve">
<value>Перезагрузка</value>
</data>
<data name="BtnAiwiClear.Text" xml:space="preserve">
<value>Очистить</value>
</data>
<data name="BtnAiwiReset.Text" xml:space="preserve">
<value>Сбросить</value>
</data>
<data name="LblAiwiPlugin.Size" type="System.Drawing.Size, System.Drawing">
<value>52, 17</value>
</data>
<data name="LblAiwiPlugin.Text" xml:space="preserve">
<value>Плагин</value>
</data>
<data name="TPSpawnItems.Text" xml:space="preserve">
<value>Список объектов</value>
</data>
<data name="TPSpawnRecords.Text" xml:space="preserve">
<value>Записи спавнов</value>
</data>
<data name="BtnSaveSpawnLog.Text" xml:space="preserve">
<value>√ Сохр.</value>
</data>
<data name="BtnRemoveSpawnLog.Text" xml:space="preserve">
<value>× Удалить</value>
</data>
<data name="LblClearSpawnLogs.Size" type="System.Drawing.Size, System.Drawing">
<value>76, 17</value>
</data>
<data name="LblClearSpawnLogs.Text" xml:space="preserve">
<value>X Очистить</value>
</data>
</root>

View File

@@ -0,0 +1,205 @@
<?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="LblSpawnVersionRequireTip.Text" xml:space="preserve">
<value>以下參數至少要求 GC v1.3.1</value>
</data>
<data name="LblInfiniteHpTip.Text" xml:space="preserve">
<value>血量為 0 表示無限</value>
</data>
<data name="LblEntityDef.Text" xml:space="preserve">
<value>防禦力:</value>
</data>
<data name="LblEntityAtk.Text" xml:space="preserve">
<value>攻擊力:</value>
</data>
<data name="LblEntityLevel.Text" xml:space="preserve">
<value>等級:</value>
</data>
<data name="LblEntityAmount.Text" xml:space="preserve">
<value>數量:</value>
</data>
<data name="TPSpawnArgs.Text" xml:space="preserve">
<value>生成參數</value>
</data>
<data name="LblAMPluginTip.Text" xml:space="preserve">
<value>見識一下真正的雷神吧!</value>
</data>
<data name="LblAMPluginIntroduction.Text" xml:space="preserve">
<value>這個插件可以使用 Gadget 替換角色攻擊</value>
</data>
<data name="LnkAMOff.Text" xml:space="preserve">
<value>關</value>
</data>
<data name="LnkAMOn.Text" xml:space="preserve">
<value>開</value>
</data>
<data name="BtnAtReload.Text" xml:space="preserve">
<value>重載配置</value>
</data>
<data name="BtnAtClear.Text" xml:space="preserve">
<value>清空實體!!</value>
</data>
<data name="GrpAMSkills.Text" xml:space="preserve">
<value>替換技能</value>
</data>
<data name="TPAttackModArgs.Text" xml:space="preserve">
<value>攻擊修改參數</value>
</data>
<data name="LblAiwiRotate.Text" xml:space="preserve">
<value>旋轉: x: y: z:</value>
</data>
<data name="LblAiwiSpread.Text" xml:space="preserve">
<value>擴散:</value>
</data>
<data name="LblAiwiCount.Text" xml:space="preserve">
<value>數量:</value>
</data>
<data name="LblAiwiRadius.Text" xml:space="preserve">
<value>範圍:</value>
</data>
<data name="BtnAttackInfuse.Text" xml:space="preserve">
<value>攻擊注入</value>
</data>
<data name="BtnAiwiReload.Text" xml:space="preserve">
<value>重載配置</value>
</data>
<data name="BtnAiwiClear.Text" xml:space="preserve">
<value>清空實體</value>
</data>
<data name="TPAttackInfusedArgs.Text" xml:space="preserve">
<value>攻擊注入參數</value>
</data>
<data name="TPSpawnItems.Text" xml:space="preserve">
<value>實體列表</value>
</data>
<data name="BtnSaveSpawnLog.Text" xml:space="preserve">
<value>√ 記錄</value>
</data>
<data name="BtnRemoveSpawnLog.Text" xml:space="preserve">
<value>× 刪除</value>
</data>
<data name="TPSpawnRecords.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="MenuSpawnEntityFilter.Size" type="System.Drawing.Size, System.Drawing">
<value>61, 4</value>
</data>
</root>

View File

@@ -0,0 +1,25 @@
using System;
using GrasscutterTools.Game;
using GrasscutterTools.OpenCommand;
namespace GrasscutterTools.Utils
{
internal static class Common
{
/// <summary>
/// 应用版本
/// </summary>
public static Version AppVersion { get; set; }
/// <summary>
/// 命令版本
/// </summary>
public static CommandVersion CommandVersion { get; } = CommandVersion.Latest();
/// <summary>
/// 开放命令接口
/// </summary>
public static OpenCommandAPI OC { get; set; }
}
}

View File

@@ -1,7 +1,10 @@
using System.Linq; using System;
using System.Linq;
using System.Threading.Tasks; using System.Threading.Tasks;
using System.Windows.Forms; using System.Windows.Forms;
using GrasscutterTools.Properties;
namespace GrasscutterTools.Utils namespace GrasscutterTools.Utils
{ {
public static class UIUtil public static class UIUtil
@@ -41,5 +44,39 @@ namespace GrasscutterTools.Utils
} }
listBox.EndUpdate(); listBox.EndUpdate();
} }
/// <summary>
/// 使用浏览器打开网址
/// </summary>
/// <param name="url">网址</param>
public static void OpenURL(string url)
{
try
{
System.Diagnostics.Process.Start(url);
}
catch (Exception)
{
MessageBox.Show(Resources.BrowserOpenFailedTip + "\n " + url,
Resources.Error, MessageBoxButtons.OK, MessageBoxIcon.Warning);
}
}
/// <summary>
/// 提示气泡对象
/// </summary>
private readonly static ToolTip TTip = new ToolTip();
/// <summary>
/// 在指定控件上显示提示气泡
/// </summary>
/// <param name="message">消息</param>
/// <param name="control">控件</param>
public static void ShowTip(string message, Control control)
{
TTip.Show(message, control, 0, control.Size.Height, 3000);
}
} }
} }