Update page navigation

Add Achievement page
This commit is contained in:
2023-05-07 14:55:50 +08:00
parent c7d3e5021c
commit b8cfaf308d
22 changed files with 2599 additions and 2145 deletions

View File

@ -30,31 +30,56 @@ namespace GrasscutterTools.Forms
{
this.components = new System.ComponentModel.Container();
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FormMain));
this.NavContainer = new System.Windows.Forms.SplitContainer();
this.ListPages = new System.Windows.Forms.ListBox();
this.TCMain = new System.Windows.Forms.TabControl();
this.CmbCommand = new System.Windows.Forms.ComboBox();
this.BtnCopy = new System.Windows.Forms.Button();
this.ChkAutoCopy = new System.Windows.Forms.CheckBox();
this.GrpCommand = new System.Windows.Forms.GroupBox();
this.BtnInvokeOpenCommand = new System.Windows.Forms.Button();
this.TPRemoteCall = new System.Windows.Forms.TabPage();
this.TPAbout = new System.Windows.Forms.TabPage();
this.TPManage = new System.Windows.Forms.TabPage();
this.TPScene = new System.Windows.Forms.TabPage();
this.TPItem = new System.Windows.Forms.TabPage();
this.TPWeapon = new System.Windows.Forms.TabPage();
this.TPAvatar = new System.Windows.Forms.TabPage();
this.TPSpawn = new System.Windows.Forms.TabPage();
this.TPQuest = new System.Windows.Forms.TabPage();
this.TPArtifact = new System.Windows.Forms.TabPage();
this.TPCustom = new System.Windows.Forms.TabPage();
this.TPHome = new System.Windows.Forms.TabPage();
this.TCMain = new System.Windows.Forms.TabControl();
this.TPMail = new System.Windows.Forms.TabPage();
this.TPLoopTasks = new System.Windows.Forms.TabPage();
this.MenuSpawnEntityFilter = new System.Windows.Forms.ContextMenuStrip(this.components);
((System.ComponentModel.ISupportInitialize)(this.NavContainer)).BeginInit();
this.NavContainer.Panel1.SuspendLayout();
this.NavContainer.Panel2.SuspendLayout();
this.NavContainer.SuspendLayout();
this.GrpCommand.SuspendLayout();
this.TCMain.SuspendLayout();
this.SuspendLayout();
//
// NavContainer
//
resources.ApplyResources(this.NavContainer, "NavContainer");
this.NavContainer.Name = "NavContainer";
//
// NavContainer.Panel1
//
resources.ApplyResources(this.NavContainer.Panel1, "NavContainer.Panel1");
this.NavContainer.Panel1.Controls.Add(this.ListPages);
//
// NavContainer.Panel2
//
resources.ApplyResources(this.NavContainer.Panel2, "NavContainer.Panel2");
this.NavContainer.Panel2.Controls.Add(this.TCMain);
//
// ListPages
//
resources.ApplyResources(this.ListPages, "ListPages");
this.ListPages.BackColor = System.Drawing.Color.WhiteSmoke;
this.ListPages.BorderStyle = System.Windows.Forms.BorderStyle.None;
this.ListPages.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawVariable;
this.ListPages.FormattingEnabled = true;
this.ListPages.Name = "ListPages";
this.ListPages.DrawItem += new System.Windows.Forms.DrawItemEventHandler(this.ListPages_DrawItem);
this.ListPages.SelectedIndexChanged += new System.EventHandler(this.ListPages_SelectedIndexChanged);
//
// TCMain
//
resources.ApplyResources(this.TCMain, "TCMain");
this.TCMain.Multiline = true;
this.TCMain.Name = "TCMain";
this.TCMain.SelectedIndex = 0;
this.TCMain.SizeMode = System.Windows.Forms.TabSizeMode.Fixed;
//
// CmbCommand
//
resources.ApplyResources(this.CmbCommand, "CmbCommand");
@ -93,110 +118,6 @@ namespace GrasscutterTools.Forms
this.BtnInvokeOpenCommand.UseVisualStyleBackColor = true;
this.BtnInvokeOpenCommand.Click += new System.EventHandler(this.BtnInvokeOpenCommand_Click);
//
// TPRemoteCall
//
resources.ApplyResources(this.TPRemoteCall, "TPRemoteCall");
this.TPRemoteCall.Name = "TPRemoteCall";
this.TPRemoteCall.UseVisualStyleBackColor = true;
//
// TPAbout
//
resources.ApplyResources(this.TPAbout, "TPAbout");
this.TPAbout.Name = "TPAbout";
this.TPAbout.UseVisualStyleBackColor = true;
//
// TPManage
//
resources.ApplyResources(this.TPManage, "TPManage");
this.TPManage.Name = "TPManage";
this.TPManage.UseVisualStyleBackColor = true;
//
// TPScene
//
resources.ApplyResources(this.TPScene, "TPScene");
this.TPScene.Name = "TPScene";
this.TPScene.UseVisualStyleBackColor = true;
//
// TPItem
//
resources.ApplyResources(this.TPItem, "TPItem");
this.TPItem.Name = "TPItem";
this.TPItem.UseVisualStyleBackColor = true;
//
// TPWeapon
//
resources.ApplyResources(this.TPWeapon, "TPWeapon");
this.TPWeapon.Name = "TPWeapon";
this.TPWeapon.UseVisualStyleBackColor = true;
//
// TPAvatar
//
resources.ApplyResources(this.TPAvatar, "TPAvatar");
this.TPAvatar.Name = "TPAvatar";
this.TPAvatar.UseVisualStyleBackColor = true;
//
// TPSpawn
//
resources.ApplyResources(this.TPSpawn, "TPSpawn");
this.TPSpawn.Name = "TPSpawn";
this.TPSpawn.UseVisualStyleBackColor = true;
//
// TPQuest
//
resources.ApplyResources(this.TPQuest, "TPQuest");
this.TPQuest.Name = "TPQuest";
this.TPQuest.UseVisualStyleBackColor = true;
//
// TPArtifact
//
resources.ApplyResources(this.TPArtifact, "TPArtifact");
this.TPArtifact.Name = "TPArtifact";
this.TPArtifact.UseVisualStyleBackColor = true;
//
// TPCustom
//
resources.ApplyResources(this.TPCustom, "TPCustom");
this.TPCustom.Name = "TPCustom";
this.TPCustom.UseVisualStyleBackColor = true;
//
// TPHome
//
resources.ApplyResources(this.TPHome, "TPHome");
this.TPHome.Name = "TPHome";
this.TPHome.UseVisualStyleBackColor = true;
//
// TCMain
//
resources.ApplyResources(this.TCMain, "TCMain");
this.TCMain.Controls.Add(this.TPHome);
this.TCMain.Controls.Add(this.TPRemoteCall);
this.TCMain.Controls.Add(this.TPCustom);
this.TCMain.Controls.Add(this.TPArtifact);
this.TCMain.Controls.Add(this.TPSpawn);
this.TCMain.Controls.Add(this.TPItem);
this.TCMain.Controls.Add(this.TPAvatar);
this.TCMain.Controls.Add(this.TPWeapon);
this.TCMain.Controls.Add(this.TPManage);
this.TCMain.Controls.Add(this.TPMail);
this.TCMain.Controls.Add(this.TPLoopTasks);
this.TCMain.Controls.Add(this.TPQuest);
this.TCMain.Controls.Add(this.TPScene);
this.TCMain.Controls.Add(this.TPAbout);
this.TCMain.Name = "TCMain";
this.TCMain.SelectedIndex = 0;
//
// TPMail
//
resources.ApplyResources(this.TPMail, "TPMail");
this.TPMail.Name = "TPMail";
this.TPMail.UseVisualStyleBackColor = true;
//
// TPLoopTasks
//
resources.ApplyResources(this.TPLoopTasks, "TPLoopTasks");
this.TPLoopTasks.Name = "TPLoopTasks";
this.TPLoopTasks.UseVisualStyleBackColor = true;
//
// MenuSpawnEntityFilter
//
resources.ApplyResources(this.MenuSpawnEntityFilter, "MenuSpawnEntityFilter");
@ -206,16 +127,19 @@ namespace GrasscutterTools.Forms
//
resources.ApplyResources(this, "$this");
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.Controls.Add(this.TCMain);
this.Controls.Add(this.NavContainer);
this.Controls.Add(this.GrpCommand);
this.KeyPreview = true;
this.Name = "FormMain";
this.FormClosed += new System.Windows.Forms.FormClosedEventHandler(this.FormMain_FormClosed);
this.Load += new System.EventHandler(this.FormMain_Load);
this.KeyDown += new System.Windows.Forms.KeyEventHandler(this.FormMain_KeyDown);
this.NavContainer.Panel1.ResumeLayout(false);
this.NavContainer.Panel2.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.NavContainer)).EndInit();
this.NavContainer.ResumeLayout(false);
this.GrpCommand.ResumeLayout(false);
this.GrpCommand.PerformLayout();
this.TCMain.ResumeLayout(false);
this.ResumeLayout(false);
}
@ -227,21 +151,9 @@ namespace GrasscutterTools.Forms
private System.Windows.Forms.CheckBox ChkAutoCopy;
private System.Windows.Forms.GroupBox GrpCommand;
private System.Windows.Forms.Button BtnInvokeOpenCommand;
private System.Windows.Forms.TabPage TPRemoteCall;
private System.Windows.Forms.TabPage TPAbout;
private System.Windows.Forms.TabPage TPManage;
private System.Windows.Forms.TabPage TPScene;
private System.Windows.Forms.TabPage TPItem;
private System.Windows.Forms.TabPage TPWeapon;
private System.Windows.Forms.TabPage TPAvatar;
private System.Windows.Forms.TabPage TPSpawn;
private System.Windows.Forms.TabPage TPQuest;
private System.Windows.Forms.TabPage TPArtifact;
private System.Windows.Forms.TabPage TPCustom;
private System.Windows.Forms.TabPage TPHome;
private System.Windows.Forms.TabControl TCMain;
private System.Windows.Forms.TabPage TPMail;
private System.Windows.Forms.ContextMenuStrip MenuSpawnEntityFilter;
private System.Windows.Forms.TabPage TPLoopTasks;
private System.Windows.Forms.ListBox ListPages;
private System.Windows.Forms.SplitContainer NavContainer;
}
}

View File

@ -85,27 +85,69 @@ namespace GrasscutterTools.Forms
TCMain.SuspendLayout();
var ph = CreatePage<PageHome>();
ph.OnLanguageChanged = () => FormMain_Load(this, EventArgs.Empty);
TPHome.Controls.Add(ph);
var poc = CreatePage<PageOpenCommand>();
poc.ShowTipInRunButton = msg => ShowTip(msg, BtnInvokeOpenCommand);
TPRemoteCall.Controls.Add(poc);
TPCustom.Controls.Add(CreatePage<PageCustomCommands>());
TPArtifact.Controls.Add(CreatePage<PageGiveArtifact>());
TPSpawn.Controls.Add(CreatePage<PageSpawn>());
TPItem.Controls.Add(CreatePage<PageGiveItem>());
TPAvatar.Controls.Add(CreatePage<PageAvatar>());
TPWeapon.Controls.Add(CreatePage<PageGiveWeapon>());
TPManage.Controls.Add(CreatePage<PageManagement>());
TPMail.Controls.Add(CreatePage<PageMail>());
TPLoopTasks.Controls.Add(CreatePage<PageTasks>());
TPQuest.Controls.Add(CreatePage<PageQuest>());
TPScene.Controls.Add(CreatePage<PageScene>());
TPAbout.Controls.Add(CreatePage<PageAbout>());
//TPAbout.Controls.Add(CreatePage<PageTools>());
CreatePage<PageCustomCommands>();
CreatePage<PageGiveArtifact>();
CreatePage<PageSpawn>();
CreatePage<PageGiveItem>();
CreatePage<PageAvatar>();
CreatePage<PageGiveWeapon>();
CreatePage<PageManagement>();
CreatePage<PageMail>();
CreatePage<PageTasks>();
CreatePage<PageQuest>();
CreatePage<PageScene>();
CreatePage<PageAchievement>();
CreatePage<PageAbout>();
//AddPageToGui(CreatePage<PageTools>("Tools"));
TCMain.ResumeLayout();
Logger.I(TAG, "InitPages completed");
}
/// <summary>
/// 初始化页面导航
/// </summary>
private void InitPagesNav()
{
ListPages.Items.Clear();
ListPages.Items.AddRange(new object[]
{
Resources.PageHomeTitle,
Resources.PageOpenCommandTitle,
Resources.PageCustomCommandsTitle,
Resources.PageGetArtifactTitle,
Resources.PageSpawnTitle,
Resources.PageGiveItemTitle,
Resources.PageAvatarTitle,
Resources.PageGiveWeaponTitle,
Resources.PageManagementTitle,
Resources.PageMailTitle,
Resources.PageTasksTitle,
Resources.PageQuestTitle,
Resources.PageSceneTitle,
Resources.PageAchievementTitle,
Resources.PageAboutTitle,
});
}
/// <summary>
/// 导航列表项居中绘制
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void ListPages_DrawItem(object sender, DrawItemEventArgs e)
{
e.DrawBackground();
e.DrawFocusRectangle();
var strFmt = new StringFormat
{
Alignment = StringAlignment.Center, //文本垂直居中
LineAlignment = StringAlignment.Center //文本水平居中
};
e.Graphics.DrawString(ListPages.Items[e.Index].ToString(), e.Font, new SolidBrush(e.ForeColor), e.Bounds, strFmt);
}
/// <summary>
/// 创建指定类型页面
/// </summary>
@ -121,9 +163,17 @@ namespace GrasscutterTools.Forms
Dock = DockStyle.Fill,
Name = typeof(T).Name,
};
var tp = new TabPage();
TCMain.TabPages.Add(tp);
tp.Controls.Add(page);
return page;
}
private void ListPages_SelectedIndexChanged(object sender, EventArgs e)
{
TCMain.SelectedIndex = ListPages.SelectedIndex;
}
/// <summary>
/// 窗体载入时触发(切换语言时会重新载入)
/// </summary>
@ -136,6 +186,9 @@ namespace GrasscutterTools.Forms
#endif
if (DesignMode) return;
// 加载页面导航
InitPagesNav();
// 加载游戏ID资源
GameData.LoadResources();
@ -326,7 +379,16 @@ namespace GrasscutterTools.Forms
if (Common.OC == null || !Common.OC.CanInvoke)
{
ShowTip(Resources.RequireOpenCommandTip, BtnInvokeOpenCommand);
TCMain.SelectedTab = TPRemoteCall;
//TCMain.SelectedTab = TPRemoteCall;
for (var i = 0; i < TCMain.Controls.Count; i++)
{
if (TCMain.Controls[i].Controls[0] is PageOpenCommand)
{
ListPages.SelectedIndex = i;
break;
}
}
return false;
}
@ -447,5 +509,6 @@ namespace GrasscutterTools.Forms
}
#endregion - General -
}
}

View File

@ -127,52 +127,14 @@
<data name="ChkAutoCopy.Text" xml:space="preserve">
<value>Auto</value>
</data>
<data name="GrpCommand.Text" xml:space="preserve">
<value>Command - [Ctrl] Autorun - [Shift] Append - [Alt] Only run - [|] Split multiple commands</value>
</data>
<data name="BtnInvokeOpenCommand.Text" xml:space="preserve">
<value>Run(F5)</value>
</data>
<data name="TPRemoteCall.Text" xml:space="preserve">
<value>Remote</value>
<data name="GrpCommand.Text" xml:space="preserve">
<value>Command - [Ctrl] Autorun - [Shift] Append - [Alt] Only run - [|] Split multiple commands</value>
</data>
<data name="TPAbout.Text" xml:space="preserve">
<value>About</value>
</data>
<data name="TPManage.Text" xml:space="preserve">
<value>Manage</value>
</data>
<data name="TPScene.Text" xml:space="preserve">
<value>Scene</value>
</data>
<data name="TPItem.Text" xml:space="preserve">
<value>Items</value>
</data>
<data name="TPWeapon.Text" xml:space="preserve">
<value>Weapons</value>
</data>
<data name="TPAvatar.Text" xml:space="preserve">
<value>Avatar</value>
</data>
<data name="TPSpawn.Text" xml:space="preserve">
<value>Spawn</value>
</data>
<data name="TPQuest.Text" xml:space="preserve">
<value>Quest</value>
</data>
<data name="TPArtifact.Text" xml:space="preserve">
<value>Artifacts</value>
</data>
<data name="TPCustom.Text" xml:space="preserve">
<value>Custom</value>
</data>
<data name="TPHome.Text" xml:space="preserve">
<value>Home</value>
</data>
<data name="TPMail.Text" xml:space="preserve">
<value>Mail</value>
</data>
<data name="TPLoopTasks.Text" xml:space="preserve">
<value>Loop</value>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="$this.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>Inherit</value>
</data>
</root>

View File

@ -118,397 +118,139 @@
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="TPQuest.Size" type="System.Drawing.Size, System.Drawing">
<value>652, 245</value>
<data name="CmbCommand.Size" type="System.Drawing.Size, System.Drawing">
<value>600, 25</value>
</data>
<data name="TPWeapon.Size" type="System.Drawing.Size, System.Drawing">
<value>652, 245</value>
<data name="&gt;&gt;TCMain.Type" xml:space="preserve">
<value>System.Windows.Forms.TabControl, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="TPArtifact.Size" type="System.Drawing.Size, System.Drawing">
<value>652, 245</value>
<data name="&gt;&gt;GrpCommand.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="GrpCommand.Text" xml:space="preserve">
<value>命令 - [Ctrl] 自动执行 - [Shift] 拼接命令 - [Alt] 仅执行 - [|] 分割多条命令</value>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="TCMain.Appearance" type="System.Windows.Forms.TabAppearance, System.Windows.Forms">
<value>FlatButtons</value>
</data>
<data name="ChkAutoCopy.Size" type="System.Drawing.Size, System.Drawing">
<value>51, 21</value>
</data>
<data name="&gt;&gt;$this.Type" xml:space="preserve">
<value>System.Windows.Forms.Form, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="TCMain.Size" type="System.Drawing.Size, System.Drawing">
<value>656, 275</value>
</data>
<data name="&gt;&gt;ChkAutoCopy.Parent" xml:space="preserve">
<value>GrpCommand</value>
</data>
<data name="$this.MinimumSize" type="System.Drawing.Size, System.Drawing">
<value>850, 400</value>
</data>
<data name="MenuSpawnEntityFilter.Size" type="System.Drawing.Size, System.Drawing">
<value>61, 4</value>
</data>
<data name="&gt;&gt;CmbCommand.Parent" xml:space="preserve">
<value>GrpCommand</value>
</data>
<data name="&gt;&gt;GrpCommand.Parent" xml:space="preserve">
<value>$this</value>
</data>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="BtnCopy.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<data name="ListPages.Location" type="System.Drawing.Point, System.Drawing">
<value>0, 0</value>
</data>
<data name="&gt;&gt;NavContainer.Panel2.Type" xml:space="preserve">
<value>System.Windows.Forms.SplitterPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;BtnCopy.Type" xml:space="preserve">
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;ListPages.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="$this.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="TPScene.Size" type="System.Drawing.Size, System.Drawing">
<value>652, 245</value>
</data>
<data name="TPManage.Text" xml:space="preserve">
<value>管理</value>
</data>
<data name="TCMain.Size" type="System.Drawing.Size, System.Drawing">
<value>660, 275</value>
</data>
<data name="&gt;&gt;MenuSpawnEntityFilter.Type" xml:space="preserve">
<value>System.Windows.Forms.ContextMenuStrip, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;TPSpawn.Name" xml:space="preserve">
<value>TPSpawn</value>
</data>
<data name="&gt;&gt;GrpCommand.ZOrder" xml:space="preserve">
<value>2</value>
</data>
<data name="&gt;&gt;TPAbout.Name" xml:space="preserve">
<value>TPAbout</value>
</data>
<data name="&gt;&gt;TPScene.Type" xml:space="preserve">
<value>System.Windows.Forms.TabPage, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="TPCustom.Location" type="System.Drawing.Point, System.Drawing">
<value>4, 26</value>
</data>
<data name="&gt;&gt;TPSpawn.Parent" xml:space="preserve">
<value>TCMain</value>
</data>
<data name="&gt;&gt;TPQuest.ZOrder" xml:space="preserve">
<value>11</value>
</data>
<data name="TPLoopTasks.Text" xml:space="preserve">
<value>循环</value>
</data>
<data name="&gt;&gt;TPRemoteCall.Parent" xml:space="preserve">
<value>TCMain</value>
</data>
<data name="&gt;&gt;TPHome.Name" xml:space="preserve">
<value>TPHome</value>
</data>
<data name="&gt;&gt;BtnInvokeOpenCommand.ZOrder" xml:space="preserve">
<value>0</value>
<data name="GrpCommand.MinimumSize" type="System.Drawing.Size, System.Drawing">
<value>610, 56</value>
</data>
<assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="GrpCommand.TabIndex" type="System.Int32, mscorlib">
<value>3</value>
</data>
<data name="&gt;&gt;BtnCopy.ZOrder" xml:space="preserve">
<value>1</value>
<data name="CmbCommand.Location" type="System.Drawing.Point, System.Drawing">
<value>87, 21</value>
</data>
<data name="&gt;&gt;TPHome.Parent" xml:space="preserve">
<value>TCMain</value>
<data name="ListPages.Size" type="System.Drawing.Size, System.Drawing">
<value>150, 275</value>
</data>
<data name="&gt;&gt;TPRemoteCall.ZOrder" xml:space="preserve">
<value>1</value>
<data name="&gt;&gt;NavContainer.Panel2.Parent" xml:space="preserve">
<value>NavContainer</value>
</data>
<data name="TPHome.Size" type="System.Drawing.Size, System.Drawing">
<value>652, 245</value>
<data name="&gt;&gt;MenuSpawnEntityFilter.Type" xml:space="preserve">
<value>System.Windows.Forms.ContextMenuStrip, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
<value>7, 17</value>
<data name="GrpCommand.Location" type="System.Drawing.Point, System.Drawing">
<value>12, 293</value>
</data>
<data name="&gt;&gt;TPWeapon.Type" xml:space="preserve">
<value>System.Windows.Forms.TabPage, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;TPSpawn.Type" xml:space="preserve">
<value>System.Windows.Forms.TabPage, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;ChkAutoCopy.Parent" xml:space="preserve">
<value>GrpCommand</value>
</data>
<data name="TPSpawn.Text" xml:space="preserve">
<value>生成</value>
</data>
<data name="&gt;&gt;TPAvatar.ZOrder" xml:space="preserve">
<value>6</value>
</data>
<data name="&gt;&gt;TPAvatar.Name" xml:space="preserve">
<value>TPAvatar</value>
<data name="&gt;&gt;CmbCommand.Type" xml:space="preserve">
<value>System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="BtnInvokeOpenCommand.Text" xml:space="preserve">
<value>执行(F5)</value>
</data>
<data name="TPMail.TabIndex" type="System.Int32, mscorlib">
<value>16</value>
<data name="&gt;&gt;GrpCommand.ZOrder" xml:space="preserve">
<value>2</value>
</data>
<data name="TPManage.Padding" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>3, 3, 3, 3</value>
</data>
<data name="TPArtifact.Padding" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>3, 3, 3, 3</value>
</data>
<data name="&gt;&gt;TPArtifact.Type" xml:space="preserve">
<value>System.Windows.Forms.TabPage, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;TPCustom.Type" xml:space="preserve">
<value>System.Windows.Forms.TabPage, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="GrpCommand.Size" type="System.Drawing.Size, System.Drawing">
<value>660, 56</value>
</data>
<data name="TPAbout.Location" type="System.Drawing.Point, System.Drawing">
<value>4, 26</value>
</data>
<data name="TPWeapon.Padding" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>3, 3, 3, 3</value>
</data>
<data name="BtnCopy.Size" type="System.Drawing.Size, System.Drawing">
<value>50, 23</value>
</data>
<data name="&gt;&gt;TPArtifact.Parent" xml:space="preserve">
<value>TCMain</value>
</data>
<data name="&gt;&gt;TPMail.Type" xml:space="preserve">
<value>System.Windows.Forms.TabPage, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="TPAbout.TabIndex" type="System.Int32, mscorlib">
<value>13</value>
</data>
<data name="TPScene.Padding" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>3, 3, 3, 3</value>
</data>
<data name="TPSpawn.TabIndex" type="System.Int32, mscorlib">
<data name="NavContainer.TabIndex" type="System.Int32, mscorlib">
<value>6</value>
</data>
<data name="&gt;&gt;BtnCopy.Parent" xml:space="preserve">
<data name="&gt;&gt;NavContainer.Type" xml:space="preserve">
<value>System.Windows.Forms.SplitContainer, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;GrpCommand.Name" xml:space="preserve">
<value>GrpCommand</value>
</data>
<data name="&gt;&gt;TPCustom.Parent" xml:space="preserve">
<value>TCMain</value>
</data>
<data name="TCMain.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Bottom, Left, Right</value>
</data>
<data name="TPScene.Text" xml:space="preserve">
<value>场景</value>
</data>
<data name="&gt;&gt;TPLoopTasks.Parent" xml:space="preserve">
<value>TCMain</value>
</data>
<data name="&gt;&gt;TPAbout.Type" xml:space="preserve">
<value>System.Windows.Forms.TabPage, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="TPLoopTasks.Location" type="System.Drawing.Point, System.Drawing">
<value>4, 26</value>
</data>
<data name="TPRemoteCall.Padding" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>3, 3, 3, 3</value>
</data>
<data name="&gt;&gt;ChkAutoCopy.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="TPAbout.Padding" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>3, 3, 3, 3</value>
</data>
<data name="$this.StartPosition" type="System.Windows.Forms.FormStartPosition, System.Windows.Forms">
<value>CenterScreen</value>
</data>
<data name="TPLoopTasks.TabIndex" type="System.Int32, mscorlib">
<value>17</value>
</data>
<data name="TPHome.Padding" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>3, 3, 3, 3</value>
</data>
<data name="&gt;&gt;ChkAutoCopy.Name" xml:space="preserve">
<value>ChkAutoCopy</value>
</data>
<data name="&gt;&gt;TPLoopTasks.ZOrder" xml:space="preserve">
<value>10</value>
</data>
<data name="&gt;&gt;TPArtifact.ZOrder" xml:space="preserve">
<value>3</value>
</data>
<data name="TPAvatar.Text" xml:space="preserve">
<value>角色</value>
</data>
<data name="TPSpawn.Location" type="System.Drawing.Point, System.Drawing">
<value>4, 26</value>
</data>
<data name="BtnInvokeOpenCommand.Size" type="System.Drawing.Size, System.Drawing">
<value>75, 23</value>
</data>
<data name="&gt;&gt;$this.Name" xml:space="preserve">
<value>FormMain</value>
</data>
<data name="&gt;&gt;TPAvatar.Parent" xml:space="preserve">
<value>TCMain</value>
</data>
<data name="TPRemoteCall.Text" xml:space="preserve">
<value>远程</value>
</data>
<data name="&gt;&gt;TPItem.Parent" xml:space="preserve">
<value>TCMain</value>
</data>
<data name="&gt;&gt;TCMain.Name" xml:space="preserve">
<value>TCMain</value>
</data>
<data name="TPQuest.Location" type="System.Drawing.Point, System.Drawing">
<value>4, 26</value>
</data>
<data name="TCMain.MinimumSize" type="System.Drawing.Size, System.Drawing">
<value>610, 275</value>
</data>
<data name="TPManage.TabIndex" type="System.Int32, mscorlib">
<value>12</value>
</data>
<data name="TPSpawn.Size" type="System.Drawing.Size, System.Drawing">
<value>652, 245</value>
</data>
<data name="BtnInvokeOpenCommand.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="TPItem.Text" xml:space="preserve">
<value>物品</value>
</data>
<data name="$this.Font" type="System.Drawing.Font, System.Drawing">
<value>Microsoft YaHei UI, 9pt</value>
<data name="$this.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>3, 4, 3, 4</value>
</data>
<data name="ChkAutoCopy.Text" xml:space="preserve">
<value>自动</value>
</data>
<data name="$this.Text" xml:space="preserve">
<value>GrasscutterTools</value>
<data name="TCMain.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="&gt;&gt;TPWeapon.Parent" xml:space="preserve">
<value>TCMain</value>
</data>
<data name="TPRemoteCall.Location" type="System.Drawing.Point, System.Drawing">
<value>4, 26</value>
</data>
<data name="TPAvatar.TabIndex" type="System.Int32, mscorlib">
<value>5</value>
</data>
<data name="TPQuest.TabIndex" type="System.Int32, mscorlib">
<value>15</value>
</data>
<data name="BtnCopy.Location" type="System.Drawing.Point, System.Drawing">
<value>543, 22</value>
</data>
<data name="&gt;&gt;BtnInvokeOpenCommand.Parent" xml:space="preserve">
<value>GrpCommand</value>
</data>
<data name="&gt;&gt;TPCustom.ZOrder" xml:space="preserve">
<value>2</value>
</data>
<data name="TPScene.TabIndex" type="System.Int32, mscorlib">
<value>9</value>
</data>
<data name="&gt;&gt;TPWeapon.ZOrder" xml:space="preserve">
<value>7</value>
</data>
<data name="$this.MinimumSize" type="System.Drawing.Size, System.Drawing">
<value>700, 400</value>
</data>
<data name="&gt;&gt;TPHome.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="TPRemoteCall.TabIndex" type="System.Int32, mscorlib">
<value>14</value>
</data>
<data name="TPAvatar.Size" type="System.Drawing.Size, System.Drawing">
<value>652, 245</value>
</data>
<data name="&gt;&gt;TPManage.Type" xml:space="preserve">
<value>System.Windows.Forms.TabPage, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="GrpCommand.MinimumSize" type="System.Drawing.Size, System.Drawing">
<value>610, 56</value>
<data name="ListPages.ItemHeight" type="System.Int32, mscorlib">
<value>22</value>
</data>
<data name="ChkAutoCopy.TabIndex" type="System.Int32, mscorlib">
<value>3</value>
</data>
<data name="&gt;&gt;GrpCommand.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="ChkAutoCopy.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<data name="BtnCopy.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Right</value>
</data>
<data name="TPHome.Location" type="System.Drawing.Point, System.Drawing">
<value>4, 26</value>
</data>
<data name="&gt;&gt;TPArtifact.Name" xml:space="preserve">
<value>TPArtifact</value>
</data>
<data name="&gt;&gt;TPQuest.Parent" xml:space="preserve">
<value>TCMain</value>
</data>
<data name="TPMail.Text" xml:space="preserve">
<value>邮件</value>
<data name="&gt;&gt;ChkAutoCopy.Name" xml:space="preserve">
<value>ChkAutoCopy</value>
</data>
<data name="ChkAutoCopy.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="BtnInvokeOpenCommand.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
<data name="GrpCommand.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Bottom, Left, Right</value>
</data>
<data name="&gt;&gt;TPScene.ZOrder" xml:space="preserve">
<value>12</value>
<data name="&gt;&gt;BtnInvokeOpenCommand.Type" xml:space="preserve">
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;TPItem.Name" xml:space="preserve">
<value>TPItem</value>
</data>
<data name="&gt;&gt;$this.Type" xml:space="preserve">
<value>System.Windows.Forms.Form, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;TPQuest.Name" xml:space="preserve">
<value>TPQuest</value>
</data>
<data name="CmbCommand.TabIndex" type="System.Int32, mscorlib">
<value>1</value>
</data>
<data name="&gt;&gt;TPAbout.Parent" xml:space="preserve">
<value>TCMain</value>
</data>
<data name="TPWeapon.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>0, 0, 0, 0</value>
</data>
<data name="TPMail.Size" type="System.Drawing.Size, System.Drawing">
<value>652, 245</value>
</data>
<data name="TPCustom.Padding" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>3, 3, 3, 3</value>
</data>
<data name="TCMain.Location" type="System.Drawing.Point, System.Drawing">
<value>12, 12</value>
</data>
<data name="ChkAutoCopy.Size" type="System.Drawing.Size, System.Drawing">
<value>51, 21</value>
</data>
<data name="BtnCopy.Text" xml:space="preserve">
<value>复制</value>
</data>
<data name="ChkAutoCopy.Location" type="System.Drawing.Point, System.Drawing">
<value>599, 24</value>
</data>
<data name="&gt;&gt;TPScene.Name" xml:space="preserve">
<value>TPScene</value>
</data>
<data name="TPItem.Size" type="System.Drawing.Size, System.Drawing">
<value>652, 245</value>
</data>
<data name="BtnCopy.TabIndex" type="System.Int32, mscorlib">
<data name="&gt;&gt;ChkAutoCopy.ZOrder" xml:space="preserve">
<value>2</value>
</data>
<data name="&gt;&gt;TPSpawn.ZOrder" xml:space="preserve">
<value>4</value>
<data name="BtnInvokeOpenCommand.Location" type="System.Drawing.Point, System.Drawing">
<value>6, 22</value>
</data>
<data name="&gt;&gt;TCMain.Parent" xml:space="preserve">
<value>$this</value>
<data name="TCMain.Location" type="System.Drawing.Point, System.Drawing">
<value>0, 0</value>
</data>
<data name="&gt;&gt;TPRemoteCall.Name" xml:space="preserve">
<value>TPRemoteCall</value>
</data>
<data name="TPItem.Padding" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>3, 3, 3, 3</value>
</data>
<data name="TPWeapon.Text" xml:space="preserve">
<value>武器</value>
</data>
<data name="TPWeapon.TabIndex" type="System.Int32, mscorlib">
<value>3</value>
</data>
<data name="CmbCommand.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Left, Right</value>
</data>
<data name="TPArtifact.Text" xml:space="preserve">
<value>圣遗物</value>
</data>
<data name="TPHome.Text" xml:space="preserve">
<value>主页</value>
<data name="ChkAutoCopy.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="&gt;&gt;BtnCopy.Name" xml:space="preserve">
<value>BtnCopy</value>
@ -516,197 +258,170 @@
<data name="&gt;&gt;BtnInvokeOpenCommand.Name" xml:space="preserve">
<value>BtnInvokeOpenCommand</value>
</data>
<data name="TPQuest.Text" xml:space="preserve">
<value>任务</value>
<data name="BtnInvokeOpenCommand.Size" type="System.Drawing.Size, System.Drawing">
<value>75, 23</value>
</data>
<data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing">
<value>684, 361</value>
<data name="&gt;&gt;NavContainer.Name" xml:space="preserve">
<value>NavContainer</value>
</data>
<data name="TPCustom.TabIndex" type="System.Int32, mscorlib">
<value>1</value>
<data name="$this.Text" xml:space="preserve">
<value>GrasscutterTools</value>
</data>
<data name="TPQuest.Padding" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>3, 3, 3, 3</value>
</data>
<data name="TPAvatar.Location" type="System.Drawing.Point, System.Drawing">
<value>4, 26</value>
</data>
<data name="TPCustom.Text" xml:space="preserve">
<value>自定义</value>
</data>
<data name="TPMail.Padding" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>3, 3, 3, 3</value>
</data>
<data name="&gt;&gt;TCMain.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="TPArtifact.TabIndex" type="System.Int32, mscorlib">
<value>2</value>
</data>
<data name="TPWeapon.Location" type="System.Drawing.Point, System.Drawing">
<value>4, 26</value>
</data>
<data name="TPLoopTasks.Padding" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>3, 3, 3, 3</value>
</data>
<data name="&gt;&gt;TPWeapon.Name" xml:space="preserve">
<value>TPWeapon</value>
</data>
<data name="TPItem.Location" type="System.Drawing.Point, System.Drawing">
<value>4, 26</value>
</data>
<data name="&gt;&gt;TPManage.Name" xml:space="preserve">
<value>TPManage</value>
</data>
<data name="TPAvatar.Padding" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>3, 3, 3, 3</value>
</data>
<data name="TPAbout.Size" type="System.Drawing.Size, System.Drawing">
<value>652, 245</value>
</data>
<data name="$this.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>3, 4, 3, 4</value>
</data>
<data name="TPAbout.Text" xml:space="preserve">
<value>关于</value>
</data>
<data name="&gt;&gt;GrpCommand.Name" xml:space="preserve">
<value>GrpCommand</value>
</data>
<data name="&gt;&gt;TPScene.Parent" xml:space="preserve">
<value>TCMain</value>
</data>
<data name="CmbCommand.Location" type="System.Drawing.Point, System.Drawing">
<value>87, 21</value>
</data>
<data name="&gt;&gt;TPQuest.Type" xml:space="preserve">
<value>System.Windows.Forms.TabPage, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;TPAvatar.Type" xml:space="preserve">
<value>System.Windows.Forms.TabPage, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="BtnCopy.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Right</value>
</data>
<data name="&gt;&gt;TPAbout.ZOrder" xml:space="preserve">
<value>13</value>
</data>
<data name="BtnInvokeOpenCommand.Location" type="System.Drawing.Point, System.Drawing">
<value>6, 22</value>
</data>
<data name="ChkAutoCopy.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="&gt;&gt;TPItem.ZOrder" xml:space="preserve">
<value>5</value>
</data>
<data name="TPManage.Location" type="System.Drawing.Point, System.Drawing">
<value>4, 26</value>
</data>
<data name="&gt;&gt;CmbCommand.Parent" xml:space="preserve">
<value>GrpCommand</value>
</data>
<data name="TPSpawn.Padding" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>3, 3, 3, 3</value>
</data>
<data name="TPArtifact.Location" type="System.Drawing.Point, System.Drawing">
<value>4, 26</value>
</data>
<data name="TPHome.TabIndex" type="System.Int32, mscorlib">
<data name="BtnInvokeOpenCommand.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
</data>
<data name="&gt;&gt;TPManage.Parent" xml:space="preserve">
<value>TCMain</value>
<data name="ListPages.TabIndex" type="System.Int32, mscorlib">
<value>5</value>
</data>
<data name="TPLoopTasks.Size" type="System.Drawing.Size, System.Drawing">
<value>652, 245</value>
</data>
<data name="TCMain.TabIndex" type="System.Int32, mscorlib">
<value>4</value>
</data>
<data name="MenuSpawnEntityFilter.Size" type="System.Drawing.Size, System.Drawing">
<value>61, 4</value>
</data>
<data name="&gt;&gt;ChkAutoCopy.ZOrder" xml:space="preserve">
<value>2</value>
</data>
<data name="GrpCommand.Location" type="System.Drawing.Point, System.Drawing">
<value>12, 293</value>
</data>
<data name="&gt;&gt;TPItem.Type" xml:space="preserve">
<value>System.Windows.Forms.TabPage, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="GrpCommand.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Bottom, Left, Right</value>
</data>
<data name="TPMail.Location" type="System.Drawing.Point, System.Drawing">
<value>4, 26</value>
</data>
<data name="&gt;&gt;TCMain.Type" xml:space="preserve">
<value>System.Windows.Forms.TabControl, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;TPCustom.Name" xml:space="preserve">
<value>TPCustom</value>
</data>
<data name="&gt;&gt;TPRemoteCall.Type" xml:space="preserve">
<value>System.Windows.Forms.TabPage, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;BtnCopy.Type" xml:space="preserve">
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;TPHome.Type" xml:space="preserve">
<value>System.Windows.Forms.TabPage, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="TPCustom.Size" type="System.Drawing.Size, System.Drawing">
<value>652, 245</value>
</data>
<data name="&gt;&gt;CmbCommand.Name" xml:space="preserve">
<value>CmbCommand</value>
</data>
<data name="&gt;&gt;MenuSpawnEntityFilter.Name" xml:space="preserve">
<value>MenuSpawnEntityFilter</value>
</data>
<data name="&gt;&gt;CmbCommand.Type" xml:space="preserve">
<value>System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="TPScene.Location" type="System.Drawing.Point, System.Drawing">
<value>4, 26</value>
<data name="TCMain.MinimumSize" type="System.Drawing.Size, System.Drawing">
<value>610, 275</value>
</data>
<data name="&gt;&gt;CmbCommand.ZOrder" xml:space="preserve">
<value>3</value>
</data>
<data name="&gt;&gt;TPMail.Name" xml:space="preserve">
<value>TPMail</value>
<data name="&gt;&gt;NavContainer.Panel1.Parent" xml:space="preserve">
<value>NavContainer</value>
</data>
<data name="TPManage.Size" type="System.Drawing.Size, System.Drawing">
<value>652, 245</value>
<data name="ChkAutoCopy.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Right</value>
</data>
<data name="TPRemoteCall.Size" type="System.Drawing.Size, System.Drawing">
<value>652, 245</value>
<data name="&gt;&gt;TCMain.Name" xml:space="preserve">
<value>TCMain</value>
</data>
<data name="&gt;&gt;TPLoopTasks.Name" xml:space="preserve">
<value>TPLoopTasks</value>
<data name="&gt;&gt;BtnCopy.Parent" xml:space="preserve">
<value>GrpCommand</value>
</data>
<data name="&gt;&gt;TPLoopTasks.Type" xml:space="preserve">
<value>System.Windows.Forms.TabPage, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
<data name="NavContainer.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Bottom, Left, Right</value>
</data>
<data name="&gt;&gt;TPManage.ZOrder" xml:space="preserve">
<value>8</value>
<data name="&gt;&gt;TCMain.Parent" xml:space="preserve">
<value>NavContainer.Panel2</value>
</data>
<data name="&gt;&gt;TPMail.ZOrder" xml:space="preserve">
<value>9</value>
<data name="ListPages.Font" type="System.Drawing.Font, System.Drawing">
<value>Microsoft YaHei UI, 10pt</value>
</data>
<data name="CmbCommand.Size" type="System.Drawing.Size, System.Drawing">
<value>450, 25</value>
<data name="BtnCopy.Size" type="System.Drawing.Size, System.Drawing">
<value>50, 23</value>
</data>
<data name="TPItem.TabIndex" type="System.Int32, mscorlib">
<data name="&gt;&gt;NavContainer.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;NavContainer.Panel1.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="$this.Font" type="System.Drawing.Font, System.Drawing">
<value>Microsoft YaHei UI, 9pt</value>
</data>
<data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing">
<value>834, 361</value>
</data>
<data name="&gt;&gt;ListPages.Parent" xml:space="preserve">
<value>NavContainer.Panel1</value>
</data>
<data name="$this.StartPosition" type="System.Windows.Forms.FormStartPosition, System.Windows.Forms">
<value>CenterScreen</value>
</data>
<data name="&gt;&gt;BtnCopy.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="NavContainer.SplitterDistance" type="System.Int32, mscorlib">
<value>150</value>
</data>
<data name="BtnCopy.Location" type="System.Drawing.Point, System.Drawing">
<value>693, 22</value>
</data>
<data name="BtnInvokeOpenCommand.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="&gt;&gt;ListPages.Name" xml:space="preserve">
<value>ListPages</value>
</data>
<data name="NavContainer.Location" type="System.Drawing.Point, System.Drawing">
<value>12, 12</value>
</data>
<data name="&gt;&gt;ListPages.Type" xml:space="preserve">
<value>System.Windows.Forms.ListBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;BtnInvokeOpenCommand.Parent" xml:space="preserve">
<value>GrpCommand</value>
</data>
<data name="TCMain.ItemSize" type="System.Drawing.Size, System.Drawing">
<value>0, 1</value>
</data>
<data name="GrpCommand.Text" xml:space="preserve">
<value>命令 - [Ctrl] 自动执行 - [Shift] 拼接命令 - [Alt] 仅执行 - [|] 分割多条命令</value>
</data>
<data name="&gt;&gt;TCMain.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="NavContainer.Panel2MinSize" type="System.Int32, mscorlib">
<value>610</value>
</data>
<data name="&gt;&gt;NavContainer.Panel1.Type" xml:space="preserve">
<value>System.Windows.Forms.SplitterPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;NavContainer.Panel2.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="&gt;&gt;$this.Name" xml:space="preserve">
<value>FormMain</value>
</data>
<data name="CmbCommand.TabIndex" type="System.Int32, mscorlib">
<value>1</value>
</data>
<data name="ListPages.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="&gt;&gt;ChkAutoCopy.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="CmbCommand.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Left, Right</value>
</data>
<data name="NavContainer.Panel1MinSize" type="System.Int32, mscorlib">
<value>80</value>
</data>
<data name="NavContainer.Size" type="System.Drawing.Size, System.Drawing">
<value>810, 275</value>
</data>
<data name="&gt;&gt;MenuSpawnEntityFilter.Name" xml:space="preserve">
<value>MenuSpawnEntityFilter</value>
</data>
<data name="ChkAutoCopy.Location" type="System.Drawing.Point, System.Drawing">
<value>749, 24</value>
</data>
<data name="BtnCopy.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="BtnCopy.Text" xml:space="preserve">
<value>复制</value>
</data>
<data name="TCMain.TabIndex" type="System.Int32, mscorlib">
<value>4</value>
</data>
<data name="&gt;&gt;BtnInvokeOpenCommand.Type" xml:space="preserve">
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
<data name="GrpCommand.Size" type="System.Drawing.Size, System.Drawing">
<value>810, 56</value>
</data>
<data name="&gt;&gt;TPMail.Parent" xml:space="preserve">
<value>TCMain</value>
<data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
<value>7, 17</value>
</data>
<data name="&gt;&gt;BtnInvokeOpenCommand.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="&gt;&gt;NavContainer.Panel2.Name" xml:space="preserve">
<value>NavContainer.Panel2</value>
</data>
<data name="&gt;&gt;NavContainer.Panel1.Name" xml:space="preserve">
<value>NavContainer.Panel1</value>
</data>
<data name="&gt;&gt;NavContainer.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="BtnCopy.TabIndex" type="System.Int32, mscorlib">
<value>2</value>
</data>
<data name="&gt;&gt;CmbCommand.Name" xml:space="preserve">
<value>CmbCommand</value>
</data>
<metadata name="MenuSpawnEntityFilter.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>

View File

@ -122,10 +122,10 @@
<value>132, 21</value>
</data>
<data name="CmbCommand.Size" type="System.Drawing.Size, System.Drawing">
<value>359, 25</value>
<value>513, 25</value>
</data>
<data name="BtnCopy.Location" type="System.Drawing.Point, System.Drawing">
<value>497, 22</value>
<value>651, 21</value>
</data>
<data name="BtnCopy.Size" type="System.Drawing.Size, System.Drawing">
<value>92, 23</value>
@ -134,7 +134,7 @@
<value>Копировать</value>
</data>
<data name="ChkAutoCopy.Location" type="System.Drawing.Point, System.Drawing">
<value>595, 24</value>
<value>749, 23</value>
</data>
<data name="ChkAutoCopy.Size" type="System.Drawing.Size, System.Drawing">
<value>55, 21</value>
@ -151,46 +151,8 @@
<data name="BtnInvokeOpenCommand.Text" xml:space="preserve">
<value>Выполнить (F5)</value>
</data>
<data name="TPRemoteCall.Text" xml:space="preserve">
<value>OpenCommand</value>
</data>
<data name="TPAbout.Text" xml:space="preserve">
<value>Справка</value>
</data>
<data name="TPManage.Text" xml:space="preserve">
<value>Аккаунты</value>
</data>
<data name="TPScene.Text" xml:space="preserve">
<value>Сцена</value>
</data>
<data name="TPItem.Text" xml:space="preserve">
<value>Предметы</value>
</data>
<data name="TPWeapon.Text" xml:space="preserve">
<value>Оружие</value>
</data>
<data name="TPAvatar.Text" xml:space="preserve">
<value>Персонаж</value>
</data>
<data name="TPSpawn.Text" xml:space="preserve">
<value>Спавн</value>
</data>
<data name="TPQuest.Text" xml:space="preserve">
<value>Квест</value>
</data>
<data name="TPArtifact.Text" xml:space="preserve">
<value>Артефакт</value>
</data>
<data name="TPCustom.Text" xml:space="preserve">
<value>Кастомное</value>
</data>
<data name="TPHome.Text" xml:space="preserve">
<value>Главная</value>
</data>
<data name="TPMail.Text" xml:space="preserve">
<value>Почта</value>
</data>
<data name="TPLoopTasks.Text" xml:space="preserve">
<value>Циклы</value>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="$this.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>Inherit</value>
</data>
</root>

View File

@ -129,31 +129,8 @@
<data name="GrpCommand.Text" xml:space="preserve">
<value>命令 - [Ctrl] 自動執行 - [Shift] 拼接命令 - [Alt] 僅執行 - [|] 分割多條命令</value>
</data>
<data name="TPRemoteCall.Text" xml:space="preserve">
<value>遠程</value>
</data>
<data name="TPAbout.Text" xml:space="preserve">
<value>關於</value>
</data>
<data name="TPScene.Text" xml:space="preserve">
<value>場景</value>
</data>
<data name="TPQuest.Text" xml:space="preserve">
<value>任務</value>
</data>
<data name="TPArtifact.Text" xml:space="preserve">
<value>聖遺物</value>
</data>
<data name="TPCustom.Text" xml:space="preserve">
<value>自定義</value>
</data>
<data name="TPHome.Text" xml:space="preserve">
<value>主頁</value>
</data>
<data name="TPMail.Text" xml:space="preserve">
<value>郵件</value>
</data>
<data name="TPLoopTasks.Text" xml:space="preserve">
<value>循環</value>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="$this.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>Inherit</value>
</data>
</root>

View File

@ -132,6 +132,16 @@ namespace GrasscutterTools.Game
/// </summary>
public static readonly Version V1_4_3 = new Version(1, 4, 3);
/// <summary>
/// 2023/4/1
/// </summary>
public static readonly Version V1_4_7 = new Version(1, 4, 7);
/// <summary>
/// 2023/4/1
/// </summary>
public static readonly Version V1_5_0 = new Version(1, 5, 0);
// More...
/// <summary>
/// Date
@ -148,7 +158,9 @@ namespace GrasscutterTools.Game
V1_4_1,
V1_4_2,
V1_4_3,
//V1_4_4,
V1_4_7,
V1_5_0,
//V1_5_1,
};
#endregion - Version List -

View File

@ -37,8 +37,12 @@ namespace GrasscutterTools.Game.Gacha
public string Comment { get; set; }
/// <summary>
/// 添加卡池请从400开始增加id数值进行添加这个id需要每个池子不一样
/// 如果你想添加大量卡池请按照每次增加固定数值的id进行添加比如411412413....
/// 卡池类型
/// 100 初行祈愿
/// 200 常驻祈愿
/// 301 角色活动祈愿1
/// 302 武器活动祈愿
/// 400 角色活动祈愿2
/// </summary>
[JsonProperty("gachaType")]
public int GachaType { get; set; } = 400;

View File

@ -25,6 +25,7 @@ namespace GrasscutterTools.Game
{
public static void LoadResources()
{
Achievements = new ItemMap(Resources.Achievement);
Artifacts = new ItemMap(Resources.Artifact);
ArtifactCats = new ItemMap(Resources.ArtifactCat);
ArtifactMainAttribution = new ItemMap(Resources.ArtifactMainAttribution);
@ -44,6 +45,7 @@ namespace GrasscutterTools.Game
ShopType = new ItemMap(Resources.ShopType);
}
public static ItemMap Achievements { get; private set; }
public static ItemMap Artifacts { get; private set; }
public static ItemMap ArtifactCats { get; private set; }

View File

@ -166,6 +166,12 @@
<Compile Include="Pages\PageAbout.Designer.cs">
<DependentUpon>PageAbout.cs</DependentUpon>
</Compile>
<Compile Include="Pages\PageAchievement.cs">
<SubType>UserControl</SubType>
</Compile>
<Compile Include="Pages\PageAchievement.Designer.cs">
<DependentUpon>PageAchievement.cs</DependentUpon>
</Compile>
<Compile Include="Pages\PageAvatar.cs">
<SubType>UserControl</SubType>
</Compile>
@ -261,7 +267,7 @@
<Compile Include="Utils\Common.cs" />
<Compile Include="Utils\HttpHelper.cs" />
<Compile Include="Utils\Logger.cs" />
<Compile Include="Utils\ReleaseAPI.cs" />
<Compile Include="Utils\GithubHelper.cs" />
<Compile Include="Utils\UIUtil.cs" />
<EmbeddedResource Include="Forms\FormDropEditor.en-US.resx">
<DependentUpon>FormDropEditor.cs</DependentUpon>
@ -364,6 +370,9 @@
<EmbeddedResource Include="Pages\PageAbout.zh-TW.resx">
<DependentUpon>PageAbout.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Pages\PageAchievement.resx">
<DependentUpon>PageAchievement.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Pages\PageAvatar.en-US.resx">
<DependentUpon>PageAvatar.cs</DependentUpon>
</EmbeddedResource>
@ -577,6 +586,7 @@
<None Include="App.config" />
</ItemGroup>
<ItemGroup>
<Content Include="Resources\en-us\Achievement.txt" />
<Content Include="Resources\en-us\Artifact.txt" />
<Content Include="Resources\en-us\ArtifactCat.txt" />
<Content Include="Resources\en-us\ArtifactMainAttribution.txt" />
@ -595,6 +605,7 @@
<Content Include="Resources\en-us\Weapon.txt" />
<None Include="Resources\Newtonsoft.Json.dll" />
<Content Include="Resources\MyTools.java" />
<Content Include="Resources\ru-ru\Achievement.txt" />
<Content Include="Resources\ru-ru\Artifact.txt" />
<Content Include="Resources\ru-ru\ArtifactCat.txt" />
<Content Include="Resources\ru-ru\ArtifactMainAttribution.txt" />
@ -616,6 +627,7 @@
<None Include="Resources\ImgSupport.png" />
<Content Include="Resources\Permissions.txt" />
<Content Include="Resources\WeaponColor.txt" />
<Content Include="Resources\zh-cn\Achievement.txt" />
<Content Include="Resources\zh-cn\ArtifactCat.txt" />
<Content Include="Resources\zh-cn\ArtifactMainAttribution.txt" />
<Content Include="Resources\zh-cn\Artifact.txt" />
@ -633,6 +645,7 @@
<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\Achievement.txt" />
<Content Include="Resources\zh-tw\ArtifactCat.txt" />
<Content Include="Resources\zh-tw\ArtifactMainAttribution.txt" />
<Content Include="Resources\zh-tw\Artifact.txt" />
@ -665,6 +678,9 @@
<PackageReference Include="Resource.Embedder">
<Version>2.2.0</Version>
</PackageReference>
<PackageReference Include="System.IO.Compression.ZipFile">
<Version>4.3.0</Version>
</PackageReference>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project>

View File

@ -34,6 +34,7 @@ namespace GrasscutterTools.Pages
{
Font = new Font("Microsoft YaHei UI", 9, GraphicsUnit.Point);
//Size = new Size(652, 245);
Dock = DockStyle.Fill;
Size = new Size(646, 239);
BackColor = Color.FromArgb(0xF9, 0xF9, 0xF9);
Margin = new Padding(0);
@ -74,7 +75,7 @@ namespace GrasscutterTools.Pages
if (commands.IndexOf('|') == -1)
return await RunCommands(FormatCommand(commands));
else
return await RunCommands(commands.Split('|').Select(it => FormatCommand(it)).ToArray());
return await RunCommands(commands.Split('|').Select(FormatCommand).ToArray());
}
/// <summary>
@ -83,7 +84,7 @@ namespace GrasscutterTools.Pages
/// </summary>
/// <param name="raw">原始输入</param>
/// <returns>格式化后可执行命令</returns>
private string FormatCommand(string raw)
private static string FormatCommand(string raw)
{
return raw.Trim().Replace("\\r", "\r").Replace("\\n", "\n");
}

View File

@ -0,0 +1,201 @@
namespace GrasscutterTools.Pages
{
partial class PageAchievement
{
/// <summary>
/// 必需的设计器变量。
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// 清理所有正在使用的资源。
/// </summary>
/// <param name="disposing">如果应释放托管资源,为 true否则为 false。</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region
/// <summary>
/// 设计器支持所需的方法 - 不要修改
/// 使用代码编辑器修改此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.ListAchievements = new System.Windows.Forms.ListBox();
this.GrpAchievements = new System.Windows.Forms.GroupBox();
this.TxtAchievementFilter = new System.Windows.Forms.TextBox();
this.LnkRevokeAll = new System.Windows.Forms.LinkLabel();
this.LnkGrantAll = new System.Windows.Forms.LinkLabel();
this.GrpAchievementCommands = new System.Windows.Forms.GroupBox();
this.NUDProgress = new System.Windows.Forms.NumericUpDown();
this.BtnProgress = new System.Windows.Forms.Button();
this.BtnRevoke = new System.Windows.Forms.Button();
this.BtnGrant = new System.Windows.Forms.Button();
this.GrpAchievements.SuspendLayout();
this.GrpAchievementCommands.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.NUDProgress)).BeginInit();
this.SuspendLayout();
//
// ListAchievements
//
this.ListAchievements.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.ListAchievements.FormattingEnabled = true;
this.ListAchievements.ItemHeight = 17;
this.ListAchievements.Location = new System.Drawing.Point(6, 51);
this.ListAchievements.Name = "ListAchievements";
this.ListAchievements.SelectionMode = System.Windows.Forms.SelectionMode.MultiExtended;
this.ListAchievements.Size = new System.Drawing.Size(628, 106);
this.ListAchievements.TabIndex = 0;
//
// GrpAchievements
//
this.GrpAchievements.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.GrpAchievements.Controls.Add(this.TxtAchievementFilter);
this.GrpAchievements.Controls.Add(this.LnkRevokeAll);
this.GrpAchievements.Controls.Add(this.ListAchievements);
this.GrpAchievements.Controls.Add(this.LnkGrantAll);
this.GrpAchievements.Location = new System.Drawing.Point(3, 3);
this.GrpAchievements.Name = "GrpAchievements";
this.GrpAchievements.Size = new System.Drawing.Size(640, 167);
this.GrpAchievements.TabIndex = 1;
this.GrpAchievements.TabStop = false;
this.GrpAchievements.Text = "成就列表GC v1.4.7 起)";
//
// TxtAchievementFilter
//
this.TxtAchievementFilter.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.TxtAchievementFilter.Location = new System.Drawing.Point(6, 22);
this.TxtAchievementFilter.Name = "TxtAchievementFilter";
this.TxtAchievementFilter.Size = new System.Drawing.Size(628, 23);
this.TxtAchievementFilter.TabIndex = 8;
this.TxtAchievementFilter.TextChanged += new System.EventHandler(this.TxtAchievementFilter_TextChanged);
//
// LnkRevokeAll
//
this.LnkRevokeAll.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.LnkRevokeAll.AutoSize = true;
this.LnkRevokeAll.Location = new System.Drawing.Point(578, 0);
this.LnkRevokeAll.Name = "LnkRevokeAll";
this.LnkRevokeAll.Size = new System.Drawing.Size(56, 17);
this.LnkRevokeAll.TabIndex = 7;
this.LnkRevokeAll.TabStop = true;
this.LnkRevokeAll.Text = "全部撤销";
this.LnkRevokeAll.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.LnkRevokeAll_LinkClicked);
//
// LnkGrantAll
//
this.LnkGrantAll.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.LnkGrantAll.AutoSize = true;
this.LnkGrantAll.Location = new System.Drawing.Point(516, 0);
this.LnkGrantAll.Name = "LnkGrantAll";
this.LnkGrantAll.Size = new System.Drawing.Size(56, 17);
this.LnkGrantAll.TabIndex = 6;
this.LnkGrantAll.TabStop = true;
this.LnkGrantAll.Text = "全部达成";
this.LnkGrantAll.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.LnkGrantAll_LinkClicked);
//
// GrpAchievementCommands
//
this.GrpAchievementCommands.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.GrpAchievementCommands.Controls.Add(this.NUDProgress);
this.GrpAchievementCommands.Controls.Add(this.BtnProgress);
this.GrpAchievementCommands.Controls.Add(this.BtnRevoke);
this.GrpAchievementCommands.Controls.Add(this.BtnGrant);
this.GrpAchievementCommands.Location = new System.Drawing.Point(3, 176);
this.GrpAchievementCommands.Name = "GrpAchievementCommands";
this.GrpAchievementCommands.Size = new System.Drawing.Size(640, 60);
this.GrpAchievementCommands.TabIndex = 2;
this.GrpAchievementCommands.TabStop = false;
this.GrpAchievementCommands.Text = "成就控制(在列表中选择目标项)";
//
// NUDProgress
//
this.NUDProgress.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.NUDProgress.Location = new System.Drawing.Point(579, 25);
this.NUDProgress.Maximum = new decimal(new int[] {
2147483647,
0,
0,
0});
this.NUDProgress.Name = "NUDProgress";
this.NUDProgress.Size = new System.Drawing.Size(55, 23);
this.NUDProgress.TabIndex = 5;
this.NUDProgress.Value = new decimal(new int[] {
10,
0,
0,
0});
//
// BtnProgress
//
this.BtnProgress.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.BtnProgress.Location = new System.Drawing.Point(473, 25);
this.BtnProgress.Name = "BtnProgress";
this.BtnProgress.Size = new System.Drawing.Size(100, 23);
this.BtnProgress.TabIndex = 4;
this.BtnProgress.Text = "修改进度";
this.BtnProgress.UseVisualStyleBackColor = true;
this.BtnProgress.Click += new System.EventHandler(this.BtnProgress_Click);
//
// BtnRevoke
//
this.BtnRevoke.Location = new System.Drawing.Point(112, 25);
this.BtnRevoke.Name = "BtnRevoke";
this.BtnRevoke.Size = new System.Drawing.Size(100, 23);
this.BtnRevoke.TabIndex = 1;
this.BtnRevoke.Text = "撤销";
this.BtnRevoke.UseVisualStyleBackColor = true;
this.BtnRevoke.Click += new System.EventHandler(this.BtnRevoke_Click);
//
// BtnGrant
//
this.BtnGrant.Location = new System.Drawing.Point(6, 25);
this.BtnGrant.Name = "BtnGrant";
this.BtnGrant.Size = new System.Drawing.Size(100, 23);
this.BtnGrant.TabIndex = 0;
this.BtnGrant.Text = "达成";
this.BtnGrant.UseVisualStyleBackColor = true;
this.BtnGrant.Click += new System.EventHandler(this.BtnGrant_Click);
//
// PageAchievement
//
this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 17F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.Controls.Add(this.GrpAchievementCommands);
this.Controls.Add(this.GrpAchievements);
this.Name = "PageAchievement";
this.GrpAchievements.ResumeLayout(false);
this.GrpAchievements.PerformLayout();
this.GrpAchievementCommands.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.NUDProgress)).EndInit();
this.ResumeLayout(false);
}
#endregion
private System.Windows.Forms.ListBox ListAchievements;
private System.Windows.Forms.GroupBox GrpAchievements;
private System.Windows.Forms.GroupBox GrpAchievementCommands;
private System.Windows.Forms.Button BtnProgress;
private System.Windows.Forms.Button BtnRevoke;
private System.Windows.Forms.Button BtnGrant;
private System.Windows.Forms.NumericUpDown NUDProgress;
private System.Windows.Forms.TextBox TxtAchievementFilter;
private System.Windows.Forms.LinkLabel LnkRevokeAll;
private System.Windows.Forms.LinkLabel LnkGrantAll;
}
}

View File

@ -0,0 +1,101 @@
using System;
using System.Linq;
using System.Windows.Forms;
using GrasscutterTools.Game;
using GrasscutterTools.Properties;
using GrasscutterTools.Utils;
namespace GrasscutterTools.Pages
{
internal partial class PageAchievement : BasePage
{
public PageAchievement()
{
InitializeComponent();
}
public override void OnLoad()
{
base.OnLoad();
UpdateList();
}
/// <summary>
/// 点击全部达成时触发
/// </summary>
private void LnkGrantAll_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
SetCommand("/achievement grantall");
}
/// <summary>
/// 点击全部撤销时触发
/// </summary>
private void LnkRevokeAll_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
SetCommand("/achievement revokeall");
}
/// <summary>
/// 更新列表显示内容
/// </summary>
private void UpdateList()
{
UIUtil.ListBoxFilter(ListAchievements, GameData.Achievements.Lines, TxtAchievementFilter.Text);
}
/// <summary>
/// 过滤器输入改变时触发
/// </summary>
private void TxtAchievementFilter_TextChanged(object sender, EventArgs e)
{
UpdateList();
}
/// <summary>
/// 获取所有选中项ID
/// </summary>
/// <returns>所有选中项ID如未选中返回 null</returns>
private int[] GetSelectedIds()
{
if (ListAchievements.SelectedItems.Count == 0)
return null;
var selectedIds = new int[ListAchievements.SelectedItems.Count];
var i = 0;
foreach (string item in ListAchievements.SelectedItems)
selectedIds[i++] = int.Parse(item.Substring(0, item.IndexOf(':')));
return selectedIds;
}
private void GenSelected(string command, string args = "")
{
var selectedIds = GetSelectedIds();
if (selectedIds == null)
{
MessageBox.Show(Resources.SelectAnyItem, Resources.Error, MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
if (selectedIds.Length == 1)
SetCommand(args == "" ? $"{command} {selectedIds[0]}" : $"{command} {selectedIds[0]} {args}");
else
SetCommand(string.Join(" | ", selectedIds.Select(it => args == "" ? $"{command} {it}" : $"{command} {it} {args}")));
}
private void BtnGrant_Click(object sender, EventArgs e)
{
GenSelected("/achievement grant");
}
private void BtnRevoke_Click(object sender, EventArgs e)
{
GenSelected("/achievement revoke");
}
private void BtnProgress_Click(object sender, EventArgs e)
{
GenSelected("/achievement progress", NUDProgress.Text);
}
}
}

View File

@ -0,0 +1,120 @@
<?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>
</root>

View File

@ -85,12 +85,12 @@ namespace GrasscutterTools.Pages
#region - Check update -
private ReleaseAPI.ReleaseInfo LastestInfo = null;
private GithubHelper.ReleaseInfo LastestInfo = null;
private Version lastestVersion = null;
private async Task LoadUpdate()
{
var info = await ReleaseAPI.GetReleasesLastest("jie65535", "GrasscutterCommandGenerator");
var info = await GithubHelper.GetReleasesLatest("jie65535", "GrasscutterCommandGenerator");
if (Version.TryParse(info.TagName.Substring(1), out lastestVersion) && Common.AppVersion < lastestVersion)
{
if (!string.IsNullOrEmpty(Settings.Default.CheckedLastVersion)
@ -179,7 +179,7 @@ namespace GrasscutterTools.Pages
if (LastestInfo != null)
{
var r = MessageBox.Show(
string.Format(Resources.NewVersionInfo, LastestInfo.Name, LastestInfo.CraeteTime.ToLocalTime(), LastestInfo.Body),
string.Format(Resources.NewVersionInfo, LastestInfo.Name, LastestInfo.CreateTime.ToLocalTime(), LastestInfo.Body),
Resources.CheckToNewVersion,
MessageBoxButtons.YesNo,
MessageBoxIcon.Information);

View File

@ -60,6 +60,33 @@ namespace GrasscutterTools.Properties {
}
}
/// <summary>
/// 查找类似 80001:風與異鄉人 - 使用風元素吹散一株蒲公英。
///80002:千嶂萬仞 - 掌握「岩」的元素力。
///80003:流水叮嚀 - 集齊全套《清泉之心》。
///80004:神戟狂言凌雲霄 - 集齊全套《神霄折戟錄》。
///80005:醉客與狼的相遇 - 集齊全套《醉客軼事》。
///80006:清泉、白馬與月光 - 集齊全套《竹林月夜》。
///80007:人鑄賦形 - 鍛造一把四星武器。
///80008:生存專家 - 掌握10種菜餚的製作方式。
///80009:生存專家 - 掌握20種菜餚的製作方式。
///80010:生存專家 - 掌握40種菜餚的製作方式。
///80011:星級大廚 - 10個料理食譜達到熟練。
///80012:星級大廚 - 20個料理食譜達到熟練。
///80013:星級大廚 - 40個料理食譜達到熟練。
///80014:如日方升的旅程 - 角色首次突破至2階。
///80015:如日方升的旅程 - 角色首次突破至4階。
///80016:如日方升的旅程 - 角色首次突破至6階。
///80017:百錘千鍊 - 將一把武器突破至2階。
///80018:百錘千鍊 - 將一把武器突破至4階。
///80019:百錘千鍊 - 將一把武器 [字符串的其余部分被截断]&quot;; 的本地化字符串。
/// </summary>
internal static string Achievement {
get {
return ResourceManager.GetString("Achievement", resourceCulture);
}
}
/// <summary>
/// 查找类似 全部 的本地化字符串。
/// </summary>
@ -120,6 +147,10 @@ namespace GrasscutterTools.Properties {
/// <summary>
/// 查找类似 20:深林的记忆
///21:饰金之梦
///27:沙上楼阁史话
///28:乐园遗落之花
///29:水仙之梦
///30:花海甘露之光
///51:行者之心
///52:勇士之心
///53:守护之心
@ -392,7 +423,11 @@ namespace GrasscutterTools.Properties {
///1071:5
///1072:4
///1073:5
///1074:4 的本地化字符串。
///1074:4
///1075:5
///1076:4
///1077:4
/// [字符串的其余部分被截断]&quot;; 的本地化字符串。
/// </summary>
internal static string AvatarColor {
get {
@ -510,6 +545,8 @@ namespace GrasscutterTools.Properties {
////prop ue on
///冒险等阶升60级
////give 102 x1880200
///尘歌壶信任值升到10级
////give 121 x10900
///设置世界等级8
////prop wl 8
///点亮地图
@ -545,9 +582,7 @@ namespace GrasscutterTools.Properties {
///清空当前角色命之座(需重登)
////resetconst
///清空全部角色命之座(需重登)
////resetconst all
///清空背包
////clear all [字符串的其余部分被截断]&quot;; 的本地化字符串。
////re [字符串的其余部分被截断]&quot;; 的本地化字符串。
/// </summary>
internal static string CustomCommands {
get {
@ -655,9 +690,10 @@ namespace GrasscutterTools.Properties {
///097:雳裁冥昭-赛诺
///098:杯装之诗-温迪
///099:神铸赋形-赤沙终末
/////100:翩舞歈莲-妮露 // Error
///101:深秘之息-阿贝多
///101:神铸赋形-圣显绿箭 的本地化字符串。
///0100:翩舞歈莲-妮露
///0103:月草的赐慧-纳西妲
///0109:余火变相-流浪者
///0115:敕诫枢谋-艾尔海森 /// [字符串的其余部分被截断]&quot;; 的本地化字符串。
/// </summary>
internal static string GachaBannerTitle {
get {
@ -708,9 +744,11 @@ namespace GrasscutterTools.Properties {
///097:雳裁冥昭-赛诺
///098:杯装之诗-温迪
///099:神铸赋形-赤沙终末
/////100:翩舞歈莲-妮露 // Error
///100:翩舞歈莲-妮露
///101:深秘之息-阿贝多
///101:神铸赋形-圣显绿箭 的本地化字符串。
///102:神铸赋形-圣显绿箭
///103:月草的赐慧-纳西妲
///104 [字符串的其余部分被截断]&quot;; 的本地化字符串。
/// </summary>
internal static string GachaBennerPrefab {
get {
@ -832,7 +870,7 @@ namespace GrasscutterTools.Properties {
/// 查找类似 // Items
///
///
///// ITEM_VIRTUAL
///// 虚拟物品
///101:角色经验
///102:冒险阅历
///105:好感经验
@ -879,7 +917,8 @@ namespace GrasscutterTools.Properties {
///146:牌手经验
///147:节庆热度
///148:营业收入
///149:可用 [字符串的其余部分被截断]&quot;; 的本地化字符串。
///149:可用资金
///150: [字符串的其余部分被截断]&quot;; 的本地化字符串。
/// </summary>
internal static string Item {
get {
@ -910,9 +949,11 @@ namespace GrasscutterTools.Properties {
///20010403:大型风史莱姆-强攻强化
///20010501:雷史莱姆
///20010502:雷史莱姆(塔防)
///20010503:Slime_Electric_02_SimpleStick - [N/A] 1834387465
///20010601:大型雷史莱姆
///20010602:大型雷史莱姆(塔防)
///20010604:大型雷史莱姆-强攻强化
///20010605:Slime_Electric_03_SimpleStick - [N/A] 3051091649
///20010701:变异雷史莱姆
///20010702:变异雷史莱姆-强攻强化
///20010703:变异雷史莱姆(塔防)
@ -920,13 +961,7 @@ namespace GrasscutterTools.Properties {
///20010802:冰史莱姆-雪山活动
///20010803:冰史莱姆(塔防)
///20010901:大型冰史莱姆
///20010902:大型冰史莱姆-雪山活动
///20010903:大型冰史莱姆(塔防)
///20010904:大型冰史莱姆-强攻强化
///20011001:水史莱姆
///20011002:水史莱姆(塔防)
///20011101:大型水史莱姆
///20011102:大型水史莱 [字符串的其余部分被截断]&quot;; 的本地化字符串。
///20010902:大型冰 [字符串的其余部分被截断]&quot;; 的本地化字符串。
/// </summary>
internal static string Monsters {
get {
@ -971,6 +1006,141 @@ namespace GrasscutterTools.Properties {
}
}
/// <summary>
/// 查找类似 关于 的本地化字符串。
/// </summary>
internal static string PageAboutTitle {
get {
return ResourceManager.GetString("PageAboutTitle", resourceCulture);
}
}
/// <summary>
/// 查找类似 成就 的本地化字符串。
/// </summary>
internal static string PageAchievementTitle {
get {
return ResourceManager.GetString("PageAchievementTitle", resourceCulture);
}
}
/// <summary>
/// 查找类似 角色 的本地化字符串。
/// </summary>
internal static string PageAvatarTitle {
get {
return ResourceManager.GetString("PageAvatarTitle", resourceCulture);
}
}
/// <summary>
/// 查找类似 自定义 的本地化字符串。
/// </summary>
internal static string PageCustomCommandsTitle {
get {
return ResourceManager.GetString("PageCustomCommandsTitle", resourceCulture);
}
}
/// <summary>
/// 查找类似 圣遗物 的本地化字符串。
/// </summary>
internal static string PageGetArtifactTitle {
get {
return ResourceManager.GetString("PageGetArtifactTitle", resourceCulture);
}
}
/// <summary>
/// 查找类似 物品 的本地化字符串。
/// </summary>
internal static string PageGiveItemTitle {
get {
return ResourceManager.GetString("PageGiveItemTitle", resourceCulture);
}
}
/// <summary>
/// 查找类似 武器 的本地化字符串。
/// </summary>
internal static string PageGiveWeaponTitle {
get {
return ResourceManager.GetString("PageGiveWeaponTitle", resourceCulture);
}
}
/// <summary>
/// 查找类似 主页 的本地化字符串。
/// </summary>
internal static string PageHomeTitle {
get {
return ResourceManager.GetString("PageHomeTitle", resourceCulture);
}
}
/// <summary>
/// 查找类似 邮件 的本地化字符串。
/// </summary>
internal static string PageMailTitle {
get {
return ResourceManager.GetString("PageMailTitle", resourceCulture);
}
}
/// <summary>
/// 查找类似 管理 的本地化字符串。
/// </summary>
internal static string PageManagementTitle {
get {
return ResourceManager.GetString("PageManagementTitle", resourceCulture);
}
}
/// <summary>
/// 查找类似 远程 的本地化字符串。
/// </summary>
internal static string PageOpenCommandTitle {
get {
return ResourceManager.GetString("PageOpenCommandTitle", resourceCulture);
}
}
/// <summary>
/// 查找类似 任务 的本地化字符串。
/// </summary>
internal static string PageQuestTitle {
get {
return ResourceManager.GetString("PageQuestTitle", resourceCulture);
}
}
/// <summary>
/// 查找类似 场景 的本地化字符串。
/// </summary>
internal static string PageSceneTitle {
get {
return ResourceManager.GetString("PageSceneTitle", resourceCulture);
}
}
/// <summary>
/// 查找类似 生成 的本地化字符串。
/// </summary>
internal static string PageSpawnTitle {
get {
return ResourceManager.GetString("PageSpawnTitle", resourceCulture);
}
}
/// <summary>
/// 查找类似 循环 的本地化字符串。
/// </summary>
internal static string PageTasksTitle {
get {
return ResourceManager.GetString("PageTasksTitle", resourceCulture);
}
}
/// <summary>
/// 查找类似 要设置的权限不能为空! 的本地化字符串。
/// </summary>
@ -1103,6 +1273,15 @@ namespace GrasscutterTools.Properties {
}
}
/// <summary>
/// 查找类似 请先选中任意项! 的本地化字符串。
/// </summary>
internal static string SelectAnyItem {
get {
return ResourceManager.GetString("SelectAnyItem", resourceCulture);
}
}
/// <summary>
/// 查找类似 加载设置时异常: 的本地化字符串。
/// </summary>
@ -1277,11 +1456,11 @@ namespace GrasscutterTools.Properties {
///11509:雾切之回光
///11510:波乱月白经津
///11511:圣显之钥
///11512:裁叶萃光
///12101:训练大剑
///12201:佣兵重剑
///12301:铁影阔剑
///12302:沐浴龙血的剑
///12303:白铁大剑
///12 [字符串的其余部分被截断]&quot;; 的本地化字符串。
/// </summary>
internal static string Weapon {
@ -1307,29 +1486,28 @@ namespace GrasscutterTools.Properties {
///11408:purple
///11409:purple
///11410:purple
///11411:purple
///11412:purple
///11413:purple
///11414:purple
///11415:purple
///11416:purple
///11417:purple
///11418:purple
///11419:purple
///11420:purple
///11421:purple
///11422:purple
///11501:yellow
///11502:yellow
///11503:yellow
///11504:yellow
///11505:yellow
///11506:yellow
///11507:yellow
///11508:yellow
///11509:yellow
///11510:yellow
///11511:yellow
///11512:yellow
///12301:blue
///12302:blue
///12303:blue
///12304:blue
///12305:blue
///12306:blue
///12401:purple
///1240 [字符串的其余部分被截断]&quot;; 的本地化字符串。
///12302:bl [字符串的其余部分被截断]&quot;; 的本地化字符串。
/// </summary>
internal static string WeaponColor {
get {

View File

@ -297,4 +297,55 @@ Improvement suggestions have been submitted, please use caution to send emails t
<data name="TaskRunningCannotOperated" xml:space="preserve">
<value>The task has already started and cannot be operated</value>
</data>
<data name="PageAboutTitle" xml:space="preserve">
<value>About</value>
</data>
<data name="PageAvatarTitle" xml:space="preserve">
<value>Avatar</value>
</data>
<data name="PageCustomCommandsTitle" xml:space="preserve">
<value>Custom</value>
</data>
<data name="PageGetArtifactTitle" xml:space="preserve">
<value>Artifacts</value>
</data>
<data name="PageGiveItemTitle" xml:space="preserve">
<value>Items</value>
</data>
<data name="PageGiveWeaponTitle" xml:space="preserve">
<value>Weapons</value>
</data>
<data name="PageHomeTitle" xml:space="preserve">
<value>Home</value>
</data>
<data name="PageMailTitle" xml:space="preserve">
<value>Mail</value>
</data>
<data name="PageManagementTitle" xml:space="preserve">
<value>Manage</value>
</data>
<data name="PageOpenCommandTitle" xml:space="preserve">
<value>Remote</value>
</data>
<data name="PageQuestTitle" xml:space="preserve">
<value>Quest</value>
</data>
<data name="PageSceneTitle" xml:space="preserve">
<value>Scene</value>
</data>
<data name="PageSpawnTitle" xml:space="preserve">
<value>Spawn</value>
</data>
<data name="PageTasksTitle" xml:space="preserve">
<value>Loop</value>
</data>
<data name="Achievement" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\en-us\Achievement.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-8</value>
</data>
<data name="SelectAnyItem" xml:space="preserve">
<value>Plase select any item first!</value>
</data>
<data name="PageAchievementTitle" xml:space="preserve">
<value>Achievement</value>
</data>
</root>

View File

@ -309,4 +309,55 @@
<data name="TaskRunningCannotOperated" xml:space="preserve">
<value>任务已经启动,无法操作</value>
</data>
<data name="PageAboutTitle" xml:space="preserve">
<value>关于</value>
</data>
<data name="PageAvatarTitle" xml:space="preserve">
<value>角色</value>
</data>
<data name="PageCustomCommandsTitle" xml:space="preserve">
<value>自定义</value>
</data>
<data name="PageGetArtifactTitle" xml:space="preserve">
<value>圣遗物</value>
</data>
<data name="PageGiveItemTitle" xml:space="preserve">
<value>物品</value>
</data>
<data name="PageGiveWeaponTitle" xml:space="preserve">
<value>武器</value>
</data>
<data name="PageHomeTitle" xml:space="preserve">
<value>主页</value>
</data>
<data name="PageMailTitle" xml:space="preserve">
<value>邮件</value>
</data>
<data name="PageManagementTitle" xml:space="preserve">
<value>管理</value>
</data>
<data name="PageOpenCommandTitle" xml:space="preserve">
<value>远程</value>
</data>
<data name="PageQuestTitle" xml:space="preserve">
<value>任务</value>
</data>
<data name="PageSceneTitle" xml:space="preserve">
<value>场景</value>
</data>
<data name="PageSpawnTitle" xml:space="preserve">
<value>生成</value>
</data>
<data name="PageTasksTitle" xml:space="preserve">
<value>循环</value>
</data>
<data name="Achievement" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\zh-cn\Achievement.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-8</value>
</data>
<data name="SelectAnyItem" xml:space="preserve">
<value>请先选中任意项!</value>
</data>
<data name="PageAchievementTitle" xml:space="preserve">
<value>成就</value>
</data>
</root>

View File

@ -285,4 +285,55 @@
<data name="TaskRunningCannotOperated" xml:space="preserve">
<value>Задача уже запущена и не может быть выполнена</value>
</data>
<data name="PageAboutTitle" xml:space="preserve">
<value>Справка</value>
</data>
<data name="PageAvatarTitle" xml:space="preserve">
<value>Персонаж</value>
</data>
<data name="PageCustomCommandsTitle" xml:space="preserve">
<value>Кастомное</value>
</data>
<data name="PageGetArtifactTitle" xml:space="preserve">
<value>Артефакт</value>
</data>
<data name="PageGiveItemTitle" xml:space="preserve">
<value>Предметы</value>
</data>
<data name="PageGiveWeaponTitle" xml:space="preserve">
<value>Оружие</value>
</data>
<data name="PageHomeTitle" xml:space="preserve">
<value>Главная</value>
</data>
<data name="PageMailTitle" xml:space="preserve">
<value>Почта</value>
</data>
<data name="PageManagementTitle" xml:space="preserve">
<value>Аккаунты</value>
</data>
<data name="PageOpenCommandTitle" xml:space="preserve">
<value>OpenCommand</value>
</data>
<data name="PageQuestTitle" xml:space="preserve">
<value>Квест</value>
</data>
<data name="PageSceneTitle" xml:space="preserve">
<value>Сцена</value>
</data>
<data name="PageSpawnTitle" xml:space="preserve">
<value>Спавн</value>
</data>
<data name="PageTasksTitle" xml:space="preserve">
<value>Циклы</value>
</data>
<data name="Achievement" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\ru-ru\Achievement.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-8</value>
</data>
<data name="SelectAnyItem" xml:space="preserve">
<value>Сначала выберите любой элемент</value>
</data>
<data name="PageAchievementTitle" xml:space="preserve">
<value>Достижение</value>
</data>
</root>

View File

@ -291,4 +291,55 @@
<data name="TaskRunningCannotOperated" xml:space="preserve">
<value>任務已經啟動,無法操作</value>
</data>
<data name="PageAboutTitle" xml:space="preserve">
<value>關於</value>
</data>
<data name="PageAvatarTitle" xml:space="preserve">
<value>角色</value>
</data>
<data name="PageCustomCommandsTitle" xml:space="preserve">
<value>自定義</value>
</data>
<data name="PageGetArtifactTitle" xml:space="preserve">
<value>聖遺物</value>
</data>
<data name="PageGiveItemTitle" xml:space="preserve">
<value>物品</value>
</data>
<data name="PageGiveWeaponTitle" xml:space="preserve">
<value>武器</value>
</data>
<data name="PageHomeTitle" xml:space="preserve">
<value>主頁</value>
</data>
<data name="PageMailTitle" xml:space="preserve">
<value>郵件</value>
</data>
<data name="PageManagementTitle" xml:space="preserve">
<value>管理</value>
</data>
<data name="PageOpenCommandTitle" xml:space="preserve">
<value>遠程</value>
</data>
<data name="PageQuestTitle" xml:space="preserve">
<value>任務</value>
</data>
<data name="PageSceneTitle" xml:space="preserve">
<value>場景</value>
</data>
<data name="PageSpawnTitle" xml:space="preserve">
<value>生成</value>
</data>
<data name="PageTasksTitle" xml:space="preserve">
<value>循環</value>
</data>
<data name="Achievement" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\zh-tw\Achievement.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-8</value>
</data>
<data name="SelectAnyItem" xml:space="preserve">
<value>請先選中任意項!</value>
</data>
<data name="PageAchievementTitle" xml:space="preserve">
<value>成就</value>
</data>
</root>

View File

@ -6,9 +6,9 @@ using Newtonsoft.Json;
namespace GrasscutterTools.Utils
{
internal class ReleaseAPI
internal class GithubHelper
{
public static async Task<ReleaseInfo> GetReleasesLastest(string username, string repo)
public static async Task<ReleaseInfo> GetReleasesLatest(string username, string repo)
{
var headerValue = new ProductInfoHeaderValue("GrasscutterTools", "1");
try
@ -29,6 +29,23 @@ namespace GrasscutterTools.Utils
}
}
public static async Task<byte[]> DownloadRepo(string username, string repo, string branch)
{
byte[] zipBytes;
try
{
zipBytes = await HttpHelper.GetDataAsync(
$"https://github.com/{username}/{repo}/archive/refs/heads/{branch}.zip");
}
catch
{
zipBytes = await HttpHelper.GetDataAsync(
$"https://hub.fastgit.org/{username}/{repo}/archive/refs/heads/{branch}.zip");
}
return zipBytes;
}
public class ReleaseInfo
{
[JsonProperty("tag_name")]
@ -38,7 +55,7 @@ namespace GrasscutterTools.Utils
public string Url { get; set; }
[JsonProperty("created_at")]
public DateTimeOffset CraeteTime { get; set; }
public DateTimeOffset CreateTime { get; set; }
[JsonProperty("name")]
public string Name { get; set; }

View File

@ -44,16 +44,28 @@ namespace GrasscutterTools.Utils
try
{
var responseMessage = await HttpClient.GetAsync(url);
if (responseMessage.IsSuccessStatusCode)
{
if (!responseMessage.IsSuccessStatusCode)
throw new HttpRequestException(responseMessage.ReasonPhrase);
var responseString = await responseMessage.Content.ReadAsStringAsync();
return JsonConvert.DeserializeObject<T>(responseString);
}
else
catch (Exception ex)
{
throw new HttpRequestException(responseMessage.ReasonPhrase);
if (ex.InnerException != null)
throw ex.InnerException;
throw;
}
}
public static async Task<byte[]> GetDataAsync(string url)
{
try
{
var responseMessage = await HttpClient.GetAsync(url);
if (!responseMessage.IsSuccessStatusCode)
throw new HttpRequestException(responseMessage.ReasonPhrase);
return await responseMessage.Content.ReadAsByteArrayAsync();
}
catch (Exception ex)
{
if (ex.InnerException != null)
@ -68,16 +80,11 @@ namespace GrasscutterTools.Utils
{
var content = new StringContent(JsonConvert.SerializeObject(obj), Encoding.UTF8, "application/json");
var responseMessage = await HttpClient.PostAsync(url, content);
if (responseMessage.IsSuccessStatusCode)
{
if (!responseMessage.IsSuccessStatusCode)
throw new HttpRequestException(responseMessage.ReasonPhrase);
var responseString = await responseMessage.Content.ReadAsStringAsync();
return JsonConvert.DeserializeObject<T>(responseString);
}
else
{
throw new HttpRequestException(responseMessage.ReasonPhrase);
}
}
catch (Exception ex)
{
if (ex.InnerException != null)