Separate pages

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -0,0 +1,184 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="BtnAddSubAttr.Text" xml:space="preserve">
<value>+ Add</value>
</data>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="LblArtifactPart.Location" type="System.Drawing.Point, System.Drawing">
<value>294, 7</value>
</data>
<data name="LblArtifactPart.Size" type="System.Drawing.Size, System.Drawing">
<value>31, 17</value>
</data>
<data name="LblArtifactPart.Text" xml:space="preserve">
<value>Part</value>
</data>
<data name="LblArtifactSet.Location" type="System.Drawing.Point, System.Drawing">
<value>107, 7</value>
</data>
<data name="LblArtifactSet.Size" type="System.Drawing.Size, System.Drawing">
<value>49, 17</value>
</data>
<data name="LblArtifactSet.Text" xml:space="preserve">
<value>Artifact</value>
</data>
<data name="LblClearSubAttrCheckedList.Size" type="System.Drawing.Size, System.Drawing">
<value>50, 17</value>
</data>
<data name="LblClearSubAttrCheckedList.Text" xml:space="preserve">
<value>X Clear</value>
</data>
<data name="LblArtifactLevel.Location" type="System.Drawing.Point, System.Drawing">
<value>119, 37</value>
</data>
<data name="LblArtifactLevel.Size" type="System.Drawing.Size, System.Drawing">
<value>37, 17</value>
</data>
<data name="LblArtifactLevel.Text" xml:space="preserve">
<value>Level</value>
</data>
<data name="LblSubAttribution.Location" type="System.Drawing.Point, System.Drawing">
<value>100, 97</value>
</data>
<data name="LblSubAttribution.Size" type="System.Drawing.Size, System.Drawing">
<value>56, 17</value>
</data>
<data name="LblSubAttribution.Text" xml:space="preserve">
<value>Sub Stat</value>
</data>
<data name="LblMainAttribution.Location" type="System.Drawing.Point, System.Drawing">
<value>93, 67</value>
</data>
<data name="LblMainAttribution.Size" type="System.Drawing.Size, System.Drawing">
<value>63, 17</value>
</data>
<data name="LblMainAttribution.Text" xml:space="preserve">
<value>Main Stat</value>
</data>
<data name="LblArtifactStars.Location" type="System.Drawing.Point, System.Drawing">
<value>343, 37</value>
</data>
<data name="LblArtifactStars.Size" type="System.Drawing.Size, System.Drawing">
<value>37, 17</value>
</data>
<data name="LblArtifactStars.Text" xml:space="preserve">
<value>Stars</value>
</data>
</root>

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -0,0 +1,143 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="BtnGiveAllWeapons.Text" xml:space="preserve">
<value>獲得所有武器</value>
</data>
<data name="LblWeaponDescription.Text" xml:space="preserve">
<value>獲取武器
說明:設定等級會自動設定突破等級
&gt;20級突破1
&gt;40級突破2
&gt;50級突破3
&gt;60級突破4
&gt;70級突破5
&gt;80級突破6</value>
</data>
<data name="LblWeaponRefinement.Text" xml:space="preserve">
<value>精煉等級</value>
</data>
<data name="LblWeaponAmount.Text" xml:space="preserve">
<value>數量</value>
</data>
<data name="LblWeaponLevel.Text" xml:space="preserve">
<value>等級</value>
</data>
</root>

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -0,0 +1,220 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="LnkInventoryKamera.Text" xml:space="preserve">
<value>InventoryKamera</value>
</data>
<data name="LblGOODHelp.Text" xml:space="preserve">
<value>Come and import your official server archive into GC!</value>
</data>
<data name="ButtonOpenGOODImport.Text" xml:space="preserve">
<value>Import GOOD</value>
</data>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="LblHostTip.Size" type="System.Drawing.Size, System.Drawing">
<value>377, 17</value>
</data>
<data name="LblHostTip.Text" xml:space="preserve">
<value>Please be sure https:// or http:// is included with the IP address</value>
</data>
<data name="GrpServerStatus.Text" xml:space="preserve">
<value>Server status</value>
</data>
<data name="LnkOpenCommandLabel.Location" type="System.Drawing.Point, System.Drawing">
<value>13, 63</value>
</data>
<data name="LnkOpenCommandLabel.Size" type="System.Drawing.Size, System.Drawing">
<value>100, 17</value>
</data>
<data name="LnkOpenCommandLabel.Text" xml:space="preserve">
<value>OpenCommand</value>
</data>
<data name="LblOpenCommandSupport.Location" type="System.Drawing.Point, System.Drawing">
<value>119, 63</value>
</data>
<data name="LblServerVersion.Location" type="System.Drawing.Point, System.Drawing">
<value>119, 29</value>
</data>
<data name="LblPlayerCount.Location" type="System.Drawing.Point, System.Drawing">
<value>119, 46</value>
</data>
<data name="LblServerVersionLabel.Location" type="System.Drawing.Point, System.Drawing">
<value>25, 29</value>
</data>
<data name="LblServerVersionLabel.Size" type="System.Drawing.Size, System.Drawing">
<value>88, 17</value>
</data>
<data name="LblServerVersionLabel.Text" xml:space="preserve">
<value>Game version</value>
</data>
<data name="LblPlayerCountLabel.Location" type="System.Drawing.Point, System.Drawing">
<value>34, 46</value>
</data>
<data name="LblPlayerCountLabel.Size" type="System.Drawing.Size, System.Drawing">
<value>79, 17</value>
</data>
<data name="LblPlayerCountLabel.Text" xml:space="preserve">
<value>Player count</value>
</data>
<data name="GrpRemoteCommand.Text" xml:space="preserve">
<value>Open Command</value>
</data>
<data name="TPPlayerCheck.Text" xml:space="preserve">
<value>Player</value>
</data>
<data name="LnkRCHelp.Size" type="System.Drawing.Size, System.Drawing">
<value>35, 17</value>
</data>
<data name="LnkRCHelp.Text" xml:space="preserve">
<value>Help</value>
</data>
<data name="BtnConnectOpenCommand.Text" xml:space="preserve">
<value>Connect</value>
</data>
<data name="LblVerificationCode.Size" type="System.Drawing.Size, System.Drawing">
<value>39, 17</value>
</data>
<data name="LblVerificationCode.Text" xml:space="preserve">
<value>Code</value>
</data>
<data name="BtnSendVerificationCode.Text" xml:space="preserve">
<value>Send Code</value>
</data>
<data name="TPConsoleCheck.Size" type="System.Drawing.Size, System.Drawing">
<value>296, 109</value>
</data>
<data name="TPConsoleCheck.Text" xml:space="preserve">
<value>Console</value>
</data>
<data name="BtnConsoleConnect.Text" xml:space="preserve">
<value>Connect</value>
</data>
<data name="LblConsoleTip.Text" xml:space="preserve">
<value>Note that normal commands in the console state must specify the target (set include UID)</value>
</data>
<data name="BtnQueryServerStatus.Text" xml:space="preserve">
<value>Query</value>
</data>
<data name="LblHost.Size" type="System.Drawing.Size, System.Drawing">
<value>78, 17</value>
</data>
<data name="LblHost.Text" xml:space="preserve">
<value>Server Addr</value>
</data>
</root>

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,273 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="LnkInventoryKamera.Text" xml:space="preserve">
<value>InventoryKamera</value>
</data>
<data name="LblGOODHelp.Text" xml:space="preserve">
<value>Приходите и импортируйте свой официальный архив сервера в GC!</value>
</data>
<data name="ButtonOpenGOODImport.Text" xml:space="preserve">
<value>Импортировать GOOD</value>
</data>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="LblHostTip.Size" type="System.Drawing.Size, System.Drawing">
<value>346, 17</value>
</data>
<data name="LblHostTip.Text" xml:space="preserve">
<value>Убедитесь, что https:// или http:// включены в IP-адрес.</value>
</data>
<data name="GrpServerStatus.Text" xml:space="preserve">
<value>Состояние сервера</value>
</data>
<data name="LnkOpenCommandLabel.Size" type="System.Drawing.Size, System.Drawing">
<value>100, 17</value>
</data>
<data name="LnkOpenCommandLabel.Text" xml:space="preserve">
<value>OpenCommand</value>
</data>
<data name="LblOpenCommandSupport.Location" type="System.Drawing.Point, System.Drawing">
<value>119, 62</value>
</data>
<data name="LblServerVersion.Location" type="System.Drawing.Point, System.Drawing">
<value>119, 28</value>
</data>
<data name="LblPlayerCount.Location" type="System.Drawing.Point, System.Drawing">
<value>119, 45</value>
</data>
<data name="LblServerVersionLabel.Location" type="System.Drawing.Point, System.Drawing">
<value>27, 28</value>
</data>
<data name="LblServerVersionLabel.Size" type="System.Drawing.Size, System.Drawing">
<value>86, 17</value>
</data>
<data name="LblServerVersionLabel.Text" xml:space="preserve">
<value>Версия игры</value>
</data>
<data name="LblPlayerCountLabel.Location" type="System.Drawing.Point, System.Drawing">
<value>7, 45</value>
</data>
<data name="LblPlayerCountLabel.Size" type="System.Drawing.Size, System.Drawing">
<value>106, 17</value>
</data>
<data name="LblPlayerCountLabel.Text" xml:space="preserve">
<value>Кол-во игроков</value>
</data>
<data name="GrpRemoteCommand.Text" xml:space="preserve">
<value>Open Command</value>
</data>
<data name="TPPlayerCheck.Text" xml:space="preserve">
<value>Игрок</value>
</data>
<data name="LnkRCHelp.Location" type="System.Drawing.Point, System.Drawing">
<value>179, 15</value>
</data>
<data name="LnkRCHelp.Size" type="System.Drawing.Size, System.Drawing">
<value>60, 17</value>
</data>
<data name="LnkRCHelp.Text" xml:space="preserve">
<value>Помощь</value>
</data>
<data name="NUDRemotePlayerId.Location" type="System.Drawing.Point, System.Drawing">
<value>55, 13</value>
</data>
<data name="BtnConnectOpenCommand.Location" type="System.Drawing.Point, System.Drawing">
<value>93, 82</value>
</data>
<data name="BtnConnectOpenCommand.Size" type="System.Drawing.Size, System.Drawing">
<value>110, 23</value>
</data>
<data name="BtnConnectOpenCommand.Text" xml:space="preserve">
<value>Подключиться</value>
</data>
<data name="LblVerificationCode.Location" type="System.Drawing.Point, System.Drawing">
<value>18, 44</value>
</data>
<data name="LblVerificationCode.Size" type="System.Drawing.Size, System.Drawing">
<value>31, 17</value>
</data>
<data name="LblVerificationCode.Text" xml:space="preserve">
<value>Код</value>
</data>
<data name="BtnSendVerificationCode.Location" type="System.Drawing.Point, System.Drawing">
<value>179, 42</value>
</data>
<data name="BtnSendVerificationCode.Size" type="System.Drawing.Size, System.Drawing">
<value>110, 23</value>
</data>
<data name="BtnSendVerificationCode.Text" xml:space="preserve">
<value>Отправить код</value>
</data>
<data name="NUDVerificationCode.Location" type="System.Drawing.Point, System.Drawing">
<value>55, 42</value>
</data>
<data name="LblRemotePlayerId.Location" type="System.Drawing.Point, System.Drawing">
<value>19, 15</value>
</data>
<data name="TPConsoleCheck.Size" type="System.Drawing.Size, System.Drawing">
<value>296, 109</value>
</data>
<data name="TPConsoleCheck.Text" xml:space="preserve">
<value>Консоль</value>
</data>
<data name="BtnConsoleConnect.Location" type="System.Drawing.Point, System.Drawing">
<value>93, 82</value>
</data>
<data name="BtnConsoleConnect.Size" type="System.Drawing.Size, System.Drawing">
<value>110, 23</value>
</data>
<data name="BtnConsoleConnect.Text" xml:space="preserve">
<value>Подключиться</value>
</data>
<data name="LblConsoleTip.Font" type="System.Drawing.Font, System.Drawing">
<value>Microsoft YaHei UI, 8pt, style=Italic</value>
</data>
<data name="LblConsoleTip.Location" type="System.Drawing.Point, System.Drawing">
<value>15, 34</value>
</data>
<data name="LblConsoleTip.Size" type="System.Drawing.Size, System.Drawing">
<value>275, 48</value>
</data>
<data name="LblConsoleTip.Text" xml:space="preserve">
<value>Обратите внимание, что обычные команды в консоли должны указывать UID цели
(установите галочку галочку "Включить UID" на главной)
</value>
</data>
<data name="TxtHost.Location" type="System.Drawing.Point, System.Drawing">
<value>103, 34</value>
</data>
<data name="TxtHost.Size" type="System.Drawing.Size, System.Drawing">
<value>200, 23</value>
</data>
<data name="BtnQueryServerStatus.Location" type="System.Drawing.Point, System.Drawing">
<value>309, 34</value>
</data>
<data name="BtnQueryServerStatus.Size" type="System.Drawing.Size, System.Drawing">
<value>65, 23</value>
</data>
<data name="BtnQueryServerStatus.Text" xml:space="preserve">
<value>Запрос</value>
</data>
<data name="LblHost.Size" type="System.Drawing.Size, System.Drawing">
<value>35, 17</value>
</data>
<data name="LblHost.Text" xml:space="preserve">
<value>Хост</value>
</data>
</root>

View File

@@ -0,0 +1,173 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="LnkInventoryKamera.Text" xml:space="preserve">
<value>檔案掃描開源工具</value>
</data>
<data name="LblGOODHelp.Text" xml:space="preserve">
<value>快來把你的官服檔案導入GC吧</value>
</data>
<data name="ButtonOpenGOODImport.Text" xml:space="preserve">
<value>導入GOOD檔案</value>
</data>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="LblHostTip.Size" type="System.Drawing.Size, System.Drawing">
<value>206, 17</value>
</data>
<data name="LblHostTip.Text" xml:space="preserve">
<value>請確保地址中包含 http:// 或 https://</value>
</data>
<data name="GrpServerStatus.Text" xml:space="preserve">
<value>伺服器狀態</value>
</data>
<data name="LnkOpenCommandLabel.Text" xml:space="preserve">
<value>遠程執行插件</value>
</data>
<data name="LblServerVersionLabel.Text" xml:space="preserve">
<value>遊戲版本</value>
</data>
<data name="LblPlayerCountLabel.Text" xml:space="preserve">
<value>當前玩家數</value>
</data>
<data name="LnkRCHelp.Text" xml:space="preserve">
<value>幫助</value>
</data>
<data name="BtnConnectOpenCommand.Text" xml:space="preserve">
<value>連接</value>
</data>
<data name="LblVerificationCode.Text" xml:space="preserve">
<value>驗證碼</value>
</data>
<data name="BtnSendVerificationCode.Text" xml:space="preserve">
<value>發送驗證碼</value>
</data>
<data name="TPConsoleCheck.Size" type="System.Drawing.Size, System.Drawing">
<value>296, 109</value>
</data>
<data name="LblConsoleTip.Text" xml:space="preserve">
<value>請注意,控制台狀態下普通命令必須指定目標
即設置包含UID</value>
</data>
<data name="BtnQueryServerStatus.Text" xml:space="preserve">
<value>查詢</value>
</data>
<data name="LblHost.Text" xml:space="preserve">
<value>伺服器地址</value>
</data>
</root>

View File

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

View File

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

View File

@@ -0,0 +1,292 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="TPSpawnArgs.Text" xml:space="preserve">
<value>Spawn args</value>
</data>
<data name="TPAttackModArgs.Text" xml:space="preserve">
<value>AttackModifier</value>
</data>
<data name="TPAttackInfusedArgs.Text" xml:space="preserve">
<value>AttackInfused</value>
</data>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="LblSpawnVersionRequireTip.Size" type="System.Drawing.Size, System.Drawing">
<value>144, 17</value>
</data>
<data name="LblSpawnVersionRequireTip.Text" xml:space="preserve">
<value>v Require GC &gt; v1.3.1 v</value>
</data>
<data name="LblInfiniteHpTip.Size" type="System.Drawing.Size, System.Drawing">
<value>98, 17</value>
</data>
<data name="LblInfiniteHpTip.Text" xml:space="preserve">
<value>HP 0 for infinite</value>
</data>
<data name="LblEntityDef.Size" type="System.Drawing.Size, System.Drawing">
<value>55, 17</value>
</data>
<data name="LblEntityDef.Text" xml:space="preserve">
<value>Defense</value>
</data>
<data name="LblEntityAtk.Size" type="System.Drawing.Size, System.Drawing">
<value>44, 17</value>
</data>
<data name="LblEntityAtk.Text" xml:space="preserve">
<value>Attack</value>
</data>
<data name="LblEntityHp.Size" type="System.Drawing.Size, System.Drawing">
<value>24, 17</value>
</data>
<data name="LblEntityHp.Text" xml:space="preserve">
<value>HP</value>
</data>
<data name="LblEntityMaxHp.Location" type="System.Drawing.Point, System.Drawing">
<value>182, 82</value>
</data>
<data name="LblEntityMaxHp.Size" type="System.Drawing.Size, System.Drawing">
<value>53, 17</value>
</data>
<data name="LblEntityMaxHp.Text" xml:space="preserve">
<value>Max HP</value>
</data>
<data name="LblEntitySpawnPostion.Text" xml:space="preserve">
<value>Pos: x: y: z:</value>
</data>
<data name="LblEntityLevel.Location" type="System.Drawing.Point, System.Drawing">
<value>200, 27</value>
</data>
<data name="LblEntityLevel.Size" type="System.Drawing.Size, System.Drawing">
<value>37, 17</value>
</data>
<data name="LblEntityLevel.Text" xml:space="preserve">
<value>Level</value>
</data>
<data name="LblEntityAmount.Size" type="System.Drawing.Size, System.Drawing">
<value>53, 17</value>
</data>
<data name="LblEntityAmount.Text" xml:space="preserve">
<value>Amount</value>
</data>
<data name="LblAMPluginTip.Size" type="System.Drawing.Size, System.Drawing">
<value>121, 17</value>
</data>
<data name="LblAMPluginTip.Text" xml:space="preserve">
<value>Meet the real Thor!</value>
</data>
<data name="LblAMPluginIntroduction.Size" type="System.Drawing.Size, System.Drawing">
<value>326, 17</value>
</data>
<data name="LblAMPluginIntroduction.Text" xml:space="preserve">
<value>This plugin can use Gadget to replace character attack</value>
</data>
<data name="LblAMPlugin.Size" type="System.Drawing.Size, System.Drawing">
<value>46, 17</value>
</data>
<data name="LblAMPlugin.Text" xml:space="preserve">
<value>Plugin:</value>
</data>
<data name="LnkAMOff.Size" type="System.Drawing.Size, System.Drawing">
<value>26, 17</value>
</data>
<data name="LnkAMOff.Text" xml:space="preserve">
<value>Off</value>
</data>
<data name="LnkAMOn.Size" type="System.Drawing.Size, System.Drawing">
<value>25, 17</value>
</data>
<data name="LnkAMOn.Text" xml:space="preserve">
<value>On</value>
</data>
<data name="BtnAtReload.Text" xml:space="preserve">
<value>Reload config</value>
</data>
<data name="BtnAtClear.Text" xml:space="preserve">
<value>Clear all gadgets</value>
</data>
<data name="GrpAMSkills.Text" xml:space="preserve">
<value>Replace Skill</value>
</data>
<data name="LblAiwiRotate.Size" type="System.Drawing.Size, System.Drawing">
<value>238, 17</value>
</data>
<data name="LblAiwiRotate.Text" xml:space="preserve">
<value>Rot: x: y: z:</value>
</data>
<data name="LblAiwiSpread.Size" type="System.Drawing.Size, System.Drawing">
<value>50, 17</value>
</data>
<data name="LblAiwiSpread.Text" xml:space="preserve">
<value>Spread</value>
</data>
<data name="LblAiwiCount.Size" type="System.Drawing.Size, System.Drawing">
<value>42, 17</value>
</data>
<data name="LblAiwiCount.Text" xml:space="preserve">
<value>Count</value>
</data>
<data name="LblAiwiHeight.Size" type="System.Drawing.Size, System.Drawing">
<value>46, 17</value>
</data>
<data name="LblAiwiHeight.Text" xml:space="preserve">
<value>Height</value>
</data>
<data name="LblAiwiRadius.Size" type="System.Drawing.Size, System.Drawing">
<value>47, 17</value>
</data>
<data name="LblAiwiRadius.Text" xml:space="preserve">
<value>Radius</value>
</data>
<data name="BtnAttackInfuse.Text" xml:space="preserve">
<value>Attack Infuse</value>
</data>
<data name="BtnAiwiReload.Text" xml:space="preserve">
<value>Reload config</value>
</data>
<data name="BtnAiwiClear.Text" xml:space="preserve">
<value>Clear</value>
</data>
<data name="BtnAiwiReset.Text" xml:space="preserve">
<value>Reset</value>
</data>
<data name="LblAiwiPlugin.Size" type="System.Drawing.Size, System.Drawing">
<value>46, 17</value>
</data>
<data name="LblAiwiPlugin.Text" xml:space="preserve">
<value>Plugin:</value>
</data>
<data name="TPSpawnItems.Text" xml:space="preserve">
<value>Entities</value>
</data>
<data name="TPSpawnRecords.Text" xml:space="preserve">
<value>Spawn Records</value>
</data>
<data name="BtnSaveSpawnLog.Text" xml:space="preserve">
<value>√ Record</value>
</data>
<data name="BtnRemoveSpawnLog.Text" xml:space="preserve">
<value>× Delete</value>
</data>
<data name="LblClearSpawnLogs.Size" type="System.Drawing.Size, System.Drawing">
<value>50, 17</value>
</data>
<data name="LblClearSpawnLogs.Text" xml:space="preserve">
<value>X Clear</value>
</data>
</root>

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,295 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="TPSpawnArgs.Text" xml:space="preserve">
<value>Спавн</value>
</data>
<data name="TPAttackModArgs.Text" xml:space="preserve">
<value>Изменение атаки</value>
</data>
<data name="TPAttackInfusedArgs.Text" xml:space="preserve">
<value>Элем. инфузия</value>
</data>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="LblSpawnVersionRequireTip.Size" type="System.Drawing.Size, System.Drawing">
<value>149, 17</value>
</data>
<data name="LblSpawnVersionRequireTip.Text" xml:space="preserve">
<value>Требуется GC &gt;= v1.3.1</value>
</data>
<data name="LblInfiniteHpTip.Size" type="System.Drawing.Size, System.Drawing">
<value>157, 17</value>
</data>
<data name="LblInfiniteHpTip.Text" xml:space="preserve">
<value>HP 0 для бесконечности</value>
</data>
<data name="LblEntityDef.Size" type="System.Drawing.Size, System.Drawing">
<value>53, 17</value>
</data>
<data name="LblEntityDef.Text" xml:space="preserve">
<value>Защита</value>
</data>
<data name="LblEntityAtk.Size" type="System.Drawing.Size, System.Drawing">
<value>42, 17</value>
</data>
<data name="LblEntityAtk.Text" xml:space="preserve">
<value>Атака</value>
</data>
<data name="LblEntityHp.Size" type="System.Drawing.Size, System.Drawing">
<value>24, 17</value>
</data>
<data name="LblEntityHp.Text" xml:space="preserve">
<value>HP</value>
</data>
<data name="LblEntityMaxHp.Size" type="System.Drawing.Size, System.Drawing">
<value>63, 17</value>
</data>
<data name="LblEntityMaxHp.Text" xml:space="preserve">
<value>Макс. HP</value>
</data>
<data name="LblEntitySpawnPostion.Size" type="System.Drawing.Size, System.Drawing">
<value>238, 17</value>
</data>
<data name="LblEntitySpawnPostion.Text" xml:space="preserve">
<value>Поз x: y: z:</value>
</data>
<data name="LblEntityLevel.Size" type="System.Drawing.Size, System.Drawing">
<value>26, 17</value>
</data>
<data name="LblEntityLevel.Text" xml:space="preserve">
<value>Ур.</value>
</data>
<data name="LblEntityAmount.Size" type="System.Drawing.Size, System.Drawing">
<value>34, 17</value>
</data>
<data name="LblEntityAmount.Text" xml:space="preserve">
<value>Кол.</value>
</data>
<data name="LblAMPluginTip.Size" type="System.Drawing.Size, System.Drawing">
<value>190, 17</value>
</data>
<data name="LblAMPluginTip.Text" xml:space="preserve">
<value>Встречайте настоящего Тора!</value>
</data>
<data name="LblAMPluginIntroduction.Size" type="System.Drawing.Size, System.Drawing">
<value>213, 17</value>
</data>
<data name="LblAMPluginIntroduction.Text" xml:space="preserve">
<value>Атаки можно заменить гаджетом</value>
</data>
<data name="LblAMPlugin.Size" type="System.Drawing.Size, System.Drawing">
<value>52, 17</value>
</data>
<data name="LblAMPlugin.Text" xml:space="preserve">
<value>Плагин</value>
</data>
<data name="LnkAMOff.Location" type="System.Drawing.Point, System.Drawing">
<value>194, 3</value>
</data>
<data name="LnkAMOff.Size" type="System.Drawing.Size, System.Drawing">
<value>41, 17</value>
</data>
<data name="LnkAMOff.Text" xml:space="preserve">
<value>выкл.</value>
</data>
<data name="LnkAMOn.Size" type="System.Drawing.Size, System.Drawing">
<value>32, 17</value>
</data>
<data name="LnkAMOn.Text" xml:space="preserve">
<value>вкл.</value>
</data>
<data name="BtnAtReload.Text" xml:space="preserve">
<value>Перезагрузить</value>
</data>
<data name="BtnAtClear.Text" xml:space="preserve">
<value>Очистить гаджеты</value>
</data>
<data name="GrpAMSkills.Text" xml:space="preserve">
<value>Замена навыков</value>
</data>
<data name="LblAiwiRotate.Size" type="System.Drawing.Size, System.Drawing">
<value>241, 17</value>
</data>
<data name="LblAiwiRotate.Text" xml:space="preserve">
<value>Повер. x: y: z:</value>
</data>
<data name="LblAiwiSpread.Location" type="System.Drawing.Point, System.Drawing">
<value>152, 74</value>
</data>
<data name="LblAiwiSpread.Size" type="System.Drawing.Size, System.Drawing">
<value>74, 17</value>
</data>
<data name="LblAiwiSpread.Text" xml:space="preserve">
<value>Распростр.</value>
</data>
<data name="LblAiwiCount.Size" type="System.Drawing.Size, System.Drawing">
<value>51, 17</value>
</data>
<data name="LblAiwiCount.Text" xml:space="preserve">
<value>Кол-во</value>
</data>
<data name="LblAiwiHeight.Size" type="System.Drawing.Size, System.Drawing">
<value>51, 17</value>
</data>
<data name="LblAiwiHeight.Text" xml:space="preserve">
<value>Высота</value>
</data>
<data name="LblAiwiRadius.Size" type="System.Drawing.Size, System.Drawing">
<value>49, 17</value>
</data>
<data name="LblAiwiRadius.Text" xml:space="preserve">
<value>Радиус</value>
</data>
<data name="BtnAttackInfuse.Text" xml:space="preserve">
<value>Создать инфузию</value>
</data>
<data name="BtnAiwiReload.Text" xml:space="preserve">
<value>Перезагрузка</value>
</data>
<data name="BtnAiwiClear.Text" xml:space="preserve">
<value>Очистить</value>
</data>
<data name="BtnAiwiReset.Text" xml:space="preserve">
<value>Сбросить</value>
</data>
<data name="LblAiwiPlugin.Size" type="System.Drawing.Size, System.Drawing">
<value>52, 17</value>
</data>
<data name="LblAiwiPlugin.Text" xml:space="preserve">
<value>Плагин</value>
</data>
<data name="TPSpawnItems.Text" xml:space="preserve">
<value>Список объектов</value>
</data>
<data name="TPSpawnRecords.Text" xml:space="preserve">
<value>Записи спавнов</value>
</data>
<data name="BtnSaveSpawnLog.Text" xml:space="preserve">
<value>√ Сохр.</value>
</data>
<data name="BtnRemoveSpawnLog.Text" xml:space="preserve">
<value>× Удалить</value>
</data>
<data name="LblClearSpawnLogs.Size" type="System.Drawing.Size, System.Drawing">
<value>76, 17</value>
</data>
<data name="LblClearSpawnLogs.Text" xml:space="preserve">
<value>X Очистить</value>
</data>
</root>

View File

@@ -0,0 +1,205 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="LblSpawnVersionRequireTip.Text" xml:space="preserve">
<value>以下參數至少要求 GC v1.3.1</value>
</data>
<data name="LblInfiniteHpTip.Text" xml:space="preserve">
<value>血量為 0 表示無限</value>
</data>
<data name="LblEntityDef.Text" xml:space="preserve">
<value>防禦力:</value>
</data>
<data name="LblEntityAtk.Text" xml:space="preserve">
<value>攻擊力:</value>
</data>
<data name="LblEntityLevel.Text" xml:space="preserve">
<value>等級:</value>
</data>
<data name="LblEntityAmount.Text" xml:space="preserve">
<value>數量:</value>
</data>
<data name="TPSpawnArgs.Text" xml:space="preserve">
<value>生成參數</value>
</data>
<data name="LblAMPluginTip.Text" xml:space="preserve">
<value>見識一下真正的雷神吧!</value>
</data>
<data name="LblAMPluginIntroduction.Text" xml:space="preserve">
<value>這個插件可以使用 Gadget 替換角色攻擊</value>
</data>
<data name="LnkAMOff.Text" xml:space="preserve">
<value>關</value>
</data>
<data name="LnkAMOn.Text" xml:space="preserve">
<value>開</value>
</data>
<data name="BtnAtReload.Text" xml:space="preserve">
<value>重載配置</value>
</data>
<data name="BtnAtClear.Text" xml:space="preserve">
<value>清空實體!!</value>
</data>
<data name="GrpAMSkills.Text" xml:space="preserve">
<value>替換技能</value>
</data>
<data name="TPAttackModArgs.Text" xml:space="preserve">
<value>攻擊修改參數</value>
</data>
<data name="LblAiwiRotate.Text" xml:space="preserve">
<value>旋轉: x: y: z:</value>
</data>
<data name="LblAiwiSpread.Text" xml:space="preserve">
<value>擴散:</value>
</data>
<data name="LblAiwiCount.Text" xml:space="preserve">
<value>數量:</value>
</data>
<data name="LblAiwiRadius.Text" xml:space="preserve">
<value>範圍:</value>
</data>
<data name="BtnAttackInfuse.Text" xml:space="preserve">
<value>攻擊注入</value>
</data>
<data name="BtnAiwiReload.Text" xml:space="preserve">
<value>重載配置</value>
</data>
<data name="BtnAiwiClear.Text" xml:space="preserve">
<value>清空實體</value>
</data>
<data name="TPAttackInfusedArgs.Text" xml:space="preserve">
<value>攻擊注入參數</value>
</data>
<data name="TPSpawnItems.Text" xml:space="preserve">
<value>實體列表</value>
</data>
<data name="BtnSaveSpawnLog.Text" xml:space="preserve">
<value>√ 記錄</value>
</data>
<data name="BtnRemoveSpawnLog.Text" xml:space="preserve">
<value>× 刪除</value>
</data>
<data name="TPSpawnRecords.Text" xml:space="preserve">
<value>生成記錄本</value>
</data>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="MenuSpawnEntityFilter.Size" type="System.Drawing.Size, System.Drawing">
<value>61, 4</value>
</data>
</root>