Compare commits

..

14 Commits

Author SHA1 Message Date
cd25afe0c7 Update translates 2022-11-01 22:30:41 +08:00
302e4e327d Implement ShopEditor 2022-11-01 21:55:05 +08:00
52317d8d5a Impl ShopEditor UI (WIP) 2022-10-31 22:47:12 +08:00
757bb2dd95 Update Shop editor UI (WIP) 2022-10-31 13:08:02 +08:00
3be6550593 Fix UI issue (#138) 2022-10-31 13:08:00 +08:00
止语
f79764dbb5 Add idol ID, initial quest (#139)
Add the idol ID, it is recommended to use the map unlock command to unlock the idol, and it is not recommended to unlock the map by manually completing the task (this method cannot unlock the anchor point and the secret realm).
At the beginning of the game, the task of catching Paimon is on top.
At present, there is a warehouse support task system, and I have already tested it and it is feasible
2022-10-31 08:50:57 +08:00
止语
61a598d7e3 Update GachaBennerPrefabs (#137) 2022-10-30 23:09:31 +08:00
dc61940e3c Add file headers 2022-10-30 22:12:10 +08:00
086c4da557 Add Shop models 2022-10-30 22:10:35 +08:00
d79b50527e Update Gacha prefabs 2022-10-30 19:25:57 +08:00
4a91e5a6bd Update version to v1.7.2 2022-10-30 11:43:54 +08:00
8db5fd1efd Update gacha avatars 2022-10-30 11:43:38 +08:00
Moglibogli
d22ba331d9 Update Item.txt 2022-10-30 10:03:36 +08:00
Moglibogli
cc20e81ebf Update GachaBennerPrefab.txt 2022-10-30 10:02:26 +08:00
55 changed files with 11238 additions and 6796 deletions

View File

@@ -49,6 +49,9 @@
<setting name="DefaultMailSender" serializeAs="String">
<value>GrasscutterTools</value>
</setting>
<setting name="ShopJsonPath" serializeAs="String">
<value />
</setting>
</GrasscutterTools.Properties.Settings>
</userSettings>
</configuration>

View File

@@ -1,4 +1,22 @@
using System;
/**
* Grasscutter Tools
* Copyright (C) 2022 jie65535
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published
* by the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*
**/
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
@@ -11,8 +29,6 @@ using GrasscutterTools.Utils;
using Newtonsoft.Json;
using static System.Windows.Forms.VisualStyles.VisualStyleElement.StartPanel;
namespace GrasscutterTools.Forms
{
public partial class FormDropEditor : Form

View File

@@ -377,8 +377,7 @@ namespace GrasscutterTools.Forms
((System.Windows.Forms.ListViewGroup)(resources.GetObject("ListFallbackItems.Groups1"))),
((System.Windows.Forms.ListViewGroup)(resources.GetObject("ListFallbackItems.Groups2"))),
((System.Windows.Forms.ListViewGroup)(resources.GetObject("ListFallbackItems.Groups3"))),
((System.Windows.Forms.ListViewGroup)(resources.GetObject("ListFallbackItems.Groups4"))),
((System.Windows.Forms.ListViewGroup)(resources.GetObject("ListFallbackItems.Groups5")))});
((System.Windows.Forms.ListViewGroup)(resources.GetObject("ListFallbackItems.Groups4")))});
this.ListFallbackItems.HideSelection = false;
this.ListFallbackItems.Name = "ListFallbackItems";
this.ListFallbackItems.UseCompatibleStateImageBehavior = false;

View File

@@ -72,16 +72,13 @@ namespace GrasscutterTools.Forms
ListFallbackItems.BeginUpdate();
var a5 = ListFallbackItems.Groups["GroupA5"];
var a4 = ListFallbackItems.Groups["GroupA4"];
var a3 = ListFallbackItems.Groups["GroupA3"];
var w5 = ListFallbackItems.Groups["GroupW5"];
var w4 = ListFallbackItems.Groups["GroupW4"];
var w3 = ListFallbackItems.Groups["GroupW3"];
var avatars = GetAvatarsByColor("yellow")
var avatars = GetAvatarsByColor("5")
.Select(it => new ListViewItem(new string[] { it.Item1.ToString(), it.Item2 }, a5) { ForeColor = Color.OrangeRed })
.Concat(GetAvatarsByColor("purple")
.Select(it => new ListViewItem(new string[] { it.Item1.ToString(), it.Item2 }, a4) { ForeColor = Color.Purple }))
.Concat(GetAvatarsByColor("blue")
.Select(it => new ListViewItem(new string[] { it.Item1.ToString(), it.Item2 }, a3) { ForeColor = Color.Blue }));
.Concat(GetAvatarsByColor("4")
.Select(it => new ListViewItem(new string[] { it.Item1.ToString(), it.Item2 }, a4) { ForeColor = Color.Purple }));
var weapons = GetWeaponsByColor("yellow")
.Select(it => new ListViewItem(new string[] { it.Item1.ToString(), it.Item2 }, w5) { ForeColor = Color.OrangeRed })
.Concat(GetWeaponsByColor("purple")
@@ -96,9 +93,9 @@ namespace GrasscutterTools.Forms
var ua4 = ListUpItems.Groups["GroupUpA4"];
var uw5 = ListUpItems.Groups["GroupUpW5"];
var uw4 = ListUpItems.Groups["GroupUpW4"];
var upAvatars = GetAvatarsByColor("yellow")
var upAvatars = GetAvatarsByColor("5")
.Select(it => new ListViewItem(new string[] { it.Item1.ToString(), it.Item2 }, ua5) { ForeColor = Color.OrangeRed })
.Concat(GetAvatarsByColor("purple")
.Concat(GetAvatarsByColor("4")
.Select(it => new ListViewItem(new string[] { it.Item1.ToString(), it.Item2 }, ua4) { ForeColor = Color.Purple }));
var upWeapons = GetWeaponsByColor("yellow")
.Select(it => new ListViewItem(new string[] { it.Item1.ToString(), it.Item2 }, uw5) { ForeColor = Color.OrangeRed })

View File

@@ -303,16 +303,6 @@
</value>
</data>
<data name="ListFallbackItems.Groups4" mimetype="application/x-microsoft.net.object.binary.base64">
<value>
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACJTeXN0
ZW0uV2luZG93cy5Gb3Jtcy5MaXN0Vmlld0dyb3VwBAAAAAZIZWFkZXIPSGVhZGVyQWxpZ25tZW50A1Rh
ZwROYW1lAQQCAShTeXN0ZW0uV2luZG93cy5Gb3Jtcy5Ib3Jpem9udGFsQWxpZ25tZW50AgAAAAIAAAAG
AwAAAA0zLXN0YXIgYXZhdGFyBfz///8oU3lzdGVtLldpbmRvd3MuRm9ybXMuSG9yaXpvbnRhbEFsaWdu
bWVudAEAAAAHdmFsdWVfXwAIAgAAAAAAAAAKBgUAAAAHR3JvdXBBMws=
</value>
</data>
<data name="ListFallbackItems.Groups5" mimetype="application/x-microsoft.net.object.binary.base64">
<value>
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACJTeXN0

View File

@@ -131,21 +131,12 @@
<data name="BtnGen.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Bottom, Left</value>
</data>
<data name="$this.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>3, 4, 3, 4</value>
</data>
<data name="LblBannerType.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="&gt;&gt;RbCostItem223.Type" xml:space="preserve">
<value>System.Windows.Forms.RadioButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="GrpJson.TabIndex" type="System.Int32, mscorlib">
<value>6</value>
</data>
<data name="&gt;&gt;GrpWeights.ZOrder" xml:space="preserve">
<value>2</value>
</data>
<data name="&gt;&gt;ChkRemoveC6FormPool.Type" xml:space="preserve">
<value>System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
@@ -231,9 +222,6 @@
<data name="&gt;&gt;ColUpName.Name" xml:space="preserve">
<value>ColUpName</value>
</data>
<data name="DTPEndTime.Location" type="System.Drawing.Point, System.Drawing">
<value>302, 173</value>
</data>
<data name="&gt;&gt;ChkAutoStripRateUpFromFallback.Parent" xml:space="preserve">
<value>GrpBannerValues</value>
</data>
@@ -246,6 +234,9 @@
<data name="&gt;&gt;GrpBannerValues.ZOrder" xml:space="preserve">
<value>6</value>
</data>
<data name="LblEventChance5Tip.Text" xml:space="preserve">
<value>%</value>
</data>
<data name="LblCostItem.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
@@ -280,6 +271,9 @@
dAEAAAAHdmFsdWVfXwAIAgAAAAAAAAAKBgUAAAAHR3JvdXBBNQs=
</value>
</data>
<data name="ListUpItems.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
</data>
<data name="&gt;&gt;LblGachaType.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
@@ -316,15 +310,8 @@
dAEAAAAHdmFsdWVfXwAIAgAAAAAAAAAKBgUAAAAHR3JvdXBBNAs=
</value>
</data>
<data name="ListFallbackItems.Groups5" mimetype="application/x-microsoft.net.object.binary.base64">
<value>
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACJTeXN0
ZW0uV2luZG93cy5Gb3Jtcy5MaXN0Vmlld0dyb3VwBAAAAAZIZWFkZXIPSGVhZGVyQWxpZ25tZW50A1Rh
ZwROYW1lAQQCAShTeXN0ZW0uV2luZG93cy5Gb3Jtcy5Ib3Jpem9udGFsQWxpZ25tZW50AgAAAAIAAAAG
AwAAAAoz5pif6KeS6ImyBfz///8oU3lzdGVtLldpbmRvd3MuRm9ybXMuSG9yaXpvbnRhbEFsaWdubWVu
dAEAAAAHdmFsdWVfXwAIAgAAAAAAAAAKBgUAAAAHR3JvdXBXMws=
</value>
<data name="ChkAutoStripRateUpFromFallback.Location" type="System.Drawing.Point, System.Drawing">
<value>217, 260</value>
</data>
<data name="CmbBannerType.Items1" xml:space="preserve">
<value>限时角色祈愿池</value>
@@ -359,15 +346,9 @@
<data name="&gt;&gt;LblEventChance4Tip.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="LblPoolWeight5.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="LblCostItem.Text" xml:space="preserve">
<value>祈愿道具</value>
</data>
<data name="&gt;&gt;TxtPoolWeight5.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="TxtPoolWeight4.Size" type="System.Drawing.Size, System.Drawing">
<value>300, 23</value>
</data>
@@ -377,9 +358,6 @@
<data name="&gt;&gt;NUDEventChance4.ZOrder" xml:space="preserve">
<value>9</value>
</data>
<data name="LnkWeightHelp.Location" type="System.Drawing.Point, System.Drawing">
<value>402, 0</value>
</data>
<data name="LblEventChance4Tip.TabIndex" type="System.Int32, mscorlib">
<value>89</value>
</data>
@@ -410,11 +388,14 @@
<data name="GrpUpPool.Text" xml:space="preserve">
<value>UP池</value>
</data>
<data name="TxtWeight5.Size" type="System.Drawing.Size, System.Drawing">
<value>300, 23</value>
</data>
<data name="BtnParse.TabIndex" type="System.Int32, mscorlib">
<value>1</value>
</data>
<data name="DTPBeginTime.TabIndex" type="System.Int32, mscorlib">
<value>6</value>
<data name="&gt;&gt;LblOptions.Parent" xml:space="preserve">
<value>GrpBannerValues</value>
</data>
<data name="RbCostItem224.Size" type="System.Drawing.Size, System.Drawing">
<value>74, 21</value>
@@ -431,8 +412,8 @@
<data name="BtnParse.Text" xml:space="preserve">
<value>解析Json</value>
</data>
<data name="&gt;&gt;LblPoolWeight4.Parent" xml:space="preserve">
<value>GrpBalance</value>
<data name="LblScheduleId.TabIndex" type="System.Int32, mscorlib">
<value>53</value>
</data>
<data name="&gt;&gt;LblWeight4.Parent" xml:space="preserve">
<value>GrpWeights</value>
@@ -455,12 +436,12 @@
<data name="&gt;&gt;BtnParse.Parent" xml:space="preserve">
<value>GrpJson</value>
</data>
<data name="&gt;&gt;GrpFallbackPool.Name" xml:space="preserve">
<value>GrpFallbackPool</value>
</data>
<data name="&gt;&gt;GrpBalance.Name" xml:space="preserve">
<value>GrpBalance</value>
</data>
<data name="&gt;&gt;LblWeight5.ZOrder" xml:space="preserve">
<value>4</value>
</data>
<data name="&gt;&gt;LblEventChance5Tip.Parent" xml:space="preserve">
<value>GrpBannerValues</value>
</data>
@@ -470,8 +451,8 @@
<data name="TxtJson.WordWrap" type="System.Boolean, mscorlib">
<value>False</value>
</data>
<data name="&gt;&gt;NUDScheduleId.Type" xml:space="preserve">
<value>System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
<data name="CmbPrefab.Location" type="System.Drawing.Point, System.Drawing">
<value>112, 115</value>
</data>
<data name="LblWeight4.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
@@ -524,8 +505,11 @@
<data name="&gt;&gt;NUDSortId.Name" xml:space="preserve">
<value>NUDSortId</value>
</data>
<data name="LblBeginTime.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
<data name="&gt;&gt;LblEventChance5Tip.ZOrder" xml:space="preserve">
<value>8</value>
</data>
<data name="&gt;&gt;TxtPoolWeight5.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="ListUpItems.Groups3" mimetype="application/x-microsoft.net.object.binary.base64">
<value>
@@ -563,14 +547,11 @@
<data name="LnkWeightHelp.Text" xml:space="preserve">
<value>帮助</value>
</data>
<data name="LblPrefabPath.Location" type="System.Drawing.Point, System.Drawing">
<value>74, 118</value>
</data>
<data name="&gt;&gt;ColFallbackId.Type" xml:space="preserve">
<value>System.Windows.Forms.ColumnHeader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="LblScheduleIdTip.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
<data name="&gt;&gt;TxtWeight4.Name" xml:space="preserve">
<value>TxtWeight4</value>
</data>
<data name="&gt;&gt;ChartWeights.Name" xml:space="preserve">
<value>ChartWeights</value>
@@ -596,6 +577,9 @@
<data name="ChartWeights.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 19</value>
</data>
<data name="ColFallbackName.Width" type="System.Int32, mscorlib">
<value>110</value>
</data>
<data name="&gt;&gt;CmbPrefab.ZOrder" xml:space="preserve">
<value>6</value>
</data>
@@ -617,9 +601,6 @@
<data name="LblScheduleId.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="&gt;&gt;LblPrefabPath.Name" xml:space="preserve">
<value>LblPrefabPath</value>
</data>
<data name="GrpFallbackPool.Location" type="System.Drawing.Point, System.Drawing">
<value>458, 248</value>
</data>
@@ -632,8 +613,8 @@
<data name="&gt;&gt;LblPrefabPath.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;LblBeginTime.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
<data name="ChkRemoveC6FormPool.Location" type="System.Drawing.Point, System.Drawing">
<value>112, 260</value>
</data>
<data name="LblSortIdTip.Text" xml:space="preserve">
<value>客户端中显示的顺序</value>
@@ -647,11 +628,14 @@
<data name="LblGachaTypeTip.Size" type="System.Drawing.Size, System.Drawing">
<value>125, 17</value>
</data>
<data name="&gt;&gt;NUDScheduleId.Parent" xml:space="preserve">
<value>GrpBannerValues</value>
</data>
<data name="CmbPrefab.TabIndex" type="System.Int32, mscorlib">
<value>3</value>
</data>
<data name="&gt;&gt;LblWeight5.ZOrder" xml:space="preserve">
<value>4</value>
<data name="&gt;&gt;GrpWeights.ZOrder" xml:space="preserve">
<value>2</value>
</data>
<data name="&gt;&gt;ListFallbackItems.Name" xml:space="preserve">
<value>ListFallbackItems</value>
@@ -662,6 +646,12 @@
<data name="LnkOpenOldEditor.Location" type="System.Drawing.Point, System.Drawing">
<value>6, 309</value>
</data>
<data name="&gt;&gt;LblEndTime.Name" xml:space="preserve">
<value>LblEndTime</value>
</data>
<data name="GrpWeightChart.TabIndex" type="System.Int32, mscorlib">
<value>7</value>
</data>
<data name="LblBannerType.TabIndex" type="System.Int32, mscorlib">
<value>59</value>
</data>
@@ -677,6 +667,12 @@
<data name="&gt;&gt;LnkWeightHelp.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="&gt;&gt;ListUpItems.Type" xml:space="preserve">
<value>System.Windows.Forms.ListView, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;CmbBannerType.ZOrder" xml:space="preserve">
<value>23</value>
</data>
<data name="&gt;&gt;LblSortId.Parent" xml:space="preserve">
<value>GrpBannerValues</value>
</data>
@@ -746,16 +742,19 @@
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACJTeXN0
ZW0uV2luZG93cy5Gb3Jtcy5MaXN0Vmlld0dyb3VwBAAAAAZIZWFkZXIPSGVhZGVyQWxpZ25tZW50A1Rh
ZwROYW1lAQQCAShTeXN0ZW0uV2luZG93cy5Gb3Jtcy5Ib3Jpem9udGFsQWxpZ25tZW50AgAAAAIAAAAG
AwAAAAoz5pif6KeS6ImyBfz///8oU3lzdGVtLldpbmRvd3MuRm9ybXMuSG9yaXpvbnRhbEFsaWdubWVu
dAEAAAAHdmFsdWVfXwAIAgAAAAAAAAAKBgUAAAAHR3JvdXBBMws=
AwAAAAoz5pif5q2m5ZmoBfz///8oU3lzdGVtLldpbmRvd3MuRm9ybXMuSG9yaXpvbnRhbEFsaWdubWVu
dAEAAAAHdmFsdWVfXwAIAgAAAAAAAAAKBgUAAAAHR3JvdXBXMws=
</value>
</data>
<data name="&gt;&gt;TxtPoolWeight5.Type" xml:space="preserve">
<value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
<data name="&gt;&gt;$this.Type" xml:space="preserve">
<value>System.Windows.Forms.Form, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;GrpBalance.Type" xml:space="preserve">
<value>System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="NUDScheduleId.TabIndex" type="System.Int32, mscorlib">
<value>1</value>
</data>
<data name="&gt;&gt;LblBannerType.ZOrder" xml:space="preserve">
<value>25</value>
</data>
@@ -771,6 +770,9 @@
<data name="&gt;&gt;RbCostItem223.Name" xml:space="preserve">
<value>RbCostItem223</value>
</data>
<data name="LblEventChance5Tip.Location" type="System.Drawing.Point, System.Drawing">
<value>181, 233</value>
</data>
<data name="&gt;&gt;LblEndTime.ZOrder" xml:space="preserve">
<value>18</value>
</data>
@@ -789,15 +791,8 @@
<data name="GrpFallbackPool.Size" type="System.Drawing.Size, System.Drawing">
<value>210, 305</value>
</data>
<data name="ListUpItems.Groups" mimetype="application/x-microsoft.net.object.binary.base64">
<value>
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACJTeXN0
ZW0uV2luZG93cy5Gb3Jtcy5MaXN0Vmlld0dyb3VwBAAAAAZIZWFkZXIPSGVhZGVyQWxpZ25tZW50A1Rh
ZwROYW1lAQQCAShTeXN0ZW0uV2luZG93cy5Gb3Jtcy5Ib3Jpem9udGFsQWxpZ25tZW50AgAAAAIAAAAG
AwAAAAo15pif6KeS6ImyBfz///8oU3lzdGVtLldpbmRvd3MuRm9ybXMuSG9yaXpvbnRhbEFsaWdubWVu
dAEAAAAHdmFsdWVfXwAIAgAAAAAAAAAKBgUAAAAJR3JvdXBVcEE1Cw==
</value>
<data name="&gt;&gt;LblEventChance4.Name" xml:space="preserve">
<value>LblEventChance4</value>
</data>
<data name="NUDEventChance4.Location" type="System.Drawing.Point, System.Drawing">
<value>302, 231</value>
@@ -850,12 +845,12 @@
<data name="GrpBannerValues.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
</data>
<data name="&gt;&gt;ListFallbackItems.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="&gt;&gt;LnkOpenOldEditor.Parent" xml:space="preserve">
<value>GrpBannerValues</value>
</data>
<data name="LblPoolWeight5.Text" xml:space="preserve">
<value>5星池权重</value>
</data>
<data name="&gt;&gt;NUDGachaType.Parent" xml:space="preserve">
<value>GrpBannerValues</value>
</data>
@@ -898,9 +893,6 @@
<data name="&gt;&gt;LblScheduleId.ZOrder" xml:space="preserve">
<value>19</value>
</data>
<data name="&gt;&gt;LblWeight5.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;LblScheduleId.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
@@ -910,9 +902,15 @@
<data name="GrpFallbackPool.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Bottom, Left</value>
</data>
<data name="CmbBannerType.TabIndex" type="System.Int32, mscorlib">
<value>2</value>
</data>
<data name="DTPBeginTime.Size" type="System.Drawing.Size, System.Drawing">
<value>110, 23</value>
</data>
<data name="LnkOpenOldEditor.Text" xml:space="preserve">
<value>打开旧版本编辑器</value>
</data>
<data name="&gt;&gt;NUDSortId.Type" xml:space="preserve">
<value>System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
@@ -925,12 +923,19 @@
<data name="&gt;&gt;LnkOpenOldEditor.Type" xml:space="preserve">
<value>System.Windows.Forms.LinkLabel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="ListUpItems.Groups" mimetype="application/x-microsoft.net.object.binary.base64">
<value>
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACJTeXN0
ZW0uV2luZG93cy5Gb3Jtcy5MaXN0Vmlld0dyb3VwBAAAAAZIZWFkZXIPSGVhZGVyQWxpZ25tZW50A1Rh
ZwROYW1lAQQCAShTeXN0ZW0uV2luZG93cy5Gb3Jtcy5Ib3Jpem9udGFsQWxpZ25tZW50AgAAAAIAAAAG
AwAAAAo15pif6KeS6ImyBfz///8oU3lzdGVtLldpbmRvd3MuRm9ybXMuSG9yaXpvbnRhbEFsaWdubWVu
dAEAAAAHdmFsdWVfXwAIAgAAAAAAAAAKBgUAAAAJR3JvdXBVcEE1Cw==
</value>
</data>
<data name="LblPoolWeight4.TabIndex" type="System.Int32, mscorlib">
<value>5</value>
</data>
<data name="CmbPrefab.Location" type="System.Drawing.Point, System.Drawing">
<value>112, 115</value>
</data>
<data name="NUDSortId.Location" type="System.Drawing.Point, System.Drawing">
<value>112, 202</value>
</data>
@@ -958,18 +963,12 @@
<data name="LnkWeightHelp.Size" type="System.Drawing.Size, System.Drawing">
<value>32, 17</value>
</data>
<data name="&gt;&gt;BtnParse.ZOrder" xml:space="preserve">
<value>2</value>
</data>
<data name="TxtJson.TabIndex" type="System.Int32, mscorlib">
<value>2</value>
</data>
<data name="BtnGen.Text" xml:space="preserve">
<value>生成Json</value>
</data>
<data name="LblEventChance4.Text" xml:space="preserve">
<value>4星活动爆率</value>
</data>
<data name="&gt;&gt;TxtJson.Name" xml:space="preserve">
<value>TxtJson</value>
</data>
@@ -979,8 +978,8 @@
<data name="GrpWeightChart.Location" type="System.Drawing.Point, System.Drawing">
<value>674, 248</value>
</data>
<data name="&gt;&gt;LblEventChance5Tip.ZOrder" xml:space="preserve">
<value>8</value>
<data name="&gt;&gt;TxtPoolWeight5.Type" xml:space="preserve">
<value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;LblPrefabPath.Parent" xml:space="preserve">
<value>GrpBannerValues</value>
@@ -994,11 +993,11 @@
<data name="&gt;&gt;NUDScheduleId.ZOrder" xml:space="preserve">
<value>21</value>
</data>
<data name="NUDGachaType.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
<data name="&gt;&gt;LblPoolWeight4.Parent" xml:space="preserve">
<value>GrpBalance</value>
</data>
<data name="&gt;&gt;BtnGen.Parent" xml:space="preserve">
<value>GrpJson</value>
<data name="LblPrefabPath.TabIndex" type="System.Int32, mscorlib">
<value>61</value>
</data>
<data name="NUDScheduleId.Location" type="System.Drawing.Point, System.Drawing">
<value>112, 55</value>
@@ -1009,8 +1008,8 @@
<data name="&gt;&gt;LblScheduleIdTip.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;TxtWeight4.Name" xml:space="preserve">
<value>TxtWeight4</value>
<data name="LblScheduleIdTip.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="&gt;&gt;LblEventChance4.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
@@ -1048,9 +1047,6 @@
<data name="&gt;&gt;RbCostItem224.Name" xml:space="preserve">
<value>RbCostItem224</value>
</data>
<data name="LblPrefabPath.Size" type="System.Drawing.Size, System.Drawing">
<value>32, 17</value>
</data>
<data name="&gt;&gt;TxtJson.ZOrder" xml:space="preserve">
<value>1</value>
</data>
@@ -1063,9 +1059,6 @@
<data name="ChartWeights.Text" xml:space="preserve">
<value>chart1</value>
</data>
<data name="LblBeginTime.Location" type="System.Drawing.Point, System.Drawing">
<value>50, 176</value>
</data>
<data name="GrpJson.Location" type="System.Drawing.Point, System.Drawing">
<value>674, 12</value>
</data>
@@ -1123,9 +1116,6 @@
<data name="LblPrefabPath.Text" xml:space="preserve">
<value>预制</value>
</data>
<data name="ChkAutoStripRateUpFromFallback.Location" type="System.Drawing.Point, System.Drawing">
<value>217, 260</value>
</data>
<data name="&gt;&gt;GrpBalance.ZOrder" xml:space="preserve">
<value>1</value>
</data>
@@ -1162,12 +1152,15 @@
<data name="&gt;&gt;GrpWeightChart.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="LblEventChance5Tip.Location" type="System.Drawing.Point, System.Drawing">
<value>181, 233</value>
<data name="LblBeginTime.Location" type="System.Drawing.Point, System.Drawing">
<value>50, 176</value>
</data>
<data name="&gt;&gt;LblEventChance4.ZOrder" xml:space="preserve">
<value>12</value>
</data>
<data name="LblEndTime.Size" type="System.Drawing.Size, System.Drawing">
<value>56, 17</value>
</data>
<data name="ColFallbackId.Text" xml:space="preserve">
<value>ID</value>
</data>
@@ -1198,11 +1191,14 @@
<data name="&gt;&gt;GrpBalance.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="LblCostItem.Location" type="System.Drawing.Point, System.Drawing">
<value>50, 148</value>
</data>
<data name="&gt;&gt;TxtJson.Parent" xml:space="preserve">
<value>GrpJson</value>
</data>
<data name="&gt;&gt;LblEndTime.Name" xml:space="preserve">
<value>LblEndTime</value>
<data name="$this.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>3, 4, 3, 4</value>
</data>
<data name="LblPoolWeight4.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
@@ -1213,14 +1209,17 @@
<data name="LblCostItem.Size" type="System.Drawing.Size, System.Drawing">
<value>56, 17</value>
</data>
<data name="&gt;&gt;NUDScheduleId.Type" xml:space="preserve">
<value>System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;TxtWeight4.Type" xml:space="preserve">
<value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;ListUpItems.Parent" xml:space="preserve">
<value>GrpUpPool</value>
</data>
<data name="&gt;&gt;ListUpItems.Type" xml:space="preserve">
<value>System.Windows.Forms.ListView, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
<data name="LblPoolWeight5.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="CmbBannerType.Location" type="System.Drawing.Point, System.Drawing">
<value>112, 84</value>
@@ -1231,14 +1230,14 @@
<data name="&gt;&gt;GrpUpPool.Type" xml:space="preserve">
<value>System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;LnkWeightHelp.Parent" xml:space="preserve">
<value>GrpWeights</value>
<data name="LblEventChance4.Text" xml:space="preserve">
<value>4星活动爆率</value>
</data>
<data name="LblEventChance4.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="ColFallbackName.Width" type="System.Int32, mscorlib">
<value>110</value>
<data name="DTPEndTime.Location" type="System.Drawing.Point, System.Drawing">
<value>302, 173</value>
</data>
<data name="ChkAutoStripRateUpFromFallback.Size" type="System.Drawing.Size, System.Drawing">
<value>151, 21</value>
@@ -1255,15 +1254,9 @@
<data name="NUDGachaType.Location" type="System.Drawing.Point, System.Drawing">
<value>112, 26</value>
</data>
<data name="&gt;&gt;RbCostItem224.Type" xml:space="preserve">
<value>System.Windows.Forms.RadioButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="TxtPoolWeight5.Size" type="System.Drawing.Size, System.Drawing">
<value>300, 23</value>
</data>
<data name="ColUpName.Width" type="System.Int32, mscorlib">
<value>110</value>
</data>
<data name="&gt;&gt;DTPBeginTime.Parent" xml:space="preserve">
<value>GrpBannerValues</value>
</data>
@@ -1273,11 +1266,8 @@
<data name="LblScheduleId.Size" type="System.Drawing.Size, System.Drawing">
<value>72, 17</value>
</data>
<data name="&gt;&gt;$this.Name" xml:space="preserve">
<value>FormGachaBannerEditor2</value>
</data>
<data name="LblEndTime.Size" type="System.Drawing.Size, System.Drawing">
<value>56, 17</value>
<data name="&gt;&gt;RbCostItem224.Type" xml:space="preserve">
<value>System.Windows.Forms.RadioButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="GrpBalance.TabIndex" type="System.Int32, mscorlib">
<value>3</value>
@@ -1288,9 +1278,6 @@
<data name="&gt;&gt;GrpUpPool.Name" xml:space="preserve">
<value>GrpUpPool</value>
</data>
<data name="&gt;&gt;LnkWeightHelp.Type" xml:space="preserve">
<value>System.Windows.Forms.LinkLabel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="$this.Font" type="System.Drawing.Font, System.Drawing">
<value>微软雅黑, 9pt</value>
</data>
@@ -1309,9 +1296,6 @@
<data name="&gt;&gt;LblGachaTypeTip.Name" xml:space="preserve">
<value>LblGachaTypeTip</value>
</data>
<data name="$this.MinimumSize" type="System.Drawing.Size, System.Drawing">
<value>1200, 600</value>
</data>
<data name="LblGachaTypeTip.Location" type="System.Drawing.Point, System.Drawing">
<value>218, 28</value>
</data>
@@ -1324,9 +1308,6 @@
<data name="BtnGen.Location" type="System.Drawing.Point, System.Drawing">
<value>6, 201</value>
</data>
<data name="&gt;&gt;TxtPoolWeight5.Name" xml:space="preserve">
<value>TxtPoolWeight5</value>
</data>
<data name="LblScheduleIdTip.Size" type="System.Drawing.Size, System.Drawing">
<value>69, 17</value>
</data>
@@ -1342,8 +1323,8 @@
<data name="TxtWeight5.TabIndex" type="System.Int32, mscorlib">
<value>1</value>
</data>
<data name="ListUpItems.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
<data name="&gt;&gt;BtnGen.Parent" xml:space="preserve">
<value>GrpJson</value>
</data>
<data name="&gt;&gt;LblGachaType.ZOrder" xml:space="preserve">
<value>11</value>
@@ -1375,8 +1356,8 @@
<data name="&gt;&gt;TxtWeight4.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="LnkOpenOldEditor.Text" xml:space="preserve">
<value>打开旧版本编辑器</value>
<data name="LblPoolWeight5.Text" xml:space="preserve">
<value>5星池权重</value>
</data>
<data name="&gt;&gt;LblPoolWeight4.ZOrder" xml:space="preserve">
<value>2</value>
@@ -1390,12 +1371,12 @@
<data name="LblEventChance5.Size" type="System.Drawing.Size, System.Drawing">
<value>75, 17</value>
</data>
<data name="LblPoolWeight5.Size" type="System.Drawing.Size, System.Drawing">
<value>63, 17</value>
</data>
<data name="BtnParse.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Bottom, Right</value>
</data>
<data name="&gt;&gt;LblOptions.Name" xml:space="preserve">
<value>LblOptions</value>
</data>
<data name="&gt;&gt;LblWeight5.Name" xml:space="preserve">
<value>LblWeight5</value>
</data>
@@ -1405,20 +1386,23 @@
<data name="CmbBannerType.Items2" xml:space="preserve">
<value>限时武器祈愿池</value>
</data>
<data name="CmbBannerType.TabIndex" type="System.Int32, mscorlib">
<value>2</value>
<data name="&gt;&gt;GrpFallbackPool.Name" xml:space="preserve">
<value>GrpFallbackPool</value>
</data>
<data name="LblBannerType.Size" type="System.Drawing.Size, System.Drawing">
<value>56, 17</value>
</data>
<data name="NUDGachaType.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
</data>
<data name="&gt;&gt;GrpWeightChart.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;LblEventChance5.ZOrder" xml:space="preserve">
<value>13</value>
</data>
<data name="&gt;&gt;LblOptions.Name" xml:space="preserve">
<value>LblOptions</value>
<data name="LblPrefabPath.Location" type="System.Drawing.Point, System.Drawing">
<value>74, 118</value>
</data>
<data name="&gt;&gt;CmbBannerType.Type" xml:space="preserve">
<value>System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
@@ -1432,8 +1416,8 @@
<data name="LblSortId.Location" type="System.Drawing.Point, System.Drawing">
<value>74, 204</value>
</data>
<data name="GrpWeightChart.TabIndex" type="System.Int32, mscorlib">
<value>7</value>
<data name="&gt;&gt;LblPrefabPath.Name" xml:space="preserve">
<value>LblPrefabPath</value>
</data>
<data name="&gt;&gt;GrpUpPool.ZOrder" xml:space="preserve">
<value>5</value>
@@ -1462,8 +1446,8 @@
<data name="&gt;&gt;LblPoolWeight4.Name" xml:space="preserve">
<value>LblPoolWeight4</value>
</data>
<data name="TxtWeight5.Size" type="System.Drawing.Size, System.Drawing">
<value>300, 23</value>
<data name="LblPrefabPath.Size" type="System.Drawing.Size, System.Drawing">
<value>32, 17</value>
</data>
<data name="ChartWeights.Size" type="System.Drawing.Size, System.Drawing">
<value>494, 280</value>
@@ -1477,8 +1461,8 @@
<data name="LblWeight5.Text" xml:space="preserve">
<value>5星权重</value>
</data>
<data name="LblPrefabPath.TabIndex" type="System.Int32, mscorlib">
<value>61</value>
<data name="&gt;&gt;LblBeginTime.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="ChkAutoStripRateUpFromFallback.TabIndex" type="System.Int32, mscorlib">
<value>92</value>
@@ -1486,8 +1470,8 @@
<data name="&gt;&gt;LblGachaTypeTip.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="LblEventChance5Tip.Text" xml:space="preserve">
<value>%</value>
<data name="$this.MinimumSize" type="System.Drawing.Size, System.Drawing">
<value>1200, 600</value>
</data>
<data name="LblEventChance5.Location" type="System.Drawing.Point, System.Drawing">
<value>31, 233</value>
@@ -1501,11 +1485,17 @@
<data name="LblSortId.TabIndex" type="System.Int32, mscorlib">
<value>75</value>
</data>
<data name="&gt;&gt;LblBannerType.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="DTPBeginTime.TabIndex" type="System.Int32, mscorlib">
<value>6</value>
</data>
<data name="&gt;&gt;ChkAutoStripRateUpFromFallback.Type" xml:space="preserve">
<value>System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;$this.Type" xml:space="preserve">
<value>System.Windows.Forms.Form, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
<data name="&gt;&gt;LnkWeightHelp.Parent" xml:space="preserve">
<value>GrpWeights</value>
</data>
<data name="LblEventChance4.Location" type="System.Drawing.Point, System.Drawing">
<value>221, 233</value>
@@ -1516,8 +1506,8 @@
<data name="LblGachaType.TabIndex" type="System.Int32, mscorlib">
<value>48</value>
</data>
<data name="LblCostItem.Location" type="System.Drawing.Point, System.Drawing">
<value>50, 148</value>
<data name="&gt;&gt;LblWeight5.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;RbCostItem223.ZOrder" xml:space="preserve">
<value>29</value>
@@ -1525,6 +1515,9 @@
<data name="&gt;&gt;LblWeight5.Parent" xml:space="preserve">
<value>GrpWeights</value>
</data>
<data name="LblBeginTime.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="&gt;&gt;GrpFallbackPool.Parent" xml:space="preserve">
<value>$this</value>
</data>
@@ -1534,17 +1527,17 @@
<data name="&gt;&gt;NUDScheduleId.Name" xml:space="preserve">
<value>NUDScheduleId</value>
</data>
<data name="NUDScheduleId.TabIndex" type="System.Int32, mscorlib">
<value>1</value>
<data name="ColUpName.Width" type="System.Int32, mscorlib">
<value>110</value>
</data>
<data name="&gt;&gt;LblBannerType.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
<data name="&gt;&gt;$this.Name" xml:space="preserve">
<value>FormGachaBannerEditor2</value>
</data>
<data name="&gt;&gt;ChkAutoStripRateUpFromFallback.Name" xml:space="preserve">
<value>ChkAutoStripRateUpFromFallback</value>
</data>
<data name="&gt;&gt;ListFallbackItems.ZOrder" xml:space="preserve">
<value>0</value>
<data name="GrpJson.TabIndex" type="System.Int32, mscorlib">
<value>6</value>
</data>
<data name="RbCostItem223.Location" type="System.Drawing.Point, System.Drawing">
<value>192, 146</value>
@@ -1573,8 +1566,8 @@
<data name="LblPoolWeight4.Size" type="System.Drawing.Size, System.Drawing">
<value>63, 17</value>
</data>
<data name="ChkRemoveC6FormPool.Location" type="System.Drawing.Point, System.Drawing">
<value>112, 260</value>
<data name="&gt;&gt;TxtPoolWeight5.Name" xml:space="preserve">
<value>TxtPoolWeight5</value>
</data>
<data name="GrpWeightChart.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Bottom, Left, Right</value>
@@ -1588,23 +1581,20 @@
<data name="&gt;&gt;CmbPrefab.Name" xml:space="preserve">
<value>CmbPrefab</value>
</data>
<data name="&gt;&gt;LblOptions.Parent" xml:space="preserve">
<value>GrpBannerValues</value>
</data>
<data name="GrpBannerValues.Location" type="System.Drawing.Point, System.Drawing">
<value>12, 12</value>
</data>
<data name="&gt;&gt;NUDScheduleId.Parent" xml:space="preserve">
<value>GrpBannerValues</value>
<data name="LblPoolWeight5.Size" type="System.Drawing.Size, System.Drawing">
<value>63, 17</value>
</data>
<data name="LblScheduleId.Text" xml:space="preserve">
<value>ScheduleId</value>
</data>
<data name="&gt;&gt;LblEventChance4.Name" xml:space="preserve">
<value>LblEventChance4</value>
<data name="&gt;&gt;LnkWeightHelp.Type" xml:space="preserve">
<value>System.Windows.Forms.LinkLabel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="LblScheduleId.TabIndex" type="System.Int32, mscorlib">
<value>53</value>
<data name="LnkWeightHelp.Location" type="System.Drawing.Point, System.Drawing">
<value>402, 0</value>
</data>
<data name="LblCostItem.TabIndex" type="System.Int32, mscorlib">
<value>80</value>
@@ -1621,8 +1611,8 @@
<data name="&gt;&gt;LblPoolWeight4.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;CmbBannerType.ZOrder" xml:space="preserve">
<value>23</value>
<data name="&gt;&gt;BtnParse.ZOrder" xml:space="preserve">
<value>2</value>
</data>
<data name="ListUpItems.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 19</value>

View File

@@ -283,9 +283,6 @@
<data name="GrpBannerValues.Text" xml:space="preserve">
<value>Баннер</value>
</data>
<data name="GrpFallbackPool.Text" xml:space="preserve">
<value>Запасной Пул</value>
</data>
<data name="ListFallbackItems.Groups" mimetype="application/x-microsoft.net.object.binary.base64">
<value>
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
@@ -327,16 +324,6 @@
</value>
</data>
<data name="ListFallbackItems.Groups4" mimetype="application/x-microsoft.net.object.binary.base64">
<value>
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACJTeXN0
ZW0uV2luZG93cy5Gb3Jtcy5MaXN0Vmlld0dyb3VwBAAAAAZIZWFkZXIPSGVhZGVyQWxpZ25tZW50A1Rh
ZwROYW1lAQQCAShTeXN0ZW0uV2luZG93cy5Gb3Jtcy5Ib3Jpem9udGFsQWxpZ25tZW50AgAAAAIAAAAG
AwAAAA0zLXN0YXIgYXZhdGFyBfz///8oU3lzdGVtLldpbmRvd3MuRm9ybXMuSG9yaXpvbnRhbEFsaWdu
bWVudAEAAAAHdmFsdWVfXwAIAgAAAAAAAAAKBgUAAAAHR3JvdXBBMws=
</value>
</data>
<data name="ListFallbackItems.Groups5" mimetype="application/x-microsoft.net.object.binary.base64">
<value>
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACJTeXN0
@@ -346,8 +333,8 @@
bWVudAEAAAAHdmFsdWVfXwAIAgAAAAAAAAAKBgUAAAAHR3JvdXBXMws=
</value>
</data>
<data name="GrpUpPool.Text" xml:space="preserve">
<value>Верхний Пул</value>
<data name="GrpFallbackPool.Text" xml:space="preserve">
<value>Запасной Пул</value>
</data>
<data name="ListUpItems.Groups" mimetype="application/x-microsoft.net.object.binary.base64">
<value>
@@ -389,6 +376,9 @@
bWVudAEAAAAHdmFsdWVfXwAIAgAAAAAAAAAKBgUAAAAJR3JvdXBVcFc0Cw==
</value>
</data>
<data name="GrpUpPool.Text" xml:space="preserve">
<value>Верхний Пул</value>
</data>
<data name="BtnGen.Size" type="System.Drawing.Size, System.Drawing">
<value>85, 23</value>
</data>
@@ -404,9 +394,6 @@
<data name="BtnParse.Text" xml:space="preserve">
<value>Загр. Json</value>
</data>
<data name="GrpWeights.Text" xml:space="preserve">
<value>Gacha Веса</value>
</data>
<data name="LnkWeightHelp.Location" type="System.Drawing.Point, System.Drawing">
<value>375, 0</value>
</data>
@@ -434,8 +421,8 @@
<data name="LblWeight5.Text" xml:space="preserve">
<value>Веса 5*</value>
</data>
<data name="GrpBalance.Text" xml:space="preserve">
<value>Баланс персонажа и оружия (работают только смешанные пулы)</value>
<data name="GrpWeights.Text" xml:space="preserve">
<value>Gacha Веса</value>
</data>
<data name="LblPoolWeight4.Location" type="System.Drawing.Point, System.Drawing">
<value>28, 61</value>
@@ -455,6 +442,9 @@
<data name="LblPoolWeight5.Text" xml:space="preserve">
<value>Пул Веса 5*</value>
</data>
<data name="GrpBalance.Text" xml:space="preserve">
<value>Баланс персонажа и оружия (работают только смешанные пулы)</value>
</data>
<data name="GrpWeightChart.Text" xml:space="preserve">
<value>Таблица веса</value>
</data>

View File

@@ -165,6 +165,9 @@
<data name="GrpBannerValues.Text" xml:space="preserve">
<value>卡池參數</value>
</data>
<data name="GrpFallbackPool.Text" xml:space="preserve">
<value>基礎池</value>
</data>
<data name="ListFallbackItems.Groups" mimetype="application/x-microsoft.net.object.binary.base64">
<value>
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
@@ -211,23 +214,10 @@
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACJTeXN0
ZW0uV2luZG93cy5Gb3Jtcy5MaXN0Vmlld0dyb3VwBAAAAAZIZWFkZXIPSGVhZGVyQWxpZ25tZW50A1Rh
ZwROYW1lAQQCAShTeXN0ZW0uV2luZG93cy5Gb3Jtcy5Ib3Jpem9udGFsQWxpZ25tZW50AgAAAAIAAAAG
AwAAAAoz5pif6KeS6ImyBfz///8oU3lzdGVtLldpbmRvd3MuRm9ybXMuSG9yaXpvbnRhbEFsaWdubWVu
dAEAAAAHdmFsdWVfXwAIAgAAAAAAAAAKBgUAAAAHR3JvdXBBMws=
</value>
</data>
<data name="ListFallbackItems.Groups5" mimetype="application/x-microsoft.net.object.binary.base64">
<value>
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACJTeXN0
ZW0uV2luZG93cy5Gb3Jtcy5MaXN0Vmlld0dyb3VwBAAAAAZIZWFkZXIPSGVhZGVyQWxpZ25tZW50A1Rh
ZwROYW1lAQQCAShTeXN0ZW0uV2luZG93cy5Gb3Jtcy5Ib3Jpem9udGFsQWxpZ25tZW50AgAAAAIAAAAG
AwAAAAoz5pif6KeS6ImyBfz///8oU3lzdGVtLldpbmRvd3MuRm9ybXMuSG9yaXpvbnRhbEFsaWdubWVu
AwAAAAoz5pif5q2m5ZmoBfz///8oU3lzdGVtLldpbmRvd3MuRm9ybXMuSG9yaXpvbnRhbEFsaWdubWVu
dAEAAAAHdmFsdWVfXwAIAgAAAAAAAAAKBgUAAAAHR3JvdXBXMws=
</value>
</data>
<data name="GrpFallbackPool.Text" xml:space="preserve">
<value>基礎池</value>
</data>
<data name="ListUpItems.Groups" mimetype="application/x-microsoft.net.object.binary.base64">
<value>
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
@@ -268,6 +258,9 @@
dAEAAAAHdmFsdWVfXwAIAgAAAAAAAAAKBgUAAAAJR3JvdXBVcFc0Cw==
</value>
</data>
<data name="GrpWeights.Text" xml:space="preserve">
<value>卡池權重與保底機制</value>
</data>
<data name="LnkWeightHelp.Text" xml:space="preserve">
<value>幫助</value>
</data>
@@ -277,8 +270,8 @@
<data name="LblWeight5.Text" xml:space="preserve">
<value>5星權重</value>
</data>
<data name="GrpWeights.Text" xml:space="preserve">
<value>卡池權重與保底機制</value>
<data name="GrpBalance.Text" xml:space="preserve">
<value>角色和武器平衡機制(僅混合池有效)</value>
</data>
<data name="LblPoolWeight4.Text" xml:space="preserve">
<value>4星池權重</value>
@@ -286,9 +279,6 @@
<data name="LblPoolWeight5.Text" xml:space="preserve">
<value>5星池權重</value>
</data>
<data name="GrpBalance.Text" xml:space="preserve">
<value>角色和武器平衡機制(僅混合池有效)</value>
</data>
<data name="GrpWeightChart.Text" xml:space="preserve">
<value>權重圖表</value>
</data>

View File

@@ -219,6 +219,7 @@ namespace GrasscutterTools.Forms
this.BtnSaveCustomCommand = new System.Windows.Forms.Button();
this.TxtCustomName = new System.Windows.Forms.TextBox();
this.TPHome = new System.Windows.Forms.TabPage();
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();
@@ -373,6 +374,7 @@ namespace GrasscutterTools.Forms
//
// TPRemoteCall
//
resources.ApplyResources(this.TPRemoteCall, "TPRemoteCall");
this.TPRemoteCall.Controls.Add(this.LnkLinks);
this.TPRemoteCall.Controls.Add(this.LnkGOODHelp);
this.TPRemoteCall.Controls.Add(this.LnkInventoryKamera);
@@ -384,7 +386,6 @@ namespace GrasscutterTools.Forms
this.TPRemoteCall.Controls.Add(this.TxtHost);
this.TPRemoteCall.Controls.Add(this.BtnQueryServerStatus);
this.TPRemoteCall.Controls.Add(this.LblHost);
resources.ApplyResources(this.TPRemoteCall, "TPRemoteCall");
this.TPRemoteCall.Name = "TPRemoteCall";
this.TPRemoteCall.UseVisualStyleBackColor = true;
this.TPRemoteCall.Enter += new System.EventHandler(this.TPRemoteCall_Enter);
@@ -482,14 +483,15 @@ namespace GrasscutterTools.Forms
//
// TPOpenCommandCheck
//
resources.ApplyResources(this.TPOpenCommandCheck, "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
//
resources.ApplyResources(this.TPPlayerCheck, "TPPlayerCheck");
this.TPPlayerCheck.Controls.Add(this.LnkRCHelp);
this.TPPlayerCheck.Controls.Add(this.NUDRemotePlayerId);
this.TPPlayerCheck.Controls.Add(this.BtnConnectOpenCommand);
@@ -497,7 +499,6 @@ namespace GrasscutterTools.Forms
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;
//
@@ -569,11 +570,11 @@ namespace GrasscutterTools.Forms
//
// TPConsoleCheck
//
resources.ApplyResources(this.TPConsoleCheck, "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;
//
@@ -618,10 +619,10 @@ namespace GrasscutterTools.Forms
//
// TPAbout
//
resources.ApplyResources(this.TPAbout, "TPAbout");
this.TPAbout.Controls.Add(this.GrasscutterToolsSupport);
this.TPAbout.Controls.Add(this.LnkGithub);
this.TPAbout.Controls.Add(this.LblSupportDescription);
resources.ApplyResources(this.TPAbout, "TPAbout");
this.TPAbout.Name = "TPAbout";
this.TPAbout.UseVisualStyleBackColor = true;
//
@@ -646,10 +647,10 @@ namespace GrasscutterTools.Forms
//
// TPManage
//
resources.ApplyResources(this.TPManage, "TPManage");
this.TPManage.Controls.Add(this.GrpBanPlayer);
this.TPManage.Controls.Add(this.GrpAccount);
this.TPManage.Controls.Add(this.GrpPermission);
resources.ApplyResources(this.TPManage, "TPManage");
this.TPManage.Name = "TPManage";
this.TPManage.UseVisualStyleBackColor = true;
//
@@ -667,8 +668,8 @@ namespace GrasscutterTools.Forms
//
// DTPBanEndTime
//
this.DTPBanEndTime.Format = System.Windows.Forms.DateTimePickerFormat.Short;
resources.ApplyResources(this.DTPBanEndTime, "DTPBanEndTime");
this.DTPBanEndTime.Format = System.Windows.Forms.DateTimePickerFormat.Short;
this.DTPBanEndTime.MaxDate = new System.DateTime(2034, 12, 31, 0, 0, 0, 0);
this.DTPBanEndTime.MinDate = new System.DateTime(2022, 6, 28, 0, 0, 0, 0);
this.DTPBanEndTime.Name = "DTPBanEndTime";
@@ -690,8 +691,8 @@ namespace GrasscutterTools.Forms
//
// TxtBanReason
//
this.TxtBanReason.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
resources.ApplyResources(this.TxtBanReason, "TxtBanReason");
this.TxtBanReason.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.TxtBanReason.Maximum = 0F;
this.TxtBanReason.Minimum = 0F;
this.TxtBanReason.Name = "TxtBanReason";
@@ -791,10 +792,10 @@ namespace GrasscutterTools.Forms
//
// CmbPerm
//
resources.ApplyResources(this.CmbPerm, "CmbPerm");
this.CmbPerm.AutoCompleteMode = System.Windows.Forms.AutoCompleteMode.SuggestAppend;
this.CmbPerm.AutoCompleteSource = System.Windows.Forms.AutoCompleteSource.ListItems;
this.CmbPerm.FormattingEnabled = true;
resources.ApplyResources(this.CmbPerm, "CmbPerm");
this.CmbPerm.Name = "CmbPerm";
//
// NUDPermUID
@@ -856,6 +857,7 @@ namespace GrasscutterTools.Forms
//
// TPScene
//
resources.ApplyResources(this.TPScene, "TPScene");
this.TPScene.Controls.Add(this.TxtSceneFilter);
this.TPScene.Controls.Add(this.ChkIncludeSceneId);
this.TPScene.Controls.Add(this.LblTpZ);
@@ -870,7 +872,6 @@ namespace GrasscutterTools.Forms
this.TPScene.Controls.Add(this.LblSceneDescription);
this.TPScene.Controls.Add(this.ListScenes);
this.TPScene.Controls.Add(this.LblTp);
resources.ApplyResources(this.TPScene, "TPScene");
this.TPScene.Name = "TPScene";
this.TPScene.UseVisualStyleBackColor = true;
//
@@ -1005,6 +1006,7 @@ namespace GrasscutterTools.Forms
//
// TPItem
//
resources.ApplyResources(this.TPItem, "TPItem");
this.TPItem.Controls.Add(this.LblClearGiveItemLogs);
this.TPItem.Controls.Add(this.BtnSaveGiveItemLog);
this.TPItem.Controls.Add(this.BtnRemoveGiveItemLog);
@@ -1017,7 +1019,6 @@ namespace GrasscutterTools.Forms
this.TPItem.Controls.Add(this.NUDGameItemAmout);
this.TPItem.Controls.Add(this.NUDGameItemLevel);
this.TPItem.Controls.Add(this.LblGiveCommandDescription);
resources.ApplyResources(this.TPItem, "TPItem");
this.TPItem.Name = "TPItem";
this.TPItem.UseVisualStyleBackColor = true;
//
@@ -1135,6 +1136,7 @@ namespace GrasscutterTools.Forms
//
// TPWeapon
//
resources.ApplyResources(this.TPWeapon, "TPWeapon");
this.TPWeapon.Controls.Add(this.BtnGiveAllWeapons);
this.TPWeapon.Controls.Add(this.TxtWeaponFilter);
this.TPWeapon.Controls.Add(this.LblWeaponDescription);
@@ -1145,7 +1147,6 @@ namespace GrasscutterTools.Forms
this.TPWeapon.Controls.Add(this.NUDWeaponAmout);
this.TPWeapon.Controls.Add(this.NUDWeaponLevel);
this.TPWeapon.Controls.Add(this.ListWeapons);
resources.ApplyResources(this.TPWeapon, "TPWeapon");
this.TPWeapon.Name = "TPWeapon";
this.TPWeapon.UseVisualStyleBackColor = true;
//
@@ -1249,20 +1250,20 @@ namespace GrasscutterTools.Forms
//
// TPAvatar
//
resources.ApplyResources(this.TPAvatar, "TPAvatar");
this.TPAvatar.Controls.Add(this.GrpSetConstellation);
this.TPAvatar.Controls.Add(this.GrpSetStats);
this.TPAvatar.Controls.Add(this.GrpTalentLevel);
this.TPAvatar.Controls.Add(this.GrpGiveAvatar);
resources.ApplyResources(this.TPAvatar, "TPAvatar");
this.TPAvatar.Name = "TPAvatar";
this.TPAvatar.UseVisualStyleBackColor = true;
//
// GrpSetConstellation
//
resources.ApplyResources(this.GrpSetConstellation, "GrpSetConstellation");
this.GrpSetConstellation.Controls.Add(this.LnkSetAllConst);
this.GrpSetConstellation.Controls.Add(this.LnkSetConst);
this.GrpSetConstellation.Controls.Add(this.NUDSetConstellation);
resources.ApplyResources(this.GrpSetConstellation, "GrpSetConstellation");
this.GrpSetConstellation.Name = "GrpSetConstellation";
this.GrpSetConstellation.TabStop = false;
//
@@ -1329,9 +1330,9 @@ namespace GrasscutterTools.Forms
//
// LblStatTip
//
resources.ApplyResources(this.LblStatTip, "LblStatTip");
this.LblStatTip.AutoEllipsis = true;
this.LblStatTip.ForeColor = System.Drawing.SystemColors.GrayText;
resources.ApplyResources(this.LblStatTip, "LblStatTip");
this.LblStatTip.Name = "LblStatTip";
//
// LblStatPercent
@@ -1357,9 +1358,9 @@ namespace GrasscutterTools.Forms
//
// CmbStat
//
resources.ApplyResources(this.CmbStat, "CmbStat");
this.CmbStat.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.CmbStat.FormattingEnabled = true;
resources.ApplyResources(this.CmbStat, "CmbStat");
this.CmbStat.Name = "CmbStat";
this.CmbStat.SelectedIndexChanged += new System.EventHandler(this.SetStatsInputChanged);
//
@@ -1439,9 +1440,9 @@ namespace GrasscutterTools.Forms
//
// CmbAvatar
//
resources.ApplyResources(this.CmbAvatar, "CmbAvatar");
this.CmbAvatar.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.CmbAvatar.FormattingEnabled = true;
resources.ApplyResources(this.CmbAvatar, "CmbAvatar");
this.CmbAvatar.Name = "CmbAvatar";
this.CmbAvatar.SelectedIndexChanged += new System.EventHandler(this.CmbAvatar_SelectedIndexChanged);
//
@@ -1533,6 +1534,7 @@ namespace GrasscutterTools.Forms
//
// TPSpawn
//
resources.ApplyResources(this.TPSpawn, "TPSpawn");
this.TPSpawn.Controls.Add(this.ChkInfiniteHP);
this.TPSpawn.Controls.Add(this.LblClearSpawnLogs);
this.TPSpawn.Controls.Add(this.BtnSaveSpawnLog);
@@ -1545,7 +1547,6 @@ namespace GrasscutterTools.Forms
this.TPSpawn.Controls.Add(this.NUDEntityLevel);
this.TPSpawn.Controls.Add(this.TxtEntityFilter);
this.TPSpawn.Controls.Add(this.ListEntity);
resources.ApplyResources(this.TPSpawn, "TPSpawn");
this.TPSpawn.Name = "TPSpawn";
this.TPSpawn.UseVisualStyleBackColor = true;
//
@@ -1670,13 +1671,13 @@ namespace GrasscutterTools.Forms
//
// TPQuest
//
resources.ApplyResources(this.TPQuest, "TPQuest");
this.TPQuest.Controls.Add(this.GrpQuestFilters);
this.TPQuest.Controls.Add(this.BtnFinishQuest);
this.TPQuest.Controls.Add(this.BtnAddQuest);
this.TPQuest.Controls.Add(this.LblQuestDescription);
this.TPQuest.Controls.Add(this.TxtQuestFilter);
this.TPQuest.Controls.Add(this.ListQuest);
resources.ApplyResources(this.TPQuest, "TPQuest");
this.TPQuest.Name = "TPQuest";
this.TPQuest.UseVisualStyleBackColor = true;
//
@@ -1748,6 +1749,7 @@ namespace GrasscutterTools.Forms
//
// TPArtifact
//
resources.ApplyResources(this.TPArtifact, "TPArtifact");
this.TPArtifact.Controls.Add(this.LblArtifactLevelTip);
this.TPArtifact.Controls.Add(this.BtnAddSubAttr);
this.TPArtifact.Controls.Add(this.LblArtifactName);
@@ -1767,7 +1769,6 @@ namespace GrasscutterTools.Forms
this.TPArtifact.Controls.Add(this.NUDArtifactLevel);
this.TPArtifact.Controls.Add(this.LblArtifactStars);
this.TPArtifact.Controls.Add(this.NUDArtifactStars);
resources.ApplyResources(this.TPArtifact, "TPArtifact");
this.TPArtifact.Name = "TPArtifact";
this.TPArtifact.UseVisualStyleBackColor = true;
//
@@ -1933,6 +1934,7 @@ namespace GrasscutterTools.Forms
//
// TPCustom
//
resources.ApplyResources(this.TPCustom, "TPCustom");
this.TPCustom.Controls.Add(this.BtnExportCustomCommands);
this.TPCustom.Controls.Add(this.BtnLoadCustomCommands);
this.TPCustom.Controls.Add(this.LblCustomName);
@@ -1940,7 +1942,6 @@ namespace GrasscutterTools.Forms
this.TPCustom.Controls.Add(this.BtnRemoveCustomCommand);
this.TPCustom.Controls.Add(this.BtnSaveCustomCommand);
this.TPCustom.Controls.Add(this.TxtCustomName);
resources.ApplyResources(this.TPCustom, "TPCustom");
this.TPCustom.Name = "TPCustom";
this.TPCustom.UseVisualStyleBackColor = true;
//
@@ -2004,6 +2005,8 @@ namespace GrasscutterTools.Forms
//
// TPHome
//
resources.ApplyResources(this.TPHome, "TPHome");
this.TPHome.Controls.Add(this.BtnOpenShopEditor);
this.TPHome.Controls.Add(this.BtnOpenDropEditor);
this.TPHome.Controls.Add(this.LnkNewVersion);
this.TPHome.Controls.Add(this.LblAbout);
@@ -2011,10 +2014,16 @@ namespace GrasscutterTools.Forms
this.TPHome.Controls.Add(this.BtnOpenGachaBannerEditor);
this.TPHome.Controls.Add(this.GrasscutterToolsIcon);
this.TPHome.Controls.Add(this.GrpSettings);
resources.ApplyResources(this.TPHome, "TPHome");
this.TPHome.Name = "TPHome";
this.TPHome.UseVisualStyleBackColor = true;
//
// 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");
@@ -2076,9 +2085,9 @@ namespace GrasscutterTools.Forms
//
// CmbGcVersions
//
resources.ApplyResources(this.CmbGcVersions, "CmbGcVersions");
this.CmbGcVersions.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.CmbGcVersions.FormattingEnabled = true;
resources.ApplyResources(this.CmbGcVersions, "CmbGcVersions");
this.CmbGcVersions.Name = "CmbGcVersions";
//
// ChkTopMost
@@ -2089,9 +2098,9 @@ namespace GrasscutterTools.Forms
//
// CmbLanguage
//
resources.ApplyResources(this.CmbLanguage, "CmbLanguage");
this.CmbLanguage.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.CmbLanguage.FormattingEnabled = true;
resources.ApplyResources(this.CmbLanguage, "CmbLanguage");
this.CmbLanguage.Name = "CmbLanguage";
//
// LblLanguage
@@ -2146,6 +2155,7 @@ namespace GrasscutterTools.Forms
//
// TPMail
//
resources.ApplyResources(this.TPMail, "TPMail");
this.TPMail.Controls.Add(this.LblClearMailContent);
this.TPMail.Controls.Add(this.BtnAddMailItem);
this.TPMail.Controls.Add(this.BtnDeleteMailItem);
@@ -2163,7 +2173,6 @@ namespace GrasscutterTools.Forms
this.TPMail.Controls.Add(this.LblMailTitleLabel);
this.TPMail.Controls.Add(this.TxtMailSender);
this.TPMail.Controls.Add(this.LblMailSenderLabel);
resources.ApplyResources(this.TPMail, "TPMail");
this.TPMail.Name = "TPMail";
this.TPMail.UseVisualStyleBackColor = true;
//
@@ -2198,10 +2207,10 @@ namespace GrasscutterTools.Forms
//
// tabPage1
//
resources.ApplyResources(this.tabPage1, "tabPage1");
this.tabPage1.Controls.Add(this.TxtMailSelectableItemFilter);
this.tabPage1.Controls.Add(this.ListMailSelectableItems);
this.tabPage1.Controls.Add(this.PanelMailItemArgs);
resources.ApplyResources(this.tabPage1, "tabPage1");
this.tabPage1.Name = "tabPage1";
this.tabPage1.UseVisualStyleBackColor = true;
//
@@ -2219,11 +2228,11 @@ namespace GrasscutterTools.Forms
//
// PanelMailItemArgs
//
resources.ApplyResources(this.PanelMailItemArgs, "PanelMailItemArgs");
this.PanelMailItemArgs.Controls.Add(this.NUDMailItemLevel);
this.PanelMailItemArgs.Controls.Add(this.NUDMailItemCount);
this.PanelMailItemArgs.Controls.Add(this.LblMailItemCount);
this.PanelMailItemArgs.Controls.Add(this.LblMailItemLevel);
resources.ApplyResources(this.PanelMailItemArgs, "PanelMailItemArgs");
this.PanelMailItemArgs.Name = "PanelMailItemArgs";
//
// NUDMailItemLevel
@@ -2278,9 +2287,9 @@ namespace GrasscutterTools.Forms
//
// tabPage2
//
resources.ApplyResources(this.tabPage2, "tabPage2");
this.tabPage2.Controls.Add(this.ListMailList);
this.tabPage2.Controls.Add(this.PanelMailListControls);
resources.ApplyResources(this.tabPage2, "tabPage2");
this.tabPage2.Name = "tabPage2";
this.tabPage2.UseVisualStyleBackColor = true;
//
@@ -2293,9 +2302,9 @@ namespace GrasscutterTools.Forms
//
// PanelMailListControls
//
resources.ApplyResources(this.PanelMailListControls, "PanelMailListControls");
this.PanelMailListControls.Controls.Add(this.BtnClearMail);
this.PanelMailListControls.Controls.Add(this.BtnRemoveMail);
resources.ApplyResources(this.PanelMailListControls, "PanelMailListControls");
this.PanelMailListControls.Name = "PanelMailListControls";
//
// BtnClearMail
@@ -2743,5 +2752,6 @@ namespace GrasscutterTools.Forms
private System.Windows.Forms.LinkLabel LnkSetConst;
private System.Windows.Forms.NumericUpDown NUDSetConstellation;
private System.Windows.Forms.FlowLayoutPanel FLPEntityType;
private System.Windows.Forms.Button BtnOpenShopEditor;
}
}

View File

@@ -65,6 +65,7 @@ namespace GrasscutterTools.Forms
Text += " - by jie65535 - v" + AppVersion.ToString(3);
#if DEBUG
Text += "-debug";
//Text += "-debug -攻击修改特供版";
#endif
GameData.LoadResources();
@@ -295,6 +296,27 @@ namespace GrasscutterTools.Forms
}
}
/// <summary>
/// 商店编辑器窗口实例
/// </summary>
private FormShopEditor ShopEditor;
/// <summary>
/// 点击打开商店编辑器时触发
/// </summary>
private void BtnOpenShopEditor_Click(object sender, EventArgs e)
{
if (ShopEditor == null || ShopEditor.IsDisposed)
{
ShopEditor = new FormShopEditor();
ShopEditor.Show();
}
else
{
ToTop(ShopEditor);
}
}
/// <summary>
/// 语言选中项改变时触发
/// </summary>
@@ -1184,6 +1206,11 @@ namespace GrasscutterTools.Forms
if (!string.IsNullOrEmpty(selectedItem))
{
var id = ItemMap.ToId(selectedItem);
//// 自定义攻击Gadget特供版
//SetCommand("/at", $"set n {id}");
//return true;
if (Check(CommandVersion.V1_3_1))
SetCommand("/spawn", $"{id} x{NUDEntityAmout.Value} lv{NUDEntityLevel.Value}" + (ChkInfiniteHP.Checked ? " hp0" : ""));
else

View File

@@ -217,9 +217,6 @@
<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>
@@ -664,18 +661,6 @@ In the command, you can use ~ to indicate the current position, and ~N to indica
<data name="GrpEntityType.Text" xml:space="preserve">
<value>Class</value>
</data>
<data name="RbEntityMonster.Size" type="System.Drawing.Size, System.Drawing">
<value>75, 21</value>
</data>
<data name="RbEntityMonster.Text" xml:space="preserve">
<value>Monster</value>
</data>
<data name="RbEntityAnimal.Size" type="System.Drawing.Size, System.Drawing">
<value>65, 21</value>
</data>
<data name="RbEntityAnimal.Text" xml:space="preserve">
<value>Animal</value>
</data>
<data name="LblEntityAmount.Size" type="System.Drawing.Size, System.Drawing">
<value>53, 17</value>
</data>
@@ -855,6 +840,9 @@ Therefore, the quest can be added and finished, but not necessarily work.</value
<data name="TPHome.Text" xml:space="preserve">
<value>Home</value>
</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>

File diff suppressed because it is too large Load Diff

View File

@@ -868,18 +868,6 @@
<data name="GrpSpawnRecord.Text" xml:space="preserve">
<value>Список мобов</value>
</data>
<data name="RbEntityMonster.Size" type="System.Drawing.Size, System.Drawing">
<value>82, 21</value>
</data>
<data name="RbEntityMonster.Text" xml:space="preserve">
<value>Монстры</value>
</data>
<data name="RbEntityAnimal.Size" type="System.Drawing.Size, System.Drawing">
<value>89, 21</value>
</data>
<data name="RbEntityAnimal.Text" xml:space="preserve">
<value>Животные</value>
</data>
<data name="FLPEntityType.Size" type="System.Drawing.Size, System.Drawing">
<value>97, 183</value>
</data>
@@ -1083,6 +1071,12 @@
<data name="TPCustom.Text" xml:space="preserve">
<value>Кастомное</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, 216</value>
</data>
@@ -1284,8 +1278,4 @@
<data name="TPMail.Text" xml:space="preserve">
<value>Почта</value>
</data>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="$this.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
</root>

View File

@@ -347,21 +347,6 @@
<data name="GrpEntityType.Text" xml:space="preserve">
<value>列表分類</value>
</data>
<data name="RbEntityAnimal.Size" type="System.Drawing.Size, System.Drawing">
<value>62, 21</value>
</data>
<data name="RbEntityAnimal.Text" xml:space="preserve">
<value>生物誌</value>
</data>
<data name="RbEntityMonster.Size" type="System.Drawing.Size, System.Drawing">
<value>74, 21</value>
</data>
<data name="RbEntityMonster.Text" xml:space="preserve">
<value>討伐對象</value>
</data>
<data name="LblSpawnDescription.Text" xml:space="preserve">
<value>在玩家附近召喚生物</value>
</data>
<data name="LblEntityAmount.Text" xml:space="preserve">
<value>數量</value>
</data>
@@ -430,6 +415,9 @@
<data name="TPHome.Text" xml:space="preserve">
<value>主頁</value>
</data>
<data name="BtnOpenShopEditor.Text" xml:space="preserve">
<value>商店編輯器</value>
</data>
<data name="BtnOpenDropEditor.Text" xml:space="preserve">
<value>掉落物編輯器</value>
</data>
@@ -445,10 +433,6 @@
<data name="TPMail.Text" xml:space="preserve">
<value>郵件</value>
</data>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="LblClearMailContent.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="BtnDeleteMailItem.Text" xml:space="preserve">
<value>- 刪除</value>
</data>

View File

@@ -0,0 +1,702 @@
namespace GrasscutterTools.Forms
{
partial class FormShopEditor
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FormShopEditor));
this.ListShop = new System.Windows.Forms.ListBox();
this.ListGoods = new System.Windows.Forms.ListBox();
this.ListItems = new System.Windows.Forms.ListBox();
this.GrpShopList = new System.Windows.Forms.GroupBox();
this.GrpGoodsList = new System.Windows.Forms.GroupBox();
this.BtnClearGoods = new System.Windows.Forms.Button();
this.BtnDeleteGoods = new System.Windows.Forms.Button();
this.GrpItems = new System.Windows.Forms.GroupBox();
this.TxtItemFilter = new System.Windows.Forms.TextBox();
this.GrpGoodsInfo = new System.Windows.Forms.GroupBox();
this.BtnSaveGoods = new System.Windows.Forms.Button();
this.CmbRefreshType = new System.Windows.Forms.ComboBox();
this.NUDRefreshParm = new System.Windows.Forms.NumericUpDown();
this.DTPEndTime = new System.Windows.Forms.DateTimePicker();
this.DTPBeginTime = new System.Windows.Forms.DateTimePicker();
this.NUDGoodsId = new System.Windows.Forms.NumericUpDown();
this.NUDMaxLevel = new System.Windows.Forms.NumericUpDown();
this.NUDMinLevel = new System.Windows.Forms.NumericUpDown();
this.NUDCostItem4 = new System.Windows.Forms.NumericUpDown();
this.NUDCostItem3 = new System.Windows.Forms.NumericUpDown();
this.NUDCostItem2 = new System.Windows.Forms.NumericUpDown();
this.NUDCostItem1 = new System.Windows.Forms.NumericUpDown();
this.NUDCostMcoin = new System.Windows.Forms.NumericUpDown();
this.NUDCostScoin = new System.Windows.Forms.NumericUpDown();
this.NUDCostHcoin = new System.Windows.Forms.NumericUpDown();
this.NUDBuyLimit = new System.Windows.Forms.NumericUpDown();
this.NUDCostItem4Count = new System.Windows.Forms.NumericUpDown();
this.NUDCostItem3Count = new System.Windows.Forms.NumericUpDown();
this.NUDCostItem2Count = new System.Windows.Forms.NumericUpDown();
this.NUDCostItem1Count = new System.Windows.Forms.NumericUpDown();
this.NUDGoodsItemCount = new System.Windows.Forms.NumericUpDown();
this.TxtGoodsItem = new System.Windows.Forms.TextBox();
this.LblRefreshModeLabel = new System.Windows.Forms.Label();
this.LblBuyLevelLabel = new System.Windows.Forms.Label();
this.LblEndTimeLabel = new System.Windows.Forms.Label();
this.LblBeginTimeLabel = new System.Windows.Forms.Label();
this.LblCostItem4Label = new System.Windows.Forms.Label();
this.LblCostItem3Label = new System.Windows.Forms.Label();
this.LblCostItem2Label = new System.Windows.Forms.Label();
this.LblCostItem1Label = new System.Windows.Forms.Label();
this.LblCostMcoinLabel = new System.Windows.Forms.Label();
this.LblCostScoinLabel = new System.Windows.Forms.Label();
this.LblCostHcoinLabel = new System.Windows.Forms.Label();
this.LblBuyLimitLabel = new System.Windows.Forms.Label();
this.LblGoodsIdLabel = new System.Windows.Forms.Label();
this.LblGoodsItemLabel = new System.Windows.Forms.Label();
this.label13 = new System.Windows.Forms.Label();
this.label12 = new System.Windows.Forms.Label();
this.label11 = new System.Windows.Forms.Label();
this.label14 = new System.Windows.Forms.Label();
this.LnkGenGoodsId = new System.Windows.Forms.LinkLabel();
this.label18 = new System.Windows.Forms.Label();
this.label1 = new System.Windows.Forms.Label();
this.BtnSave = new System.Windows.Forms.Button();
this.BtnLoad = new System.Windows.Forms.Button();
this.TxtShopJsonPath = new System.Windows.Forms.TextBox();
this.LblShopPathLabel = new System.Windows.Forms.Label();
this.GrpShopList.SuspendLayout();
this.GrpGoodsList.SuspendLayout();
this.GrpItems.SuspendLayout();
this.GrpGoodsInfo.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.NUDRefreshParm)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.NUDGoodsId)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.NUDMaxLevel)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.NUDMinLevel)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.NUDCostItem4)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.NUDCostItem3)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.NUDCostItem2)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.NUDCostItem1)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.NUDCostMcoin)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.NUDCostScoin)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.NUDCostHcoin)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.NUDBuyLimit)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.NUDCostItem4Count)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.NUDCostItem3Count)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.NUDCostItem2Count)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.NUDCostItem1Count)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.NUDGoodsItemCount)).BeginInit();
this.SuspendLayout();
//
// ListShop
//
resources.ApplyResources(this.ListShop, "ListShop");
this.ListShop.FormattingEnabled = true;
this.ListShop.Name = "ListShop";
this.ListShop.SelectedIndexChanged += new System.EventHandler(this.ListShop_SelectedIndexChanged);
//
// ListGoods
//
resources.ApplyResources(this.ListGoods, "ListGoods");
this.ListGoods.FormattingEnabled = true;
this.ListGoods.Name = "ListGoods";
this.ListGoods.SelectedIndexChanged += new System.EventHandler(this.ListGoods_SelectedIndexChanged);
//
// ListItems
//
resources.ApplyResources(this.ListItems, "ListItems");
this.ListItems.FormattingEnabled = true;
this.ListItems.Name = "ListItems";
this.ListItems.SelectedIndexChanged += new System.EventHandler(this.ListItems_SelectedIndexChanged);
//
// GrpShopList
//
resources.ApplyResources(this.GrpShopList, "GrpShopList");
this.GrpShopList.Controls.Add(this.ListShop);
this.GrpShopList.Name = "GrpShopList";
this.GrpShopList.TabStop = false;
//
// GrpGoodsList
//
resources.ApplyResources(this.GrpGoodsList, "GrpGoodsList");
this.GrpGoodsList.Controls.Add(this.BtnClearGoods);
this.GrpGoodsList.Controls.Add(this.BtnDeleteGoods);
this.GrpGoodsList.Controls.Add(this.ListGoods);
this.GrpGoodsList.Name = "GrpGoodsList";
this.GrpGoodsList.TabStop = false;
//
// BtnClearGoods
//
resources.ApplyResources(this.BtnClearGoods, "BtnClearGoods");
this.BtnClearGoods.Name = "BtnClearGoods";
this.BtnClearGoods.UseVisualStyleBackColor = true;
this.BtnClearGoods.Click += new System.EventHandler(this.BtnClearGoods_Click);
//
// BtnDeleteGoods
//
resources.ApplyResources(this.BtnDeleteGoods, "BtnDeleteGoods");
this.BtnDeleteGoods.Name = "BtnDeleteGoods";
this.BtnDeleteGoods.UseVisualStyleBackColor = true;
this.BtnDeleteGoods.Click += new System.EventHandler(this.BtnDeleteGoods_Click);
//
// GrpItems
//
resources.ApplyResources(this.GrpItems, "GrpItems");
this.GrpItems.Controls.Add(this.TxtItemFilter);
this.GrpItems.Controls.Add(this.ListItems);
this.GrpItems.Name = "GrpItems";
this.GrpItems.TabStop = false;
//
// TxtItemFilter
//
resources.ApplyResources(this.TxtItemFilter, "TxtItemFilter");
this.TxtItemFilter.Name = "TxtItemFilter";
this.TxtItemFilter.TextChanged += new System.EventHandler(this.TxtItemFilter_TextChanged);
//
// GrpGoodsInfo
//
resources.ApplyResources(this.GrpGoodsInfo, "GrpGoodsInfo");
this.GrpGoodsInfo.Controls.Add(this.BtnSaveGoods);
this.GrpGoodsInfo.Controls.Add(this.CmbRefreshType);
this.GrpGoodsInfo.Controls.Add(this.NUDRefreshParm);
this.GrpGoodsInfo.Controls.Add(this.DTPEndTime);
this.GrpGoodsInfo.Controls.Add(this.DTPBeginTime);
this.GrpGoodsInfo.Controls.Add(this.NUDGoodsId);
this.GrpGoodsInfo.Controls.Add(this.NUDMaxLevel);
this.GrpGoodsInfo.Controls.Add(this.NUDMinLevel);
this.GrpGoodsInfo.Controls.Add(this.NUDCostItem4);
this.GrpGoodsInfo.Controls.Add(this.NUDCostItem3);
this.GrpGoodsInfo.Controls.Add(this.NUDCostItem2);
this.GrpGoodsInfo.Controls.Add(this.NUDCostItem1);
this.GrpGoodsInfo.Controls.Add(this.NUDCostMcoin);
this.GrpGoodsInfo.Controls.Add(this.NUDCostScoin);
this.GrpGoodsInfo.Controls.Add(this.NUDCostHcoin);
this.GrpGoodsInfo.Controls.Add(this.NUDBuyLimit);
this.GrpGoodsInfo.Controls.Add(this.NUDCostItem4Count);
this.GrpGoodsInfo.Controls.Add(this.NUDCostItem3Count);
this.GrpGoodsInfo.Controls.Add(this.NUDCostItem2Count);
this.GrpGoodsInfo.Controls.Add(this.NUDCostItem1Count);
this.GrpGoodsInfo.Controls.Add(this.NUDGoodsItemCount);
this.GrpGoodsInfo.Controls.Add(this.TxtGoodsItem);
this.GrpGoodsInfo.Controls.Add(this.LblRefreshModeLabel);
this.GrpGoodsInfo.Controls.Add(this.LblBuyLevelLabel);
this.GrpGoodsInfo.Controls.Add(this.LblEndTimeLabel);
this.GrpGoodsInfo.Controls.Add(this.LblBeginTimeLabel);
this.GrpGoodsInfo.Controls.Add(this.LblCostItem4Label);
this.GrpGoodsInfo.Controls.Add(this.LblCostItem3Label);
this.GrpGoodsInfo.Controls.Add(this.LblCostItem2Label);
this.GrpGoodsInfo.Controls.Add(this.LblCostItem1Label);
this.GrpGoodsInfo.Controls.Add(this.LblCostMcoinLabel);
this.GrpGoodsInfo.Controls.Add(this.LblCostScoinLabel);
this.GrpGoodsInfo.Controls.Add(this.LblCostHcoinLabel);
this.GrpGoodsInfo.Controls.Add(this.LblBuyLimitLabel);
this.GrpGoodsInfo.Controls.Add(this.LblGoodsIdLabel);
this.GrpGoodsInfo.Controls.Add(this.LblGoodsItemLabel);
this.GrpGoodsInfo.Controls.Add(this.label13);
this.GrpGoodsInfo.Controls.Add(this.label12);
this.GrpGoodsInfo.Controls.Add(this.label11);
this.GrpGoodsInfo.Controls.Add(this.label14);
this.GrpGoodsInfo.Controls.Add(this.LnkGenGoodsId);
this.GrpGoodsInfo.Controls.Add(this.label18);
this.GrpGoodsInfo.Controls.Add(this.label1);
this.GrpGoodsInfo.Name = "GrpGoodsInfo";
this.GrpGoodsInfo.TabStop = false;
//
// BtnSaveGoods
//
resources.ApplyResources(this.BtnSaveGoods, "BtnSaveGoods");
this.BtnSaveGoods.Name = "BtnSaveGoods";
this.BtnSaveGoods.UseVisualStyleBackColor = true;
this.BtnSaveGoods.Click += new System.EventHandler(this.BtnSaveGoods_Click);
//
// CmbRefreshType
//
resources.ApplyResources(this.CmbRefreshType, "CmbRefreshType");
this.CmbRefreshType.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.CmbRefreshType.FormattingEnabled = true;
this.CmbRefreshType.Items.AddRange(new object[] {
resources.GetString("CmbRefreshType.Items"),
resources.GetString("CmbRefreshType.Items1"),
resources.GetString("CmbRefreshType.Items2"),
resources.GetString("CmbRefreshType.Items3")});
this.CmbRefreshType.Name = "CmbRefreshType";
this.CmbRefreshType.SelectedIndexChanged += new System.EventHandler(this.CmbRefreshType_SelectedIndexChanged);
//
// NUDRefreshParm
//
resources.ApplyResources(this.NUDRefreshParm, "NUDRefreshParm");
this.NUDRefreshParm.Maximum = new decimal(new int[] {
1000,
0,
0,
0});
this.NUDRefreshParm.Name = "NUDRefreshParm";
//
// DTPEndTime
//
resources.ApplyResources(this.DTPEndTime, "DTPEndTime");
this.DTPEndTime.Format = System.Windows.Forms.DateTimePickerFormat.Custom;
this.DTPEndTime.Name = "DTPEndTime";
this.DTPEndTime.Value = new System.DateTime(2035, 1, 1, 0, 0, 0, 0);
//
// DTPBeginTime
//
resources.ApplyResources(this.DTPBeginTime, "DTPBeginTime");
this.DTPBeginTime.Format = System.Windows.Forms.DateTimePickerFormat.Custom;
this.DTPBeginTime.Name = "DTPBeginTime";
this.DTPBeginTime.Value = new System.DateTime(2022, 1, 1, 0, 0, 0, 0);
//
// NUDGoodsId
//
resources.ApplyResources(this.NUDGoodsId, "NUDGoodsId");
this.NUDGoodsId.Maximum = new decimal(new int[] {
2147483647,
0,
0,
0});
this.NUDGoodsId.Name = "NUDGoodsId";
this.NUDGoodsId.Value = new decimal(new int[] {
101001,
0,
0,
0});
//
// NUDMaxLevel
//
resources.ApplyResources(this.NUDMaxLevel, "NUDMaxLevel");
this.NUDMaxLevel.Maximum = new decimal(new int[] {
99,
0,
0,
0});
this.NUDMaxLevel.Name = "NUDMaxLevel";
this.NUDMaxLevel.Value = new decimal(new int[] {
61,
0,
0,
0});
//
// NUDMinLevel
//
resources.ApplyResources(this.NUDMinLevel, "NUDMinLevel");
this.NUDMinLevel.Maximum = new decimal(new int[] {
99,
0,
0,
0});
this.NUDMinLevel.Name = "NUDMinLevel";
this.NUDMinLevel.Value = new decimal(new int[] {
1,
0,
0,
0});
//
// NUDCostItem4
//
resources.ApplyResources(this.NUDCostItem4, "NUDCostItem4");
this.NUDCostItem4.Maximum = new decimal(new int[] {
2147483647,
0,
0,
0});
this.NUDCostItem4.Name = "NUDCostItem4";
//
// NUDCostItem3
//
resources.ApplyResources(this.NUDCostItem3, "NUDCostItem3");
this.NUDCostItem3.Maximum = new decimal(new int[] {
2147483647,
0,
0,
0});
this.NUDCostItem3.Name = "NUDCostItem3";
//
// NUDCostItem2
//
resources.ApplyResources(this.NUDCostItem2, "NUDCostItem2");
this.NUDCostItem2.Maximum = new decimal(new int[] {
2147483647,
0,
0,
0});
this.NUDCostItem2.Name = "NUDCostItem2";
//
// NUDCostItem1
//
resources.ApplyResources(this.NUDCostItem1, "NUDCostItem1");
this.NUDCostItem1.Maximum = new decimal(new int[] {
2147483647,
0,
0,
0});
this.NUDCostItem1.Name = "NUDCostItem1";
//
// NUDCostMcoin
//
resources.ApplyResources(this.NUDCostMcoin, "NUDCostMcoin");
this.NUDCostMcoin.Maximum = new decimal(new int[] {
2147483647,
0,
0,
0});
this.NUDCostMcoin.Name = "NUDCostMcoin";
//
// NUDCostScoin
//
resources.ApplyResources(this.NUDCostScoin, "NUDCostScoin");
this.NUDCostScoin.Maximum = new decimal(new int[] {
2147483647,
0,
0,
0});
this.NUDCostScoin.Name = "NUDCostScoin";
//
// NUDCostHcoin
//
resources.ApplyResources(this.NUDCostHcoin, "NUDCostHcoin");
this.NUDCostHcoin.Maximum = new decimal(new int[] {
2147483647,
0,
0,
0});
this.NUDCostHcoin.Name = "NUDCostHcoin";
//
// NUDBuyLimit
//
resources.ApplyResources(this.NUDBuyLimit, "NUDBuyLimit");
this.NUDBuyLimit.Maximum = new decimal(new int[] {
2147483647,
0,
0,
0});
this.NUDBuyLimit.Minimum = new decimal(new int[] {
1,
0,
0,
0});
this.NUDBuyLimit.Name = "NUDBuyLimit";
this.NUDBuyLimit.Value = new decimal(new int[] {
100,
0,
0,
0});
//
// NUDCostItem4Count
//
resources.ApplyResources(this.NUDCostItem4Count, "NUDCostItem4Count");
this.NUDCostItem4Count.Maximum = new decimal(new int[] {
2147483647,
0,
0,
0});
this.NUDCostItem4Count.Name = "NUDCostItem4Count";
//
// NUDCostItem3Count
//
resources.ApplyResources(this.NUDCostItem3Count, "NUDCostItem3Count");
this.NUDCostItem3Count.Maximum = new decimal(new int[] {
2147483647,
0,
0,
0});
this.NUDCostItem3Count.Name = "NUDCostItem3Count";
//
// NUDCostItem2Count
//
resources.ApplyResources(this.NUDCostItem2Count, "NUDCostItem2Count");
this.NUDCostItem2Count.Maximum = new decimal(new int[] {
2147483647,
0,
0,
0});
this.NUDCostItem2Count.Name = "NUDCostItem2Count";
//
// NUDCostItem1Count
//
resources.ApplyResources(this.NUDCostItem1Count, "NUDCostItem1Count");
this.NUDCostItem1Count.Maximum = new decimal(new int[] {
2147483647,
0,
0,
0});
this.NUDCostItem1Count.Name = "NUDCostItem1Count";
//
// NUDGoodsItemCount
//
resources.ApplyResources(this.NUDGoodsItemCount, "NUDGoodsItemCount");
this.NUDGoodsItemCount.Maximum = new decimal(new int[] {
2147483647,
0,
0,
0});
this.NUDGoodsItemCount.Minimum = new decimal(new int[] {
1,
0,
0,
0});
this.NUDGoodsItemCount.Name = "NUDGoodsItemCount";
this.NUDGoodsItemCount.Value = new decimal(new int[] {
1,
0,
0,
0});
//
// TxtGoodsItem
//
resources.ApplyResources(this.TxtGoodsItem, "TxtGoodsItem");
this.TxtGoodsItem.Name = "TxtGoodsItem";
//
// LblRefreshModeLabel
//
resources.ApplyResources(this.LblRefreshModeLabel, "LblRefreshModeLabel");
this.LblRefreshModeLabel.Name = "LblRefreshModeLabel";
//
// LblBuyLevelLabel
//
resources.ApplyResources(this.LblBuyLevelLabel, "LblBuyLevelLabel");
this.LblBuyLevelLabel.Name = "LblBuyLevelLabel";
//
// LblEndTimeLabel
//
resources.ApplyResources(this.LblEndTimeLabel, "LblEndTimeLabel");
this.LblEndTimeLabel.Name = "LblEndTimeLabel";
//
// LblBeginTimeLabel
//
resources.ApplyResources(this.LblBeginTimeLabel, "LblBeginTimeLabel");
this.LblBeginTimeLabel.Name = "LblBeginTimeLabel";
//
// LblCostItem4Label
//
resources.ApplyResources(this.LblCostItem4Label, "LblCostItem4Label");
this.LblCostItem4Label.Name = "LblCostItem4Label";
//
// LblCostItem3Label
//
resources.ApplyResources(this.LblCostItem3Label, "LblCostItem3Label");
this.LblCostItem3Label.Name = "LblCostItem3Label";
//
// LblCostItem2Label
//
resources.ApplyResources(this.LblCostItem2Label, "LblCostItem2Label");
this.LblCostItem2Label.Name = "LblCostItem2Label";
//
// LblCostItem1Label
//
resources.ApplyResources(this.LblCostItem1Label, "LblCostItem1Label");
this.LblCostItem1Label.Name = "LblCostItem1Label";
//
// LblCostMcoinLabel
//
resources.ApplyResources(this.LblCostMcoinLabel, "LblCostMcoinLabel");
this.LblCostMcoinLabel.Name = "LblCostMcoinLabel";
//
// LblCostScoinLabel
//
resources.ApplyResources(this.LblCostScoinLabel, "LblCostScoinLabel");
this.LblCostScoinLabel.Name = "LblCostScoinLabel";
//
// LblCostHcoinLabel
//
resources.ApplyResources(this.LblCostHcoinLabel, "LblCostHcoinLabel");
this.LblCostHcoinLabel.Name = "LblCostHcoinLabel";
//
// LblBuyLimitLabel
//
resources.ApplyResources(this.LblBuyLimitLabel, "LblBuyLimitLabel");
this.LblBuyLimitLabel.Name = "LblBuyLimitLabel";
//
// LblGoodsIdLabel
//
resources.ApplyResources(this.LblGoodsIdLabel, "LblGoodsIdLabel");
this.LblGoodsIdLabel.Name = "LblGoodsIdLabel";
//
// LblGoodsItemLabel
//
resources.ApplyResources(this.LblGoodsItemLabel, "LblGoodsItemLabel");
this.LblGoodsItemLabel.Name = "LblGoodsItemLabel";
//
// label13
//
resources.ApplyResources(this.label13, "label13");
this.label13.Name = "label13";
//
// label12
//
resources.ApplyResources(this.label12, "label12");
this.label12.Name = "label12";
//
// label11
//
resources.ApplyResources(this.label11, "label11");
this.label11.Name = "label11";
//
// label14
//
resources.ApplyResources(this.label14, "label14");
this.label14.Name = "label14";
//
// LnkGenGoodsId
//
resources.ApplyResources(this.LnkGenGoodsId, "LnkGenGoodsId");
this.LnkGenGoodsId.Name = "LnkGenGoodsId";
this.LnkGenGoodsId.TabStop = true;
this.LnkGenGoodsId.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.LnkGenGoodsId_LinkClicked);
//
// label18
//
resources.ApplyResources(this.label18, "label18");
this.label18.Name = "label18";
//
// label1
//
resources.ApplyResources(this.label1, "label1");
this.label1.Name = "label1";
//
// BtnSave
//
resources.ApplyResources(this.BtnSave, "BtnSave");
this.BtnSave.Name = "BtnSave";
this.BtnSave.UseVisualStyleBackColor = true;
this.BtnSave.Click += new System.EventHandler(this.BtnSave_Click);
//
// BtnLoad
//
resources.ApplyResources(this.BtnLoad, "BtnLoad");
this.BtnLoad.Name = "BtnLoad";
this.BtnLoad.UseVisualStyleBackColor = true;
this.BtnLoad.Click += new System.EventHandler(this.BtnLoad_Click);
//
// TxtShopJsonPath
//
resources.ApplyResources(this.TxtShopJsonPath, "TxtShopJsonPath");
this.TxtShopJsonPath.Name = "TxtShopJsonPath";
//
// LblShopPathLabel
//
resources.ApplyResources(this.LblShopPathLabel, "LblShopPathLabel");
this.LblShopPathLabel.Name = "LblShopPathLabel";
//
// FormShopEditor
//
resources.ApplyResources(this, "$this");
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.Controls.Add(this.BtnSave);
this.Controls.Add(this.BtnLoad);
this.Controls.Add(this.TxtShopJsonPath);
this.Controls.Add(this.LblShopPathLabel);
this.Controls.Add(this.GrpGoodsInfo);
this.Controls.Add(this.GrpItems);
this.Controls.Add(this.GrpGoodsList);
this.Controls.Add(this.GrpShopList);
this.Name = "FormShopEditor";
this.GrpShopList.ResumeLayout(false);
this.GrpGoodsList.ResumeLayout(false);
this.GrpItems.ResumeLayout(false);
this.GrpItems.PerformLayout();
this.GrpGoodsInfo.ResumeLayout(false);
this.GrpGoodsInfo.PerformLayout();
((System.ComponentModel.ISupportInitialize)(this.NUDRefreshParm)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.NUDGoodsId)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.NUDMaxLevel)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.NUDMinLevel)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.NUDCostItem4)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.NUDCostItem3)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.NUDCostItem2)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.NUDCostItem1)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.NUDCostMcoin)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.NUDCostScoin)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.NUDCostHcoin)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.NUDBuyLimit)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.NUDCostItem4Count)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.NUDCostItem3Count)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.NUDCostItem2Count)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.NUDCostItem1Count)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.NUDGoodsItemCount)).EndInit();
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private System.Windows.Forms.ListBox ListShop;
private System.Windows.Forms.ListBox ListGoods;
private System.Windows.Forms.ListBox ListItems;
private System.Windows.Forms.GroupBox GrpShopList;
private System.Windows.Forms.GroupBox GrpGoodsList;
private System.Windows.Forms.GroupBox GrpItems;
private System.Windows.Forms.GroupBox GrpGoodsInfo;
private System.Windows.Forms.Button BtnSave;
private System.Windows.Forms.Button BtnLoad;
private System.Windows.Forms.TextBox TxtShopJsonPath;
private System.Windows.Forms.Label LblShopPathLabel;
private System.Windows.Forms.NumericUpDown NUDGoodsItemCount;
private System.Windows.Forms.Label label1;
private System.Windows.Forms.TextBox TxtGoodsItem;
private System.Windows.Forms.Label LblGoodsItemLabel;
private System.Windows.Forms.NumericUpDown NUDCostItem3;
private System.Windows.Forms.NumericUpDown NUDCostItem2;
private System.Windows.Forms.NumericUpDown NUDCostItem1;
private System.Windows.Forms.NumericUpDown NUDCostMcoin;
private System.Windows.Forms.NumericUpDown NUDCostScoin;
private System.Windows.Forms.NumericUpDown NUDCostHcoin;
private System.Windows.Forms.NumericUpDown NUDBuyLimit;
private System.Windows.Forms.NumericUpDown NUDMaxLevel;
private System.Windows.Forms.NumericUpDown NUDMinLevel;
private System.Windows.Forms.NumericUpDown NUDCostItem4;
private System.Windows.Forms.Label LblGoodsIdLabel;
private System.Windows.Forms.NumericUpDown NUDGoodsId;
private System.Windows.Forms.Label LblBuyLimitLabel;
private System.Windows.Forms.Label LblCostItem4Label;
private System.Windows.Forms.Label LblCostItem3Label;
private System.Windows.Forms.Label LblCostItem2Label;
private System.Windows.Forms.Label LblCostItem1Label;
private System.Windows.Forms.Label LblCostMcoinLabel;
private System.Windows.Forms.Label LblCostScoinLabel;
private System.Windows.Forms.Label LblCostHcoinLabel;
private System.Windows.Forms.NumericUpDown NUDCostItem4Count;
private System.Windows.Forms.Label label14;
private System.Windows.Forms.NumericUpDown NUDCostItem3Count;
private System.Windows.Forms.Label label13;
private System.Windows.Forms.NumericUpDown NUDCostItem2Count;
private System.Windows.Forms.Label label12;
private System.Windows.Forms.NumericUpDown NUDCostItem1Count;
private System.Windows.Forms.Label label11;
private System.Windows.Forms.DateTimePicker DTPEndTime;
private System.Windows.Forms.DateTimePicker DTPBeginTime;
private System.Windows.Forms.Label LblEndTimeLabel;
private System.Windows.Forms.Label LblBeginTimeLabel;
private System.Windows.Forms.Label LblBuyLevelLabel;
private System.Windows.Forms.Label label18;
private System.Windows.Forms.LinkLabel LnkGenGoodsId;
private System.Windows.Forms.ComboBox CmbRefreshType;
private System.Windows.Forms.NumericUpDown NUDRefreshParm;
private System.Windows.Forms.Label LblRefreshModeLabel;
private System.Windows.Forms.Button BtnSaveGoods;
private System.Windows.Forms.TextBox TxtItemFilter;
private System.Windows.Forms.Button BtnClearGoods;
private System.Windows.Forms.Button BtnDeleteGoods;
}
}

View File

@@ -0,0 +1,479 @@
/**
* Grasscutter Tools
* Copyright (C) 2022 jie65535
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published
* by the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*
**/
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Windows.Forms;
using GrasscutterTools.Game;
using GrasscutterTools.Game.Shop;
using GrasscutterTools.Properties;
using GrasscutterTools.Utils;
using Newtonsoft.Json;
namespace GrasscutterTools.Forms
{
public partial class FormShopEditor : Form
{
#region - -
/// <summary>
/// 商店列表数据
/// </summary>
private Dictionary<int, List<ShopInfo>> Shops = new Dictionary<int, List<ShopInfo>>();
/// <summary>
/// 选中的商店类型
/// </summary>
private int SelectedShopType;
#endregion - -
#region - -
public FormShopEditor()
{
InitializeComponent();
Icon = Resources.IconGrasscutter;
ListShop.Items.AddRange(GameData.ShopType.Lines);
ListItems.Items.AddRange(GameData.Items.Lines);
}
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
try
{
// 加载文件路径
var path = Settings.Default.ShopJsonPath;
TxtShopJsonPath.Text = path;
if (!string.IsNullOrEmpty(path) && File.Exists(path))
LoadShops(path);
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString(), Resources.Error, MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
protected override void OnFormClosed(FormClosedEventArgs e)
{
Settings.Default.ShopJsonPath = TxtShopJsonPath.Text;
Settings.Default.Save();
base.OnFormClosed(e);
}
#endregion - -
#region - Shop.json -
/// <summary>
/// 点击加载Shop.json按钮时触发
/// </summary>
private void BtnLoad_Click(object sender, EventArgs e)
{
var path = TxtShopJsonPath.Text.Trim();
try
{
if (path == string.Empty)
{
var dialog = new OpenFileDialog
{
FileName = "Shop.json",
Filter = "Shop.Json (*.json)|*.json|All files (*.*)|*.*",
};
var result = dialog.ShowDialog();
if (result == DialogResult.OK)
path = TxtShopJsonPath.Text = dialog.FileName;
else
return;
}
// 反序列化
LoadShops(path);
MessageBox.Show("OK", Resources.Tips, MessageBoxButtons.OK);
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString(), Resources.Error, MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
/// <summary>
/// 加载商店
/// </summary>
/// <param name="path">文件路径</param>
private void LoadShops(string path)
{
try
{
// 反序列化
var banners = JsonConvert.DeserializeObject<List<ShopTable>>(File.ReadAllText(path));
Shops = new Dictionary<int, List<ShopInfo>>(banners.Count);
foreach (var item in banners)
Shops.Add(item.ShopType, item.Items);
}
catch (Exception ex)
{
try
{
// 当Json解析失败时尝试以tsv方式解析
LoadShopsFromTsv(path);
}
catch
{
throw ex;
}
}
}
/// <summary>
/// 从TSV加载商店
/// </summary>
/// <param name="path">文件路径</param>
private void LoadShopsFromTsv(string path)
{
var lines = File.ReadAllLines(path);
Shops = new Dictionary<int, List<ShopInfo>>();
for (int i = 1; i < lines.Length; i++)
{
var cells = lines[i].Split('\t');
var goods = new ShopInfo
{
GoodsId = int.Parse(cells[0]),
GoodsItem = new ItemParamData(int.Parse(cells[2]), int.Parse(cells[4])),
BuyLimit = TryParse(cells[16]),
MinLevel = TryParse(cells[29]),
MaxLevel = TryParse(cells[30]),
BeginTime = (int)new DateTimeOffset(DateTime.Parse(cells[20])).ToUnixTimeSeconds(),
EndTime = (int)new DateTimeOffset(DateTime.Parse(cells[21])).ToUnixTimeSeconds(),
RefreshType = (ShopRefreshType)TryParse(cells[17]),
ShopRefreshParam = TryParse(cells[18]),
HCoin = TryParse(cells[5]),
SCoin = TryParse(cells[6]),
MCoin = TryParse(cells[7]),
CostItemList = new List<ItemParamData>
{
new ItemParamData(TryParse(cells[8]), TryParse(cells[9])),
new ItemParamData(TryParse(cells[10]), TryParse(cells[11])),
new ItemParamData(TryParse(cells[12]), TryParse(cells[13])),
new ItemParamData(TryParse(cells[14]), TryParse(cells[15])),
}
};
var shopType = int.Parse(cells[1]);
if (!Shops.TryGetValue(shopType, out List<ShopInfo> shops))
Shops.Add(shopType, shops = new List<ShopInfo>());
shops.Add(goods);
}
}
private static int TryParse(string value) => int.TryParse(value, out int n) ? n : 0;
/// <summary>
/// 点击保存Shop.json按钮时触发
/// </summary>
private void BtnSave_Click(object sender, EventArgs e)
{
try
{
var path = TxtShopJsonPath.Text.Trim();
if (path == string.Empty)
{
var dialog = new SaveFileDialog
{
FileName = "Shop.json",
Filter = "Shop.json (*.json)|*.json|All files (*.*)|*.*",
};
var result = dialog.ShowDialog();
if (result == DialogResult.OK)
path = TxtShopJsonPath.Text = dialog.FileName;
else
return;
}
// 序列化
var banners = new List<ShopTable>(Shops.Count);
foreach (var shop in Shops)
{
if (shop.Value != null && shop.Value.Count > 0)
{
banners.Add(new ShopTable
{
ShopType = shop.Key,
Items = shop.Value,
});
}
}
File.WriteAllText(path, JsonConvert.SerializeObject(banners, new JsonSerializerSettings
{
Formatting = Formatting.Indented,
DefaultValueHandling = DefaultValueHandling.Ignore,
}));
MessageBox.Show("OK", Resources.Tips, MessageBoxButtons.OK);
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString(), Resources.Error, MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
#endregion - Shop.json -
#region - -
/// <summary>
/// 商店列表选中项改变时触发
/// </summary>
private void ListShop_SelectedIndexChanged(object sender, EventArgs e)
{
if (ListShop.SelectedIndex == -1)
{
SelectedShopType = 0;
return;
}
SelectedShopType = ItemMap.ToId(ListShop.SelectedItem as string);
Shops.TryGetValue(SelectedShopType, out var shop);
ShowGoodsList(shop);
}
#endregion - -
#region - -
/// <summary>
/// 显示商品列表
/// </summary>
private void ShowGoodsList(List<ShopInfo> banner)
{
ListGoods.BeginUpdate();
ListGoods.Items.Clear();
if (banner != null && banner.Count > 0)
{
ListGoods.Items.AddRange(banner.Select(it => it.ToString()).ToArray());
//ListGoods.SelectedIndex = 0;
}
ListGoods.EndUpdate();
}
/// <summary>
/// 商品列表选中项改变时触发
/// </summary>
private void ListGoods_SelectedIndexChanged(object sender, EventArgs e)
{
if (ListGoods.SelectedIndex == -1) return;
ShowGoods(Shops[SelectedShopType][ListGoods.SelectedIndex]);
}
/// <summary>
/// 点击删除商品按钮时触发
/// </summary>
private void BtnDeleteGoods_Click(object sender, EventArgs e)
{
if (ListGoods.SelectedIndex == -1) return;
if (MessageBox.Show(Resources.AskConfirmDeletion, Resources.Tips, MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
{
Shops[SelectedShopType].RemoveAt(ListGoods.SelectedIndex);
ListGoods.Items.RemoveAt(ListGoods.SelectedIndex);
}
}
/// <summary>
/// 点击清空商品按钮时触发
/// </summary>
private void BtnClearGoods_Click(object sender, EventArgs e)
{
if (ListGoods.Items.Count == 0) return;
if (MessageBox.Show(Resources.AskConfirmDeletion, Resources.Tips, MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
{
Shops.Remove(SelectedShopType);
ListGoods.Items.Clear();
}
}
#endregion - -
#region - -
/// <summary>
/// 显示商品
/// </summary>
/// <param name="goods"></param>
private void ShowGoods(ShopInfo goods)
{
NUDGoodsId.Value = goods.GoodsId;
TxtGoodsItem.Text = $"{goods.GoodsItem.Id}:{GameData.Items[goods.GoodsItem.Id]}";
NUDGoodsItemCount.Value = goods.GoodsItem.Count;
NUDBuyLimit.Value = goods.BuyLimit;
NUDMinLevel.Value = goods.MinLevel;
NUDMaxLevel.Value = goods.MaxLevel;
DTPBeginTime.Value = DateTimeOffset.FromUnixTimeSeconds(goods.BeginTime).LocalDateTime;
DTPEndTime.Value = DateTimeOffset.FromUnixTimeSeconds(goods.EndTime).LocalDateTime;
NUDRefreshParm.Value = goods.ShopRefreshParam;
CmbRefreshType.SelectedIndex = (int)goods.RefreshType;
NUDCostHcoin.Value = goods.HCoin;
NUDCostScoin.Value = goods.SCoin;
NUDCostMcoin.Value = goods.MCoin;
var items = new ItemParamData[4];
goods.CostItemList?.CopyTo(items, 0);
NUDCostItem1.Value = items[0].Id;
NUDCostItem1Count.Value = items[0].Count;
NUDCostItem2.Value = items[1].Id;
NUDCostItem2Count.Value = items[1].Count;
NUDCostItem3.Value = items[2].Id;
NUDCostItem3Count.Value = items[2].Count;
NUDCostItem4.Value = items[3].Id;
NUDCostItem4Count.Value = items[3].Count;
}
/// <summary>
/// 点击生成商品ID链接标签时触发
/// </summary>
private void LnkGenGoodsId_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
if (ListShop.SelectedIndex == -1) return;
if (ItemMap.TryToId(TxtGoodsItem.Text, out int itemId))
NUDGoodsId.Value = SelectedShopType * 1000 + itemId % 1000;
}
/// <summary>
/// 刷新类型选中项改变时触发
/// </summary>
private void CmbRefreshType_SelectedIndexChanged(object sender, EventArgs e)
{
NUDRefreshParm.Enabled = CmbRefreshType.SelectedIndex > 0;
if (CmbRefreshType.SelectedIndex == 0)
NUDRefreshParm.Value = 0;
else if (NUDRefreshParm.Value == 0)
NUDRefreshParm.Value = 1;
}
/// <summary>
/// 点击保存商品按钮时触发
/// </summary>
private void BtnSaveGoods_Click(object sender, EventArgs e)
{
if (!ItemMap.TryToId(TxtGoodsItem.Text, out int itemId))
{
MessageBox.Show(Resources.EmptyInputTip, Resources.Error, MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
// 检查ID冲突
var goodsId = (int)NUDGoodsId.Value;
if (Shops.Any(kv => kv.Key != SelectedShopType && kv.Value.Any(it => it.GoodsId == goodsId)))
{
MessageBox.Show(Resources.GoodsIDConflictPrompt, Resources.Error, MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
try
{
List<ItemParamData> costs = new List<ItemParamData>();
if (NUDCostItem1Count.Value > 0 && NUDCostItem1.Value > 0)
costs.Add(new ItemParamData((int)NUDCostItem1.Value, (int)NUDCostItem1Count.Value));
if (NUDCostItem2Count.Value > 0 && NUDCostItem2.Value > 0)
costs.Add(new ItemParamData((int)NUDCostItem2.Value, (int)NUDCostItem2Count.Value));
if (NUDCostItem3Count.Value > 0 && NUDCostItem3.Value > 0)
costs.Add(new ItemParamData((int)NUDCostItem3.Value, (int)NUDCostItem3Count.Value));
if (NUDCostItem4Count.Value > 0 && NUDCostItem4.Value > 0)
costs.Add(new ItemParamData((int)NUDCostItem4.Value, (int)NUDCostItem4Count.Value));
ShopInfo goods = new ShopInfo
{
GoodsId = goodsId,
GoodsItem = new ItemParamData(itemId, (int)NUDGoodsItemCount.Value),
BuyLimit = (int)NUDBuyLimit.Value,
MinLevel = (int)NUDMinLevel.Value,
MaxLevel = (int)NUDMaxLevel.Value,
BeginTime = (int)new DateTimeOffset(DTPBeginTime.Value).ToUnixTimeSeconds(),
EndTime = (int)new DateTimeOffset(DTPEndTime.Value).ToUnixTimeSeconds(),
RefreshType = CmbRefreshType.SelectedIndex == -1 ? ShopRefreshType.None : (ShopRefreshType)CmbRefreshType.SelectedIndex,
ShopRefreshParam = (int)NUDRefreshParm.Value,
HCoin = (int)NUDCostHcoin.Value,
SCoin = (int)NUDCostScoin.Value,
MCoin = (int)NUDCostMcoin.Value,
CostItemList = costs,
// 以下属性不认识,代码里看似也没用,不写了
//BoughtNum
//DisableType
//PreGoodsIdList
//SecondarySheetId
};
if (Shops.TryGetValue(SelectedShopType, out var shop))
{
var i = shop.FindIndex(it => it.GoodsId == goodsId);
if (i == -1)
{
// 增加到现有列表
shop.Add(goods);
ListGoods.Items.Add(goods.ToString());
}
else
{
// 修改
shop[i] = goods;
ListGoods.Items[i] = goods.ToString();
}
}
else
{
// 增加到新列表
Shops[SelectedShopType] = new List<ShopInfo> { goods };
ListGoods.Items.Add(goods.ToString());
}
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString(), Resources.Error, MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
#endregion - -
#region - -
/// <summary>
/// 物品列表过滤框输入改变事件
/// </summary>
private void TxtItemFilter_TextChanged(object sender, EventArgs e)
{
UIUtil.ListBoxFilter(ListItems, GameData.Items.Lines, TxtItemFilter.Text);
}
/// <summary>
/// 物品列表选中项改变时触发
/// </summary>
private void ListItems_SelectedIndexChanged(object sender, EventArgs e)
{
if (ListItems.SelectedIndex == -1) return;
TxtGoodsItem.Text = ListItems.SelectedItem as string;
}
#endregion - -
}
}

View File

@@ -0,0 +1,259 @@
<?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="GrpShopList.Text" xml:space="preserve">
<value>Shop list</value>
</data>
<data name="GrpGoodsList.Text" xml:space="preserve">
<value>Shop info list</value>
</data>
<data name="BtnClearGoods.Text" xml:space="preserve">
<value>× Clear</value>
</data>
<data name="BtnDeleteGoods.Text" xml:space="preserve">
<value>- Delete</value>
</data>
<data name="GrpItems.Text" xml:space="preserve">
<value>Item list</value>
</data>
<data name="GrpGoodsInfo.Text" xml:space="preserve">
<value>Shop info</value>
</data>
<data name="BtnSaveGoods.Text" xml:space="preserve">
<value>√ Add or Update</value>
</data>
<data name="CmbRefreshType.Items" xml:space="preserve">
<value>None</value>
</data>
<data name="CmbRefreshType.Items1" xml:space="preserve">
<value>Daily</value>
</data>
<data name="CmbRefreshType.Items2" xml:space="preserve">
<value>Weekly</value>
</data>
<data name="CmbRefreshType.Items3" xml:space="preserve">
<value>Monthly</value>
</data>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="LblRefreshModeLabel.Size" type="System.Drawing.Size, System.Drawing">
<value>55, 17</value>
</data>
<data name="LblRefreshModeLabel.Text" xml:space="preserve">
<value>Refresh:</value>
</data>
<data name="LblBuyLevelLabel.Size" type="System.Drawing.Size, System.Drawing">
<value>62, 17</value>
</data>
<data name="LblBuyLevelLabel.Text" xml:space="preserve">
<value>Buy level:</value>
</data>
<data name="LblEndTimeLabel.Size" type="System.Drawing.Size, System.Drawing">
<value>62, 17</value>
</data>
<data name="LblEndTimeLabel.Text" xml:space="preserve">
<value>End time:</value>
</data>
<data name="LblBeginTimeLabel.Size" type="System.Drawing.Size, System.Drawing">
<value>73, 17</value>
</data>
<data name="LblBeginTimeLabel.Text" xml:space="preserve">
<value>Begin time:</value>
</data>
<data name="LblCostItem4Label.Size" type="System.Drawing.Size, System.Drawing">
<value>77, 17</value>
</data>
<data name="LblCostItem4Label.Text" xml:space="preserve">
<value>Cost item 4:</value>
</data>
<data name="LblCostItem3Label.Size" type="System.Drawing.Size, System.Drawing">
<value>77, 17</value>
</data>
<data name="LblCostItem3Label.Text" xml:space="preserve">
<value>Cost item 3:</value>
</data>
<data name="LblCostItem2Label.Size" type="System.Drawing.Size, System.Drawing">
<value>77, 17</value>
</data>
<data name="LblCostItem2Label.Text" xml:space="preserve">
<value>Cost item 2:</value>
</data>
<data name="LblCostItem1Label.Size" type="System.Drawing.Size, System.Drawing">
<value>77, 17</value>
</data>
<data name="LblCostItem1Label.Text" xml:space="preserve">
<value>Cost item 1:</value>
</data>
<data name="LblCostMcoinLabel.Location" type="System.Drawing.Point, System.Drawing">
<value>45, 298</value>
</data>
<data name="LblCostMcoinLabel.Size" type="System.Drawing.Size, System.Drawing">
<value>77, 17</value>
</data>
<data name="LblCostMcoinLabel.Text" xml:space="preserve">
<value>Cost Mcion:</value>
</data>
<data name="LblCostScoinLabel.Size" type="System.Drawing.Size, System.Drawing">
<value>72, 17</value>
</data>
<data name="LblCostScoinLabel.Text" xml:space="preserve">
<value>Cost Scion:</value>
</data>
<data name="LblCostHcoinLabel.Size" type="System.Drawing.Size, System.Drawing">
<value>74, 17</value>
</data>
<data name="LblCostHcoinLabel.Text" xml:space="preserve">
<value>Cost Hcion:</value>
</data>
<data name="LblBuyLimitLabel.Size" type="System.Drawing.Size, System.Drawing">
<value>60, 17</value>
</data>
<data name="LblBuyLimitLabel.Text" xml:space="preserve">
<value>Buy limit:</value>
</data>
<data name="LblGoodsIdLabel.Size" type="System.Drawing.Size, System.Drawing">
<value>62, 17</value>
</data>
<data name="LblGoodsIdLabel.Text" xml:space="preserve">
<value>GoodsId:</value>
</data>
<data name="LblGoodsItemLabel.Size" type="System.Drawing.Size, System.Drawing">
<value>50, 17</value>
</data>
<data name="LblGoodsItemLabel.Text" xml:space="preserve">
<value>Goods:</value>
</data>
<data name="LnkGenGoodsId.Size" type="System.Drawing.Size, System.Drawing">
<value>78, 17</value>
</data>
<data name="LnkGenGoodsId.Text" xml:space="preserve">
<value>Generate ID</value>
</data>
<data name="BtnSave.Text" xml:space="preserve">
<value>Save</value>
</data>
<data name="BtnLoad.Text" xml:space="preserve">
<value>Load</value>
</data>
<data name="LblShopPathLabel.Size" type="System.Drawing.Size, System.Drawing">
<value>97, 17</value>
</data>
<data name="LblShopPathLabel.Text" xml:space="preserve">
<value>Shop.json Path:</value>
</data>
</root>

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,274 @@
<?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="GrpShopList.Text" xml:space="preserve">
<value>Список магазинов</value>
</data>
<data name="GrpGoodsList.Text" xml:space="preserve">
<value>Список товаров</value>
</data>
<data name="BtnClearGoods.Text" xml:space="preserve">
<value>× Очистить</value>
</data>
<data name="BtnDeleteGoods.Text" xml:space="preserve">
<value>- Удалить</value>
</data>
<data name="GrpItems.Text" xml:space="preserve">
<value>Список предметов</value>
</data>
<data name="GrpGoodsInfo.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="BtnSaveGoods.Location" type="System.Drawing.Point, System.Drawing">
<value>74, 472</value>
</data>
<data name="BtnSaveGoods.Size" type="System.Drawing.Size, System.Drawing">
<value>200, 30</value>
</data>
<data name="BtnSaveGoods.Text" xml:space="preserve">
<value>√ Добавить или обновить</value>
</data>
<data name="LblRefreshModeLabel.Location" type="System.Drawing.Point, System.Drawing">
<value>4, 211</value>
</data>
<data name="LblRefreshModeLabel.Size" type="System.Drawing.Size, System.Drawing">
<value>118, 17</value>
</data>
<data name="LblRefreshModeLabel.Text" xml:space="preserve">
<value>Обновить режим:</value>
</data>
<data name="LblBuyLevelLabel.Size" type="System.Drawing.Size, System.Drawing">
<value>62, 17</value>
</data>
<data name="LblBuyLevelLabel.Text" xml:space="preserve">
<value>Buy level:</value>
</data>
<data name="LblEndTimeLabel.Location" type="System.Drawing.Point, System.Drawing">
<value>1, 183</value>
</data>
<data name="LblEndTimeLabel.Size" type="System.Drawing.Size, System.Drawing">
<value>122, 17</value>
</data>
<data name="LblEndTimeLabel.Text" xml:space="preserve">
<value>Время окончания:</value>
</data>
<data name="LblBeginTimeLabel.Location" type="System.Drawing.Point, System.Drawing">
<value>10, 156</value>
</data>
<data name="LblBeginTimeLabel.Size" type="System.Drawing.Size, System.Drawing">
<value>97, 17</value>
</data>
<data name="LblBeginTimeLabel.Text" xml:space="preserve">
<value>Время начала:</value>
</data>
<data name="LblCostItem4Label.Size" type="System.Drawing.Size, System.Drawing">
<value>76, 17</value>
</data>
<data name="LblCostItem4Label.Text" xml:space="preserve">
<value>Cast item 4:</value>
</data>
<data name="LblCostItem3Label.Size" type="System.Drawing.Size, System.Drawing">
<value>76, 17</value>
</data>
<data name="LblCostItem3Label.Text" xml:space="preserve">
<value>Cast item 3:</value>
</data>
<data name="LblCostItem2Label.Size" type="System.Drawing.Size, System.Drawing">
<value>76, 17</value>
</data>
<data name="LblCostItem2Label.Text" xml:space="preserve">
<value>Cast item 2:</value>
</data>
<data name="LblCostItem1Label.Size" type="System.Drawing.Size, System.Drawing">
<value>76, 17</value>
</data>
<data name="LblCostItem1Label.Text" xml:space="preserve">
<value>Cast item 1:</value>
</data>
<data name="LblCostMcoinLabel.Location" type="System.Drawing.Point, System.Drawing">
<value>46, 298</value>
</data>
<data name="LblCostMcoinLabel.Size" type="System.Drawing.Size, System.Drawing">
<value>67, 17</value>
</data>
<data name="LblCostMcoinLabel.Text" xml:space="preserve">
<value>Кристалл:</value>
</data>
<data name="LblCostScoinLabel.Location" type="System.Drawing.Point, System.Drawing">
<value>67, 269</value>
</data>
<data name="LblCostScoinLabel.Size" type="System.Drawing.Size, System.Drawing">
<value>46, 17</value>
</data>
<data name="LblCostScoinLabel.Text" xml:space="preserve">
<value>Мора:</value>
</data>
<data name="LblCostHcoinLabel.Location" type="System.Drawing.Point, System.Drawing">
<value>9, 240</value>
</data>
<data name="LblCostHcoinLabel.Size" type="System.Drawing.Size, System.Drawing">
<value>104, 17</value>
</data>
<data name="LblCostHcoinLabel.Text" xml:space="preserve">
<value>Камень Истока:</value>
</data>
<data name="LblBuyLimitLabel.Size" type="System.Drawing.Size, System.Drawing">
<value>60, 17</value>
</data>
<data name="LblBuyLimitLabel.Text" xml:space="preserve">
<value>Buy limit:</value>
</data>
<data name="LblGoodsIdLabel.Size" type="System.Drawing.Size, System.Drawing">
<value>66, 17</value>
</data>
<data name="LblGoodsIdLabel.Text" xml:space="preserve">
<value>Goods Id:</value>
</data>
<data name="LblGoodsItemLabel.Size" type="System.Drawing.Size, System.Drawing">
<value>50, 17</value>
</data>
<data name="LblGoodsItemLabel.Text" xml:space="preserve">
<value>Goods:</value>
</data>
<data name="LnkGenGoodsId.Size" type="System.Drawing.Size, System.Drawing">
<value>73, 17</value>
</data>
<data name="LnkGenGoodsId.Text" xml:space="preserve">
<value>Создать ID</value>
</data>
<data name="BtnSave.Text" xml:space="preserve">
<value>Сохранять</value>
</data>
<data name="BtnLoad.Text" xml:space="preserve">
<value>Загрузить</value>
</data>
<data name="TxtShopJsonPath.Location" type="System.Drawing.Point, System.Drawing">
<value>144, 12</value>
</data>
<data name="TxtShopJsonPath.Size" type="System.Drawing.Size, System.Drawing">
<value>516, 23</value>
</data>
<data name="LblShopPathLabel.Size" type="System.Drawing.Size, System.Drawing">
<value>127, 17</value>
</data>
<data name="LblShopPathLabel.Text" xml:space="preserve">
<value>Shop.json дорожка:</value>
</data>
</root>

View File

@@ -0,0 +1,144 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="BtnDeleteGoods.Text" xml:space="preserve">
<value>- 刪除</value>
</data>
<data name="LblBuyLevelLabel.Text" xml:space="preserve">
<value>限購等級:</value>
</data>
<data name="LblEndTimeLabel.Text" xml:space="preserve">
<value>下架時間:</value>
</data>
<data name="LblBeginTimeLabel.Text" xml:space="preserve">
<value>上架時間:</value>
</data>
<data name="LblCostMcoinLabel.Text" xml:space="preserve">
<value>消耗創世結晶:</value>
</data>
<data name="LblBuyLimitLabel.Text" xml:space="preserve">
<value>限購數量:</value>
</data>
<data name="BtnLoad.Text" xml:space="preserve">
<value>加載</value>
</data>
<data name="LblShopPathLabel.Text" xml:space="preserve">
<value>Shop.json 路徑:</value>
</data>
</root>

View File

@@ -1,4 +1,22 @@
using Newtonsoft.Json;
/**
* Grasscutter Tools
* Copyright (C) 2022 jie65535
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published
* by the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*
**/
using Newtonsoft.Json;
namespace GrasscutterTools.Game.Drop
{

View File

@@ -1,4 +1,22 @@
using System.Collections.Generic;
/**
* Grasscutter Tools
* Copyright (C) 2022 jie65535
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published
* by the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*
**/
using System.Collections.Generic;
using Newtonsoft.Json;

View File

@@ -16,8 +16,6 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*
**/
using System.Collections.Generic;
using GrasscutterTools.Properties;
namespace GrasscutterTools.Game
@@ -40,6 +38,7 @@ namespace GrasscutterTools.Game
WeaponColors = new ItemMap(Resources.WeaponColor);
GachaBannerPrefabs = new ItemMap(Resources.GachaBennerPrefab);
Quests = new ItemMap(Resources.Quest);
ShopType = new ItemMap(Resources.ShopType);
}
@@ -70,5 +69,7 @@ namespace GrasscutterTools.Game
public static ItemMap GachaBannerPrefabs { get; private set; }
public static ItemMap Quests { get; private set; }
public static ItemMap ShopType { get; private set; }
}
}

View File

@@ -72,5 +72,13 @@ namespace GrasscutterTools.Game
public string[] Lines { get; }
public static int ToId(string line) => int.Parse(line.Substring(0, line.IndexOf(':')).Trim());
public static bool TryToId(string line, out int id)
{
id = 0;
var sp = line.IndexOf(':');
if (sp == -1) return false;
return int.TryParse(line.Substring(0, sp).Trim(), out id);
}
}
}

View File

@@ -1,4 +1,22 @@
using System.Collections.Generic;
/**
* Grasscutter Tools
* Copyright (C) 2022 jie65535
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published
* by the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*
**/
using System.Collections.Generic;
using System.Linq;
namespace GrasscutterTools.Game

View File

@@ -1,4 +1,22 @@
using System;
/**
* Grasscutter Tools
* Copyright (C) 2022 jie65535
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published
* by the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*
**/
using System;
using System.Collections.Generic;
using Newtonsoft.Json;

View File

@@ -1,4 +1,22 @@
namespace GrasscutterTools.Game.Mail
/**
* Grasscutter Tools
* Copyright (C) 2022 jie65535
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published
* by the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*
**/
namespace GrasscutterTools.Game.Mail
{
/// <summary>
/// 附件

View File

@@ -1,4 +1,22 @@
namespace GrasscutterTools.Game.Player
/**
* Grasscutter Tools
* Copyright (C) 2022 jie65535
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published
* by the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*
**/
namespace GrasscutterTools.Game.Player
{
/// <summary>
/// 玩家数据

View File

@@ -0,0 +1,37 @@
/**
* Grasscutter Tools
* Copyright (C) 2022 jie65535
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published
* by the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*
**/
using Newtonsoft.Json;
namespace GrasscutterTools.Game.Shop
{
public struct ItemParamData
{
public ItemParamData(int id, int count)
{
Id = id;
Count = count;
}
[JsonProperty("id")]
public int Id { get; set; }
[JsonProperty("count")]
public int Count { get; set; }
}
}

View File

@@ -0,0 +1,94 @@
/**
* Grasscutter Tools
* Copyright (C) 2022 jie65535
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published
* by the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*
**/
using System.Collections.Generic;
using Newtonsoft.Json;
namespace GrasscutterTools.Game.Shop
{
public class ShopInfo
{
[JsonProperty("goodsId")]
public int GoodsId { get; set; }
[JsonProperty("goodsItem")]
public ItemParamData GoodsItem { get; set; }
/// <summary>
/// 消耗摩拉
/// </summary>
[JsonProperty("scoin")]
public int SCoin { get; set; }
[JsonProperty("costItemList")]
public List<ItemParamData> CostItemList { get; set; }
[JsonProperty("boughtNum")]
public int BoughtNum { get; set; }
[JsonProperty("buyLimit")]
public int BuyLimit { get; set; }
[JsonProperty("beginTime")]
public int BeginTime { get; set; }
[JsonProperty("endTime")]
public int EndTime { get; set; } = 1924992000;
[JsonProperty("minLevel")]
public int MinLevel { get; set; }
[JsonProperty("maxLevel")]
public int MaxLevel { get; set; } = 61;
[JsonProperty("preGoodsIdList")]
public List<int> PreGoodsIdList { get; set; }
/// <summary>
/// 消耗创世结晶
/// </summary>
[JsonProperty("mcoin")]
public int MCoin { get; set; }
/// <summary>
/// 消耗原石
/// </summary>
[JsonProperty("hcoin")]
public int HCoin { get; set; }
[JsonProperty("disableType")]
public int DisableType { get; set; }
[JsonProperty("secondarySheetId")]
public int SecondarySheetId { get; set; }
[JsonProperty("refreshType")]
public ShopRefreshType RefreshType { get; set; }
[JsonProperty("shopRefreshParam")]
public int ShopRefreshParam { get; set; }
public override string ToString()
{
return $"{GoodsId}:{GameData.Items[GoodsItem.Id]} x{GoodsItem.Count}";
}
}
}

View File

@@ -0,0 +1,34 @@
using Newtonsoft.Json;
namespace GrasscutterTools.Game.Shop
{
/// <summary>
/// 商品刷新类型
/// </summary>
public enum ShopRefreshType
{
/// <summary>
/// 不刷新
/// </summary>
[JsonProperty("NONE")]
None,
/// <summary>
/// 按天刷新
/// </summary>
[JsonProperty("SHOP_REFRESH_DAILY")]
Daily,
/// <summary>
/// 按周刷新
/// </summary>
[JsonProperty("SHOP_REFRESH_WEEKLY")]
Weekly,
/// <summary>
/// 按月刷新
/// </summary>
[JsonProperty("SHOP_REFRESH_MONTHLY")]
Monthly,
}
}

View File

@@ -0,0 +1,33 @@
/**
* Grasscutter Tools
* Copyright (C) 2022 jie65535
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published
* by the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*
**/
using System.Collections.Generic;
using Newtonsoft.Json;
namespace GrasscutterTools.Game.Shop
{
public class ShopTable
{
[JsonProperty("shopId")]
public int ShopType { get; set; }
[JsonProperty("items")]
public List<ShopInfo> Items { get; set; }
}
}

View File

@@ -114,6 +114,12 @@
<Compile Include="Forms\FormMain.Designer.cs">
<DependentUpon>FormMain.cs</DependentUpon>
</Compile>
<Compile Include="Forms\FormShopEditor.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="Forms\FormShopEditor.Designer.cs">
<DependentUpon>FormShopEditor.cs</DependentUpon>
</Compile>
<Compile Include="Forms\FormTextMapBrowser.cs">
<SubType>Form</SubType>
</Compile>
@@ -134,6 +140,10 @@
<Compile Include="Game\Mail\MailItem.cs" />
<Compile Include="Game\Player\PlayerData.cs" />
<Compile Include="Game\SetStatsCommand.cs" />
<Compile Include="Game\Shop\ItemParamData.cs" />
<Compile Include="Game\Shop\ShopInfo.cs" />
<Compile Include="Game\Shop\ShopRefreshType.cs" />
<Compile Include="Game\Shop\ShopTable.cs" />
<Compile Include="Game\TextMapData.cs" />
<Compile Include="GOOD\GOOD.cs" />
<Compile Include="GOOD\Artifact.cs" />
@@ -204,6 +214,18 @@
<DependentUpon>FormMain.cs</DependentUpon>
<SubType>Designer</SubType>
</EmbeddedResource>
<EmbeddedResource Include="Forms\FormShopEditor.en-US.resx">
<DependentUpon>FormShopEditor.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Forms\FormShopEditor.resx">
<DependentUpon>FormShopEditor.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Forms\FormShopEditor.ru-RU.resx">
<DependentUpon>FormShopEditor.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Forms\FormShopEditor.zh-TW.resx">
<DependentUpon>FormShopEditor.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Forms\FormTextMapBrowser.en-US.resx">
<DependentUpon>FormTextMapBrowser.cs</DependentUpon>
</EmbeddedResource>
@@ -282,6 +304,7 @@
<Content Include="Resources\en-us\Monsters.txt" />
<Content Include="Resources\en-us\Quest.txt" />
<Content Include="Resources\en-us\Scene.txt" />
<Content Include="Resources\en-us\ShopType.txt" />
<Content Include="Resources\en-us\Weapon.txt" />
<None Include="Resources\Newtonsoft.Json.dll" />
<Content Include="Resources\ru-ru\Artifact.txt" />
@@ -295,6 +318,7 @@
<Content Include="Resources\ru-ru\Monsters.txt" />
<Content Include="Resources\ru-ru\Quest.txt" />
<Content Include="Resources\ru-ru\Scene.txt" />
<Content Include="Resources\ru-ru\ShopType.txt" />
<Content Include="Resources\ru-ru\Weapon.txt" />
<Content Include="Resources\IconGrasscutter.ico" />
<Content Include="Resources\IconGrasscutter.png" />
@@ -314,6 +338,7 @@
<Content Include="Resources\zh-cn\Monsters.txt" />
<Content Include="Resources\zh-cn\Quest.txt" />
<Content Include="Resources\zh-cn\Scene.txt" />
<Content Include="Resources\zh-cn\ShopType.txt" />
<Content Include="Resources\zh-cn\Weapon.txt" />
<Content Include="Resources\zh-tw\ArtifactCat.txt" />
<Content Include="Resources\zh-tw\ArtifactMainAttribution.txt" />
@@ -326,6 +351,7 @@
<Content Include="Resources\zh-tw\Monsters.txt" />
<Content Include="Resources\zh-tw\Quest.txt" />
<Content Include="Resources\zh-tw\Scene.txt" />
<Content Include="Resources\zh-tw\ShopType.txt" />
<Content Include="Resources\zh-tw\Weapon.txt" />
</ItemGroup>
<ItemGroup>

View File

@@ -31,5 +31,5 @@ using System.Runtime.InteropServices;
//可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值
//通过使用 "*",如下所示:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.7.1")]
[assembly: AssemblyVersion("1.7.2")]
[assembly: AssemblyFileVersion("1.7.0")]

View File

@@ -323,46 +323,67 @@ namespace GrasscutterTools.Properties {
}
/// <summary>
/// 查找类似 1001:purple
///1002:yellow
///1003:yellow
///1005:yellow
///1006:purple
///1007:yellow
///1014:purple
///1015:purple
///1016:yellow
///1020:purple
///1021:purple
///1022:yellow
///1023:purple
///1024:purple
///1025:purple
///1026:yellow
///1027:purple
///1029:yellow
///1030:yellow
///1031:purple
///1032:purple
///1033:yellow
///1034:purple
///1035:yellow
///1036:purple
///1037:yellow
///1038:yellow
///1039:purple
///1041:yellow
///1042:yellow
///1043:purple
///1044:purple
///1045:purple
///1046:yellow
///1047:yellow
///1048:purple
///1049:yellow
///1050:purple
///1051:yellow
///1052: [字符串的其余部分被截断]&quot;; 的本地化字符串。
/// 查找类似 1001:4
///1002:5
///1003:5
///1005:5
///1006:4
///1007:5
///1014:4
///1015:4
///1016:5
///1020:4
///1021:4
///1022:5
///1023:4
///1024:4
///1025:4
///1026:5
///1027:4
///1029:5
///1030:5
///1031:4
///1032:4
///1033:5
///1034:4
///1035:5
///1036:4
///1037:5
///1038:5
///1039:4
///1041:5
///1042:5
///1043:4
///1044:4
///1045:4
///1046:5
///1047:5
///1048:4
///1049:5
///1050:4
///1051:5
///1052:5
///1053:4
///1054:5
///1055:4
///1056:4
///1057:5
///1058:5
///1059:4
///1060:5
///1062:5
///1063:5
///1064:4
///1065:4
///1066:5
///1067:4
///1068:4
///1069:5
///1070:5
///1071:5
///1072:4
///1073:5
///1074:4 的本地化字符串。
/// </summary>
internal static string AvatarColor {
get {
@@ -570,9 +591,15 @@ namespace GrasscutterTools.Properties {
///071:华紫樱绯
///076:苍流踏花
///081:素霓伣天
///091:提纳里池(非原名)
///092:钟离池(非原名)
///093:猎人之径池(非原名) 的本地化字符串。
///091:巡御蘙荟-提纳里
///092:陵薮市朝-钟离
///093:神铸赋形-猎人贯虹
///097:雳裁冥昭-赛诺
///098:杯装之诗-温迪
///099:神铸赋形-赤沙终末
///100:翩舞歈莲-妮露
///101:深秘之息-阿贝多
///101:神铸赋形-圣显绿箭 的本地化字符串。
/// </summary>
internal static string GachaBennerPrefab {
get {
@@ -642,6 +669,15 @@ namespace GrasscutterTools.Properties {
}
}
/// <summary>
/// 查找类似 当前商品ID与其它商店中的ID存在冲突请更换其它ID或自动生成ID 的本地化字符串。
/// </summary>
internal static string GoodsIDConflictPrompt {
get {
return ResourceManager.GetString("GoodsIDConflictPrompt", resourceCulture);
}
}
/// <summary>
/// 查找类似 帮助 的本地化字符串。
/// </summary>
@@ -878,20 +914,20 @@ namespace GrasscutterTools.Properties {
}
/// <summary>
/// 查找类似 30302:神像解锁$HIDDEN - [N/A] 362713143
///30303:神像解锁$HIDDEN - [N/A] 715511863
///30304:神像解锁$HIDDEN - [N/A] 163018255
///30305:神像解锁$HIDDEN - [N/A] 3694648119
///30306:神像解锁$HIDDEN - [N/A] 3223799591
///30307:神像解锁$HIDDEN - [N/A] 1232757671
///30308:神像解锁$HIDDEN - [N/A] 3056513767
///30309:神像解锁$HIDDEN - [N/A] 2426653367
///30310:神像解锁$HIDDEN - [N/A] 2003131071
///30311:神像解锁$HIDDEN - [N/A] 105277231
///30312:神像解锁$HIDDEN - [N/A] 3391806215
///30313:神像解锁$HIDDEN - [N/A] 1357500887
///30314:神像解锁$HIDDEN - [N/A] 3054344935
///30315:女神像 [字符串的其余部分被截断]&quot;; 的本地化字符串。
/// 查找类似 30302:七天神像解锁$HIDDEN - 苍风高地 362713143
///30303:七天神像解锁$HIDDEN - 风啸山坡 715511863
///30304:七天神像解锁$HIDDEN - 明冠山地 163018255
///30305:七天神像解锁$HIDDEN - 碧水原 3694648119
///30306:七天神像解锁$HIDDEN - 云来海 3223799591
///30307:七天神像解锁$HIDDEN - 珉林 1232757671
///30308:七天神像解锁$HIDDEN - 璃沙郊 3056513767
///30309:七天神像解锁$HIDDEN - 琼玑原 2426653367
///30310:七天神像解锁$HIDDEN - 龙脊雪山 2003131071
///30311:七天神像解锁$HIDDEN - 鸣神岛 105277231
///30312:七天神像解锁$HIDDEN - 神无冢 3391806215
///30313:七天神像解锁$HIDDEN - 八酝岛 1357500887
///30314:七天神像解锁$HIDDEN - 清籁岛 3054344935
///30315:七天神像解锁$HIDDEN [字符串的其余部分被截断]&quot;; 的本地化字符串。
/// </summary>
internal static string Quest {
get {
@@ -973,6 +1009,61 @@ namespace GrasscutterTools.Properties {
}
}
/// <summary>
/// 查找类似 900:派蒙
///902:礼包商城
///903:礼包商城
///1001:尘辉兑换
///1002:荣光之风1
///1003:铁匠武器店
///1004:蒙德杂货铺
///1005:猎鹿人
///1006:海灯
///1007:原萃树脂
///1008:东升
///1009:岩之印商店
///1010:卯师傅
///1011:芙萝拉
///1012:查尔斯
///1013:石榴
///1014:舒茨
///1015:布洛克
///1016:神奇的霍普金斯
///1017:杜拉夫
///1018:克罗丽丝
///1019:璃彩
///1020:月疏
///1021:阿桂
///1022:老高
///1023:老孙
///1024:绮命
///1025:张顺
///1026:快刀陈
///1027:中原杂碎店
///1028:石头
///1029:纪芳
///1030:朱老板
///1031:小白
///1032:老周叔?或者凯叔?
///1033:琳琅
///1034:菲尔戈黛特
///1035:老周叔?或者凯叔?
///1036:一大袋摩拉(北国银行)
///1037:熄星活动
///1038:叶卡捷琳娜(存疑)
///1039:哈里斯雪山前营地
///1040:「白垩与黑龙」活动商店兑换
///1041:迷你仙灵活动
///1042:宜年 海灯节
///1043:某之印商店
/// [字符串的其余部分被截断]&quot;; 的本地化字符串。
/// </summary>
internal static string ShopType {
get {
return ResourceManager.GetString("ShopType", resourceCulture);
}
}
/// <summary>
/// 查找类似 提示 的本地化字符串。
/// </summary>

View File

@@ -276,4 +276,10 @@ Improvement suggestions have been submitted, please use caution to send emails t
<data name="Warning" xml:space="preserve">
<value>Warning</value>
</data>
<data name="ShopType" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\en-us\ShopType.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-8</value>
</data>
<data name="GoodsIDConflictPrompt" xml:space="preserve">
<value>There is a conflict between the current goods ID and the ID in other stores, please replace with another ID or automatically generate an ID</value>
</data>
</root>

View File

@@ -285,4 +285,10 @@
<data name="Warning" xml:space="preserve">
<value>警告</value>
</data>
<data name="ShopType" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\zh-cn\ShopType.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-8</value>
</data>
<data name="GoodsIDConflictPrompt" xml:space="preserve">
<value>当前商品ID与其它商店中的ID存在冲突请更换其它ID或自动生成ID</value>
</data>
</root>

View File

@@ -264,4 +264,10 @@
<data name="Warning" xml:space="preserve">
<value>Предупреждение</value>
</data>
<data name="ShopType" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\ru-ru\ShopType.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-8</value>
</data>
<data name="GoodsIDConflictPrompt" xml:space="preserve">
<value>Существует конфликт между текущим идентификатором товара и идентификатором в других магазинах, пожалуйста, замените другим идентификатором или автоматически сгенерируйте идентификатор</value>
</data>
</root>

View File

@@ -270,4 +270,10 @@
<data name="Warning" xml:space="preserve">
<value>警告</value>
</data>
<data name="ShopType" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\zh-tw\ShopType.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-8</value>
</data>
<data name="GoodsIDConflictPrompt" xml:space="preserve">
<value>當前商品ID與其它商店中的ID存在衝突請更換其它ID或自動生成ID</value>
</data>
</root>

View File

@@ -178,5 +178,17 @@ namespace GrasscutterTools.Properties {
this["DefaultMailSender"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("")]
public string ShopJsonPath {
get {
return ((string)(this["ShopJsonPath"]));
}
set {
this["ShopJsonPath"] = value;
}
}
}
}

View File

@@ -41,5 +41,8 @@
<Setting Name="DefaultMailSender" Type="System.String" Scope="User">
<Value Profile="(Default)">GrasscutterTools</Value>
</Setting>
<Setting Name="ShopJsonPath" Type="System.String" Scope="User">
<Value Profile="(Default)" />
</Setting>
</Settings>
</SettingsFile>

View File

@@ -1,53 +1,61 @@
1001:purple
1002:yellow
1003:yellow
1005:yellow
1006:purple
1007:yellow
1014:purple
1015:purple
1016:yellow
1020:purple
1021:purple
1022:yellow
1023:purple
1024:purple
1025:purple
1026:yellow
1027:purple
1029:yellow
1030:yellow
1031:purple
1032:purple
1033:yellow
1034:purple
1035:yellow
1036:purple
1037:yellow
1038:yellow
1039:purple
1041:yellow
1042:yellow
1043:purple
1044:purple
1045:purple
1046:yellow
1047:yellow
1048:purple
1049:yellow
1050:purple
1051:yellow
1052:yellow
1053:purple
1054:yellow
1055:purple
1056:purple
1057:yellow
1058:yellow
1062:blue
1063:yellow
1064:purple
1066:yellow
1067:green
1068:purple
1069:green
1001:4
1002:5
1003:5
1005:5
1006:4
1007:5
1014:4
1015:4
1016:5
1020:4
1021:4
1022:5
1023:4
1024:4
1025:4
1026:5
1027:4
1029:5
1030:5
1031:4
1032:4
1033:5
1034:4
1035:5
1036:4
1037:5
1038:5
1039:4
1041:5
1042:5
1043:4
1044:4
1045:4
1046:5
1047:5
1048:4
1049:5
1050:4
1051:5
1052:5
1053:4
1054:5
1055:4
1056:4
1057:5
1058:5
1059:4
1060:5
1062:5
1063:5
1064:4
1065:4
1066:5
1067:4
1068:4
1069:5
1070:5
1071:5
1072:4
1073:5
1074:4

View File

@@ -1,4 +1,4 @@
007:Beginners' wish
007:Beginners' wish
008:Wanderlust Invocation
009:Ballad in Goblets
010:Dawn Pilgrimage
@@ -10,20 +10,30 @@
017:Wanderlust Invocation
018:Sparkling Steps
019:Ballad in Goblets
020:Epitome Invocation
021:Epitome Invocation
020:Amos' Bow and Aquila Favonia
021:Lost Prayer to the Sacred Winds and Wolf's Gravestone
022:Wanderlust Invocation
023:Farewell of Snezhnaya
024:Gentry of Hermitage
025:Skyward Harp and Memory of Dust
026:Vortex Vanquisher and The Unforged
027:Secretum Secretorum
028:Adrift in the Harbor
029:Summit Shaper and Skyward Atlas
030:Amos' Bow and Skyward Pride
031:Invitation to Mundane Life
032:Dance of Lanterns
033:Moment of Bloom
034:Primordial Jade Winged-Spear and Primordial Jade Cutter
035:Staff of Homa and Wolf's Gravestone
036:Ballad in Goblets
037:Farewell of Snezhnaya
038:Elegy for the End and Skyward Blade
039:Skyward Harp and Lost Prayer to the Sacred Winds
040:Gentry of Hermitage
041:Born of Ocean Swell
042:Summit Shaper and Memory of Dust
043:Aquila Favonia and Song of Broken Pines
045:Leaves in the Wind
048:The Heron's Court
049:Tapestry of Golden Flames
@@ -34,6 +44,12 @@
071:Everbloom Violet
076:Azure Excursion
081:Discerner of Enigmas
091:Tighnari banner (Non original name)
092:Zhongli banner (Non original name)
093:Hunter's Path banner (Non original name)
091:Tighnari
092:Zhongli
093:Hunter's Path
097:Cyno
098:Venti
099:Staff of the Scarlet Sands
100:Twirling Lotus
101:Secretorum Secretorum
102:Epitome Invocation

View File

@@ -129,6 +129,9 @@
1067:Collei
1068:Dori
1069:Tighnari
1070:Nilou
1071:Cyno
1072:Candace
1102:Kamisato Ayaka's Stella Fortuna
1103:Jean's Stella Fortuna
1105:Traveler (Male)'s Stella Fortuna
@@ -184,6 +187,9 @@
1167:Collei's Stella Fortuna
1168:Dori's Stella Fortuna
1169:Tighnari's Stella Fortuna
1170:Nilou's Stella Fortuna
1171:Cyno's Stella Fortuna
1172:Candace's Stella Fortuna
1201:Gnostic Hymn - Old Notes
1202:Blessing of the Welkin Moon - New Moon
2001:Energy Orb (Pyro)
@@ -1163,6 +1169,9 @@
101217:Kalpalata Lotus
101218:Zaytun Peach
101219:Sumeru Rose
101220:Redcrest
101221:Ajilenakh Nut
101225:Scarab
101226:Activated Starshroom
101227:Scorched Starshroom
101228:Viparyas
@@ -2450,6 +2459,9 @@
112068:Chaos Storage
112069:Chaos Module
112070:Chaos Bolt
112071:Damaged Prism
112072:Turbid Prism
112073:Radiant Prism
113001:Hurricane Seed
113002:Lightning Prism
113003:Dvalin's Plume
@@ -2487,6 +2499,8 @@
113035:Runic Fang
113036:Majestic Hooked Beak
113037:Thunderclap Fruitcore
113038:Perpetual Caliber
113039:Light Guiding Tetrahedron
113040:Quelled Creeper
113041:???
113042:???
@@ -4629,4 +4643,4 @@
379027:Sunset Cloud Angler
379028:Lazurite Axe Marlin
379029:Halcyon Jade Axe Marlin
3750102:Liyue Estate: Exquisite Mansion
3750102:Liyue Estate: Exquisite Mansion

View File

@@ -1,19 +1,30 @@
30302:Goddess Statue Unlocked - [N/A] 362713143
30303:Goddess Statue Unlocked - [N/A] 715511863
30304:Goddess Statue Unlocked - [N/A] 163018255
30305:Goddess Statue Unlocked - [N/A] 3694648119
30306:Goddess Statue Unlocked - [N/A] 3223799591
30307:Goddess Statue Unlocked - [N/A] 1232757671
30308:Goddess Statue Unlocked - [N/A] 3056513767
30309:Goddess Statue Unlocked - [N/A] 2426653367
30310:Goddess Statue Unlocked - [N/A] 2003131071
30311:Goddess Statue Unlocked - [N/A] 105277231
30312:Goddess Statue Unlocked - [N/A] 3391806215
30313:Goddess Statue Unlocked - [N/A] 1357500887
30314:Goddess Statue Unlocked - [N/A] 3054344935
30315:Goddess Statue Unlocked - [N/A] 2041734695
30316:Goddess Statue Unlocked - [N/A] 4028276703
30317:Goddess Statue Unlocked - [N/A] 3048585239
30302:Map $HIDDEN - Blue Wind Highland Idol 362713143
30303:MAP$HIDDEN - Statue of Howling Hillside 715511863
30304:Map $HIDDEN - Mingguan Mountain Idol 163018255
30305:Map $HIDDEN - Idol 3694648119
30306:Map $HIDDEN - Yunlai Poseidon 3223799591
30307:Map $HIDDEN - Minrim Statue 1232757671
30308:Map $HIDDEN - Lisha Suburb Statue 3056513767
30309:Map $HIDDEN - Statue of Qiongjiyuan 2426653367
30310:Map $HIDDEN - Statue of Longji Snow Mountain 2003131071
30311:Map $HIDDEN - Naruto Island Statue 105277231
30312:Map $HIDDEN - Statue of God without Tomb 3391806215
30313:Map $HIDDEN - Statue of Yakin Island 1357500887
30314:Map $HIDDEN - Statue of Qinglai Island 3054344935
30315:Map $HIDDEN - Kaiji Island Statue 2041734695
30316:Map $HIDDEN - Crane Statue 4028276703
30317:Map $HIDDEN - Statue of the Deep Rock 3048585239
30318:Map $HIDDEN - Statue of Hu Shisen 3048585239
30319:Map $HIDDEN - Idol 3048585239
30320:Map $HIDDEN - Statue of Hennarana 3048585239
30321:Map $HIDDEN - Idol 3048585239
30322:Map $HIDDEN - Statue of Dao Chenglin 3048585239
30323:Map $HIDDEN - Lost Nursery Idol 3048585239
30324:Map $HIDDEN - Erjingdian Idol 3048585239
30325:MAP$HIDDEN - Statue of Lower Wind Erosion 3048585239
30326:Map $HIDDEN - Statue of Pillar Sand Plains 3048585239
30327:MAP$HIDDEN - Statue of Upper Wind Erosion 3048585239
35104: Start initial task
30600:Winds of the Past - Meet Amber at the temple
30601:Winds of the Past - Talk to Amber
30602:Winds of the Past - Enter the temple
@@ -102,7 +113,7 @@
35101:Wanderer's Trail - Follow Paimon
35102:Wanderer's Trail - Climb to the top of the rock face
35103:Wanderer's Trail - [N/A] 469284815
35104:Wanderer's Trail - [N/A] 2858699967
35104:Wanderer's Trail - Where Dreams Begin (Catch Paimon CG)
35105:Wanderer's Trail - Go to the foot of the cliff
35106:Wanderer's Trail - Unlock the Teleport Waypoint
35107:Wanderer's Trail - [N/A] 2743942591

View File

@@ -0,0 +1,84 @@
900:Paimon
902:Package
903:Mcoin
1001:Recommend
1002:City
1003:Blacksmith
1004:Grocery
1005:Food
1006:Sea Lamp
1007:Virtual Shop
1008:Liyue Grocery
1009:Liyue Souvenir
1010:Liyue Restaurant
1011:Npc Flora
1012:Npc Charles
1013:Npc Shiliu
1014:Npc Schulz
1015:Npc Brook
1016:Npc Hopkins
1017:Npc Draff
1018:Npc Chloris
1019:Npc Licai
1020:Npc Yueshu
1021:Npc Gui
1022:Npc Gao
1023:Npc Sun
1024:Npc Qiming
1025:Npc Zhangshun
1026:Npc Chen
1027:Npc Erniang
1028:Npc Shitou
1029:Npc Jifang
1030:Npc Zhu
1031:Npc Bai
1032:Npc Kai
1033:Npc Linglang
1034:Npc Verrgoldet
1035:Npc Zhou
1036:Task Ekaterina
1037:Activity Aster
1038:Task Tartaglia
1039:Npc Harris
1040:Activity Dragon Spine
1041:Activity Treasure Map
1042:Npc Yinian
1043:Activity Sea Lamp
1044:Activity Fleur Fair
1045:Npc Changshun
1046:Npc Bolai
1047:Npc Ashanpo
1048:Home
1049:Home Limit
1050:Npc Masterlu
1051:Npc Goth
1052:Costume
1053:Npc Obata
1054:Npc Qiuyue
1055:Npc Ryouko
1056:Inazuma Grocery
1057:Inazuma Souvenir
1058:Inazuma Restaurant
1059:Npc Kuroda
1060:Npc Kiminamianna
1061:Npc Tomoki
1062:Npc Karpillia
1063:Blacksmith Inazuma
1064:Fish
1065:Fish Liyue
1066:Fish Inazuma
1067:Npc Kiyoko
1068:Expired Widget Mengde
1069:Capture Animal Shop
1070:Npc Yamashirokenta
15001:Activity Channeller Slab
16001:Activity Summer Time
16002:Activity Bounce Conjuring
20001:Activity Blitz Rush
20002:Activity Chess
20004:Activity Winter Camp
20005:Activity Lantern Rite
22001:Activity Roguelike Dungeon
27001:Activity Rogue Diary
28001:Activity Summer Time V2
30001:Activity Graven Innocence

View File

@@ -36,4 +36,10 @@
081:Белая радуга
091:Патруль лесной чащи
092:Горы и рынки
093:Охотничья тропа
093:Охотничья тропа
097:Сайно
098:Венти
099:Staff of the Scarlet Sands
100:Twirling Lotus
101:Secretorum Secretorum
102:Epitome Invocation

View File

@@ -1,19 +1,30 @@
30302:[EN] - Goddess Statue Unlocked - [N/A] 362713143
30303:[EN] - Goddess Statue Unlocked - [N/A] 715511863
30304:[EN] - Goddess Statue Unlocked - [N/A] 163018255
30305:[EN] - Goddess Statue Unlocked - [N/A] 3694648119
30306:[EN] - Goddess Statue Unlocked - [N/A] 3223799591
30307:[EN] - Goddess Statue Unlocked - [N/A] 1232757671
30308:[EN] - Goddess Statue Unlocked - [N/A] 3056513767
30309:[EN] - Goddess Statue Unlocked - [N/A] 2426653367
30310:[EN] - Goddess Statue Unlocked - [N/A] 2003131071
30311:[EN] - Goddess Statue Unlocked - [N/A] 105277231
30312:[EN] - Goddess Statue Unlocked - [N/A] 3391806215
30313:[EN] - Goddess Statue Unlocked - [N/A] 1357500887
30314:[EN] - Goddess Statue Unlocked - [N/A] 3054344935
30315:[EN] - Goddess Statue Unlocked - [N/A] 2041734695
30316:[EN] - Goddess Statue Unlocked - [N/A] 4028276703
30317:[EN] - Goddess Statue Unlocked - [N/A] 3048585239
30302:Карта $HIDDEN - Идол Синего Ветра Хайленд 362713143
30303:MAP$HIDDEN - Статуя Воющего холма 715511863
30304:Карта $HIDDEN - Горный идол Мингуань 163018255
30305:Карта $HIDDEN - Идол 3694648119
30306:Карта $HIDDEN - Юньлай Посейдон 3223799591
30307:Карта $HIDDEN - Статуя Минрим 1232757671
30308:Карта $HIDDEN - Статуя в пригороде Лиша 3056513767
30309:Карта $HIDDEN - Статуя Цюнцзиюань 2426653367
30310:Карта $HIDDEN - Статуя Снежной горы Лунцзи 2003131071
30311:Карта $HIDDEN - Статуя острова Наруто 105277231
30312:Карта $HIDDEN - Статуя Бога без гробницы 3391806215
30313:Карта $HIDDEN - Статуя острова Якин 1357500887
30314:Карта $HIDDEN - Статуя острова Цинлай 3054344935
30315:Карта $HIDDEN - Статуя острова Кайдзи 2041734695
30316:Карта $HIDDEN - Статуя журавля 4028276703
30317:Карта $HIDDEN - Статуя Глубокой Скалы 3048585239
30318:Карта $HIDDEN - Статуя Ху Шисена 3048585239
30319:Карта $HIDDEN - Идол 3048585239
30320:Карта $HIDDEN - Статуя Хеннараны 3048585239
30321:Карта $HIDDEN - Идол 3048585239
30322:Карта $HIDDEN - Статуя Дао Чэнлиня 3048585239
30323:Карта $HIDDEN - Потерянный идол питомника 3048585239
30324:Карта $HIDDEN - Эрцзиндянский идол 3048585239
30325:Карта $HIDDEN - Статуя нижней ветровой эрозии 3048585239
30326:Карта $HIDDEN - Статуя песчаных равнин 3048585239
30327:Карта $HIDDEN - Статуя Верхней Ветровой Эрозии 3048585239
35104: запустить начальную задачу
30600:Ветра прошлого - Встретьте Эмбер у входа в храм
30601:Ветра прошлого - Поговорите с Эмбер
30602:Ветра прошлого - Войдите в храм
@@ -102,7 +113,7 @@
35101:Следы странника - Следуйте за Паймон
35102:Следы странника - Вскарабкайтесь по скале
35103:Следы странника - [N/A] 469284815
35104:Следы странника - [N/A] 2858699967
35104:Следы странника - Где начинаются мечты (Поймай Пеймон, компьютерная графика)
35105:Следы странника - Подойдите к скале
35106:Следы странника - Активируйте точку телепортации
35107:Следы странника - [N/A] 2743942591

View File

@@ -0,0 +1,84 @@
900:Paimon
902:Package
903:Mcoin
1001:Recommend
1002:City
1003:Blacksmith
1004:Grocery
1005:Food
1006:Sea Lamp
1007:Virtual Shop
1008:Liyue Grocery
1009:Liyue Souvenir
1010:Liyue Restaurant
1011:Npc Flora
1012:Npc Charles
1013:Npc Shiliu
1014:Npc Schulz
1015:Npc Brook
1016:Npc Hopkins
1017:Npc Draff
1018:Npc Chloris
1019:Npc Licai
1020:Npc Yueshu
1021:Npc Gui
1022:Npc Gao
1023:Npc Sun
1024:Npc Qiming
1025:Npc Zhangshun
1026:Npc Chen
1027:Npc Erniang
1028:Npc Shitou
1029:Npc Jifang
1030:Npc Zhu
1031:Npc Bai
1032:Npc Kai
1033:Npc Linglang
1034:Npc Verrgoldet
1035:Npc Zhou
1036:Task Ekaterina
1037:Activity Aster
1038:Task Tartaglia
1039:Npc Harris
1040:Activity Dragon Spine
1041:Activity Treasure Map
1042:Npc Yinian
1043:Activity Sea Lamp
1044:Activity Fleur Fair
1045:Npc Changshun
1046:Npc Bolai
1047:Npc Ashanpo
1048:Home
1049:Home Limit
1050:Npc Masterlu
1051:Npc Goth
1052:Costume
1053:Npc Obata
1054:Npc Qiuyue
1055:Npc Ryouko
1056:Inazuma Grocery
1057:Inazuma Souvenir
1058:Inazuma Restaurant
1059:Npc Kuroda
1060:Npc Kiminamianna
1061:Npc Tomoki
1062:Npc Karpillia
1063:Blacksmith Inazuma
1064:Fish
1065:Fish Liyue
1066:Fish Inazuma
1067:Npc Kiyoko
1068:Expired Widget Mengde
1069:Capture Animal Shop
1070:Npc Yamashirokenta
15001:Activity Channeller Slab
16001:Activity Summer Time
16002:Activity Bounce Conjuring
20001:Activity Blitz Rush
20002:Activity Chess
20004:Activity Winter Camp
20005:Activity Lantern Rite
22001:Activity Roguelike Dungeon
27001:Activity Rogue Diary
28001:Activity Summer Time V2
30001:Activity Graven Innocence

View File

@@ -34,6 +34,12 @@
071:华紫樱绯
076:苍流踏花
081:素霓伣天
091:提纳里池(非原名)
092:钟离池(非原名)
093:猎人之径池(非原名)
091:巡御蘙荟-提纳里
092:陵薮市朝-钟离
093:神铸赋形-猎人贯虹
097:雳裁冥昭-赛诺
098:杯装之诗-温迪
099:神铸赋形-赤沙终末
100:翩舞歈莲-妮露
101:深秘之息-阿贝多
101:神铸赋形-圣显绿箭

View File

@@ -1,19 +1,30 @@
30302:神像解锁$HIDDEN - [N/A] 362713143
30303:神像解锁$HIDDEN - [N/A] 715511863
30304:神像解锁$HIDDEN - [N/A] 163018255
30305:神像解锁$HIDDEN - [N/A] 3694648119
30306:神像解锁$HIDDEN - [N/A] 3223799591
30307:神像解锁$HIDDEN - [N/A] 1232757671
30308:神像解锁$HIDDEN - [N/A] 3056513767
30309:神像解锁$HIDDEN - [N/A] 2426653367
30310:神像解锁$HIDDEN - [N/A] 2003131071
30311:神像解锁$HIDDEN - [N/A] 105277231
30312:神像解锁$HIDDEN - [N/A] 3391806215
30313:神像解锁$HIDDEN - [N/A] 1357500887
30314:神像解锁$HIDDEN - [N/A] 3054344935
30315:神像解锁$HIDDEN - [N/A] 2041734695
30316:神像解锁$HIDDEN - [N/A] 4028276703
30317:神像解锁$HIDDEN - [N/A] 3048585239
30302:七天神像解锁$HIDDEN - 苍风高地 362713143
30303:七天神像解锁$HIDDEN - 风啸山坡 715511863
30304:七天神像解锁$HIDDEN - 明冠山地 163018255
30305:七天神像解锁$HIDDEN - 碧水原 3694648119
30306:七天神像解锁$HIDDEN - 云来海 3223799591
30307:七天神像解锁$HIDDEN - 珉林 1232757671
30308:七天神像解锁$HIDDEN - 璃沙郊 3056513767
30309:七天神像解锁$HIDDEN - 琼玑原 2426653367
30310:七天神像解锁$HIDDEN - 龙脊雪山 2003131071
30311:七天神像解锁$HIDDEN - 鸣神岛 105277231
30312:七天神像解锁$HIDDEN - 神无冢 3391806215
30313:七天神像解锁$HIDDEN - 八酝岛 1357500887
30314:七天神像解锁$HIDDEN - 清籁岛 3054344935
30315:七天神像解锁$HIDDEN - 海祇岛 2041734695
30316:七天神像解锁$HIDDEN - 鹤观 4028276703
30317:七天神像解锁$HIDDEN - 层岩巨渊 3048585239
30318:七天神像解锁$HIDDEN - 护世森 3048585239
30319:七天神像解锁$HIDDEN - 阿陀河谷 3048585239
30320:七天神像解锁$HIDDEN - 恒纳兰那 3048585239
30321:七天神像解锁$HIDDEN - 善见地 3048585239
30322:七天神像解锁$HIDDEN - 道成林 3048585239
30323:七天神像解锁$HIDDEN - 失落的苗圃 3048585239
30324:七天神像解锁$HIDDEN - 二净甸 3048585239
30325:七天神像解锁$HIDDEN - 下风蚀地 3048585239
30326:七天神像解锁$HIDDEN - 列柱沙原 3048585239
30327:七天神像解锁$HIDDEN - 上风蚀地 3048585239
35104:开启初始任务
30600:昔日的风 - 在庙宇门口跟安柏见面
30601:昔日的风 - 与安柏对话
30602:昔日的风 - 进入庙宇
@@ -102,7 +113,7 @@
35101:流浪者的足迹 - 跟随派蒙
35102:流浪者的足迹 - 爬上岩台
35103:流浪者的足迹 - [N/A] 469284815
35104:流浪者的足迹 - [N/A] 2858699967
35104:流浪者的足迹 - 梦开始的地方(钓到派蒙CG)
35105:流浪者的足迹 - 到崖壁下方
35106:流浪者的足迹 - 解锁传送锚点
35107:流浪者的足迹 - [N/A] 2743942591

View File

@@ -0,0 +1,73 @@
900:派蒙
902:礼包商城
903:礼包商城
1001:尘辉兑换
1002:荣光之风1
1003:铁匠武器店
1004:蒙德杂货铺
1005:猎鹿人
1006:海灯
1007:原萃树脂
1008:东升
1009:岩之印商店
1010:卯师傅
1011:芙萝拉
1012:查尔斯
1013:石榴
1014:舒茨
1015:布洛克
1016:神奇的霍普金斯
1017:杜拉夫
1018:克罗丽丝
1019:璃彩
1020:月疏
1021:阿桂
1022:老高
1023:老孙
1024:绮命
1025:张顺
1026:快刀陈
1027:中原杂碎店
1028:石头
1029:纪芳
1030:朱老板
1031:小白
1032:老周叔?或者凯叔?
1033:琳琅
1034:菲尔戈黛特
1035:老周叔?或者凯叔?
1036:一大袋摩拉(北国银行)
1037:熄星活动
1038:叶卡捷琳娜(存疑)
1039:哈里斯雪山前营地
1040:「白垩与黑龙」活动商店兑换
1041:迷你仙灵活动
1042:宜年 海灯节
1043:某之印商店
1044:芙罗拉
1045:璃月长顺
1046:万有铺子博来
1047:阿山婆玩具摊
1048:尘歌壶
1049:尘歌壶 限制
1050:路爷工坊主人
1051:歌德大酒店
1052:角色装扮
1053:小畑
1054:秋月
1055:凉子
1056:葵
1057:雷之印商店
1058:「志村屋」店主
1059:黑田
1060:木南杏奈
1061:智树
1062:卡琵莉亚
1063:稻妻铁匠铺
1064:楠塔克钓鱼?
1065:嘉玮
1066:鲸井椛
1067:清子
1068:荣光之风2
1069:若紫
1070:山城健太

View File

@@ -34,6 +34,12 @@
071:華紫櫻緋
076:蒼流踏花
081:素霓俔天
091:提納里池(非原名)
092:钟离池(非原名)
093:獵人之徑池(非原名)
091:巡禦蘙薈-提納里
092:陵藪市朝-鍾離
093:神鑄賦形-獵人貫虹
097:靂裁冥昭-賽諾
098:杯裝之詩-溫迪
099:神鑄賦形-赤沙終末
100:翩舞歈蓮-妮露
101:深秘之息-阿貝多
101:神鑄賦形-聖顯綠箭

View File

@@ -1,19 +1,30 @@
30302:神像解鎖 - [N/A] 362713143
30303:神像解鎖 - [N/A] 715511863
30304:神像解鎖 - [N/A] 163018255
30305:神像解鎖 - [N/A] 3694648119
30306:神像解鎖 - [N/A] 3223799591
30307:神像解鎖 - [N/A] 1232757671
30308:神像解鎖 - [N/A] 3056513767
30309:神像解鎖 - [N/A] 2426653367
30310:神像解鎖 - [N/A] 2003131071
30311:神像解鎖 - [N/A] 105277231
30312:神像解鎖 - [N/A] 3391806215
30313:神像解鎖 - [N/A] 1357500887
30314:神像解鎖 - [N/A] 3054344935
30315:神像解鎖 - [N/A] 2041734695
30316:神像解鎖 - [N/A] 4028276703
30317:神像解鎖 - [N/A] 3048585239
30302:七天神像解鎖$HIDDEN - 蒼風高地 362713143
30303:七天神像解鎖$HIDDEN - 風嘯山坡 715511863
30304:七天神像解鎖$HIDDEN - 明冠山地 163018255
30305:七天神像解鎖$HIDDEN - 碧水原 3694648119
30306:七天神像解鎖$HIDDEN - 雲來海 3223799591
30307:七天神像解鎖$HIDDEN - 珉林 1232757671
30308:七天神像解鎖$HIDDEN - 璃沙郊 3056513767
30309:七天神像解鎖$HIDDEN - 瓊璣原 2426653367
30310:七天神像解鎖$HIDDEN - 龍脊雪山 2003131071
30311:七天神像解鎖$HIDDEN - 鳴神島 105277231
30312:七天神像解鎖$HIDDEN - 神無塚 3391806215
30313:七天神像解鎖$HIDDEN - 八醞島 1357500887
30314:七天神像解鎖$HIDDEN - 清籟島 3054344935
30315:七天神像解鎖$HIDDEN - 海祇島 2041734695
30316:七天神像解鎖$HIDDEN - 鶴觀 4028276703
30317:七天神像解鎖$HIDDEN - 層岩巨淵 3048585239
30318:七天神像解鎖$HIDDEN - 護世森 3048585239
30319:七天神像解鎖$HIDDEN - 阿陀河谷 3048585239
30320:七天神像解鎖$HIDDEN - 恆納蘭那 3048585239
30321:七天神像解鎖$HIDDEN - 善見地 3048585239
30322:七天神像解鎖$HIDDEN - 道成林 3048585239
30323:七天神像解鎖$HIDDEN - 失落的苗圃 3048585239
30324:七天神像解鎖$HIDDEN - 二淨甸 3048585239
30325:七天神像解鎖$HIDDEN - 下風蝕地 3048585239
30326:七天神像解鎖$HIDDEN - 列柱沙原 3048585239
30327:七天神像解鎖$HIDDEN - 上風蝕地 3048585239
35104:開啟初始任務
30600:昔日的風 - 在廟宇門口跟安柏見面
30601:昔日的風 - 與安柏對話
30602:昔日的風 - 進入廟宇
@@ -102,7 +113,7 @@
35101:流浪者的足跡 - 跟隨派蒙
35102:流浪者的足跡 - 爬上岩台
35103:流浪者的足跡 - [N/A] 469284815
35104:流浪者的足跡 - [N/A] 2858699967
35104:流浪者的足跡 - 夢開始的地方(釣到派蒙CG)
35105:流浪者的足跡 - 到崖壁下方
35106:流浪者的足跡 - 解鎖傳送錨點
35107:流浪者的足跡 - [N/A] 2743942591

View File

@@ -0,0 +1,73 @@
900:派蒙
902:禮包商城
903:禮包商城
1001:塵輝兌換
1002:榮光之風1
1003:鐵匠武器店
1004:蒙德雜貨舖
1005:獵鹿人
1006:海燈
1007:原萃樹脂
1008:東昇
1009:岩之印商店
1010:卯師傅
1011:芙蘿拉
1012:查爾斯
1013:石榴
1014:舒茨
1015:布洛克
1016:神奇的霍普金斯
1017:杜拉夫
1018:克羅麗絲
1019:璃彩
1020:月疏
1021:阿桂
1022:老高
1023:老孫
1024:綺命
1025:張順
1026:快刀陳
1027:中原雜碎店
1028:石頭
1029:紀芳
1030:朱老闆
1031:小白
1032:老周叔?或者凱叔?
1033:琳瑯
1034:菲爾戈黛特
1035:老周叔?或者凱叔?
1036:一大袋摩拉(北國銀行)
1037:熄星活動
1038:葉卡捷琳娜(存疑)
1039:哈里斯雪山前營地
1040:「白堊與黑龍」活動商店兌換
1041:迷你仙靈活動
1042:宜年 海燈節
1043:某之印商店
1044:芙羅拉
1045:璃月長順
1046:萬有鋪子博來
1047:阿山婆玩具攤
1048:塵歌壺
1049:塵歌壺 限制
1050:路爺工坊主人
1051:歌德大酒店
1052:角色裝扮
1053:小畑
1054:秋月
1055:涼子
1056:葵
1057:雷之印商店
1058:「志村屋」店主
1059:黑田
1060:木南杏奈
1061:智樹
1062:卡琵莉亞
1063:稻妻鐵匠鋪
1064:楠塔克釣魚?
1065:嘉瑋
1066:鯨井椛
1067:清子
1068:榮光之風2
1069:若紫
1070:山城健太