Detach all pages of the main form

This commit is contained in:
2022-11-27 15:29:56 +08:00
parent 436c4d809c
commit 7b886ea251
56 changed files with 11408 additions and 7433 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -16,26 +16,20 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>. * along with this program. If not, see <https://www.gnu.org/licenses/>.
* *
**/ **/
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Drawing; using System.Drawing;
using System.IO;
using System.Linq; using System.Linq;
using System.Text; using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks; using System.Threading.Tasks;
using System.Windows.Forms; using System.Windows.Forms;
using GrasscutterTools.DispatchServer;
using GrasscutterTools.Game; using GrasscutterTools.Game;
using GrasscutterTools.Game.Mail;
using GrasscutterTools.GOOD;
using GrasscutterTools.OpenCommand; using GrasscutterTools.OpenCommand;
using GrasscutterTools.Properties; using GrasscutterTools.Properties;
using GrasscutterTools.Utils; using GrasscutterTools.Utils;
using Newtonsoft.Json;
namespace GrasscutterTools.Forms namespace GrasscutterTools.Forms
{ {
public partial class FormMain : Form public partial class FormMain : Form
@@ -72,15 +66,15 @@ namespace GrasscutterTools.Forms
//LoadCustomCommands(); //LoadCustomCommands();
//InitArtifactList(); //InitArtifactList();
InitGameItemList(); //InitGameItemList();
//InitWeapons(); //InitWeapons();
InitAvatars(); //InitAvatars();
//InitEntityList(); //InitEntityList();
InitScenes(); //InitScenes();
InitStatList(); //InitStatList();
InitPermList(); //InitPermList();
InitQuestList(); //InitQuestList();
InitMailPage(); //InitMailPage();
//ChangeTPArtifact(); //ChangeTPArtifact();
} }
@@ -108,7 +102,6 @@ namespace GrasscutterTools.Forms
SaveSettings(); SaveSettings();
} }
/// <summary> /// <summary>
/// 应用版本 /// 应用版本
/// </summary> /// </summary>
@@ -136,7 +129,7 @@ namespace GrasscutterTools.Forms
//InitHomeSettings(); //InitHomeSettings();
// 初始化获取物品记录 // 初始化获取物品记录
InitGiveItemRecord(); //InitGiveItemRecord();
// 初始化生成记录 // 初始化生成记录
//InitSpawnRecord(); //InitSpawnRecord();
@@ -145,7 +138,7 @@ namespace GrasscutterTools.Forms
//InitOpenCommand(); //InitOpenCommand();
// 初始化邮件列表 // 初始化邮件列表
InitMailList(); //InitMailList();
} }
catch (Exception ex) catch (Exception ex)
{ {
@@ -176,7 +169,7 @@ namespace GrasscutterTools.Forms
//SaveOpenCommand(); //SaveOpenCommand();
// 保存邮件设置 // 保存邮件设置
SaveMailSettings(); //SaveMailSettings();
// 保存默认设置 // 保存默认设置
Settings.Default.Save(); Settings.Default.Save();
@@ -187,813 +180,13 @@ namespace GrasscutterTools.Forms
} }
} }
#endregion - Init - #endregion - Init -
/// <summary> /// <summary>
/// 命令版本 /// 命令版本
/// </summary> /// </summary>
private CommandVersion CommandVersion => Common.CommandVersion; private CommandVersion CommandVersion => Common.CommandVersion;
#region - Items -
/// <summary>
/// 初始化游戏物品列表
/// </summary>
private void InitGameItemList()
{
ListGameItems.Items.Clear();
ListGameItems.Items.AddRange(GameData.Items.Lines);
}
/// <summary>
/// 物品列表过滤器文本改变时触发
/// </summary>
private void TxtGameItemFilter_TextChanged(object sender, EventArgs e)
{
UIUtil.ListBoxFilter(ListGameItems, GameData.Items.Lines, TxtGameItemFilter.Text);
}
/// <summary>
/// 生成获取物品命令
/// </summary>
/// <returns>是否生成成功</returns>
private bool GenGiveItemCommand()
{
var name = ListGameItems.SelectedItem as string;
if (!string.IsNullOrEmpty(name))
{
var id = ItemMap.ToId(name);
if (ChkDrop.Checked)
{
NUDGameItemLevel.Enabled = false;
SetCommand("/drop", $"{id} {NUDGameItemAmout.Value}");
}
else
{
NUDGameItemLevel.Enabled = true;
if (CommandVersion.Check(CommandVersion.V1_2_2))
SetCommand("/give", $"{id} x{NUDGameItemAmout.Value} lv{NUDGameItemLevel.Value}");
else
SetCommand("/give", $"{id} {NUDGameItemAmout.Value} {NUDGameItemLevel.Value}");
}
return true;
}
return false;
}
/// <summary>
/// 获取物品输入改变时触发
/// </summary>
private void GiveItemsInputChanged(object sender, EventArgs e)
{
GenGiveItemCommand();
}
#region -- --
/// <summary>
/// 获取物品记录文件路径
/// </summary>
private readonly string GiveItemCommandsRecordPath = Path.Combine(Application.LocalUserAppDataPath, "GiveItemCommands.txt");
/// <summary>
/// 获取物品记录
/// </summary>
private List<GameCommand> GiveItemCommands;
/// <summary>
/// 初始化获取物品记录
/// </summary>
private void InitGiveItemRecord()
{
if (File.Exists(GiveItemCommandsRecordPath))
{
GiveItemCommands = GetCommands(File.ReadAllText(GiveItemCommandsRecordPath));
ListGiveItemLogs.Items.AddRange(GiveItemCommands.Select(c => c.Name).ToArray());
}
else
{
GiveItemCommands = new List<GameCommand>();
}
}
/// <summary>
/// 保存获取物品记录
/// </summary>
private void SaveGiveItemRecord()
{
File.WriteAllText(GiveItemCommandsRecordPath, GetCommandsText(GiveItemCommands));
}
/// <summary>
/// 获取物品记录列表选中项改变时触发
/// </summary>
private void ListGiveItemLogs_SelectedIndexChanged(object sender, EventArgs e)
{
if (ListGiveItemLogs.SelectedIndex >= 0)
{
BtnRemoveGiveItemLog.Enabled = true;
SetCommand(GiveItemCommands[ListGiveItemLogs.SelectedIndex].Command);
}
else
{
BtnRemoveGiveItemLog.Enabled = false;
}
}
/// <summary>
/// 点击保存记录按钮时触发
/// </summary>
private void BtnSaveGiveItemLog_Click(object sender, EventArgs e)
{
if (GenGiveItemCommand())
{
var cmd = new GameCommand($"{ListGameItems.SelectedItem} x{NUDGameItemAmout.Value}", CmbCommand.Text);
GiveItemCommands.Add(cmd);
ListGiveItemLogs.Items.Add(cmd.Name);
SaveGiveItemRecord();
}
}
/// <summary>
/// 点击移除获取物品记录时触发
/// </summary>
private void BtnRemoveGiveItemLog_Click(object sender, EventArgs e)
{
if (ListGiveItemLogs.SelectedIndex >= 0)
{
GiveItemCommands.RemoveAt(ListGiveItemLogs.SelectedIndex);
ListGiveItemLogs.Items.RemoveAt(ListGiveItemLogs.SelectedIndex);
SaveGiveItemRecord();
}
}
/// <summary>
/// 点击清空获取物品记录时触发
/// </summary>
private void LblClearGiveItemLogs_Click(object sender, EventArgs e)
{
if (MessageBox.Show(Resources.AskConfirmDeletion, Resources.Tips, MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
{
GiveItemCommands.Clear();
ListGiveItemLogs.Items.Clear();
SaveGiveItemRecord();
}
}
#endregion -- --
#endregion - Items -
#region - Avatars -
#region -- --
/// <summary>
/// 初始化角色列表
/// </summary>
private void InitAvatars()
{
CmbAvatar.Items.Clear();
CmbAvatar.Items.AddRange(GameData.Avatars.Names);
}
/// <summary>
/// 角色下拉框选中项改变时触发
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void CmbAvatar_SelectedIndexChanged(object sender, EventArgs e)
{
// TODO: Load Avatar Image
AvatarInputChanged();
}
/// <summary>
/// 角色等级输入框数值改变时触发
/// </summary>
private void NUDAvatarLevel_ValueChanged(object sender, EventArgs e)
{
AvatarInputChanged();
}
/// <summary>
/// 角色命座输入框数值改变时触发
/// </summary>
private void NUDAvatarConstellation_ValueChanged(object sender, EventArgs e)
{
AvatarInputChanged();
}
/// <summary>
/// 角色页面输入改变时触发
/// </summary>
private void AvatarInputChanged()
{
if (CmbAvatar.SelectedIndex >= 0)
GenAvatar((int)NUDAvatarLevel.Value, (int)NUDAvatarConstellation.Value, (int)NUDAvatarSkillLevel.Value);
}
/// <summary>
/// 获取角色命令
/// </summary>
/// <param name="level">等级</param>
private void GenAvatar(int level, int constellation, int skillLevel)
{
if (CommandVersion.Check(CommandVersion.V1_4_1))
{
int avatarId = GameData.Avatars.Ids[CmbAvatar.SelectedIndex];
SetCommand("/give", $"{avatarId} lv{level} c{constellation} sl{skillLevel}");
}
else if (CommandVersion.Check(CommandVersion.V1_2_2))
{
int avatarId = GameData.Avatars.Ids[CmbAvatar.SelectedIndex];
SetCommand("/give", $"{avatarId} lv{level} c{constellation}");
}
else
{
int avatarId = GameData.Avatars.Ids[CmbAvatar.SelectedIndex] - 1000 + 10000000;
SetCommand("/givechar", $"{avatarId} {level}");
}
}
/// <summary>
/// 点击获取所有角色按钮时触发
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void BtnGiveAllChar_Click(object sender, EventArgs e)
{
var level = NUDAvatarLevel.Value;
var constellation = NUDAvatarConstellation.Value;
var skillLevel = NUDAvatarSkillLevel.Value;
if (CommandVersion.Check(CommandVersion.V1_4_1))
SetCommand("/give avatars", $"lv{level} c{constellation} sl{skillLevel}");
else
SetCommand("/give avatars", $"lv{level} c{constellation}");
}
#endregion
#region -- --
/// <summary>
/// 点击切换主角元素链接标签时触发
/// </summary>
private void LnkSwitchElement_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
UIUtil.OpenURL("https://github.com/Penelopeep/SwitchElementTraveller");
}
/// <summary>
/// 元素参数
/// </summary>
private readonly string[] Elements = { "white", "fire", "water", "wind", "ice", "rock", "electro", "grass" };
/// <summary>
/// 切换元素下拉框选中项改变时触发
/// </summary>
private void CmbSwitchElement_SelectedIndexChanged(object sender, EventArgs e)
{
if (CmbSwitchElement.SelectedIndex == -1 || CmbSwitchElement.SelectedIndex >= Elements.Length) return;
SetCommand("/se", Elements[CmbSwitchElement.SelectedIndex]);
}
#endregion
#region -- --
/// <summary>
/// 初始化数据列表
/// </summary>
private void InitStatList()
{
LblStatTip.Text = "";
SetStatsCommand.InitStats();
CmbStat.Items.Clear();
CmbStat.Items.AddRange(SetStatsCommand.Stats.Select(s => s.Name).ToArray());
}
/// <summary>
/// 数据页面输入改变时触发
/// </summary>
private void SetStatsInputChanged(object sender, EventArgs e)
{
if (CmbStat.SelectedIndex < 0)
return;
else
BtnLockStat.Enabled = BtnUnlockStat.Enabled = true;
var stat = SetStatsCommand.Stats[CmbStat.SelectedIndex];
LblStatPercent.Visible = stat.Percent;
LblStatTip.Text = stat.Tip;
SetCommand("/setstats", $"{stat.ArgName} {NUDStat.Value}{(stat.Percent ? "%" : "")}");
}
/// <summary>
/// 点击锁定按钮时触发
/// </summary>
private void BtnLockStat_Click(object sender, EventArgs e)
{
var stat = SetStatsCommand.Stats[CmbStat.SelectedIndex];
SetCommand("/setstats", $"lock {stat.ArgName} {NUDStat.Value}{(stat.Percent ? "%" : "")}");
}
/// <summary>
/// 点击解锁按钮时触发
/// </summary>
private void BtnUnlockStat_Click(object sender, EventArgs e)
{
var stat = SetStatsCommand.Stats[CmbStat.SelectedIndex];
SetCommand("/setstats", $"unlock {stat.ArgName}");
}
#endregion
#region -- --
/// <summary>
/// 点击设置技能按钮时触发
/// </summary>
private void LnkSetTalentClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
SetCommand("/talent", $"{(sender as LinkLabel).Tag} {NUDTalentLevel.Value}");
}
#endregion
#region -- --
/// <summary>
/// 设置命座链接标签点击时触发
/// </summary>
private void LnkSetConst_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
if (NUDSetConstellation.Value >= 0)
SetCommand("/setConst", $"{NUDSetConstellation.Value}" + (sender == LnkSetAllConst ? " all" : string.Empty));
else
SetCommand("/resetConst", (sender == LnkSetAllConst ? "all" : string.Empty));
}
#endregion
#endregion - Avatars -
#region - Scenes -
private string[] _scenes;
private string[] Scenes
{
get => _scenes;
set
{
if (_scenes == value)
return;
_scenes = value;
ListScenes.Items.Clear();
ListScenes.Items.AddRange(value);
}
}
/// <summary>
/// 初始化场景列表
/// </summary>
private void InitScenes()
{
Scenes = GameData.Scenes.Lines;
CmbClimateType.Items.Clear();
CmbClimateType.Items.AddRange(Resources.ClimateType.Split(','));
}
/// <summary>
/// 选中场景时触发
/// </summary>
private void RbListScene_CheckedChanged(object sender, EventArgs e)
{
if (RbListScene.Checked)
Scenes = GameData.Scenes.Lines;
}
/// <summary>
/// 选中秘境时触发
/// </summary>
private void RbListDungeons_CheckedChanged(object sender, EventArgs e)
{
if (RbListDungeons.Checked)
Scenes = GameData.Dungeons.Lines;
}
/// <summary>
/// 场景列表过滤器输入项改变时触发
/// </summary>
private void TxtSceneFilter_TextChanged(object sender, EventArgs e)
{
UIUtil.ListBoxFilter(ListScenes, Scenes, TxtSceneFilter.Text);
}
/// <summary>
/// 场景列表选中项改变时触发
/// </summary>
private void ListScenes_SelectedIndexChanged(object sender, EventArgs e)
{
if (ListScenes.SelectedIndex < 0)
{
ChkIncludeSceneId.Enabled = false;
return;
}
ChkIncludeSceneId.Enabled = true;
// 可以直接弃用 scene 命令
var name = ListScenes.SelectedItem as string;
var id = ItemMap.ToId(name);
if (RbListScene.Checked)
{
if (CommandVersion.Check(CommandVersion.V1_2_2))
{
SetCommand("/scene", id.ToString());
}
else
{
SetCommand("/tp ~ ~ ~", id.ToString());
}
}
else if (RbListDungeons.Checked)
{
SetCommand("/dungeon", id.ToString());
}
}
/// <summary>
/// 气候类型列表
/// </summary>
static readonly string[] climateTypes = { "none", "sunny", "cloudy", "rain", "thunderstorm", "snow", "mist" };
/// <summary>
/// 气候类型下拉框选中项改变时触发
/// </summary>
private void CmbClimateType_SelectedIndexChanged(object sender, EventArgs e)
{
if (CmbClimateType.SelectedIndex < 0)
return;
if (CommandVersion.Check(CommandVersion.V1_2_2))
SetCommand("/weather", CmbClimateType.SelectedIndex < climateTypes.Length ? climateTypes[CmbClimateType.SelectedIndex] : "none");
else
SetCommand("/weather", $"0 {CmbClimateType.SelectedIndex}");
}
/// <summary>
/// 点击传送按钮时触发
/// </summary>
private void BtnTeleport_Click(object sender, EventArgs e)
{
string args = $"{NUDTpX.Value} {NUDTpY.Value} {NUDTpZ.Value}";
if (ChkIncludeSceneId.Checked && RbListScene.Checked && ListScenes.SelectedIndex != -1)
args += $" {GameData.Scenes.Ids[ListScenes.SelectedIndex]}";
SetCommand("/tp", args);
}
#endregion - Scenes -
#region - Management -
/// <summary>
/// 初始化权限列表
/// </summary>
private void InitPermList()
{
CmbPerm.Items.Clear();
CmbPerm.Items.AddRange(Resources.Permissions.Split('\n').Select(l => l.Trim()).ToArray());
}
/// <summary>
/// 点击授权按钮时触发
/// </summary>
private void BtnPermClick(object sender, EventArgs e)
{
var uid = NUDPermUID.Value;
var perm = CmbPerm.Text.Trim();
var act = (sender as Button).Tag.ToString();
if (act == "list" || act == "clear")
{
SetCommand($"/permission {act} @{uid}");
}
else
{
if (string.IsNullOrEmpty(perm))
{
MessageBox.Show(Resources.PermissionCannotBeEmpty, Resources.Error, MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
SetCommand($"/permission {act} @{uid} {perm}");
}
}
/// <summary>
/// 账号相关按钮点击时触发Tag包含子命令
/// </summary>
private void AccountButtonClicked(object sender, EventArgs e)
{
var username = TxtAccountUserName.Text.Trim();
if (string.IsNullOrEmpty(username))
{
MessageBox.Show(Resources.UsernameCannotBeEmpty, Resources.Error, MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
SetCommand($"/account {(sender as Button).Tag} {username} {(ChkAccountSetUid.Checked ? NUDAccountUid.Value.ToString() : "")}");
}
/// <summary>
/// 点击封禁按钮时触发
/// </summary>
private void BtnBan_Click(object sender, EventArgs e)
{
var uid = NUDBanUID.Value;
var endTime = DTPBanEndTime.Value;
var command = $"/ban @{uid} {new DateTimeOffset(endTime).ToUnixTimeSeconds()}";
var reaseon = Regex.Replace(TxtBanReason.Text.Trim(), @"\s+", "-");
if (!string.IsNullOrEmpty(reaseon))
command += $" {reaseon}";
SetCommand(command);
}
/// <summary>
/// 点击解封按钮时触发
/// </summary>
private void BtnUnban_Click(object sender, EventArgs e)
{
SetCommand($"/unban @{NUDBanUID.Value}");
}
#endregion - Management -
#region - Mail -
/// <summary>
/// 初始化邮件页面
/// </summary>
private void InitMailPage()
{
TxtMailSender.Text = Settings.Default.DefaultMailSender;
LoadMailSelectableItems();
}
/// <summary>
/// 保存邮件设置
/// </summary>
private void SaveMailSettings()
{
Settings.Default.DefaultMailSender = TxtMailSender.Text;
}
/// <summary>
/// 点击清空邮件内容时触发
/// </summary>
private void LblClearMailContent_Click(object sender, EventArgs e)
{
TxtMailContent.Clear();
}
/// <summary>
/// 点击发送邮件时触发
/// </summary>
private void BtnSendMail_Click(object sender, EventArgs e)
{
var mail = new Mail
{
Title = TxtMailTitle.Text.Trim(),
Sender = TxtMailSender.Text.Trim(),
Content = TxtMailContent.Text.Trim(),
Recipient = RbMailSendToAll.Checked ? 0 : (int)NUDMailRecipient.Value,
ItemList = new List<MailItem>(MailItems),
SendTime = DateTime.Now,
};
if (mail.Title == "" || mail.Sender == "" || mail.Content == "")
{
MessageBox.Show(Resources.EmptyInputTip, Resources.Error, MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
if (mail.SendToAll)
{
MessageBox.Show(Resources.MailSendToAllWarning, Resources.Warning, MessageBoxButtons.OK, MessageBoxIcon.Warning);
}
var cmd = $"/sendMail {(mail.SendToAll ? "all" : mail.Recipient.ToString())} |" +
$"/sendMail {mail.Title} |" +
$"/sendMail {mail.Content.Replace("\r", "\\r").Replace("\n", "\\n")} |" +
$"/sendMail {mail.Sender} |";
foreach (var item in mail.ItemList)
cmd += $"/sendMail {item.ItemId} {item.ItemCount} {item.ItemLevel} |";
cmd += "/sendMail finish";
SetCommand(cmd);
AddMailToList(mail);
}
/// <summary>
/// 展示邮件
/// </summary>
/// <param name="mail"></param>
private void ShowMail(Mail mail)
{
TxtMailTitle.Text = mail.Title;
TxtMailSender.Text = mail.Sender;
TxtMailContent.Text = mail.Content;
NUDMailRecipient.Value = mail.Recipient;
RbMailSendToAll.Checked = mail.SendToAll;
RbMailSendToPlayer.Checked = !mail.SendToAll;
ShowMailItems(mail.ItemList);
}
#region -- Mail items --
/// <summary>
/// 当前邮件附件列表
/// </summary>
private readonly List<MailItem> MailItems = new List<MailItem>();
/// <summary>
/// 展示邮件附件列表
/// </summary>
/// <param name="items"></param>
private void ShowMailItems(List<MailItem> items)
{
MailItems.Clear();
MailItems.AddRange(items);
ListMailItems.BeginUpdate();
ListMailItems.Items.Clear();
ListMailItems.Items.AddRange(items.Select(it => it.ToString()).ToArray());
ListMailItems.EndUpdate();
}
/// <summary>
/// 点击添加邮件附件项时触发
/// </summary>
private void BtnAddMailItem_Click(object sender, EventArgs e)
{
if (ListMailSelectableItems.SelectedIndex == -1)
return;
var item = ListMailSelectableItems.SelectedItem as string;
var itemId = ItemMap.ToId(item);
var mailItem = new MailItem
{
ItemId = itemId,
ItemCount = (int)NUDMailItemCount.Value,
ItemLevel = (int)NUDMailItemLevel.Value,
};
MailItems.Add(mailItem);
ListMailItems.Items.Add(mailItem.ToString());
}
/// <summary>
/// 点击删除邮件附件项时触发
/// </summary>
private void BtnDeleteMailItem_Click(object sender, EventArgs e)
{
if (ListMailItems.SelectedIndex == -1) return;
MailItems.RemoveAt(ListMailItems.SelectedIndex);
ListMailItems.Items.RemoveAt(ListMailItems.SelectedIndex);
}
#endregion
#region -- Mail item selectable list --
private string[] MailSelectableItems;
/// <summary>
/// 加载附件可选项列表
/// </summary>
private void LoadMailSelectableItems()
{
MailSelectableItems = new string[GameData.Items.Count + GameData.Weapons.Count + GameData.Artifacts.Count];
int i = 0;
GameData.Items.Lines.CopyTo(MailSelectableItems, i); i += GameData.Items.Count;
GameData.Weapons.Lines.CopyTo(MailSelectableItems, i); i += GameData.Weapons.Count;
GameData.Artifacts.Lines.CopyTo(MailSelectableItems, i); i += GameData.Artifacts.Count;
Array.Sort(MailSelectableItems, (a, b) => ItemMap.ToId(a) - ItemMap.ToId(b));
ListMailSelectableItems.Items.Clear();
ListMailSelectableItems.Items.AddRange(MailSelectableItems);
}
/// <summary>
/// 邮件页面物品列表过滤器文本改变时触发
/// </summary>
private void TxtMailSelectableItemFilter_TextChanged(object sender, EventArgs e)
{
UIUtil.ListBoxFilter(ListMailSelectableItems, MailSelectableItems, TxtMailSelectableItemFilter.Text);
}
#endregion
#region -- Mail list --
/// <summary>
/// 获取物品记录文件路径
/// </summary>
private readonly string MailListPath = Path.Combine(Application.LocalUserAppDataPath, "MailList.json");
/// <summary>
/// 邮件列表
/// </summary>
private List<Mail> MailList = new List<Mail>();
/// <summary>
/// 初始化邮件列表
/// </summary>
private void InitMailList()
{
if (File.Exists(MailListPath))
{
MailList = JsonConvert.DeserializeObject<List<Mail>>(File.ReadAllText(MailListPath));
ListMailList.Items.AddRange(MailList.Select(it => it.ToString()).ToArray());
}
else
{
MailList = new List<Mail>();
}
}
/// <summary>
/// 保存邮件列表
/// </summary>
private void SaveMailList()
{
File.WriteAllText(MailListPath, JsonConvert.SerializeObject(MailList));
}
/// <summary>
/// 添加邮件到列表
/// </summary>
/// <param name="mail">邮件</param>
private void AddMailToList(Mail mail)
{
MailList.Add(mail);
ListMailList.Items.Add(mail.ToString());
SaveMailList();
}
/// <summary>
/// 邮件列表选中项改变时发生
/// </summary>
private void ListMailList_SelectedIndexChanged(object sender, EventArgs e)
{
if (ListMailList.SelectedIndex == -1) return;
// 显示选中邮件
var mail = MailList[ListMailList.SelectedIndex];
ShowMail(mail);
}
/// <summary>
/// 点击删除邮件按钮时触发
/// </summary>
private void BtnRemoveMail_Click(object sender, EventArgs e)
{
if (ListMailList.SelectedIndex == -1) return;
MailList.RemoveAt(ListMailList.SelectedIndex);
ListMailList.Items.RemoveAt(ListMailList.SelectedIndex);
SaveMailList();
}
/// <summary>
/// 点击清空邮件列表按钮时触发
/// </summary>
private void BtnClearMail_Click(object sender, EventArgs e)
{
if (MailList.Count == 0) return;
if (MessageBox.Show(Resources.AskConfirmDeletion, Resources.Tips, MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
{
ListMailList.Items.Clear();
MailList.Clear();
SaveMailList();
}
}
#endregion
#endregion
#region - About -
/// <summary>
/// 点击Github链接时触发
/// </summary>
private void LnkGithub_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
UIUtil.OpenURL("https://github.com/jie65535/GrasscutterCommandGenerator");
}
#endregion - About -
#region - Command - #region - Command -
/// <summary> /// <summary>
@@ -1276,58 +469,9 @@ namespace GrasscutterTools.Forms
#endregion - Command Logs - #endregion - Command Logs -
/// <summary> /// <summary>
/// 开放命令接口 /// 开放命令接口
/// </summary> /// </summary>
private OpenCommandAPI OC => Common.OC; private OpenCommandAPI OC => Common.OC;
#region - Quests -
/// <summary>
/// 初始化任务列表
/// </summary>
private void InitQuestList()
{
QuestFilterChanged(null, EventArgs.Empty);
}
/// <summary>
/// 任务列表过滤器文本改变时触发
/// </summary>
private void QuestFilterChanged(object sender, EventArgs e)
{
ListQuest.BeginUpdate();
ListQuest.Items.Clear();
ListQuest.Items.AddRange(GameData.Quests.Lines.Where(l =>
{
if (!ChkQuestFilterHIDDEN.Checked && l.Contains((string)ChkQuestFilterHIDDEN.Tag))
return false;
if (!ChkQuestFilterUNRELEASED.Checked && l.Contains((string)ChkQuestFilterUNRELEASED.Tag))
return false;
if (!ChkQuestFilterTEST.Checked && l.Contains((string)ChkQuestFilterTEST.Tag))
return false;
if (!string.IsNullOrEmpty(TxtQuestFilter.Text))
return l.Contains(TxtQuestFilter.Text);
return true;
}).ToArray());
ListQuest.EndUpdate();
}
/// <summary>
/// 任务相关按钮点击时触发Tag带子命令
/// </summary>
private void QuestButsClicked(object sender, EventArgs e)
{
if (ListQuest.SelectedIndex == -1)
return;
var item = ListQuest.SelectedItem as string;
var id = ItemMap.ToId(item);
SetCommand("/quest", $"{(sender as Button).Tag} {id}");
}
#endregion - Quests -
} }
} }

View File

@@ -150,99 +150,6 @@ or there is a new feature request, you can file an issue on Github.</value>
<data name="TPAbout.Text" xml:space="preserve"> <data name="TPAbout.Text" xml:space="preserve">
<value>About</value> <value>About</value>
</data> </data>
<data name="BtnUnban.Text" xml:space="preserve">
<value>Unban</value>
</data>
<data name="BtnBan.Text" xml:space="preserve">
<value>Ban</value>
</data>
<data name="TxtBanReason.Watermark" xml:space="preserve">
<value>Reason</value>
</data>
<data name="LblBanUID.Location" type="System.Drawing.Point, System.Drawing">
<value>30, 25</value>
</data>
<data name="LblBanUID.Size" type="System.Drawing.Size, System.Drawing">
<value>30, 17</value>
</data>
<data name="LblBanUID.Text" xml:space="preserve">
<value>UID</value>
</data>
<data name="GrpBanPlayer.Text" xml:space="preserve">
<value>Ban</value>
</data>
<data name="ChkAccountSetUid.Size" type="System.Drawing.Size, System.Drawing">
<value>49, 21</value>
</data>
<data name="ChkAccountSetUid.Text" xml:space="preserve">
<value>UID</value>
</data>
<data name="NUDAccountUid.Location" type="System.Drawing.Point, System.Drawing">
<value>270, 23</value>
</data>
<data name="NUDAccountUid.Size" type="System.Drawing.Size, System.Drawing">
<value>130, 23</value>
</data>
<data name="BtnDeleteAccount.Text" xml:space="preserve">
<value>Delete</value>
</data>
<data name="BtnCreateAccount.Text" xml:space="preserve">
<value>Create</value>
</data>
<data name="LblAccountUserName.Location" type="System.Drawing.Point, System.Drawing">
<value>6, 25</value>
</data>
<data name="LblAccountUserName.Size" type="System.Drawing.Size, System.Drawing">
<value>67, 17</value>
</data>
<data name="LblAccountUserName.Text" xml:space="preserve">
<value>Username</value>
</data>
<data name="TxtAccountUserName.Location" type="System.Drawing.Point, System.Drawing">
<value>79, 22</value>
</data>
<data name="TxtAccountUserName.Size" type="System.Drawing.Size, System.Drawing">
<value>127, 23</value>
</data>
<data name="GrpAccount.Text" xml:space="preserve">
<value>Account</value>
</data>
<data name="CmbPerm.Location" type="System.Drawing.Point, System.Drawing">
<value>262, 21</value>
</data>
<data name="CmbPerm.Size" type="System.Drawing.Size, System.Drawing">
<value>138, 25</value>
</data>
<data name="BtnPermClear.Text" xml:space="preserve">
<value>Clear</value>
</data>
<data name="BtmPermRemove.Text" xml:space="preserve">
<value>Delete</value>
</data>
<data name="BtnPermList.Text" xml:space="preserve">
<value>List</value>
</data>
<data name="BtnPermAdd.Text" xml:space="preserve">
<value>Add</value>
</data>
<data name="LblPerm.Size" type="System.Drawing.Size, System.Drawing">
<value>44, 17</value>
</data>
<data name="LblPerm.Text" xml:space="preserve">
<value>Perms</value>
</data>
<data name="LblPermUID.Location" type="System.Drawing.Point, System.Drawing">
<value>30, 25</value>
</data>
<data name="LblPermUID.Size" type="System.Drawing.Size, System.Drawing">
<value>30, 17</value>
</data>
<data name="LblPermUID.Text" xml:space="preserve">
<value>UID</value>
</data>
<data name="GrpPermission.Text" xml:space="preserve">
<value>Permissions</value>
</data>
<data name="TPManage.Text" xml:space="preserve"> <data name="TPManage.Text" xml:space="preserve">
<value>Manage</value> <value>Manage</value>
</data> </data>
@@ -336,363 +243,15 @@ In the command, you can use ~ to indicate the current position, and ~N to indica
<data name="TPScene.Text" xml:space="preserve"> <data name="TPScene.Text" xml:space="preserve">
<value>Scene</value> <value>Scene</value>
</data> </data>
<data name="LblClearGiveItemLogs.Size" type="System.Drawing.Size, System.Drawing">
<value>50, 17</value>
</data>
<data name="LblClearGiveItemLogs.Text" xml:space="preserve">
<value>X Clear</value>
</data>
<data name="BtnSaveGiveItemLog.Text" xml:space="preserve">
<value>√ Record</value>
</data>
<data name="BtnRemoveGiveItemLog.Text" xml:space="preserve">
<value>× Delete</value>
</data>
<data name="GrpGiveItemRecord.Text" xml:space="preserve">
<value>Records</value>
</data>
<data name="ChkDrop.Location" type="System.Drawing.Point, System.Drawing">
<value>278, 217</value>
</data>
<data name="ChkDrop.Size" type="System.Drawing.Size, System.Drawing">
<value>57, 21</value>
</data>
<data name="ChkDrop.Text" xml:space="preserve">
<value>Drop</value>
</data>
<data name="LblGameItemAmount.Size" type="System.Drawing.Size, System.Drawing">
<value>53, 17</value>
</data>
<data name="LblGameItemAmount.Text" xml:space="preserve">
<value>Amount</value>
</data>
<data name="LblGameItemLevel.Location" type="System.Drawing.Point, System.Drawing">
<value>171, 218</value>
</data>
<data name="LblGameItemLevel.Size" type="System.Drawing.Size, System.Drawing">
<value>37, 17</value>
</data>
<data name="LblGameItemLevel.Text" xml:space="preserve">
<value>Level</value>
</data>
<data name="NUDGameItemAmout.Location" type="System.Drawing.Point, System.Drawing">
<value>65, 216</value>
</data>
<data name="NUDGameItemLevel.Location" type="System.Drawing.Point, System.Drawing">
<value>209, 216</value>
</data>
<data name="LblGiveCommandDescription.Size" type="System.Drawing.Size, System.Drawing">
<value>118, 17</value>
</data>
<data name="LblGiveCommandDescription.Text" xml:space="preserve">
<value>Give item to player</value>
</data>
<data name="TPItem.Text" xml:space="preserve"> <data name="TPItem.Text" xml:space="preserve">
<value>Items</value> <value>Items</value>
</data> </data>
<data name="TPWeapon.Text" xml:space="preserve"> <data name="TPWeapon.Text" xml:space="preserve">
<value>Weapons</value> <value>Weapons</value>
</data> </data>
<data name="LnkSetAllConst.Size" type="System.Drawing.Size, System.Drawing">
<value>43, 17</value>
</data>
<data name="LnkSetAllConst.Text" xml:space="preserve">
<value>Set all</value>
</data>
<data name="LnkSetConst.Size" type="System.Drawing.Size, System.Drawing">
<value>71, 17</value>
</data>
<data name="LnkSetConst.Text" xml:space="preserve">
<value>Set current</value>
</data>
<data name="GrpSetConstellation.Text" xml:space="preserve">
<value>Constellation</value>
</data>
<data name="BtnUnlockStat.Text" xml:space="preserve">
<value>Unlock</value>
</data>
<data name="BtnLockStat.Text" xml:space="preserve">
<value>Lock</value>
</data>
<data name="LblStatTip.Text" xml:space="preserve">
<value>Tip</value>
</data>
<data name="GrpSetStats.Text" xml:space="preserve">
<value>Stats</value>
</data>
<data name="LnkTalentAll.Location" type="System.Drawing.Point, System.Drawing">
<value>146, 24</value>
</data>
<data name="LnkTalentAll.Size" type="System.Drawing.Size, System.Drawing">
<value>22, 17</value>
</data>
<data name="LnkTalentAll.Text" xml:space="preserve">
<value>All</value>
</data>
<data name="LnkTalentE.Location" type="System.Drawing.Point, System.Drawing">
<value>283, 24</value>
</data>
<data name="LnkTalentE.Size" type="System.Drawing.Size, System.Drawing">
<value>15, 17</value>
</data>
<data name="LnkTalentE.Text" xml:space="preserve">
<value>E</value>
</data>
<data name="LnkTalentQ.Location" type="System.Drawing.Point, System.Drawing">
<value>259, 24</value>
</data>
<data name="LnkTalentQ.Size" type="System.Drawing.Size, System.Drawing">
<value>18, 17</value>
</data>
<data name="LnkTalentQ.Text" xml:space="preserve">
<value>Q</value>
</data>
<data name="LnkTalentNormalATK.Location" type="System.Drawing.Point, System.Drawing">
<value>178, 24</value>
</data>
<data name="LnkTalentNormalATK.Size" type="System.Drawing.Size, System.Drawing">
<value>75, 17</value>
</data>
<data name="LnkTalentNormalATK.Text" xml:space="preserve">
<value>NormalATK</value>
</data>
<data name="NUDTalentLevel.Size" type="System.Drawing.Size, System.Drawing">
<value>96, 23</value>
</data>
<data name="GrpTalentLevel.Text" xml:space="preserve">
<value>Talent Level</value>
</data>
<data name="CmbSwitchElement.Items" xml:space="preserve">
<value>White</value>
</data>
<data name="CmbSwitchElement.Items1" xml:space="preserve">
<value>Fire</value>
</data>
<data name="CmbSwitchElement.Items2" xml:space="preserve">
<value>Water</value>
</data>
<data name="CmbSwitchElement.Items3" xml:space="preserve">
<value>Wind</value>
</data>
<data name="CmbSwitchElement.Items4" xml:space="preserve">
<value>Ice</value>
</data>
<data name="CmbSwitchElement.Items5" xml:space="preserve">
<value>Rock</value>
</data>
<data name="CmbSwitchElement.Items6" xml:space="preserve">
<value>Electro</value>
</data>
<data name="CmbSwitchElement.Items7" xml:space="preserve">
<value>Grass</value>
</data>
<data name="LnkSwitchElement.Size" type="System.Drawing.Size, System.Drawing">
<value>90, 17</value>
</data>
<data name="LnkSwitchElement.Text" xml:space="preserve">
<value>SwitchElement</value>
</data>
<data name="BtnGiveAllChar.Text" xml:space="preserve">
<value>Give All Char</value>
</data>
<data name="LblAvatarLevel.Size" type="System.Drawing.Size, System.Drawing">
<value>37, 17</value>
</data>
<data name="LblAvatarLevel.Text" xml:space="preserve">
<value>Level</value>
</data>
<data name="LblAvatarSkillLevelLabel.Size" type="System.Drawing.Size, System.Drawing">
<value>61, 17</value>
</data>
<data name="LblAvatarSkillLevelLabel.Text" xml:space="preserve">
<value>Skill level</value>
</data>
<data name="LblAvatar.Size" type="System.Drawing.Size, System.Drawing">
<value>45, 17</value>
</data>
<data name="LblAvatar.Text" xml:space="preserve">
<value>Avatar</value>
</data>
<data name="LblAvatarConstellation.Size" type="System.Drawing.Size, System.Drawing">
<value>44, 17</value>
</data>
<data name="LblAvatarConstellation.Text" xml:space="preserve">
<value>Const.</value>
</data>
<data name="TPAvatar.Text" xml:space="preserve"> <data name="TPAvatar.Text" xml:space="preserve">
<value>Avatar</value> <value>Avatar</value>
</data> </data>
<data name="NUDEntityAmout.Location" type="System.Drawing.Point, System.Drawing">
<value>78, 25</value>
</data>
<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.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>197, 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="TPSpawnArgs.Text" xml:space="preserve">
<value>Spawn args</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="TPAttackModArgs.Text" xml:space="preserve">
<value>AttackModifier</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="TPAttackInfusedArgs.Text" xml:space="preserve">
<value>AttackInfused</value>
</data>
<data name="TPSpawnItems.Text" xml:space="preserve">
<value>Entities</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>
<data name="TPSpawnRecords.Text" xml:space="preserve">
<value>Spawn Records</value>
</data>
<data name="TPSpawn.Text" xml:space="preserve"> <data name="TPSpawn.Text" xml:space="preserve">
<value>Spawn</value> <value>Spawn</value>
</data> </data>
@@ -740,90 +299,6 @@ Therefore, the quest can be added and finished, but not necessarily work.</value
<data name="TPHome.Text" xml:space="preserve"> <data name="TPHome.Text" xml:space="preserve">
<value>Home</value> <value>Home</value>
</data> </data>
<data name="BtnAddMailItem.Text" xml:space="preserve">
<value>+ Add</value>
</data>
<data name="BtnDeleteMailItem.Text" xml:space="preserve">
<value>- Delete</value>
</data>
<data name="NUDMailItemLevel.Location" type="System.Drawing.Point, System.Drawing">
<value>171, 4</value>
</data>
<data name="NUDMailItemCount.Location" type="System.Drawing.Point, System.Drawing">
<value>47, 4</value>
</data>
<data name="LblMailItemCount.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 6</value>
</data>
<data name="LblMailItemCount.Size" type="System.Drawing.Size, System.Drawing">
<value>45, 17</value>
</data>
<data name="LblMailItemCount.Text" xml:space="preserve">
<value>Count:</value>
</data>
<data name="LblMailItemLevel.Location" type="System.Drawing.Point, System.Drawing">
<value>123, 6</value>
</data>
<data name="LblMailItemLevel.Size" type="System.Drawing.Size, System.Drawing">
<value>40, 17</value>
</data>
<data name="LblMailItemLevel.Text" xml:space="preserve">
<value>Level:</value>
</data>
<data name="BtnClearMail.Location" type="System.Drawing.Point, System.Drawing">
<value>84, 4</value>
</data>
<data name="BtnClearMail.Text" xml:space="preserve">
<value>× Clear</value>
</data>
<data name="BtnRemoveMail.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 4</value>
</data>
<data name="BtnRemoveMail.Text" xml:space="preserve">
<value>- Delete</value>
</data>
<data name="BtnSendMail.Text" xml:space="preserve">
<value>Send</value>
</data>
<data name="LblMailItemsLabel.Size" type="System.Drawing.Size, System.Drawing">
<value>43, 17</value>
</data>
<data name="LblMailItemsLabel.Text" xml:space="preserve">
<value>Items:</value>
</data>
<data name="RbMailSendToPlayer.Size" type="System.Drawing.Size, System.Drawing">
<value>61, 21</value>
</data>
<data name="RbMailSendToPlayer.Text" xml:space="preserve">
<value>Player</value>
</data>
<data name="RbMailSendToAll.Size" type="System.Drawing.Size, System.Drawing">
<value>40, 21</value>
</data>
<data name="RbMailSendToAll.Text" xml:space="preserve">
<value>All</value>
</data>
<data name="LblMailRecipientLabel.Text" xml:space="preserve">
<value>Send to:</value>
</data>
<data name="LblMailContentLabel.Size" type="System.Drawing.Size, System.Drawing">
<value>56, 17</value>
</data>
<data name="LblMailContentLabel.Text" xml:space="preserve">
<value>Content:</value>
</data>
<data name="LblMailTitleLabel.Size" type="System.Drawing.Size, System.Drawing">
<value>35, 17</value>
</data>
<data name="LblMailTitleLabel.Text" xml:space="preserve">
<value>Title:</value>
</data>
<data name="LblMailSenderLabel.Size" type="System.Drawing.Size, System.Drawing">
<value>52, 17</value>
</data>
<data name="LblMailSenderLabel.Text" xml:space="preserve">
<value>Sender:</value>
</data>
<data name="TPMail.Text" xml:space="preserve"> <data name="TPMail.Text" xml:space="preserve">
<value>Mail</value> <value>Mail</value>
</data> </data>

File diff suppressed because it is too large Load Diff

View File

@@ -142,21 +142,18 @@
<data name="ChkAutoCopy.Text" xml:space="preserve"> <data name="ChkAutoCopy.Text" xml:space="preserve">
<value>Авто</value> <value>Авто</value>
</data> </data>
<data name="GrpCommand.Text" xml:space="preserve">
<value>Команды - [Ctrl] Запуск и замена - [Shift] Добавить - [Alt] Только запустить - [|] Разделитель</value>
</data>
<data name="BtnInvokeOpenCommand.Size" type="System.Drawing.Size, System.Drawing"> <data name="BtnInvokeOpenCommand.Size" type="System.Drawing.Size, System.Drawing">
<value>120, 23</value> <value>120, 23</value>
</data> </data>
<data name="BtnInvokeOpenCommand.Text" xml:space="preserve"> <data name="BtnInvokeOpenCommand.Text" xml:space="preserve">
<value>Выполнить (F5)</value> <value>Выполнить (F5)</value>
</data> </data>
<data name="GrpCommand.Text" xml:space="preserve">
<value>Команды - [Ctrl] Запуск и замена - [Shift] Добавить - [Alt] Только запустить - [|] Разделитель</value>
</data>
<data name="TPRemoteCall.Text" xml:space="preserve"> <data name="TPRemoteCall.Text" xml:space="preserve">
<value>OpenCommand</value> <value>OpenCommand</value>
</data> </data>
<data name="TPAbout.Text" xml:space="preserve">
<value>Справка</value>
</data>
<data name="LblSupportDescription.Size" type="System.Drawing.Size, System.Drawing"> <data name="LblSupportDescription.Size" type="System.Drawing.Size, System.Drawing">
<value>552, 170</value> <value>552, 170</value>
</data> </data>
@@ -173,162 +170,12 @@
Спасибо: Dhar_Jinxed Спасибо: Dhar_Jinxed
</value> </value>
</data> </data>
<data name="TPAbout.Text" xml:space="preserve">
<value>Справка</value>
</data>
<data name="TPManage.Text" xml:space="preserve"> <data name="TPManage.Text" xml:space="preserve">
<value>Аккаунты</value> <value>Аккаунты</value>
</data> </data>
<data name="GrpBanPlayer.Text" xml:space="preserve">
<value>Управление банами</value>
</data>
<data name="BtnUnban.Location" type="System.Drawing.Point, System.Drawing">
<value>453, 22</value>
</data>
<data name="BtnUnban.Size" type="System.Drawing.Size, System.Drawing">
<value>80, 23</value>
</data>
<data name="BtnUnban.Text" xml:space="preserve">
<value>Разбанить</value>
</data>
<data name="BtnBan.Location" type="System.Drawing.Point, System.Drawing">
<value>367, 22</value>
</data>
<data name="BtnBan.Size" type="System.Drawing.Size, System.Drawing">
<value>80, 23</value>
</data>
<data name="BtnBan.Text" xml:space="preserve">
<value>Забанить</value>
</data>
<data name="TxtBanReason.Size" type="System.Drawing.Size, System.Drawing">
<value>111, 23</value>
</data>
<data name="TxtBanReason.Watermark" xml:space="preserve">
<value>Причина</value>
</data>
<data name="NUDBanUID.Location" type="System.Drawing.Point, System.Drawing">
<value>42, 22</value>
</data>
<data name="NUDBanUID.Size" type="System.Drawing.Size, System.Drawing">
<value>106, 23</value>
</data>
<data name="LblBanUID.Size" type="System.Drawing.Size, System.Drawing">
<value>30, 17</value>
</data>
<data name="LblBanUID.Text" xml:space="preserve">
<value>UID</value>
</data>
<data name="GrpAccount.Text" xml:space="preserve">
<value>Управление аккаунтом</value>
</data>
<data name="ChkAccountSetUid.Size" type="System.Drawing.Size, System.Drawing">
<value>49, 21</value>
</data>
<data name="ChkAccountSetUid.Text" xml:space="preserve">
<value>UID</value>
</data>
<data name="NUDAccountUid.Location" type="System.Drawing.Point, System.Drawing">
<value>270, 23</value>
</data>
<data name="BtnDeleteAccount.Location" type="System.Drawing.Point, System.Drawing">
<value>463, 21</value>
</data>
<data name="BtnDeleteAccount.Size" type="System.Drawing.Size, System.Drawing">
<value>70, 23</value>
</data>
<data name="BtnDeleteAccount.Text" xml:space="preserve">
<value>Удалить</value>
</data>
<data name="BtnCreateAccount.Location" type="System.Drawing.Point, System.Drawing">
<value>387, 21</value>
</data>
<data name="BtnCreateAccount.Size" type="System.Drawing.Size, System.Drawing">
<value>70, 23</value>
</data>
<data name="BtnCreateAccount.Text" xml:space="preserve">
<value>Создать</value>
</data>
<data name="LblAccountUserName.Location" type="System.Drawing.Point, System.Drawing">
<value>6, 25</value>
</data>
<data name="LblAccountUserName.Size" type="System.Drawing.Size, System.Drawing">
<value>81, 17</value>
</data>
<data name="LblAccountUserName.Text" xml:space="preserve">
<value>Имя игрока</value>
</data>
<data name="TxtAccountUserName.Location" type="System.Drawing.Point, System.Drawing">
<value>93, 22</value>
</data>
<data name="TxtAccountUserName.Size" type="System.Drawing.Size, System.Drawing">
<value>113, 23</value>
</data>
<data name="GrpPermission.Text" xml:space="preserve">
<value>Управление правами</value>
</data>
<data name="CmbPerm.Location" type="System.Drawing.Point, System.Drawing">
<value>212, 21</value>
</data>
<data name="CmbPerm.Size" type="System.Drawing.Size, System.Drawing">
<value>149, 25</value>
</data>
<data name="NUDPermUID.Location" type="System.Drawing.Point, System.Drawing">
<value>42, 23</value>
</data>
<data name="NUDPermUID.Size" type="System.Drawing.Size, System.Drawing">
<value>106, 23</value>
</data>
<data name="BtnPermClear.Location" type="System.Drawing.Point, System.Drawing">
<value>454, 48</value>
</data>
<data name="BtnPermClear.Size" type="System.Drawing.Size, System.Drawing">
<value>80, 23</value>
</data>
<data name="BtnPermClear.Text" xml:space="preserve">
<value>Очистить</value>
</data>
<data name="BtmPermRemove.Location" type="System.Drawing.Point, System.Drawing">
<value>453, 21</value>
</data>
<data name="BtmPermRemove.Size" type="System.Drawing.Size, System.Drawing">
<value>80, 23</value>
</data>
<data name="BtmPermRemove.Text" xml:space="preserve">
<value>Удалить</value>
</data>
<data name="BtnPermList.Location" type="System.Drawing.Point, System.Drawing">
<value>353, 48</value>
</data>
<data name="BtnPermList.Size" type="System.Drawing.Size, System.Drawing">
<value>95, 23</value>
</data>
<data name="BtnPermList.Text" xml:space="preserve">
<value>Список прав</value>
</data>
<data name="BtnPermAdd.Location" type="System.Drawing.Point, System.Drawing">
<value>367, 21</value>
</data>
<data name="BtnPermAdd.Size" type="System.Drawing.Size, System.Drawing">
<value>80, 23</value>
</data>
<data name="BtnPermAdd.Text" xml:space="preserve">
<value>Добавить</value>
</data>
<data name="LblPerm.Location" type="System.Drawing.Point, System.Drawing">
<value>160, 25</value>
</data>
<data name="LblPerm.Size" type="System.Drawing.Size, System.Drawing">
<value>46, 17</value>
</data>
<data name="LblPerm.Text" xml:space="preserve">
<value>Права</value>
</data>
<data name="LblPermUID.Size" type="System.Drawing.Size, System.Drawing">
<value>30, 17</value>
</data>
<data name="LblPermUID.Text" xml:space="preserve">
<value>UID</value>
</data>
<data name="TPScene.Text" xml:space="preserve">
<value>Сцена</value>
</data>
<data name="RbListDungeons.Location" type="System.Drawing.Point, System.Drawing"> <data name="RbListDungeons.Location" type="System.Drawing.Point, System.Drawing">
<value>243, 7</value> <value>243, 7</value>
</data> </data>
@@ -419,462 +266,21 @@
Подсказка: вы можете быстро телепортироваться через отметку «рыболовный крючок» на миникарте в игре. Подсказка: вы можете быстро телепортироваться через отметку «рыболовный крючок» на миникарте в игре.
В команде вы можете использовать ~, чтобы указать текущую позицию, и ~N, чтобы указать смещение на N относительно текущей позиции</value> В команде вы можете использовать ~, чтобы указать текущую позицию, и ~N, чтобы указать смещение на N относительно текущей позиции</value>
</data> </data>
<data name="TPScene.Text" xml:space="preserve">
<value>Сцена</value>
</data>
<data name="TPItem.Text" xml:space="preserve"> <data name="TPItem.Text" xml:space="preserve">
<value>Предметы</value> <value>Предметы</value>
</data> </data>
<data name="LblClearGiveItemLogs.Size" type="System.Drawing.Size, System.Drawing">
<value>76, 17</value>
</data>
<data name="LblClearGiveItemLogs.Text" xml:space="preserve">
<value>X Очистить</value>
</data>
<data name="BtnSaveGiveItemLog.Location" type="System.Drawing.Point, System.Drawing">
<value>260, 48</value>
</data>
<data name="BtnSaveGiveItemLog.Size" type="System.Drawing.Size, System.Drawing">
<value>80, 23</value>
</data>
<data name="BtnSaveGiveItemLog.Text" xml:space="preserve">
<value>√ Сохр.</value>
</data>
<data name="BtnRemoveGiveItemLog.Location" type="System.Drawing.Point, System.Drawing">
<value>260, 77</value>
</data>
<data name="BtnRemoveGiveItemLog.Size" type="System.Drawing.Size, System.Drawing">
<value>80, 23</value>
</data>
<data name="BtnRemoveGiveItemLog.Text" xml:space="preserve">
<value>× Удалить</value>
</data>
<data name="GrpGiveItemRecord.Size" type="System.Drawing.Size, System.Drawing">
<value>244, 162</value>
</data>
<data name="GrpGiveItemRecord.Text" xml:space="preserve">
<value>Список предметов</value>
</data>
<data name="ListGiveItemLogs.Size" type="System.Drawing.Size, System.Drawing">
<value>238, 140</value>
</data>
<data name="ChkDrop.Location" type="System.Drawing.Point, System.Drawing">
<value>278, 217</value>
</data>
<data name="ChkDrop.Size" type="System.Drawing.Size, System.Drawing">
<value>60, 21</value>
</data>
<data name="ChkDrop.Text" xml:space="preserve">
<value>Дроп</value>
</data>
<data name="LblGameItemAmount.Size" type="System.Drawing.Size, System.Drawing">
<value>51, 17</value>
</data>
<data name="LblGameItemAmount.Text" xml:space="preserve">
<value>Кол-во</value>
</data>
<data name="LblGameItemLevel.Location" type="System.Drawing.Point, System.Drawing">
<value>143, 218</value>
</data>
<data name="LblGameItemLevel.Size" type="System.Drawing.Size, System.Drawing">
<value>60, 17</value>
</data>
<data name="LblGameItemLevel.Text" xml:space="preserve">
<value>Уровень</value>
</data>
<data name="NUDGameItemAmout.Location" type="System.Drawing.Point, System.Drawing">
<value>63, 216</value>
</data>
<data name="NUDGameItemAmout.Size" type="System.Drawing.Size, System.Drawing">
<value>73, 23</value>
</data>
<data name="NUDGameItemLevel.Location" type="System.Drawing.Point, System.Drawing">
<value>209, 215</value>
</data>
<data name="LblGiveCommandDescription.Size" type="System.Drawing.Size, System.Drawing">
<value>137, 17</value>
</data>
<data name="LblGiveCommandDescription.Text" xml:space="preserve">
<value>Дать предмет игроку</value>
</data>
<data name="TPWeapon.Text" xml:space="preserve"> <data name="TPWeapon.Text" xml:space="preserve">
<value>Оружие</value> <value>Оружие</value>
</data> </data>
<data name="TPAvatar.Text" xml:space="preserve"> <data name="TPAvatar.Text" xml:space="preserve">
<value>Персонаж</value> <value>Персонаж</value>
</data> </data>
<data name="GrpSetConstellation.Text" xml:space="preserve">
<value>Установить созвездие</value>
</data>
<data name="LnkSetAllConst.Location" type="System.Drawing.Point, System.Drawing">
<value>178, 24</value>
</data>
<data name="LnkSetAllConst.Size" type="System.Drawing.Size, System.Drawing">
<value>28, 17</value>
</data>
<data name="LnkSetAllConst.Text" xml:space="preserve">
<value>все</value>
</data>
<data name="LnkSetConst.Size" type="System.Drawing.Size, System.Drawing">
<value>60, 17</value>
</data>
<data name="LnkSetConst.Text" xml:space="preserve">
<value>текущий</value>
</data>
<data name="GrpSetStats.Text" xml:space="preserve">
<value>Статистика</value>
</data>
<data name="BtnUnlockStat.Size" type="System.Drawing.Size, System.Drawing">
<value>140, 23</value>
</data>
<data name="BtnUnlockStat.Text" xml:space="preserve">
<value>Разморозить статы</value>
</data>
<data name="BtnLockStat.Text" xml:space="preserve">
<value>Заморозить статы</value>
</data>
<data name="LblStatTip.Text" xml:space="preserve">
<value>Подсказка</value>
</data>
<data name="GrpTalentLevel.Text" xml:space="preserve">
<value>Уровень таланта</value>
</data>
<data name="LnkTalentAll.Location" type="System.Drawing.Point, System.Drawing">
<value>144, 24</value>
</data>
<data name="LnkTalentAll.Size" type="System.Drawing.Size, System.Drawing">
<value>28, 17</value>
</data>
<data name="LnkTalentAll.Text" xml:space="preserve">
<value>все</value>
</data>
<data name="LnkTalentE.Location" type="System.Drawing.Point, System.Drawing">
<value>309, 24</value>
</data>
<data name="LnkTalentE.Size" type="System.Drawing.Size, System.Drawing">
<value>15, 17</value>
</data>
<data name="LnkTalentE.Text" xml:space="preserve">
<value>E</value>
</data>
<data name="LnkTalentQ.Location" type="System.Drawing.Point, System.Drawing">
<value>285, 24</value>
</data>
<data name="LnkTalentQ.Size" type="System.Drawing.Size, System.Drawing">
<value>18, 17</value>
</data>
<data name="LnkTalentQ.Text" xml:space="preserve">
<value>Q</value>
</data>
<data name="LnkTalentNormalATK.Location" type="System.Drawing.Point, System.Drawing">
<value>178, 24</value>
</data>
<data name="LnkTalentNormalATK.Size" type="System.Drawing.Size, System.Drawing">
<value>101, 17</value>
</data>
<data name="LnkTalentNormalATK.Text" xml:space="preserve">
<value>Обычная атака</value>
</data>
<data name="NUDTalentLevel.Size" type="System.Drawing.Size, System.Drawing">
<value>94, 23</value>
</data>
<data name="GrpGiveAvatar.Text" xml:space="preserve">
<value>Выдать персонажа</value>
</data>
<data name="CmbSwitchElement.Items" xml:space="preserve">
<value>Без элемента</value>
</data>
<data name="CmbSwitchElement.Items1" xml:space="preserve">
<value>Пиро</value>
</data>
<data name="CmbSwitchElement.Items2" xml:space="preserve">
<value>Гидро</value>
</data>
<data name="CmbSwitchElement.Items3" xml:space="preserve">
<value>Анемо</value>
</data>
<data name="CmbSwitchElement.Items4" xml:space="preserve">
<value>Крио</value>
</data>
<data name="CmbSwitchElement.Items5" xml:space="preserve">
<value>Гео</value>
</data>
<data name="CmbSwitchElement.Items6" xml:space="preserve">
<value>Электро</value>
</data>
<data name="CmbSwitchElement.Items7" xml:space="preserve">
<value>Дендро</value>
</data>
<data name="LnkSwitchElement.Size" type="System.Drawing.Size, System.Drawing">
<value>90, 17</value>
</data>
<data name="LnkSwitchElement.Text" xml:space="preserve">
<value>SwitchElement</value>
</data>
<data name="CmbAvatar.Location" type="System.Drawing.Point, System.Drawing">
<value>111, 16</value>
</data>
<data name="CmbAvatar.Size" type="System.Drawing.Size, System.Drawing">
<value>114, 25</value>
</data>
<data name="LblAvatarSkillLevelTip.Location" type="System.Drawing.Point, System.Drawing">
<value>160, 124</value>
</data>
<data name="NUDAvatarLevel.Location" type="System.Drawing.Point, System.Drawing">
<value>111, 47</value>
</data>
<data name="NUDAvatarLevel.Size" type="System.Drawing.Size, System.Drawing">
<value>114, 23</value>
</data>
<data name="BtnGiveAllChar.Location" type="System.Drawing.Point, System.Drawing">
<value>25, 151</value>
</data>
<data name="BtnGiveAllChar.Size" type="System.Drawing.Size, System.Drawing">
<value>200, 30</value>
</data>
<data name="BtnGiveAllChar.Text" xml:space="preserve">
<value> Дать всех персонажей</value>
</data>
<data name="LblAvatarLevel.Location" type="System.Drawing.Point, System.Drawing">
<value>36, 49</value>
</data>
<data name="LblAvatarLevel.Size" type="System.Drawing.Size, System.Drawing">
<value>60, 17</value>
</data>
<data name="LblAvatarLevel.Text" xml:space="preserve">
<value>Уровень</value>
</data>
<data name="LblAvatarSkillLevelLabel.Location" type="System.Drawing.Point, System.Drawing">
<value>36, 102</value>
</data>
<data name="LblAvatarSkillLevelLabel.Size" type="System.Drawing.Size, System.Drawing">
<value>110, 17</value>
</data>
<data name="LblAvatarSkillLevelLabel.Text" xml:space="preserve">
<value>Уровень таланта</value>
</data>
<data name="LblAvatar.Location" type="System.Drawing.Point, System.Drawing">
<value>36, 19</value>
</data>
<data name="LblAvatar.Size" type="System.Drawing.Size, System.Drawing">
<value>71, 17</value>
</data>
<data name="LblAvatar.Text" xml:space="preserve">
<value>Персонаж</value>
</data>
<data name="LblAvatarConstellation.Location" type="System.Drawing.Point, System.Drawing">
<value>36, 78</value>
</data>
<data name="LblAvatarConstellation.Size" type="System.Drawing.Size, System.Drawing">
<value>72, 17</value>
</data>
<data name="LblAvatarConstellation.Text" xml:space="preserve">
<value>Созвездия</value>
</data>
<data name="NUDAvatarConstellation.Location" type="System.Drawing.Point, System.Drawing">
<value>111, 76</value>
</data>
<data name="NUDAvatarConstellation.Size" type="System.Drawing.Size, System.Drawing">
<value>114, 23</value>
</data>
<data name="NUDAvatarSkillLevel.Location" type="System.Drawing.Point, System.Drawing">
<value>39, 122</value>
</data>
<data name="NUDAvatarSkillLevel.Size" type="System.Drawing.Size, System.Drawing">
<value>114, 23</value>
</data>
<data name="TPSpawn.Text" xml:space="preserve"> <data name="TPSpawn.Text" xml:space="preserve">
<value>Спавн</value> <value>Спавн</value>
</data> </data>
<data name="TPSpawnArgs.Text" xml:space="preserve">
<value>Спавн</value>
</data>
<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="TPAttackModArgs.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="TPAttackInfusedArgs.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>154, 78</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.Size" type="System.Drawing.Size, System.Drawing">
<value>80, 23</value>
</data>
<data name="BtnSaveSpawnLog.Text" xml:space="preserve">
<value>√ Сохр.</value>
</data>
<data name="BtnRemoveSpawnLog.Location" type="System.Drawing.Point, System.Drawing">
<value>89, 3</value>
</data>
<data name="BtnRemoveSpawnLog.Size" type="System.Drawing.Size, System.Drawing">
<value>80, 23</value>
</data>
<data name="BtnRemoveSpawnLog.Text" xml:space="preserve">
<value>× Удалить</value>
</data>
<data name="LblClearSpawnLogs.Location" type="System.Drawing.Point, System.Drawing">
<value>175, 6</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>
<data name="TPQuest.Text" xml:space="preserve">
<value>Квест</value>
</data>
<data name="GrpQuestFilters.Text" xml:space="preserve">
<value>Фильтр списка</value>
</data>
<data name="ChkQuestFilterTEST.Size" type="System.Drawing.Size, System.Drawing"> <data name="ChkQuestFilterTEST.Size" type="System.Drawing.Size, System.Drawing">
<value>52, 21</value> <value>52, 21</value>
</data> </data>
@@ -893,6 +299,9 @@
<data name="ChkQuestFilterHIDDEN.Text" xml:space="preserve"> <data name="ChkQuestFilterHIDDEN.Text" xml:space="preserve">
<value>Скрытый</value> <value>Скрытый</value>
</data> </data>
<data name="GrpQuestFilters.Text" xml:space="preserve">
<value>Фильтр списка</value>
</data>
<data name="BtnFinishQuest.Text" xml:space="preserve"> <data name="BtnFinishQuest.Text" xml:space="preserve">
<value>Завершить</value> <value>Завершить</value>
</data> </data>
@@ -904,6 +313,9 @@
Внимание: для многих квестов требуются скрипты таковых на стороне сервера. Внимание: для многих квестов требуются скрипты таковых на стороне сервера.
Поэтому квест может быть добавлен или отозван через консоль, но завершён игроком - вряд ли.</value> Поэтому квест может быть добавлен или отозван через консоль, но завершён игроком - вряд ли.</value>
</data> </data>
<data name="TPQuest.Text" xml:space="preserve">
<value>Квест</value>
</data>
<data name="TPArtifact.Text" xml:space="preserve"> <data name="TPArtifact.Text" xml:space="preserve">
<value>Артефакт</value> <value>Артефакт</value>
</data> </data>
@@ -916,151 +328,4 @@
<data name="TPMail.Text" xml:space="preserve"> <data name="TPMail.Text" xml:space="preserve">
<value>Почта</value> <value>Почта</value>
</data> </data>
<data name="BtnAddMailItem.Location" type="System.Drawing.Point, System.Drawing">
<value>304, 155</value>
</data>
<data name="BtnAddMailItem.Size" type="System.Drawing.Size, System.Drawing">
<value>100, 23</value>
</data>
<data name="BtnAddMailItem.Text" xml:space="preserve">
<value>+ Добавить</value>
</data>
<data name="BtnDeleteMailItem.Location" type="System.Drawing.Point, System.Drawing">
<value>304, 184</value>
</data>
<data name="BtnDeleteMailItem.Size" type="System.Drawing.Size, System.Drawing">
<value>100, 23</value>
</data>
<data name="BtnDeleteMailItem.Text" xml:space="preserve">
<value>- Удалить</value>
</data>
<data name="TPMailSelectableItemList.Text" xml:space="preserve">
<value>Предметы</value>
</data>
<data name="NUDMailItemLevel.Location" type="System.Drawing.Point, System.Drawing">
<value>172, 3</value>
</data>
<data name="NUDMailItemCount.Location" type="System.Drawing.Point, System.Drawing">
<value>49, 3</value>
</data>
<data name="LblMailItemCount.Location" type="System.Drawing.Point, System.Drawing">
<value>1, 5</value>
</data>
<data name="LblMailItemCount.Size" type="System.Drawing.Size, System.Drawing">
<value>51, 17</value>
</data>
<data name="LblMailItemCount.Text" xml:space="preserve">
<value>Кол-во</value>
</data>
<data name="LblMailItemLevel.Location" type="System.Drawing.Point, System.Drawing">
<value>114, 6</value>
</data>
<data name="LblMailItemLevel.Size" type="System.Drawing.Size, System.Drawing">
<value>60, 17</value>
</data>
<data name="LblMailItemLevel.Text" xml:space="preserve">
<value>Уровень</value>
</data>
<data name="TPMailList.Text" xml:space="preserve">
<value>Список рассылки</value>
</data>
<data name="BtnClearMail.Location" type="System.Drawing.Point, System.Drawing">
<value>114, 5</value>
</data>
<data name="BtnClearMail.Size" type="System.Drawing.Size, System.Drawing">
<value>100, 23</value>
</data>
<data name="BtnClearMail.Text" xml:space="preserve">
<value>× Очистить</value>
</data>
<data name="BtnRemoveMail.Location" type="System.Drawing.Point, System.Drawing">
<value>8, 5</value>
</data>
<data name="BtnRemoveMail.Size" type="System.Drawing.Size, System.Drawing">
<value>100, 23</value>
</data>
<data name="BtnRemoveMail.Text" xml:space="preserve">
<value>- Удалить</value>
</data>
<data name="BtnSendMail.Location" type="System.Drawing.Point, System.Drawing">
<value>304, 213</value>
</data>
<data name="BtnSendMail.Size" type="System.Drawing.Size, System.Drawing">
<value>100, 29</value>
</data>
<data name="BtnSendMail.Text" xml:space="preserve">
<value>Отправить</value>
</data>
<data name="ListMailItems.Location" type="System.Drawing.Point, System.Drawing">
<value>102, 155</value>
</data>
<data name="ListMailItems.Size" type="System.Drawing.Size, System.Drawing">
<value>196, 89</value>
</data>
<data name="LblMailItemsLabel.Size" type="System.Drawing.Size, System.Drawing">
<value>74, 17</value>
</data>
<data name="LblMailItemsLabel.Text" xml:space="preserve">
<value>Вложение:</value>
</data>
<data name="RbMailSendToPlayer.Location" type="System.Drawing.Point, System.Drawing">
<value>213, 34</value>
</data>
<data name="RbMailSendToPlayer.Size" type="System.Drawing.Size, System.Drawing">
<value>64, 21</value>
</data>
<data name="RbMailSendToPlayer.Text" xml:space="preserve">
<value>Игрок</value>
</data>
<data name="RbMailSendToAll.Location" type="System.Drawing.Point, System.Drawing">
<value>102, 34</value>
</data>
<data name="RbMailSendToAll.Size" type="System.Drawing.Size, System.Drawing">
<value>47, 21</value>
</data>
<data name="RbMailSendToAll.Text" xml:space="preserve">
<value>Все</value>
</data>
<data name="LblMailRecipientLabel.Size" type="System.Drawing.Size, System.Drawing">
<value>81, 17</value>
</data>
<data name="LblMailRecipientLabel.Text" xml:space="preserve">
<value>Получатель:</value>
</data>
<data name="TxtMailContent.Location" type="System.Drawing.Point, System.Drawing">
<value>102, 93</value>
</data>
<data name="TxtMailContent.Size" type="System.Drawing.Size, System.Drawing">
<value>302, 56</value>
</data>
<data name="LblMailContentLabel.Size" type="System.Drawing.Size, System.Drawing">
<value>89, 17</value>
</data>
<data name="LblMailContentLabel.Text" xml:space="preserve">
<value>Содержание:</value>
</data>
<data name="TxtMailTitle.Location" type="System.Drawing.Point, System.Drawing">
<value>102, 64</value>
</data>
<data name="TxtMailTitle.Size" type="System.Drawing.Size, System.Drawing">
<value>302, 23</value>
</data>
<data name="LblMailTitleLabel.Size" type="System.Drawing.Size, System.Drawing">
<value>70, 17</value>
</data>
<data name="LblMailTitleLabel.Text" xml:space="preserve">
<value>Название:</value>
</data>
<data name="TxtMailSender.Location" type="System.Drawing.Point, System.Drawing">
<value>102, 6</value>
</data>
<data name="TxtMailSender.Size" type="System.Drawing.Size, System.Drawing">
<value>302, 23</value>
</data>
<data name="LblMailSenderLabel.Size" type="System.Drawing.Size, System.Drawing">
<value>90, 17</value>
</data>
<data name="LblMailSenderLabel.Text" xml:space="preserve">
<value>Отправитель:</value>
</data>
</root> </root>

View File

@@ -129,16 +129,10 @@
<data name="GrpCommand.Text" xml:space="preserve"> <data name="GrpCommand.Text" xml:space="preserve">
<value>命令 - [Ctrl] 自動執行 - [Shift] 拼接命令 - [Alt] 僅執行 - [|] 分割多條命令</value> <value>命令 - [Ctrl] 自動執行 - [Shift] 拼接命令 - [Alt] 僅執行 - [|] 分割多條命令</value>
</data> </data>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="TPRemoteCall.Location" type="System.Drawing.Point, System.Drawing">
<value>4, 22</value>
</data>
<data name="TPRemoteCall.Size" type="System.Drawing.Size, System.Drawing">
<value>652, 249</value>
</data>
<data name="TPRemoteCall.Text" xml:space="preserve"> <data name="TPRemoteCall.Text" xml:space="preserve">
<value>遠程</value> <value>遠程</value>
</data> </data>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="LblSupportDescription.Size" type="System.Drawing.Size, System.Drawing"> <data name="LblSupportDescription.Size" type="System.Drawing.Size, System.Drawing">
<value>334, 102</value> <value>334, 102</value>
</data> </data>
@@ -150,48 +144,9 @@
如果願意請我喝一杯奶茶,那就更好了 : ) 如果願意請我喝一杯奶茶,那就更好了 : )
指令生成有問題或者有新的功能請求都可以來Github提出</value> 指令生成有問題或者有新的功能請求都可以來Github提出</value>
</data> </data>
<data name="TPAbout.Location" type="System.Drawing.Point, System.Drawing">
<value>4, 22</value>
</data>
<data name="TPAbout.Size" type="System.Drawing.Size, System.Drawing">
<value>652, 249</value>
</data>
<data name="TPAbout.Text" xml:space="preserve"> <data name="TPAbout.Text" xml:space="preserve">
<value>關於</value> <value>關於</value>
</data> </data>
<data name="BtnBan.Text" xml:space="preserve">
<value>封號</value>
</data>
<data name="LblBanUID.Text" xml:space="preserve">
<value>目標UID</value>
</data>
<data name="BtnDeleteAccount.Text" xml:space="preserve">
<value>- 刪除</value>
</data>
<data name="BtnCreateAccount.Text" xml:space="preserve">
<value>+ 創建</value>
</data>
<data name="LblAccountUserName.Text" xml:space="preserve">
<value>用戶名</value>
</data>
<data name="GrpAccount.Text" xml:space="preserve">
<value>賬號管理</value>
</data>
<data name="LblPerm.Text" xml:space="preserve">
<value>權限</value>
</data>
<data name="LblPermUID.Text" xml:space="preserve">
<value>目標UID</value>
</data>
<data name="GrpPermission.Text" xml:space="preserve">
<value>權限管理</value>
</data>
<data name="TPManage.Location" type="System.Drawing.Point, System.Drawing">
<value>4, 22</value>
</data>
<data name="TPManage.Size" type="System.Drawing.Size, System.Drawing">
<value>652, 249</value>
</data>
<data name="RbListDungeons.Text" xml:space="preserve"> <data name="RbListDungeons.Text" xml:space="preserve">
<value>祕境</value> <value>祕境</value>
</data> </data>
@@ -218,220 +173,9 @@
提示:遊戲內可以通過小地圖的'魚鉤'標記來快捷傳送 提示:遊戲內可以通過小地圖的'魚鉤'標記來快捷傳送
命令中可以用~表示當前位置,~N 表示相對當前N</value> 命令中可以用~表示當前位置,~N 表示相對當前N</value>
</data> </data>
<data name="TPScene.Location" type="System.Drawing.Point, System.Drawing">
<value>4, 22</value>
</data>
<data name="TPScene.Size" type="System.Drawing.Size, System.Drawing">
<value>652, 249</value>
</data>
<data name="TPScene.Text" xml:space="preserve"> <data name="TPScene.Text" xml:space="preserve">
<value>場景</value> <value>場景</value>
</data> </data>
<data name="BtnSaveGiveItemLog.Text" xml:space="preserve">
<value>√ 記錄</value>
</data>
<data name="BtnRemoveGiveItemLog.Text" xml:space="preserve">
<value>× 刪除</value>
</data>
<data name="GrpGiveItemRecord.Text" xml:space="preserve">
<value>物品記錄本</value>
</data>
<data name="LblGameItemAmount.Text" xml:space="preserve">
<value>數量</value>
</data>
<data name="LblGameItemLevel.Text" xml:space="preserve">
<value>等級</value>
</data>
<data name="LblGiveCommandDescription.Text" xml:space="preserve">
<value>給玩家指定物品
說明:可選擇直接給到背包或者掉落到世界</value>
</data>
<data name="TPItem.Location" type="System.Drawing.Point, System.Drawing">
<value>4, 22</value>
</data>
<data name="TPItem.Size" type="System.Drawing.Size, System.Drawing">
<value>652, 249</value>
</data>
<data name="TPWeapon.Location" type="System.Drawing.Point, System.Drawing">
<value>4, 22</value>
</data>
<data name="TPWeapon.Size" type="System.Drawing.Size, System.Drawing">
<value>652, 249</value>
</data>
<data name="LnkSetAllConst.Text" xml:space="preserve">
<value>設置所有角色</value>
</data>
<data name="LnkSetConst.Text" xml:space="preserve">
<value>設置當前角色</value>
</data>
<data name="GrpSetConstellation.Text" xml:space="preserve">
<value>設置命座</value>
</data>
<data name="BtnUnlockStat.Text" xml:space="preserve">
<value>解鎖</value>
</data>
<data name="BtnLockStat.Text" xml:space="preserve">
<value>鎖定</value>
</data>
<data name="GrpSetStats.Text" xml:space="preserve">
<value>角色屬性</value>
</data>
<data name="LnkTalentNormalATK.Text" xml:space="preserve">
<value>普通攻擊</value>
</data>
<data name="GrpTalentLevel.Text" xml:space="preserve">
<value>技能等級</value>
</data>
<data name="CmbSwitchElement.Items" xml:space="preserve">
<value>無</value>
</data>
<data name="CmbSwitchElement.Items3" xml:space="preserve">
<value>風</value>
</data>
<data name="LnkSwitchElement.Text" xml:space="preserve">
<value>切換主角元素</value>
</data>
<data name="BtnGiveAllChar.Text" xml:space="preserve">
<value>一鍵獲得所有角色</value>
</data>
<data name="LblAvatarLevel.Text" xml:space="preserve">
<value>等級</value>
</data>
<data name="LblAvatarSkillLevelLabel.Text" xml:space="preserve">
<value>技能等級</value>
</data>
<data name="TPAvatar.Location" type="System.Drawing.Point, System.Drawing">
<value>4, 22</value>
</data>
<data name="TPAvatar.Size" type="System.Drawing.Size, System.Drawing">
<value>652, 249</value>
</data>
<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.Size" type="System.Drawing.Size, System.Drawing">
<value>32, 17</value>
</data>
<data name="LblEntityLevel.Text" xml:space="preserve">
<value>等級</value>
</data>
<data name="LblEntityAmount.Size" type="System.Drawing.Size, System.Drawing">
<value>32, 17</value>
</data>
<data name="LblEntityAmount.Text" xml:space="preserve">
<value>數量</value>
</data>
<data name="TPSpawnArgs.Location" type="System.Drawing.Point, System.Drawing">
<value>4, 22</value>
</data>
<data name="TPSpawnArgs.Size" type="System.Drawing.Size, System.Drawing">
<value>338, 199</value>
</data>
<data name="TPSpawnArgs.Text" xml:space="preserve">
<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.Location" type="System.Drawing.Point, System.Drawing">
<value>4, 22</value>
</data>
<data name="TPAttackModArgs.Size" type="System.Drawing.Size, System.Drawing">
<value>338, 199</value>
</data>
<data name="TPAttackModArgs.Text" xml:space="preserve">
<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.Size" type="System.Drawing.Size, System.Drawing">
<value>338, 191</value>
</data>
<data name="TPAttackInfusedArgs.Text" xml:space="preserve">
<value>攻擊注入參數</value>
</data>
<data name="TCSpawnSettings.Size" type="System.Drawing.Size, System.Drawing">
<value>346, 221</value>
</data>
<data name="ListEntity.Size" type="System.Drawing.Size, System.Drawing">
<value>274, 163</value>
</data>
<data name="TPSpawnItems.Location" type="System.Drawing.Point, System.Drawing">
<value>4, 22</value>
</data>
<data name="TPSpawnItems.Size" type="System.Drawing.Size, System.Drawing">
<value>280, 199</value>
</data>
<data name="TPSpawnItems.Text" xml:space="preserve">
<value>實體列表</value>
</data>
<data name="ListSpawnLogs.Size" type="System.Drawing.Size, System.Drawing">
<value>274, 156</value>
</data>
<data name="BtnSaveSpawnLog.Text" xml:space="preserve">
<value>√ 記錄</value>
</data>
<data name="BtnRemoveSpawnLog.Text" xml:space="preserve">
<value>× 刪除</value>
</data>
<data name="FLPSpawnRecordControls.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 159</value>
</data>
<data name="TPSpawnRecords.Size" type="System.Drawing.Size, System.Drawing">
<value>280, 191</value>
</data>
<data name="TPSpawnRecords.Text" xml:space="preserve">
<value>生成記錄本</value>
</data>
<data name="TCSpawnItems.Size" type="System.Drawing.Size, System.Drawing">
<value>288, 221</value>
</data>
<data name="ChkQuestFilterTEST.Text" xml:space="preserve"> <data name="ChkQuestFilterTEST.Text" xml:space="preserve">
<value>測試任務</value> <value>測試任務</value>
</data> </data>
@@ -455,92 +199,19 @@
提示:許多任務需要服務端腳本支持 提示:許多任務需要服務端腳本支持
囙此任務可以接,可以完成,但是不一定可以做</value> 囙此任務可以接,可以完成,但是不一定可以做</value>
</data> </data>
<data name="TPQuest.Location" type="System.Drawing.Point, System.Drawing">
<value>4, 22</value>
</data>
<data name="TPQuest.Size" type="System.Drawing.Size, System.Drawing">
<value>652, 249</value>
</data>
<data name="TPQuest.Text" xml:space="preserve"> <data name="TPQuest.Text" xml:space="preserve">
<value>任務</value> <value>任務</value>
</data> </data>
<data name="TPArtifact.Location" type="System.Drawing.Point, System.Drawing">
<value>4, 22</value>
</data>
<data name="TPArtifact.Size" type="System.Drawing.Size, System.Drawing">
<value>652, 249</value>
</data>
<data name="TPArtifact.Text" xml:space="preserve"> <data name="TPArtifact.Text" xml:space="preserve">
<value>聖遺物</value> <value>聖遺物</value>
</data> </data>
<data name="TPCustom.Location" type="System.Drawing.Point, System.Drawing">
<value>4, 22</value>
</data>
<data name="TPCustom.Size" type="System.Drawing.Size, System.Drawing">
<value>652, 249</value>
</data>
<data name="TPCustom.Text" xml:space="preserve"> <data name="TPCustom.Text" xml:space="preserve">
<value>自定義</value> <value>自定義</value>
</data> </data>
<data name="TPHome.Text" xml:space="preserve"> <data name="TPHome.Text" xml:space="preserve">
<value>主頁</value> <value>主頁</value>
</data> </data>
<data name="BtnDeleteMailItem.Text" xml:space="preserve">
<value>- 刪除</value>
</data>
<data name="NUDMailItemLevel.Location" type="System.Drawing.Point, System.Drawing">
<value>171, 4</value>
</data>
<data name="NUDMailItemCount.Location" type="System.Drawing.Point, System.Drawing">
<value>47, 4</value>
</data>
<data name="LblMailItemCount.Location" type="System.Drawing.Point, System.Drawing">
<value>-3, 6</value>
</data>
<data name="LblMailItemCount.Text" xml:space="preserve">
<value>數量:</value>
</data>
<data name="LblMailItemLevel.Location" type="System.Drawing.Point, System.Drawing">
<value>123, 6</value>
</data>
<data name="LblMailItemLevel.Text" xml:space="preserve">
<value>等級:</value>
</data>
<data name="BtnRemoveMail.Text" xml:space="preserve">
<value>- 刪除</value>
</data>
<data name="PanelMailListControls.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 173</value>
</data>
<data name="TPMailList.Location" type="System.Drawing.Point, System.Drawing">
<value>4, 22</value>
</data>
<data name="TPMailList.Size" type="System.Drawing.Size, System.Drawing">
<value>228, 204</value>
</data>
<data name="BtnSendMail.Text" xml:space="preserve">
<value>發送</value>
</data>
<data name="LblMailContentLabel.Text" xml:space="preserve">
<value>內容:</value>
</data>
<data name="LblMailTitleLabel.Text" xml:space="preserve">
<value>標題:</value>
</data>
<data name="LblMailSenderLabel.Text" xml:space="preserve">
<value>發件人:</value>
</data>
<data name="TPMail.Location" type="System.Drawing.Point, System.Drawing">
<value>4, 22</value>
</data>
<data name="TPMail.Size" type="System.Drawing.Size, System.Drawing">
<value>652, 249</value>
</data>
<data name="TPMail.Text" xml:space="preserve"> <data name="TPMail.Text" xml:space="preserve">
<value>郵件</value> <value>郵件</value>
</data> </data>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="$this.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
</root> </root>

View File

@@ -163,6 +163,18 @@
<Compile Include="Pages\BasePage.cs"> <Compile Include="Pages\BasePage.cs">
<SubType>UserControl</SubType> <SubType>UserControl</SubType>
</Compile> </Compile>
<Compile Include="Pages\PageAbout.cs">
<SubType>UserControl</SubType>
</Compile>
<Compile Include="Pages\PageAbout.Designer.cs">
<DependentUpon>PageAbout.cs</DependentUpon>
</Compile>
<Compile Include="Pages\PageAvatar.cs">
<SubType>UserControl</SubType>
</Compile>
<Compile Include="Pages\PageAvatar.Designer.cs">
<DependentUpon>PageAvatar.cs</DependentUpon>
</Compile>
<Compile Include="Pages\PageCustomCommands.cs"> <Compile Include="Pages\PageCustomCommands.cs">
<SubType>UserControl</SubType> <SubType>UserControl</SubType>
</Compile> </Compile>
@@ -175,6 +187,12 @@
<Compile Include="Pages\PageGiveArtifact.Designer.cs"> <Compile Include="Pages\PageGiveArtifact.Designer.cs">
<DependentUpon>PageGiveArtifact.cs</DependentUpon> <DependentUpon>PageGiveArtifact.cs</DependentUpon>
</Compile> </Compile>
<Compile Include="Pages\PageGiveItem.cs">
<SubType>UserControl</SubType>
</Compile>
<Compile Include="Pages\PageGiveItem.Designer.cs">
<DependentUpon>PageGiveItem.cs</DependentUpon>
</Compile>
<Compile Include="Pages\PageGiveWeapon.cs"> <Compile Include="Pages\PageGiveWeapon.cs">
<SubType>UserControl</SubType> <SubType>UserControl</SubType>
</Compile> </Compile>
@@ -187,12 +205,36 @@
<Compile Include="Pages\PageHome.Designer.cs"> <Compile Include="Pages\PageHome.Designer.cs">
<DependentUpon>PageHome.cs</DependentUpon> <DependentUpon>PageHome.cs</DependentUpon>
</Compile> </Compile>
<Compile Include="Pages\PageMail.cs">
<SubType>UserControl</SubType>
</Compile>
<Compile Include="Pages\PageMail.Designer.cs">
<DependentUpon>PageMail.cs</DependentUpon>
</Compile>
<Compile Include="Pages\PageManagement.cs">
<SubType>UserControl</SubType>
</Compile>
<Compile Include="Pages\PageManagement.Designer.cs">
<DependentUpon>PageManagement.cs</DependentUpon>
</Compile>
<Compile Include="Pages\PageOpenCommand.cs"> <Compile Include="Pages\PageOpenCommand.cs">
<SubType>UserControl</SubType> <SubType>UserControl</SubType>
</Compile> </Compile>
<Compile Include="Pages\PageOpenCommand.Designer.cs"> <Compile Include="Pages\PageOpenCommand.Designer.cs">
<DependentUpon>PageOpenCommand.cs</DependentUpon> <DependentUpon>PageOpenCommand.cs</DependentUpon>
</Compile> </Compile>
<Compile Include="Pages\PageQuest.cs">
<SubType>UserControl</SubType>
</Compile>
<Compile Include="Pages\PageQuest.Designer.cs">
<DependentUpon>PageQuest.cs</DependentUpon>
</Compile>
<Compile Include="Pages\PageScene.cs">
<SubType>UserControl</SubType>
</Compile>
<Compile Include="Pages\PageScene.Designer.cs">
<DependentUpon>PageScene.cs</DependentUpon>
</Compile>
<Compile Include="Pages\PageSpawn.cs"> <Compile Include="Pages\PageSpawn.cs">
<SubType>UserControl</SubType> <SubType>UserControl</SubType>
</Compile> </Compile>
@@ -300,6 +342,30 @@
<EmbeddedResource Include="Forms\FormTextMapBrowser.zh-TW.resx"> <EmbeddedResource Include="Forms\FormTextMapBrowser.zh-TW.resx">
<DependentUpon>FormTextMapBrowser.cs</DependentUpon> <DependentUpon>FormTextMapBrowser.cs</DependentUpon>
</EmbeddedResource> </EmbeddedResource>
<EmbeddedResource Include="Pages\PageAbout.en-US.resx">
<DependentUpon>PageAbout.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Pages\PageAbout.resx">
<DependentUpon>PageAbout.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Pages\PageAbout.ru-RU.resx">
<DependentUpon>PageAbout.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Pages\PageAbout.zh-TW.resx">
<DependentUpon>PageAbout.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Pages\PageAvatar.en-US.resx">
<DependentUpon>PageAvatar.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Pages\PageAvatar.resx">
<DependentUpon>PageAvatar.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Pages\PageAvatar.ru-RU.resx">
<DependentUpon>PageAvatar.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Pages\PageAvatar.zh-TW.resx">
<DependentUpon>PageAvatar.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Pages\PageCustomCommands.en-US.resx"> <EmbeddedResource Include="Pages\PageCustomCommands.en-US.resx">
<DependentUpon>PageCustomCommands.cs</DependentUpon> <DependentUpon>PageCustomCommands.cs</DependentUpon>
</EmbeddedResource> </EmbeddedResource>
@@ -324,6 +390,18 @@
<EmbeddedResource Include="Pages\PageGiveArtifact.zh-TW.resx"> <EmbeddedResource Include="Pages\PageGiveArtifact.zh-TW.resx">
<DependentUpon>PageGiveArtifact.cs</DependentUpon> <DependentUpon>PageGiveArtifact.cs</DependentUpon>
</EmbeddedResource> </EmbeddedResource>
<EmbeddedResource Include="Pages\PageGiveItem.en-US.resx">
<DependentUpon>PageGiveItem.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Pages\PageGiveItem.resx">
<DependentUpon>PageGiveItem.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Pages\PageGiveItem.ru-RU.resx">
<DependentUpon>PageGiveItem.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Pages\PageGiveItem.zh-TW.resx">
<DependentUpon>PageGiveItem.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Pages\PageGiveWeapon.en-US.resx"> <EmbeddedResource Include="Pages\PageGiveWeapon.en-US.resx">
<DependentUpon>PageGiveWeapon.cs</DependentUpon> <DependentUpon>PageGiveWeapon.cs</DependentUpon>
</EmbeddedResource> </EmbeddedResource>
@@ -348,6 +426,30 @@
<EmbeddedResource Include="Pages\PageHome.zh-TW.resx"> <EmbeddedResource Include="Pages\PageHome.zh-TW.resx">
<DependentUpon>PageHome.cs</DependentUpon> <DependentUpon>PageHome.cs</DependentUpon>
</EmbeddedResource> </EmbeddedResource>
<EmbeddedResource Include="Pages\PageMail.en-US.resx">
<DependentUpon>PageMail.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Pages\PageMail.resx">
<DependentUpon>PageMail.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Pages\PageMail.ru-RU.resx">
<DependentUpon>PageMail.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Pages\PageMail.zh-TW.resx">
<DependentUpon>PageMail.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Pages\PageManagement.en-US.resx">
<DependentUpon>PageManagement.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Pages\PageManagement.resx">
<DependentUpon>PageManagement.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Pages\PageManagement.ru-RU.resx">
<DependentUpon>PageManagement.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Pages\PageManagement.zh-TW.resx">
<DependentUpon>PageManagement.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Pages\PageOpenCommand.en-US.resx"> <EmbeddedResource Include="Pages\PageOpenCommand.en-US.resx">
<DependentUpon>PageOpenCommand.cs</DependentUpon> <DependentUpon>PageOpenCommand.cs</DependentUpon>
</EmbeddedResource> </EmbeddedResource>
@@ -360,6 +462,30 @@
<EmbeddedResource Include="Pages\PageOpenCommand.zh-TW.resx"> <EmbeddedResource Include="Pages\PageOpenCommand.zh-TW.resx">
<DependentUpon>PageOpenCommand.cs</DependentUpon> <DependentUpon>PageOpenCommand.cs</DependentUpon>
</EmbeddedResource> </EmbeddedResource>
<EmbeddedResource Include="Pages\PageQuest.en-US.resx">
<DependentUpon>PageQuest.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Pages\PageQuest.resx">
<DependentUpon>PageQuest.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Pages\PageQuest.ru-RU.resx">
<DependentUpon>PageQuest.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Pages\PageQuest.zh-TW.resx">
<DependentUpon>PageQuest.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Pages\PageScene.en-US.resx">
<DependentUpon>PageScene.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Pages\PageScene.resx">
<DependentUpon>PageScene.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Pages\PageScene.ru-RU.resx">
<DependentUpon>PageScene.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Pages\PageScene.zh-TW.resx">
<DependentUpon>PageScene.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Pages\PageSpawn.en-US.resx"> <EmbeddedResource Include="Pages\PageSpawn.en-US.resx">
<DependentUpon>PageSpawn.cs</DependentUpon> <DependentUpon>PageSpawn.cs</DependentUpon>
</EmbeddedResource> </EmbeddedResource>

View File

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

View File

@@ -0,0 +1,77 @@
namespace GrasscutterTools.Pages
{
partial class PageAbout
{
/// <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(PageAbout));
this.GrasscutterToolsSupport = new System.Windows.Forms.PictureBox();
this.LnkGithub = new System.Windows.Forms.LinkLabel();
this.LblSupportDescription = new System.Windows.Forms.Label();
((System.ComponentModel.ISupportInitialize)(this.GrasscutterToolsSupport)).BeginInit();
this.SuspendLayout();
//
// GrasscutterToolsSupport
//
resources.ApplyResources(this.GrasscutterToolsSupport, "GrasscutterToolsSupport");
this.GrasscutterToolsSupport.Image = global::GrasscutterTools.Properties.Resources.ImgSupport;
this.GrasscutterToolsSupport.Name = "GrasscutterToolsSupport";
this.GrasscutterToolsSupport.TabStop = false;
//
// LnkGithub
//
resources.ApplyResources(this.LnkGithub, "LnkGithub");
this.LnkGithub.Name = "LnkGithub";
this.LnkGithub.TabStop = true;
this.LnkGithub.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.LnkGithub_LinkClicked);
//
// LblSupportDescription
//
resources.ApplyResources(this.LblSupportDescription, "LblSupportDescription");
this.LblSupportDescription.Name = "LblSupportDescription";
//
// PageAbout
//
resources.ApplyResources(this, "$this");
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.Controls.Add(this.GrasscutterToolsSupport);
this.Controls.Add(this.LnkGithub);
this.Controls.Add(this.LblSupportDescription);
this.Name = "PageAbout";
((System.ComponentModel.ISupportInitialize)(this.GrasscutterToolsSupport)).EndInit();
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private System.Windows.Forms.PictureBox GrasscutterToolsSupport;
private System.Windows.Forms.LinkLabel LnkGithub;
private System.Windows.Forms.Label LblSupportDescription;
}
}

View File

@@ -0,0 +1,41 @@
/**
* Grasscutter Tools
* Copyright (C) 2022 jie65535
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published
* by the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*
**/
using System.Windows.Forms;
using GrasscutterTools.Utils;
namespace GrasscutterTools.Pages
{
internal partial class PageAbout : BasePage
{
public PageAbout()
{
InitializeComponent();
}
/// <summary>
/// 点击Github链接时触发
/// </summary>
private void LnkGithub_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
UIUtil.OpenURL("https://github.com/jie65535/GrasscutterCommandGenerator");
}
}
}

View File

@@ -0,0 +1,133 @@
<?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="LblSupportDescription.Size" type="System.Drawing.Size, System.Drawing">
<value>387, 102</value>
</data>
<data name="LblSupportDescription.Text" xml:space="preserve">
<value>Grasscutter Tools
This is a free and open source project.
If you think this is helpful to you, you can give me a free Star.
If there is a problem with the command generation,
or there is a new feature request, you can file an issue on Github.
</value>
</data>
</root>

View File

@@ -0,0 +1,238 @@
<?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="GrasscutterToolsSupport.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Bottom, Right</value>
</data>
<data name="GrasscutterToolsSupport.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="GrasscutterToolsSupport.Location" type="System.Drawing.Point, System.Drawing">
<value>498, 86</value>
</data>
<data name="GrasscutterToolsSupport.MaximumSize" type="System.Drawing.Size, System.Drawing">
<value>280, 280</value>
</data>
<data name="GrasscutterToolsSupport.Size" type="System.Drawing.Size, System.Drawing">
<value>140, 140</value>
</data>
<data name="GrasscutterToolsSupport.SizeMode" type="System.Windows.Forms.PictureBoxSizeMode, System.Windows.Forms">
<value>Zoom</value>
</data>
<assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="GrasscutterToolsSupport.TabIndex" type="System.Int32, mscorlib">
<value>8</value>
</data>
<data name="&gt;&gt;GrasscutterToolsSupport.Name" xml:space="preserve">
<value>GrasscutterToolsSupport</value>
</data>
<data name="&gt;&gt;GrasscutterToolsSupport.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;GrasscutterToolsSupport.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;GrasscutterToolsSupport.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="LnkGithub.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Bottom, Left</value>
</data>
<data name="LnkGithub.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="LnkGithub.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="LnkGithub.Location" type="System.Drawing.Point, System.Drawing">
<value>8, 209</value>
</data>
<data name="LnkGithub.Size" type="System.Drawing.Size, System.Drawing">
<value>46, 17</value>
</data>
<data name="LnkGithub.TabIndex" type="System.Int32, mscorlib">
<value>1</value>
</data>
<data name="LnkGithub.Text" xml:space="preserve">
<value>Github</value>
</data>
<data name="&gt;&gt;LnkGithub.Name" xml:space="preserve">
<value>LnkGithub</value>
</data>
<data name="&gt;&gt;LnkGithub.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;LnkGithub.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;LnkGithub.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="LblSupportDescription.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="LblSupportDescription.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="LblSupportDescription.Location" type="System.Drawing.Point, System.Drawing">
<value>8, 12</value>
</data>
<data name="LblSupportDescription.Size" type="System.Drawing.Size, System.Drawing">
<value>334, 136</value>
</data>
<data name="LblSupportDescription.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
</data>
<data name="LblSupportDescription.Text" xml:space="preserve">
<value>割草机工具箱
这是一个免费且开源的项目
如果觉得这对你很有帮助可以为我点一个免费的Star
如果愿意请我喝一杯奶茶,那就更好了 : )
指令生成有问题或者有新的功能请求都可以来Github提出
欢迎加入内测Q群: 457427536 (需要回答正确答案)</value>
</data>
<data name="&gt;&gt;LblSupportDescription.Name" xml:space="preserve">
<value>LblSupportDescription</value>
</data>
<data name="&gt;&gt;LblSupportDescription.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;LblSupportDescription.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;LblSupportDescription.ZOrder" xml:space="preserve">
<value>2</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>PageAbout</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,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>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="LblSupportDescription.Size" type="System.Drawing.Size, System.Drawing">
<value>552, 187</value>
</data>
<data name="LblSupportDescription.Text" xml:space="preserve">
<value>Grasscutter Tools - основной перевод Юрий Дворецкий (с исправлениями от EgorBron)
Это бесплатный проект с открытым исходным кодом.
Если вы считаете, что это полезно для вас,
вы можете дать мне звезду на Github.
Если возникла проблема с генерацией команды или
есть запрос на новую функцию,
вы можете написать в Issues на Github.
Спасибо: Dhar_Jinxed
</value>
</data>
</root>

View File

@@ -0,0 +1,133 @@
<?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="LblSupportDescription.Size" type="System.Drawing.Size, System.Drawing">
<value>334, 102</value>
</data>
<data name="LblSupportDescription.Text" xml:space="preserve">
<value>割草機工具箱
這是一個免費且開源的項目
如果覺得這對你很有幫助可以為我點一個免費的Star
如果願意請我喝一杯奶茶,那就更好了 : )
指令生成有問題或者有新的功能請求都可以來Github提出
</value>
</data>
</root>

View File

@@ -0,0 +1,434 @@
namespace GrasscutterTools.Pages
{
partial class PageAvatar
{
/// <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(PageAvatar));
this.GrpSetConstellation = new System.Windows.Forms.GroupBox();
this.LnkSetAllConst = new System.Windows.Forms.LinkLabel();
this.LnkSetConst = new System.Windows.Forms.LinkLabel();
this.NUDSetConstellation = new System.Windows.Forms.NumericUpDown();
this.GrpSetStats = new System.Windows.Forms.GroupBox();
this.BtnUnlockStat = new System.Windows.Forms.Button();
this.BtnLockStat = new System.Windows.Forms.Button();
this.LblStatTip = new System.Windows.Forms.Label();
this.LblStatPercent = new System.Windows.Forms.Label();
this.NUDStat = new System.Windows.Forms.NumericUpDown();
this.CmbStat = new System.Windows.Forms.ComboBox();
this.GrpTalentLevel = new System.Windows.Forms.GroupBox();
this.LnkTalentAll = new System.Windows.Forms.LinkLabel();
this.LnkTalentE = new System.Windows.Forms.LinkLabel();
this.LnkTalentQ = new System.Windows.Forms.LinkLabel();
this.LnkTalentNormalATK = new System.Windows.Forms.LinkLabel();
this.NUDTalentLevel = new System.Windows.Forms.NumericUpDown();
this.GrpGiveAvatar = new System.Windows.Forms.GroupBox();
this.CmbSwitchElement = new System.Windows.Forms.ComboBox();
this.LnkSwitchElement = new System.Windows.Forms.LinkLabel();
this.CmbAvatar = new System.Windows.Forms.ComboBox();
this.LblAvatarSkillLevelTip = new System.Windows.Forms.Label();
this.NUDAvatarLevel = new System.Windows.Forms.NumericUpDown();
this.BtnGiveAllChar = new System.Windows.Forms.Button();
this.LblAvatarLevel = new System.Windows.Forms.Label();
this.LblAvatarSkillLevelLabel = new System.Windows.Forms.Label();
this.LblAvatar = new System.Windows.Forms.Label();
this.LblAvatarConstellation = new System.Windows.Forms.Label();
this.NUDAvatarConstellation = new System.Windows.Forms.NumericUpDown();
this.NUDAvatarSkillLevel = new System.Windows.Forms.NumericUpDown();
this.GrpSetConstellation.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.NUDSetConstellation)).BeginInit();
this.GrpSetStats.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.NUDStat)).BeginInit();
this.GrpTalentLevel.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.NUDTalentLevel)).BeginInit();
this.GrpGiveAvatar.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.NUDAvatarLevel)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.NUDAvatarConstellation)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.NUDAvatarSkillLevel)).BeginInit();
this.SuspendLayout();
//
// GrpSetConstellation
//
resources.ApplyResources(this.GrpSetConstellation, "GrpSetConstellation");
this.GrpSetConstellation.Controls.Add(this.LnkSetAllConst);
this.GrpSetConstellation.Controls.Add(this.LnkSetConst);
this.GrpSetConstellation.Controls.Add(this.NUDSetConstellation);
this.GrpSetConstellation.Name = "GrpSetConstellation";
this.GrpSetConstellation.TabStop = false;
//
// LnkSetAllConst
//
resources.ApplyResources(this.LnkSetAllConst, "LnkSetAllConst");
this.LnkSetAllConst.Name = "LnkSetAllConst";
this.LnkSetAllConst.TabStop = true;
this.LnkSetAllConst.Tag = "";
this.LnkSetAllConst.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.LnkSetConst_LinkClicked);
//
// LnkSetConst
//
resources.ApplyResources(this.LnkSetConst, "LnkSetConst");
this.LnkSetConst.Name = "LnkSetConst";
this.LnkSetConst.TabStop = true;
this.LnkSetConst.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.LnkSetConst_LinkClicked);
//
// NUDSetConstellation
//
resources.ApplyResources(this.NUDSetConstellation, "NUDSetConstellation");
this.NUDSetConstellation.Maximum = new decimal(new int[] {
6,
0,
0,
0});
this.NUDSetConstellation.Minimum = new decimal(new int[] {
1,
0,
0,
-2147483648});
this.NUDSetConstellation.Name = "NUDSetConstellation";
this.NUDSetConstellation.Value = new decimal(new int[] {
6,
0,
0,
0});
//
// GrpSetStats
//
resources.ApplyResources(this.GrpSetStats, "GrpSetStats");
this.GrpSetStats.Controls.Add(this.BtnUnlockStat);
this.GrpSetStats.Controls.Add(this.BtnLockStat);
this.GrpSetStats.Controls.Add(this.LblStatTip);
this.GrpSetStats.Controls.Add(this.LblStatPercent);
this.GrpSetStats.Controls.Add(this.NUDStat);
this.GrpSetStats.Controls.Add(this.CmbStat);
this.GrpSetStats.Name = "GrpSetStats";
this.GrpSetStats.TabStop = false;
//
// BtnUnlockStat
//
resources.ApplyResources(this.BtnUnlockStat, "BtnUnlockStat");
this.BtnUnlockStat.Name = "BtnUnlockStat";
this.BtnUnlockStat.UseVisualStyleBackColor = true;
this.BtnUnlockStat.Click += new System.EventHandler(this.BtnUnlockStat_Click);
//
// BtnLockStat
//
resources.ApplyResources(this.BtnLockStat, "BtnLockStat");
this.BtnLockStat.Name = "BtnLockStat";
this.BtnLockStat.UseVisualStyleBackColor = true;
this.BtnLockStat.Click += new System.EventHandler(this.BtnLockStat_Click);
//
// LblStatTip
//
this.LblStatTip.AutoEllipsis = true;
this.LblStatTip.ForeColor = System.Drawing.SystemColors.GrayText;
resources.ApplyResources(this.LblStatTip, "LblStatTip");
this.LblStatTip.Name = "LblStatTip";
//
// LblStatPercent
//
resources.ApplyResources(this.LblStatPercent, "LblStatPercent");
this.LblStatPercent.Name = "LblStatPercent";
//
// NUDStat
//
resources.ApplyResources(this.NUDStat, "NUDStat");
this.NUDStat.Maximum = new decimal(new int[] {
100000000,
0,
0,
0});
this.NUDStat.Name = "NUDStat";
this.NUDStat.Value = new decimal(new int[] {
100,
0,
0,
0});
this.NUDStat.ValueChanged += new System.EventHandler(this.SetStatsInputChanged);
//
// CmbStat
//
this.CmbStat.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.CmbStat.FormattingEnabled = true;
resources.ApplyResources(this.CmbStat, "CmbStat");
this.CmbStat.Name = "CmbStat";
this.CmbStat.SelectedIndexChanged += new System.EventHandler(this.SetStatsInputChanged);
//
// GrpTalentLevel
//
resources.ApplyResources(this.GrpTalentLevel, "GrpTalentLevel");
this.GrpTalentLevel.Controls.Add(this.LnkTalentAll);
this.GrpTalentLevel.Controls.Add(this.LnkTalentE);
this.GrpTalentLevel.Controls.Add(this.LnkTalentQ);
this.GrpTalentLevel.Controls.Add(this.LnkTalentNormalATK);
this.GrpTalentLevel.Controls.Add(this.NUDTalentLevel);
this.GrpTalentLevel.Name = "GrpTalentLevel";
this.GrpTalentLevel.TabStop = false;
//
// LnkTalentAll
//
resources.ApplyResources(this.LnkTalentAll, "LnkTalentAll");
this.LnkTalentAll.Name = "LnkTalentAll";
this.LnkTalentAll.TabStop = true;
this.LnkTalentAll.Tag = "all";
this.LnkTalentAll.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.LnkSetTalentClicked);
//
// LnkTalentE
//
resources.ApplyResources(this.LnkTalentE, "LnkTalentE");
this.LnkTalentE.Name = "LnkTalentE";
this.LnkTalentE.TabStop = true;
this.LnkTalentE.Tag = "e";
this.LnkTalentE.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.LnkSetTalentClicked);
//
// LnkTalentQ
//
resources.ApplyResources(this.LnkTalentQ, "LnkTalentQ");
this.LnkTalentQ.Name = "LnkTalentQ";
this.LnkTalentQ.TabStop = true;
this.LnkTalentQ.Tag = "q";
this.LnkTalentQ.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.LnkSetTalentClicked);
//
// LnkTalentNormalATK
//
resources.ApplyResources(this.LnkTalentNormalATK, "LnkTalentNormalATK");
this.LnkTalentNormalATK.Name = "LnkTalentNormalATK";
this.LnkTalentNormalATK.TabStop = true;
this.LnkTalentNormalATK.Tag = "n";
this.LnkTalentNormalATK.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.LnkSetTalentClicked);
//
// NUDTalentLevel
//
resources.ApplyResources(this.NUDTalentLevel, "NUDTalentLevel");
this.NUDTalentLevel.Maximum = new decimal(new int[] {
16,
0,
0,
0});
this.NUDTalentLevel.Name = "NUDTalentLevel";
this.NUDTalentLevel.Value = new decimal(new int[] {
10,
0,
0,
0});
//
// GrpGiveAvatar
//
resources.ApplyResources(this.GrpGiveAvatar, "GrpGiveAvatar");
this.GrpGiveAvatar.Controls.Add(this.CmbSwitchElement);
this.GrpGiveAvatar.Controls.Add(this.LnkSwitchElement);
this.GrpGiveAvatar.Controls.Add(this.CmbAvatar);
this.GrpGiveAvatar.Controls.Add(this.LblAvatarSkillLevelTip);
this.GrpGiveAvatar.Controls.Add(this.NUDAvatarLevel);
this.GrpGiveAvatar.Controls.Add(this.BtnGiveAllChar);
this.GrpGiveAvatar.Controls.Add(this.LblAvatarLevel);
this.GrpGiveAvatar.Controls.Add(this.LblAvatarSkillLevelLabel);
this.GrpGiveAvatar.Controls.Add(this.LblAvatar);
this.GrpGiveAvatar.Controls.Add(this.LblAvatarConstellation);
this.GrpGiveAvatar.Controls.Add(this.NUDAvatarConstellation);
this.GrpGiveAvatar.Controls.Add(this.NUDAvatarSkillLevel);
this.GrpGiveAvatar.Name = "GrpGiveAvatar";
this.GrpGiveAvatar.TabStop = false;
//
// CmbSwitchElement
//
this.CmbSwitchElement.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.CmbSwitchElement.FormattingEnabled = true;
this.CmbSwitchElement.Items.AddRange(new object[] {
resources.GetString("CmbSwitchElement.Items"),
resources.GetString("CmbSwitchElement.Items1"),
resources.GetString("CmbSwitchElement.Items2"),
resources.GetString("CmbSwitchElement.Items3"),
resources.GetString("CmbSwitchElement.Items4"),
resources.GetString("CmbSwitchElement.Items5"),
resources.GetString("CmbSwitchElement.Items6"),
resources.GetString("CmbSwitchElement.Items7")});
resources.ApplyResources(this.CmbSwitchElement, "CmbSwitchElement");
this.CmbSwitchElement.Name = "CmbSwitchElement";
this.CmbSwitchElement.SelectedIndexChanged += new System.EventHandler(this.CmbSwitchElement_SelectedIndexChanged);
//
// LnkSwitchElement
//
resources.ApplyResources(this.LnkSwitchElement, "LnkSwitchElement");
this.LnkSwitchElement.Name = "LnkSwitchElement";
this.LnkSwitchElement.TabStop = true;
this.LnkSwitchElement.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.LnkSwitchElement_LinkClicked);
//
// CmbAvatar
//
this.CmbAvatar.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.CmbAvatar.FormattingEnabled = true;
resources.ApplyResources(this.CmbAvatar, "CmbAvatar");
this.CmbAvatar.Name = "CmbAvatar";
this.CmbAvatar.SelectedIndexChanged += new System.EventHandler(this.GiveAvatarInputChanged);
//
// LblAvatarSkillLevelTip
//
resources.ApplyResources(this.LblAvatarSkillLevelTip, "LblAvatarSkillLevelTip");
this.LblAvatarSkillLevelTip.ForeColor = System.Drawing.SystemColors.GrayText;
this.LblAvatarSkillLevelTip.Name = "LblAvatarSkillLevelTip";
//
// NUDAvatarLevel
//
resources.ApplyResources(this.NUDAvatarLevel, "NUDAvatarLevel");
this.NUDAvatarLevel.Maximum = new decimal(new int[] {
90,
0,
0,
0});
this.NUDAvatarLevel.Minimum = new decimal(new int[] {
1,
0,
0,
0});
this.NUDAvatarLevel.Name = "NUDAvatarLevel";
this.NUDAvatarLevel.Value = new decimal(new int[] {
90,
0,
0,
0});
this.NUDAvatarLevel.ValueChanged += new System.EventHandler(this.GiveAvatarInputChanged);
//
// BtnGiveAllChar
//
resources.ApplyResources(this.BtnGiveAllChar, "BtnGiveAllChar");
this.BtnGiveAllChar.Name = "BtnGiveAllChar";
this.BtnGiveAllChar.UseVisualStyleBackColor = true;
this.BtnGiveAllChar.Click += new System.EventHandler(this.BtnGiveAllChar_Click);
//
// LblAvatarLevel
//
resources.ApplyResources(this.LblAvatarLevel, "LblAvatarLevel");
this.LblAvatarLevel.Name = "LblAvatarLevel";
//
// LblAvatarSkillLevelLabel
//
resources.ApplyResources(this.LblAvatarSkillLevelLabel, "LblAvatarSkillLevelLabel");
this.LblAvatarSkillLevelLabel.Name = "LblAvatarSkillLevelLabel";
//
// LblAvatar
//
resources.ApplyResources(this.LblAvatar, "LblAvatar");
this.LblAvatar.Name = "LblAvatar";
//
// LblAvatarConstellation
//
resources.ApplyResources(this.LblAvatarConstellation, "LblAvatarConstellation");
this.LblAvatarConstellation.Name = "LblAvatarConstellation";
//
// NUDAvatarConstellation
//
resources.ApplyResources(this.NUDAvatarConstellation, "NUDAvatarConstellation");
this.NUDAvatarConstellation.Maximum = new decimal(new int[] {
6,
0,
0,
0});
this.NUDAvatarConstellation.Name = "NUDAvatarConstellation";
this.NUDAvatarConstellation.Value = new decimal(new int[] {
6,
0,
0,
0});
this.NUDAvatarConstellation.ValueChanged += new System.EventHandler(this.GiveAvatarInputChanged);
//
// NUDAvatarSkillLevel
//
resources.ApplyResources(this.NUDAvatarSkillLevel, "NUDAvatarSkillLevel");
this.NUDAvatarSkillLevel.Maximum = new decimal(new int[] {
16,
0,
0,
0});
this.NUDAvatarSkillLevel.Name = "NUDAvatarSkillLevel";
this.NUDAvatarSkillLevel.Value = new decimal(new int[] {
10,
0,
0,
0});
this.NUDAvatarSkillLevel.ValueChanged += new System.EventHandler(this.GiveAvatarInputChanged);
//
// PageAvatar
//
resources.ApplyResources(this, "$this");
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.Controls.Add(this.GrpSetConstellation);
this.Controls.Add(this.GrpSetStats);
this.Controls.Add(this.GrpTalentLevel);
this.Controls.Add(this.GrpGiveAvatar);
this.Name = "PageAvatar";
this.GrpSetConstellation.ResumeLayout(false);
this.GrpSetConstellation.PerformLayout();
((System.ComponentModel.ISupportInitialize)(this.NUDSetConstellation)).EndInit();
this.GrpSetStats.ResumeLayout(false);
this.GrpSetStats.PerformLayout();
((System.ComponentModel.ISupportInitialize)(this.NUDStat)).EndInit();
this.GrpTalentLevel.ResumeLayout(false);
this.GrpTalentLevel.PerformLayout();
((System.ComponentModel.ISupportInitialize)(this.NUDTalentLevel)).EndInit();
this.GrpGiveAvatar.ResumeLayout(false);
this.GrpGiveAvatar.PerformLayout();
((System.ComponentModel.ISupportInitialize)(this.NUDAvatarLevel)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.NUDAvatarConstellation)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.NUDAvatarSkillLevel)).EndInit();
this.ResumeLayout(false);
}
#endregion
private System.Windows.Forms.GroupBox GrpSetConstellation;
private System.Windows.Forms.LinkLabel LnkSetAllConst;
private System.Windows.Forms.LinkLabel LnkSetConst;
private System.Windows.Forms.NumericUpDown NUDSetConstellation;
private System.Windows.Forms.GroupBox GrpSetStats;
private System.Windows.Forms.Button BtnUnlockStat;
private System.Windows.Forms.Button BtnLockStat;
private System.Windows.Forms.Label LblStatTip;
private System.Windows.Forms.Label LblStatPercent;
private System.Windows.Forms.NumericUpDown NUDStat;
private System.Windows.Forms.ComboBox CmbStat;
private System.Windows.Forms.GroupBox GrpTalentLevel;
private System.Windows.Forms.LinkLabel LnkTalentAll;
private System.Windows.Forms.LinkLabel LnkTalentE;
private System.Windows.Forms.LinkLabel LnkTalentQ;
private System.Windows.Forms.LinkLabel LnkTalentNormalATK;
private System.Windows.Forms.NumericUpDown NUDTalentLevel;
private System.Windows.Forms.GroupBox GrpGiveAvatar;
private System.Windows.Forms.ComboBox CmbSwitchElement;
private System.Windows.Forms.LinkLabel LnkSwitchElement;
private System.Windows.Forms.ComboBox CmbAvatar;
private System.Windows.Forms.Label LblAvatarSkillLevelTip;
private System.Windows.Forms.NumericUpDown NUDAvatarLevel;
private System.Windows.Forms.Button BtnGiveAllChar;
private System.Windows.Forms.Label LblAvatarLevel;
private System.Windows.Forms.Label LblAvatarSkillLevelLabel;
private System.Windows.Forms.Label LblAvatar;
private System.Windows.Forms.Label LblAvatarConstellation;
private System.Windows.Forms.NumericUpDown NUDAvatarConstellation;
private System.Windows.Forms.NumericUpDown NUDAvatarSkillLevel;
}
}

View File

@@ -0,0 +1,206 @@
/**
* Grasscutter Tools
* Copyright (C) 2022 jie65535
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published
* by the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*
**/
using System;
using System.Linq;
using System.Windows.Forms;
using GrasscutterTools.Game;
using GrasscutterTools.Utils;
namespace GrasscutterTools.Pages
{
internal partial class PageAvatar : BasePage
{
public PageAvatar()
{
InitializeComponent();
}
public override void OnLoad()
{
InitAvatars();
InitStatList();
}
#region -- --
/// <summary>
/// 初始化角色列表
/// </summary>
private void InitAvatars()
{
CmbAvatar.Items.Clear();
CmbAvatar.Items.AddRange(GameData.Avatars.Names);
}
/// <summary>
/// 角色页面输入改变时触发
/// </summary>
private void GiveAvatarInputChanged(object sender, EventArgs e)
{
if (CmbAvatar.SelectedIndex >= 0)
GenAvatar((int)NUDAvatarLevel.Value, (int)NUDAvatarConstellation.Value, (int)NUDAvatarSkillLevel.Value);
}
/// <summary>
/// 获取角色命令
/// </summary>
/// <param name="level">等级</param>
private void GenAvatar(int level, int constellation, int skillLevel)
{
if (CommandVersion.Check(CommandVersion.V1_4_1))
{
int avatarId = GameData.Avatars.Ids[CmbAvatar.SelectedIndex];
SetCommand("/give", $"{avatarId} lv{level} c{constellation} sl{skillLevel}");
}
else if (CommandVersion.Check(CommandVersion.V1_2_2))
{
int avatarId = GameData.Avatars.Ids[CmbAvatar.SelectedIndex];
SetCommand("/give", $"{avatarId} lv{level} c{constellation}");
}
else
{
int avatarId = GameData.Avatars.Ids[CmbAvatar.SelectedIndex] - 1000 + 10000000;
SetCommand("/givechar", $"{avatarId} {level}");
}
}
/// <summary>
/// 点击获取所有角色按钮时触发
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void BtnGiveAllChar_Click(object sender, EventArgs e)
{
var level = NUDAvatarLevel.Value;
var constellation = NUDAvatarConstellation.Value;
var skillLevel = NUDAvatarSkillLevel.Value;
if (CommandVersion.Check(CommandVersion.V1_4_1))
SetCommand("/give avatars", $"lv{level} c{constellation} sl{skillLevel}");
else
SetCommand("/give avatars", $"lv{level} c{constellation}");
}
#endregion -- --
#region -- --
/// <summary>
/// 点击切换主角元素链接标签时触发
/// </summary>
private void LnkSwitchElement_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
UIUtil.OpenURL("https://github.com/Penelopeep/SwitchElementTraveller");
}
/// <summary>
/// 元素参数
/// </summary>
private readonly string[] Elements = { "white", "fire", "water", "wind", "ice", "rock", "electro", "grass" };
/// <summary>
/// 切换元素下拉框选中项改变时触发
/// </summary>
private void CmbSwitchElement_SelectedIndexChanged(object sender, EventArgs e)
{
if (CmbSwitchElement.SelectedIndex == -1 || CmbSwitchElement.SelectedIndex >= Elements.Length) return;
SetCommand("/se", Elements[CmbSwitchElement.SelectedIndex]);
}
#endregion -- --
#region -- --
/// <summary>
/// 初始化数据列表
/// </summary>
private void InitStatList()
{
LblStatTip.Text = "";
SetStatsCommand.InitStats();
CmbStat.Items.Clear();
CmbStat.Items.AddRange(SetStatsCommand.Stats.Select(s => s.Name).ToArray());
}
/// <summary>
/// 数据页面输入改变时触发
/// </summary>
private void SetStatsInputChanged(object sender, EventArgs e)
{
if (CmbStat.SelectedIndex < 0)
return;
else
BtnLockStat.Enabled = BtnUnlockStat.Enabled = true;
var stat = SetStatsCommand.Stats[CmbStat.SelectedIndex];
LblStatPercent.Visible = stat.Percent;
LblStatTip.Text = stat.Tip;
SetCommand("/setstats", $"{stat.ArgName} {NUDStat.Value}{(stat.Percent ? "%" : "")}");
}
/// <summary>
/// 点击锁定按钮时触发
/// </summary>
private void BtnLockStat_Click(object sender, EventArgs e)
{
var stat = SetStatsCommand.Stats[CmbStat.SelectedIndex];
SetCommand("/setstats", $"lock {stat.ArgName} {NUDStat.Value}{(stat.Percent ? "%" : "")}");
}
/// <summary>
/// 点击解锁按钮时触发
/// </summary>
private void BtnUnlockStat_Click(object sender, EventArgs e)
{
var stat = SetStatsCommand.Stats[CmbStat.SelectedIndex];
SetCommand("/setstats", $"unlock {stat.ArgName}");
}
#endregion -- --
#region -- --
/// <summary>
/// 点击设置技能按钮时触发
/// </summary>
private void LnkSetTalentClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
SetCommand("/talent", $"{(sender as LinkLabel).Tag} {NUDTalentLevel.Value}");
}
#endregion -- --
#region -- --
/// <summary>
/// 设置命座链接标签点击时触发
/// </summary>
private void LnkSetConst_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
if (NUDSetConstellation.Value >= 0)
SetCommand("/setConst", $"{NUDSetConstellation.Value}" + (sender == LnkSetAllConst ? " all" : string.Empty));
else
SetCommand("/resetConst", (sender == LnkSetAllConst ? "all" : string.Empty));
}
#endregion -- --
}
}

View File

@@ -0,0 +1,235 @@
<?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="LnkSetAllConst.Size" type="System.Drawing.Size, System.Drawing">
<value>43, 17</value>
</data>
<data name="LnkSetAllConst.Text" xml:space="preserve">
<value>Set all</value>
</data>
<data name="LnkSetConst.Size" type="System.Drawing.Size, System.Drawing">
<value>71, 17</value>
</data>
<data name="LnkSetConst.Text" xml:space="preserve">
<value>Set current</value>
</data>
<data name="GrpSetConstellation.Text" xml:space="preserve">
<value>Constellation</value>
</data>
<data name="GrpSetStats.Text" xml:space="preserve">
<value>Stats</value>
</data>
<data name="BtnUnlockStat.Text" xml:space="preserve">
<value>Unlock</value>
</data>
<data name="BtnLockStat.Text" xml:space="preserve">
<value>Lock</value>
</data>
<data name="LblStatTip.Text" xml:space="preserve">
<value>Tip</value>
</data>
<data name="GrpTalentLevel.Text" xml:space="preserve">
<value>Talent Level</value>
</data>
<data name="LnkTalentAll.Size" type="System.Drawing.Size, System.Drawing">
<value>22, 17</value>
</data>
<data name="LnkTalentAll.Text" xml:space="preserve">
<value>All</value>
</data>
<data name="LnkTalentE.Size" type="System.Drawing.Size, System.Drawing">
<value>15, 17</value>
</data>
<data name="LnkTalentE.Text" xml:space="preserve">
<value>E</value>
</data>
<data name="LnkTalentQ.Size" type="System.Drawing.Size, System.Drawing">
<value>18, 17</value>
</data>
<data name="LnkTalentQ.Text" xml:space="preserve">
<value>Q</value>
</data>
<data name="LnkTalentNormalATK.Size" type="System.Drawing.Size, System.Drawing">
<value>52, 17</value>
</data>
<data name="LnkTalentNormalATK.Text" xml:space="preserve">
<value>Normal</value>
</data>
<data name="GrpGiveAvatar.Text" xml:space="preserve">
<value>Give Avatar</value>
</data>
<data name="CmbSwitchElement.Items" xml:space="preserve">
<value>White</value>
</data>
<data name="CmbSwitchElement.Items1" xml:space="preserve">
<value>Fire</value>
</data>
<data name="CmbSwitchElement.Items2" xml:space="preserve">
<value>Water</value>
</data>
<data name="CmbSwitchElement.Items3" xml:space="preserve">
<value>Wind</value>
</data>
<data name="CmbSwitchElement.Items4" xml:space="preserve">
<value>Ice</value>
</data>
<data name="CmbSwitchElement.Items5" xml:space="preserve">
<value>Rock</value>
</data>
<data name="CmbSwitchElement.Items6" xml:space="preserve">
<value>Electro</value>
</data>
<data name="CmbSwitchElement.Items7" xml:space="preserve">
<value>Grass</value>
</data>
<data name="LnkSwitchElement.Size" type="System.Drawing.Size, System.Drawing">
<value>90, 17</value>
</data>
<data name="LnkSwitchElement.Text" xml:space="preserve">
<value>SwitchElement</value>
</data>
<data name="BtnGiveAllChar.Text" xml:space="preserve">
<value>Give All Char</value>
</data>
<data name="LblAvatarLevel.Size" type="System.Drawing.Size, System.Drawing">
<value>37, 17</value>
</data>
<data name="LblAvatarLevel.Text" xml:space="preserve">
<value>Level</value>
</data>
<data name="LblAvatarSkillLevelLabel.Size" type="System.Drawing.Size, System.Drawing">
<value>61, 17</value>
</data>
<data name="LblAvatarSkillLevelLabel.Text" xml:space="preserve">
<value>Skill level</value>
</data>
<data name="LblAvatar.Size" type="System.Drawing.Size, System.Drawing">
<value>45, 17</value>
</data>
<data name="LblAvatar.Text" xml:space="preserve">
<value>Avatar</value>
</data>
<data name="LblAvatarConstellation.Size" type="System.Drawing.Size, System.Drawing">
<value>44, 17</value>
</data>
<data name="LblAvatarConstellation.Text" xml:space="preserve">
<value>Const.</value>
</data>
</root>

View File

@@ -0,0 +1,966 @@
<?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="GrpSetConstellation.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>None</value>
</data>
<assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="LnkSetAllConst.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="LnkSetAllConst.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="LnkSetAllConst.Location" type="System.Drawing.Point, System.Drawing">
<value>198, 24</value>
</data>
<data name="LnkSetAllConst.Size" type="System.Drawing.Size, System.Drawing">
<value>80, 17</value>
</data>
<data name="LnkSetAllConst.TabIndex" type="System.Int32, mscorlib">
<value>2</value>
</data>
<data name="LnkSetAllConst.Text" xml:space="preserve">
<value>设置所有角色</value>
</data>
<data name="&gt;&gt;LnkSetAllConst.Name" xml:space="preserve">
<value>LnkSetAllConst</value>
</data>
<data name="&gt;&gt;LnkSetAllConst.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;LnkSetAllConst.Parent" xml:space="preserve">
<value>GrpSetConstellation</value>
</data>
<data name="&gt;&gt;LnkSetAllConst.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="LnkSetConst.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="LnkSetConst.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="LnkSetConst.Location" type="System.Drawing.Point, System.Drawing">
<value>112, 24</value>
</data>
<data name="LnkSetConst.Size" type="System.Drawing.Size, System.Drawing">
<value>80, 17</value>
</data>
<data name="LnkSetConst.TabIndex" type="System.Int32, mscorlib">
<value>1</value>
</data>
<data name="LnkSetConst.Text" xml:space="preserve">
<value>设置当前角色</value>
</data>
<data name="&gt;&gt;LnkSetConst.Name" xml:space="preserve">
<value>LnkSetConst</value>
</data>
<data name="&gt;&gt;LnkSetConst.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;LnkSetConst.Parent" xml:space="preserve">
<value>GrpSetConstellation</value>
</data>
<data name="&gt;&gt;LnkSetConst.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="NUDSetConstellation.Location" type="System.Drawing.Point, System.Drawing">
<value>44, 22</value>
</data>
<data name="NUDSetConstellation.Size" type="System.Drawing.Size, System.Drawing">
<value>62, 23</value>
</data>
<data name="NUDSetConstellation.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
</data>
<data name="&gt;&gt;NUDSetConstellation.Name" xml:space="preserve">
<value>NUDSetConstellation</value>
</data>
<data name="&gt;&gt;NUDSetConstellation.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;NUDSetConstellation.Parent" xml:space="preserve">
<value>GrpSetConstellation</value>
</data>
<data name="&gt;&gt;NUDSetConstellation.ZOrder" xml:space="preserve">
<value>2</value>
</data>
<data name="GrpSetConstellation.Location" type="System.Drawing.Point, System.Drawing">
<value>285, 173</value>
</data>
<data name="GrpSetConstellation.Size" type="System.Drawing.Size, System.Drawing">
<value>332, 55</value>
</data>
<data name="GrpSetConstellation.TabIndex" type="System.Int32, mscorlib">
<value>3</value>
</data>
<data name="GrpSetConstellation.Text" xml:space="preserve">
<value>设置命座</value>
</data>
<data name="&gt;&gt;GrpSetConstellation.Name" xml:space="preserve">
<value>GrpSetConstellation</value>
</data>
<data name="&gt;&gt;GrpSetConstellation.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;GrpSetConstellation.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;GrpSetConstellation.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="GrpSetStats.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>None</value>
</data>
<data name="BtnUnlockStat.Enabled" type="System.Boolean, mscorlib">
<value>False</value>
</data>
<data name="BtnUnlockStat.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="BtnUnlockStat.Location" type="System.Drawing.Point, System.Drawing">
<value>174, 67</value>
</data>
<data name="BtnUnlockStat.Size" type="System.Drawing.Size, System.Drawing">
<value>125, 23</value>
</data>
<data name="BtnUnlockStat.TabIndex" type="System.Int32, mscorlib">
<value>5</value>
</data>
<data name="BtnUnlockStat.Text" xml:space="preserve">
<value>解锁</value>
</data>
<data name="&gt;&gt;BtnUnlockStat.Name" xml:space="preserve">
<value>BtnUnlockStat</value>
</data>
<data name="&gt;&gt;BtnUnlockStat.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;BtnUnlockStat.Parent" xml:space="preserve">
<value>GrpSetStats</value>
</data>
<data name="&gt;&gt;BtnUnlockStat.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="BtnLockStat.Enabled" type="System.Boolean, mscorlib">
<value>False</value>
</data>
<data name="BtnLockStat.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="BtnLockStat.Location" type="System.Drawing.Point, System.Drawing">
<value>43, 67</value>
</data>
<data name="BtnLockStat.Size" type="System.Drawing.Size, System.Drawing">
<value>125, 23</value>
</data>
<data name="BtnLockStat.TabIndex" type="System.Int32, mscorlib">
<value>4</value>
</data>
<data name="BtnLockStat.Text" xml:space="preserve">
<value>锁定</value>
</data>
<data name="&gt;&gt;BtnLockStat.Name" xml:space="preserve">
<value>BtnLockStat</value>
</data>
<data name="&gt;&gt;BtnLockStat.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;BtnLockStat.Parent" xml:space="preserve">
<value>GrpSetStats</value>
</data>
<data name="&gt;&gt;BtnLockStat.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="LblStatTip.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="LblStatTip.Location" type="System.Drawing.Point, System.Drawing">
<value>40, 16</value>
</data>
<data name="LblStatTip.Size" type="System.Drawing.Size, System.Drawing">
<value>286, 17</value>
</data>
<data name="LblStatTip.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
</data>
<data name="LblStatTip.Text" xml:space="preserve">
<value>提示</value>
</data>
<data name="&gt;&gt;LblStatTip.Name" xml:space="preserve">
<value>LblStatTip</value>
</data>
<data name="&gt;&gt;LblStatTip.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;LblStatTip.Parent" xml:space="preserve">
<value>GrpSetStats</value>
</data>
<data name="&gt;&gt;LblStatTip.ZOrder" xml:space="preserve">
<value>2</value>
</data>
<data name="LblStatPercent.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="LblStatPercent.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="LblStatPercent.Location" type="System.Drawing.Point, System.Drawing">
<value>283, 39</value>
</data>
<data name="LblStatPercent.Size" type="System.Drawing.Size, System.Drawing">
<value>19, 17</value>
</data>
<data name="LblStatPercent.TabIndex" type="System.Int32, mscorlib">
<value>3</value>
</data>
<data name="LblStatPercent.Text" xml:space="preserve">
<value>%</value>
</data>
<data name="LblStatPercent.Visible" type="System.Boolean, mscorlib">
<value>False</value>
</data>
<data name="&gt;&gt;LblStatPercent.Name" xml:space="preserve">
<value>LblStatPercent</value>
</data>
<data name="&gt;&gt;LblStatPercent.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;LblStatPercent.Parent" xml:space="preserve">
<value>GrpSetStats</value>
</data>
<data name="&gt;&gt;LblStatPercent.ZOrder" xml:space="preserve">
<value>3</value>
</data>
<data name="NUDStat.Location" type="System.Drawing.Point, System.Drawing">
<value>207, 37</value>
</data>
<data name="NUDStat.Size" type="System.Drawing.Size, System.Drawing">
<value>70, 23</value>
</data>
<data name="NUDStat.TabIndex" type="System.Int32, mscorlib">
<value>2</value>
</data>
<data name="&gt;&gt;NUDStat.Name" xml:space="preserve">
<value>NUDStat</value>
</data>
<data name="&gt;&gt;NUDStat.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;NUDStat.Parent" xml:space="preserve">
<value>GrpSetStats</value>
</data>
<data name="&gt;&gt;NUDStat.ZOrder" xml:space="preserve">
<value>4</value>
</data>
<data name="CmbStat.Location" type="System.Drawing.Point, System.Drawing">
<value>43, 36</value>
</data>
<data name="CmbStat.Size" type="System.Drawing.Size, System.Drawing">
<value>158, 25</value>
</data>
<data name="CmbStat.TabIndex" type="System.Int32, mscorlib">
<value>1</value>
</data>
<data name="&gt;&gt;CmbStat.Name" xml:space="preserve">
<value>CmbStat</value>
</data>
<data name="&gt;&gt;CmbStat.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;CmbStat.Parent" xml:space="preserve">
<value>GrpSetStats</value>
</data>
<data name="&gt;&gt;CmbStat.ZOrder" xml:space="preserve">
<value>5</value>
</data>
<data name="GrpSetStats.Location" type="System.Drawing.Point, System.Drawing">
<value>285, 10</value>
</data>
<data name="GrpSetStats.Size" type="System.Drawing.Size, System.Drawing">
<value>332, 96</value>
</data>
<data name="GrpSetStats.TabIndex" type="System.Int32, mscorlib">
<value>1</value>
</data>
<data name="GrpSetStats.Text" xml:space="preserve">
<value>角色属性</value>
</data>
<data name="&gt;&gt;GrpSetStats.Name" xml:space="preserve">
<value>GrpSetStats</value>
</data>
<data name="&gt;&gt;GrpSetStats.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;GrpSetStats.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;GrpSetStats.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="GrpTalentLevel.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>None</value>
</data>
<data name="LnkTalentAll.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="LnkTalentAll.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="LnkTalentAll.Location" type="System.Drawing.Point, System.Drawing">
<value>112, 24</value>
</data>
<data name="LnkTalentAll.Size" type="System.Drawing.Size, System.Drawing">
<value>32, 17</value>
</data>
<data name="LnkTalentAll.TabIndex" type="System.Int32, mscorlib">
<value>1</value>
</data>
<data name="LnkTalentAll.Text" xml:space="preserve">
<value>全部</value>
</data>
<data name="&gt;&gt;LnkTalentAll.Name" xml:space="preserve">
<value>LnkTalentAll</value>
</data>
<data name="&gt;&gt;LnkTalentAll.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;LnkTalentAll.Parent" xml:space="preserve">
<value>GrpTalentLevel</value>
</data>
<data name="&gt;&gt;LnkTalentAll.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="LnkTalentE.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="LnkTalentE.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="LnkTalentE.Location" type="System.Drawing.Point, System.Drawing">
<value>260, 24</value>
</data>
<data name="LnkTalentE.Size" type="System.Drawing.Size, System.Drawing">
<value>39, 17</value>
</data>
<data name="LnkTalentE.TabIndex" type="System.Int32, mscorlib">
<value>4</value>
</data>
<data name="LnkTalentE.Text" xml:space="preserve">
<value>E技能</value>
</data>
<data name="&gt;&gt;LnkTalentE.Name" xml:space="preserve">
<value>LnkTalentE</value>
</data>
<data name="&gt;&gt;LnkTalentE.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;LnkTalentE.Parent" xml:space="preserve">
<value>GrpTalentLevel</value>
</data>
<data name="&gt;&gt;LnkTalentE.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="LnkTalentQ.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="LnkTalentQ.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="LnkTalentQ.Location" type="System.Drawing.Point, System.Drawing">
<value>212, 24</value>
</data>
<data name="LnkTalentQ.Size" type="System.Drawing.Size, System.Drawing">
<value>42, 17</value>
</data>
<data name="LnkTalentQ.TabIndex" type="System.Int32, mscorlib">
<value>3</value>
</data>
<data name="LnkTalentQ.Text" xml:space="preserve">
<value>Q技能</value>
</data>
<data name="&gt;&gt;LnkTalentQ.Name" xml:space="preserve">
<value>LnkTalentQ</value>
</data>
<data name="&gt;&gt;LnkTalentQ.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;LnkTalentQ.Parent" xml:space="preserve">
<value>GrpTalentLevel</value>
</data>
<data name="&gt;&gt;LnkTalentQ.ZOrder" xml:space="preserve">
<value>2</value>
</data>
<data name="LnkTalentNormalATK.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="LnkTalentNormalATK.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="LnkTalentNormalATK.Location" type="System.Drawing.Point, System.Drawing">
<value>150, 24</value>
</data>
<data name="LnkTalentNormalATK.Size" type="System.Drawing.Size, System.Drawing">
<value>56, 17</value>
</data>
<data name="LnkTalentNormalATK.TabIndex" type="System.Int32, mscorlib">
<value>2</value>
</data>
<data name="LnkTalentNormalATK.Text" xml:space="preserve">
<value>普通攻击</value>
</data>
<data name="&gt;&gt;LnkTalentNormalATK.Name" xml:space="preserve">
<value>LnkTalentNormalATK</value>
</data>
<data name="&gt;&gt;LnkTalentNormalATK.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;LnkTalentNormalATK.Parent" xml:space="preserve">
<value>GrpTalentLevel</value>
</data>
<data name="&gt;&gt;LnkTalentNormalATK.ZOrder" xml:space="preserve">
<value>3</value>
</data>
<data name="NUDTalentLevel.Location" type="System.Drawing.Point, System.Drawing">
<value>44, 22</value>
</data>
<data name="NUDTalentLevel.Size" type="System.Drawing.Size, System.Drawing">
<value>62, 23</value>
</data>
<data name="NUDTalentLevel.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
</data>
<data name="&gt;&gt;NUDTalentLevel.Name" xml:space="preserve">
<value>NUDTalentLevel</value>
</data>
<data name="&gt;&gt;NUDTalentLevel.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;NUDTalentLevel.Parent" xml:space="preserve">
<value>GrpTalentLevel</value>
</data>
<data name="&gt;&gt;NUDTalentLevel.ZOrder" xml:space="preserve">
<value>4</value>
</data>
<data name="GrpTalentLevel.Location" type="System.Drawing.Point, System.Drawing">
<value>285, 112</value>
</data>
<data name="GrpTalentLevel.Size" type="System.Drawing.Size, System.Drawing">
<value>332, 55</value>
</data>
<data name="GrpTalentLevel.TabIndex" type="System.Int32, mscorlib">
<value>2</value>
</data>
<data name="GrpTalentLevel.Text" xml:space="preserve">
<value>技能等级</value>
</data>
<data name="&gt;&gt;GrpTalentLevel.Name" xml:space="preserve">
<value>GrpTalentLevel</value>
</data>
<data name="&gt;&gt;GrpTalentLevel.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;GrpTalentLevel.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;GrpTalentLevel.ZOrder" xml:space="preserve">
<value>2</value>
</data>
<data name="GrpGiveAvatar.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>None</value>
</data>
<data name="CmbSwitchElement.Items" xml:space="preserve">
<value>无</value>
</data>
<data name="CmbSwitchElement.Items1" xml:space="preserve">
<value>火</value>
</data>
<data name="CmbSwitchElement.Items2" xml:space="preserve">
<value>水</value>
</data>
<data name="CmbSwitchElement.Items3" xml:space="preserve">
<value>风</value>
</data>
<data name="CmbSwitchElement.Items4" xml:space="preserve">
<value>冰</value>
</data>
<data name="CmbSwitchElement.Items5" xml:space="preserve">
<value>岩</value>
</data>
<data name="CmbSwitchElement.Items6" xml:space="preserve">
<value>雷</value>
</data>
<data name="CmbSwitchElement.Items7" xml:space="preserve">
<value>草</value>
</data>
<data name="CmbSwitchElement.Location" type="System.Drawing.Point, System.Drawing">
<value>112, 187</value>
</data>
<data name="CmbSwitchElement.Size" type="System.Drawing.Size, System.Drawing">
<value>87, 25</value>
</data>
<data name="CmbSwitchElement.TabIndex" type="System.Int32, mscorlib">
<value>11</value>
</data>
<data name="&gt;&gt;CmbSwitchElement.Name" xml:space="preserve">
<value>CmbSwitchElement</value>
</data>
<data name="&gt;&gt;CmbSwitchElement.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;CmbSwitchElement.Parent" xml:space="preserve">
<value>GrpGiveAvatar</value>
</data>
<data name="&gt;&gt;CmbSwitchElement.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="LnkSwitchElement.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="LnkSwitchElement.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="LnkSwitchElement.Location" type="System.Drawing.Point, System.Drawing">
<value>16, 191</value>
</data>
<data name="LnkSwitchElement.Size" type="System.Drawing.Size, System.Drawing">
<value>80, 17</value>
</data>
<data name="LnkSwitchElement.TabIndex" type="System.Int32, mscorlib">
<value>10</value>
</data>
<data name="LnkSwitchElement.Text" xml:space="preserve">
<value>切换主角元素</value>
</data>
<data name="&gt;&gt;LnkSwitchElement.Name" xml:space="preserve">
<value>LnkSwitchElement</value>
</data>
<data name="&gt;&gt;LnkSwitchElement.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;LnkSwitchElement.Parent" xml:space="preserve">
<value>GrpGiveAvatar</value>
</data>
<data name="&gt;&gt;LnkSwitchElement.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="CmbAvatar.Location" type="System.Drawing.Point, System.Drawing">
<value>89, 22</value>
</data>
<data name="CmbAvatar.Size" type="System.Drawing.Size, System.Drawing">
<value>110, 25</value>
</data>
<data name="CmbAvatar.TabIndex" type="System.Int32, mscorlib">
<value>1</value>
</data>
<data name="&gt;&gt;CmbAvatar.Name" xml:space="preserve">
<value>CmbAvatar</value>
</data>
<data name="&gt;&gt;CmbAvatar.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;CmbAvatar.Parent" xml:space="preserve">
<value>GrpGiveAvatar</value>
</data>
<data name="&gt;&gt;CmbAvatar.ZOrder" xml:space="preserve">
<value>2</value>
</data>
<data name="LblAvatarSkillLevelTip.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="LblAvatarSkillLevelTip.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="LblAvatarSkillLevelTip.Location" type="System.Drawing.Point, System.Drawing">
<value>201, 113</value>
</data>
<data name="LblAvatarSkillLevelTip.Size" type="System.Drawing.Size, System.Drawing">
<value>46, 17</value>
</data>
<data name="LblAvatarSkillLevelTip.TabIndex" type="System.Int32, mscorlib">
<value>8</value>
</data>
<data name="LblAvatarSkillLevelTip.Text" xml:space="preserve">
<value>*v1.4.1</value>
</data>
<data name="&gt;&gt;LblAvatarSkillLevelTip.Name" xml:space="preserve">
<value>LblAvatarSkillLevelTip</value>
</data>
<data name="&gt;&gt;LblAvatarSkillLevelTip.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;LblAvatarSkillLevelTip.Parent" xml:space="preserve">
<value>GrpGiveAvatar</value>
</data>
<data name="&gt;&gt;LblAvatarSkillLevelTip.ZOrder" xml:space="preserve">
<value>3</value>
</data>
<data name="NUDAvatarLevel.Location" type="System.Drawing.Point, System.Drawing">
<value>89, 53</value>
</data>
<data name="NUDAvatarLevel.Size" type="System.Drawing.Size, System.Drawing">
<value>110, 23</value>
</data>
<data name="NUDAvatarLevel.TabIndex" type="System.Int32, mscorlib">
<value>3</value>
</data>
<data name="&gt;&gt;NUDAvatarLevel.Name" xml:space="preserve">
<value>NUDAvatarLevel</value>
</data>
<data name="&gt;&gt;NUDAvatarLevel.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;NUDAvatarLevel.Parent" xml:space="preserve">
<value>GrpGiveAvatar</value>
</data>
<data name="&gt;&gt;NUDAvatarLevel.ZOrder" xml:space="preserve">
<value>4</value>
</data>
<data name="BtnGiveAllChar.Font" type="System.Drawing.Font, System.Drawing">
<value>Microsoft YaHei UI, 10pt</value>
</data>
<data name="BtnGiveAllChar.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="BtnGiveAllChar.Location" type="System.Drawing.Point, System.Drawing">
<value>49, 140</value>
</data>
<data name="BtnGiveAllChar.Size" type="System.Drawing.Size, System.Drawing">
<value>150, 30</value>
</data>
<data name="BtnGiveAllChar.TabIndex" type="System.Int32, mscorlib">
<value>9</value>
</data>
<data name="BtnGiveAllChar.Text" xml:space="preserve">
<value>一键获得所有角色</value>
</data>
<data name="&gt;&gt;BtnGiveAllChar.Name" xml:space="preserve">
<value>BtnGiveAllChar</value>
</data>
<data name="&gt;&gt;BtnGiveAllChar.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;BtnGiveAllChar.Parent" xml:space="preserve">
<value>GrpGiveAvatar</value>
</data>
<data name="&gt;&gt;BtnGiveAllChar.ZOrder" xml:space="preserve">
<value>5</value>
</data>
<data name="LblAvatarLevel.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="LblAvatarLevel.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="LblAvatarLevel.Location" type="System.Drawing.Point, System.Drawing">
<value>27, 55</value>
</data>
<data name="LblAvatarLevel.Size" type="System.Drawing.Size, System.Drawing">
<value>32, 17</value>
</data>
<data name="LblAvatarLevel.TabIndex" type="System.Int32, mscorlib">
<value>2</value>
</data>
<data name="LblAvatarLevel.Text" xml:space="preserve">
<value>等级</value>
</data>
<data name="&gt;&gt;LblAvatarLevel.Name" xml:space="preserve">
<value>LblAvatarLevel</value>
</data>
<data name="&gt;&gt;LblAvatarLevel.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;LblAvatarLevel.Parent" xml:space="preserve">
<value>GrpGiveAvatar</value>
</data>
<data name="&gt;&gt;LblAvatarLevel.ZOrder" xml:space="preserve">
<value>6</value>
</data>
<data name="LblAvatarSkillLevelLabel.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="LblAvatarSkillLevelLabel.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="LblAvatarSkillLevelLabel.Location" type="System.Drawing.Point, System.Drawing">
<value>27, 113</value>
</data>
<data name="LblAvatarSkillLevelLabel.Size" type="System.Drawing.Size, System.Drawing">
<value>56, 17</value>
</data>
<data name="LblAvatarSkillLevelLabel.TabIndex" type="System.Int32, mscorlib">
<value>6</value>
</data>
<data name="LblAvatarSkillLevelLabel.Text" xml:space="preserve">
<value>技能等级</value>
</data>
<data name="&gt;&gt;LblAvatarSkillLevelLabel.Name" xml:space="preserve">
<value>LblAvatarSkillLevelLabel</value>
</data>
<data name="&gt;&gt;LblAvatarSkillLevelLabel.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;LblAvatarSkillLevelLabel.Parent" xml:space="preserve">
<value>GrpGiveAvatar</value>
</data>
<data name="&gt;&gt;LblAvatarSkillLevelLabel.ZOrder" xml:space="preserve">
<value>7</value>
</data>
<data name="LblAvatar.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="LblAvatar.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="LblAvatar.Location" type="System.Drawing.Point, System.Drawing">
<value>27, 25</value>
</data>
<data name="LblAvatar.Size" type="System.Drawing.Size, System.Drawing">
<value>32, 17</value>
</data>
<data name="LblAvatar.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
</data>
<data name="LblAvatar.Text" xml:space="preserve">
<value>角色</value>
</data>
<data name="&gt;&gt;LblAvatar.Name" xml:space="preserve">
<value>LblAvatar</value>
</data>
<data name="&gt;&gt;LblAvatar.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;LblAvatar.Parent" xml:space="preserve">
<value>GrpGiveAvatar</value>
</data>
<data name="&gt;&gt;LblAvatar.ZOrder" xml:space="preserve">
<value>8</value>
</data>
<data name="LblAvatarConstellation.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="LblAvatarConstellation.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="LblAvatarConstellation.Location" type="System.Drawing.Point, System.Drawing">
<value>27, 84</value>
</data>
<data name="LblAvatarConstellation.Size" type="System.Drawing.Size, System.Drawing">
<value>32, 17</value>
</data>
<data name="LblAvatarConstellation.TabIndex" type="System.Int32, mscorlib">
<value>4</value>
</data>
<data name="LblAvatarConstellation.Text" xml:space="preserve">
<value>命座</value>
</data>
<data name="&gt;&gt;LblAvatarConstellation.Name" xml:space="preserve">
<value>LblAvatarConstellation</value>
</data>
<data name="&gt;&gt;LblAvatarConstellation.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;LblAvatarConstellation.Parent" xml:space="preserve">
<value>GrpGiveAvatar</value>
</data>
<data name="&gt;&gt;LblAvatarConstellation.ZOrder" xml:space="preserve">
<value>9</value>
</data>
<data name="NUDAvatarConstellation.Location" type="System.Drawing.Point, System.Drawing">
<value>89, 82</value>
</data>
<data name="NUDAvatarConstellation.Size" type="System.Drawing.Size, System.Drawing">
<value>110, 23</value>
</data>
<data name="NUDAvatarConstellation.TabIndex" type="System.Int32, mscorlib">
<value>5</value>
</data>
<data name="&gt;&gt;NUDAvatarConstellation.Name" xml:space="preserve">
<value>NUDAvatarConstellation</value>
</data>
<data name="&gt;&gt;NUDAvatarConstellation.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;NUDAvatarConstellation.Parent" xml:space="preserve">
<value>GrpGiveAvatar</value>
</data>
<data name="&gt;&gt;NUDAvatarConstellation.ZOrder" xml:space="preserve">
<value>10</value>
</data>
<data name="NUDAvatarSkillLevel.Location" type="System.Drawing.Point, System.Drawing">
<value>89, 111</value>
</data>
<data name="NUDAvatarSkillLevel.Size" type="System.Drawing.Size, System.Drawing">
<value>110, 23</value>
</data>
<data name="NUDAvatarSkillLevel.TabIndex" type="System.Int32, mscorlib">
<value>7</value>
</data>
<data name="&gt;&gt;NUDAvatarSkillLevel.Name" xml:space="preserve">
<value>NUDAvatarSkillLevel</value>
</data>
<data name="&gt;&gt;NUDAvatarSkillLevel.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;NUDAvatarSkillLevel.Parent" xml:space="preserve">
<value>GrpGiveAvatar</value>
</data>
<data name="&gt;&gt;NUDAvatarSkillLevel.ZOrder" xml:space="preserve">
<value>11</value>
</data>
<data name="GrpGiveAvatar.Location" type="System.Drawing.Point, System.Drawing">
<value>29, 10</value>
</data>
<data name="GrpGiveAvatar.Size" type="System.Drawing.Size, System.Drawing">
<value>250, 218</value>
</data>
<data name="GrpGiveAvatar.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
</data>
<data name="GrpGiveAvatar.Text" xml:space="preserve">
<value>获取角色</value>
</data>
<data name="&gt;&gt;GrpGiveAvatar.Name" xml:space="preserve">
<value>GrpGiveAvatar</value>
</data>
<data name="&gt;&gt;GrpGiveAvatar.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;GrpGiveAvatar.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;GrpGiveAvatar.ZOrder" xml:space="preserve">
<value>3</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>PageAvatar</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,280 @@
<?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="LnkSetAllConst.Location" type="System.Drawing.Point, System.Drawing">
<value>178, 24</value>
</data>
<data name="LnkSetAllConst.Size" type="System.Drawing.Size, System.Drawing">
<value>28, 17</value>
</data>
<data name="LnkSetAllConst.Text" xml:space="preserve">
<value>все</value>
</data>
<data name="LnkSetConst.Size" type="System.Drawing.Size, System.Drawing">
<value>60, 17</value>
</data>
<data name="LnkSetConst.Text" xml:space="preserve">
<value>текущий</value>
</data>
<data name="GrpSetConstellation.Text" xml:space="preserve">
<value>Установить созвездие</value>
</data>
<data name="GrpSetStats.Text" xml:space="preserve">
<value>Статистика</value>
</data>
<data name="BtnUnlockStat.Size" type="System.Drawing.Size, System.Drawing">
<value>140, 23</value>
</data>
<data name="BtnUnlockStat.Text" xml:space="preserve">
<value>Разморозить статы</value>
</data>
<data name="BtnLockStat.Text" xml:space="preserve">
<value>Заморозить статы</value>
</data>
<data name="LblStatTip.Text" xml:space="preserve">
<value>Подсказка</value>
</data>
<data name="GrpTalentLevel.Text" xml:space="preserve">
<value>Уровень таланта</value>
</data>
<data name="LnkTalentAll.Size" type="System.Drawing.Size, System.Drawing">
<value>28, 17</value>
</data>
<data name="LnkTalentAll.Text" xml:space="preserve">
<value>все</value>
</data>
<data name="LnkTalentE.Location" type="System.Drawing.Point, System.Drawing">
<value>281, 24</value>
</data>
<data name="LnkTalentE.Size" type="System.Drawing.Size, System.Drawing">
<value>15, 17</value>
</data>
<data name="LnkTalentE.Text" xml:space="preserve">
<value>E</value>
</data>
<data name="LnkTalentQ.Location" type="System.Drawing.Point, System.Drawing">
<value>257, 24</value>
</data>
<data name="LnkTalentQ.Size" type="System.Drawing.Size, System.Drawing">
<value>18, 17</value>
</data>
<data name="LnkTalentQ.Text" xml:space="preserve">
<value>Q</value>
</data>
<data name="LnkTalentNormalATK.Size" type="System.Drawing.Size, System.Drawing">
<value>101, 17</value>
</data>
<data name="LnkTalentNormalATK.Text" xml:space="preserve">
<value>Обычная атака</value>
</data>
<data name="GrpGiveAvatar.Text" xml:space="preserve">
<value>Выдать персонажа</value>
</data>
<data name="CmbSwitchElement.Items" xml:space="preserve">
<value>Без элемента</value>
</data>
<data name="CmbSwitchElement.Items1" xml:space="preserve">
<value>Пиро</value>
</data>
<data name="CmbSwitchElement.Items2" xml:space="preserve">
<value>Гидро</value>
</data>
<data name="CmbSwitchElement.Items3" xml:space="preserve">
<value>Анемо</value>
</data>
<data name="CmbSwitchElement.Items4" xml:space="preserve">
<value>Крио</value>
</data>
<data name="CmbSwitchElement.Items5" xml:space="preserve">
<value>Гео</value>
</data>
<data name="CmbSwitchElement.Items6" xml:space="preserve">
<value>Электро</value>
</data>
<data name="CmbSwitchElement.Items7" xml:space="preserve">
<value>Дендро</value>
</data>
<data name="LnkSwitchElement.Size" type="System.Drawing.Size, System.Drawing">
<value>90, 17</value>
</data>
<data name="LnkSwitchElement.Text" xml:space="preserve">
<value>SwitchElement</value>
</data>
<data name="CmbAvatar.Location" type="System.Drawing.Point, System.Drawing">
<value>104, 16</value>
</data>
<data name="LblAvatarSkillLevelTip.Location" type="System.Drawing.Point, System.Drawing">
<value>143, 107</value>
</data>
<data name="NUDAvatarLevel.Location" type="System.Drawing.Point, System.Drawing">
<value>104, 47</value>
</data>
<data name="BtnGiveAllChar.Location" type="System.Drawing.Point, System.Drawing">
<value>25, 151</value>
</data>
<data name="BtnGiveAllChar.Size" type="System.Drawing.Size, System.Drawing">
<value>200, 30</value>
</data>
<data name="BtnGiveAllChar.Text" xml:space="preserve">
<value> Дать всех персонажей</value>
</data>
<data name="LblAvatarLevel.Location" type="System.Drawing.Point, System.Drawing">
<value>27, 49</value>
</data>
<data name="LblAvatarLevel.Size" type="System.Drawing.Size, System.Drawing">
<value>60, 17</value>
</data>
<data name="LblAvatarLevel.Text" xml:space="preserve">
<value>Уровень</value>
</data>
<data name="LblAvatarSkillLevelLabel.Location" type="System.Drawing.Point, System.Drawing">
<value>27, 107</value>
</data>
<data name="LblAvatarSkillLevelLabel.Size" type="System.Drawing.Size, System.Drawing">
<value>110, 17</value>
</data>
<data name="LblAvatarSkillLevelLabel.Text" xml:space="preserve">
<value>Уровень таланта</value>
</data>
<data name="LblAvatar.Location" type="System.Drawing.Point, System.Drawing">
<value>27, 19</value>
</data>
<data name="LblAvatar.Size" type="System.Drawing.Size, System.Drawing">
<value>71, 17</value>
</data>
<data name="LblAvatar.Text" xml:space="preserve">
<value>Персонаж</value>
</data>
<data name="LblAvatarConstellation.Location" type="System.Drawing.Point, System.Drawing">
<value>27, 78</value>
</data>
<data name="LblAvatarConstellation.Size" type="System.Drawing.Size, System.Drawing">
<value>72, 17</value>
</data>
<data name="LblAvatarConstellation.Text" xml:space="preserve">
<value>Созвездия</value>
</data>
<data name="NUDAvatarConstellation.Location" type="System.Drawing.Point, System.Drawing">
<value>104, 76</value>
</data>
<data name="NUDAvatarSkillLevel.Location" type="System.Drawing.Point, System.Drawing">
<value>30, 126</value>
</data>
</root>

View File

@@ -0,0 +1,165 @@
<?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="LnkSetAllConst.Text" xml:space="preserve">
<value>設置所有角色</value>
</data>
<data name="LnkSetConst.Text" xml:space="preserve">
<value>設置當前角色</value>
</data>
<data name="GrpSetConstellation.Text" xml:space="preserve">
<value>設置命座</value>
</data>
<data name="GrpSetStats.Text" xml:space="preserve">
<value>角色屬性</value>
</data>
<data name="BtnUnlockStat.Text" xml:space="preserve">
<value>解鎖</value>
</data>
<data name="BtnLockStat.Text" xml:space="preserve">
<value>鎖定</value>
</data>
<data name="GrpTalentLevel.Text" xml:space="preserve">
<value>技能等級</value>
</data>
<data name="LnkTalentNormalATK.Text" xml:space="preserve">
<value>普通攻擊</value>
</data>
<data name="GrpGiveAvatar.Text" xml:space="preserve">
<value>獲取角色</value>
</data>
<data name="CmbSwitchElement.Items" xml:space="preserve">
<value>無</value>
</data>
<data name="CmbSwitchElement.Items3" xml:space="preserve">
<value>風</value>
</data>
<data name="LnkSwitchElement.Text" xml:space="preserve">
<value>切換主角元素</value>
</data>
<data name="BtnGiveAllChar.Text" xml:space="preserve">
<value>一鍵獲得所有角色</value>
</data>
<data name="LblAvatarLevel.Text" xml:space="preserve">
<value>等級</value>
</data>
<data name="LblAvatarSkillLevelLabel.Text" xml:space="preserve">
<value>技能等級</value>
</data>
</root>

View File

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

View File

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

View File

@@ -0,0 +1,203 @@
namespace GrasscutterTools.Pages
{
partial class PageGiveItem
{
/// <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(PageGiveItem));
this.LblClearGiveItemLogs = new System.Windows.Forms.Label();
this.BtnSaveGiveItemLog = new System.Windows.Forms.Button();
this.BtnRemoveGiveItemLog = new System.Windows.Forms.Button();
this.GrpGiveItemRecord = new System.Windows.Forms.GroupBox();
this.ListGiveItemLogs = new System.Windows.Forms.ListBox();
this.ChkDrop = new System.Windows.Forms.CheckBox();
this.TxtGameItemFilter = new System.Windows.Forms.TextBox();
this.ListGameItems = new System.Windows.Forms.ListBox();
this.LblGameItemAmount = new System.Windows.Forms.Label();
this.LblGameItemLevel = new System.Windows.Forms.Label();
this.NUDGameItemAmout = new System.Windows.Forms.NumericUpDown();
this.NUDGameItemLevel = new System.Windows.Forms.NumericUpDown();
this.LblGiveCommandDescription = new System.Windows.Forms.Label();
this.GrpGiveItemRecord.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.NUDGameItemAmout)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.NUDGameItemLevel)).BeginInit();
this.SuspendLayout();
//
// LblClearGiveItemLogs
//
resources.ApplyResources(this.LblClearGiveItemLogs, "LblClearGiveItemLogs");
this.LblClearGiveItemLogs.Cursor = System.Windows.Forms.Cursors.Hand;
this.LblClearGiveItemLogs.Name = "LblClearGiveItemLogs";
this.LblClearGiveItemLogs.Click += new System.EventHandler(this.LblClearGiveItemLogs_Click);
//
// BtnSaveGiveItemLog
//
resources.ApplyResources(this.BtnSaveGiveItemLog, "BtnSaveGiveItemLog");
this.BtnSaveGiveItemLog.Name = "BtnSaveGiveItemLog";
this.BtnSaveGiveItemLog.UseVisualStyleBackColor = true;
this.BtnSaveGiveItemLog.Click += new System.EventHandler(this.BtnSaveGiveItemLog_Click);
//
// BtnRemoveGiveItemLog
//
resources.ApplyResources(this.BtnRemoveGiveItemLog, "BtnRemoveGiveItemLog");
this.BtnRemoveGiveItemLog.Name = "BtnRemoveGiveItemLog";
this.BtnRemoveGiveItemLog.UseVisualStyleBackColor = true;
this.BtnRemoveGiveItemLog.Click += new System.EventHandler(this.BtnRemoveGiveItemLog_Click);
//
// GrpGiveItemRecord
//
resources.ApplyResources(this.GrpGiveItemRecord, "GrpGiveItemRecord");
this.GrpGiveItemRecord.Controls.Add(this.ListGiveItemLogs);
this.GrpGiveItemRecord.Name = "GrpGiveItemRecord";
this.GrpGiveItemRecord.TabStop = false;
//
// ListGiveItemLogs
//
resources.ApplyResources(this.ListGiveItemLogs, "ListGiveItemLogs");
this.ListGiveItemLogs.FormattingEnabled = true;
this.ListGiveItemLogs.Name = "ListGiveItemLogs";
this.ListGiveItemLogs.SelectedIndexChanged += new System.EventHandler(this.ListGiveItemLogs_SelectedIndexChanged);
//
// ChkDrop
//
resources.ApplyResources(this.ChkDrop, "ChkDrop");
this.ChkDrop.Name = "ChkDrop";
this.ChkDrop.UseVisualStyleBackColor = true;
this.ChkDrop.CheckedChanged += new System.EventHandler(this.GiveItemsInputChanged);
//
// TxtGameItemFilter
//
resources.ApplyResources(this.TxtGameItemFilter, "TxtGameItemFilter");
this.TxtGameItemFilter.Name = "TxtGameItemFilter";
this.TxtGameItemFilter.TextChanged += new System.EventHandler(this.TxtGameItemFilter_TextChanged);
//
// ListGameItems
//
resources.ApplyResources(this.ListGameItems, "ListGameItems");
this.ListGameItems.FormattingEnabled = true;
this.ListGameItems.Name = "ListGameItems";
this.ListGameItems.SelectedIndexChanged += new System.EventHandler(this.GiveItemsInputChanged);
//
// LblGameItemAmount
//
resources.ApplyResources(this.LblGameItemAmount, "LblGameItemAmount");
this.LblGameItemAmount.Name = "LblGameItemAmount";
//
// LblGameItemLevel
//
resources.ApplyResources(this.LblGameItemLevel, "LblGameItemLevel");
this.LblGameItemLevel.Name = "LblGameItemLevel";
//
// NUDGameItemAmout
//
resources.ApplyResources(this.NUDGameItemAmout, "NUDGameItemAmout");
this.NUDGameItemAmout.Maximum = new decimal(new int[] {
1000000,
0,
0,
0});
this.NUDGameItemAmout.Minimum = new decimal(new int[] {
1,
0,
0,
0});
this.NUDGameItemAmout.Name = "NUDGameItemAmout";
this.NUDGameItemAmout.Value = new decimal(new int[] {
1,
0,
0,
0});
this.NUDGameItemAmout.ValueChanged += new System.EventHandler(this.GiveItemsInputChanged);
//
// NUDGameItemLevel
//
resources.ApplyResources(this.NUDGameItemLevel, "NUDGameItemLevel");
this.NUDGameItemLevel.Maximum = new decimal(new int[] {
21,
0,
0,
0});
this.NUDGameItemLevel.Minimum = new decimal(new int[] {
1,
0,
0,
0});
this.NUDGameItemLevel.Name = "NUDGameItemLevel";
this.NUDGameItemLevel.Value = new decimal(new int[] {
1,
0,
0,
0});
this.NUDGameItemLevel.ValueChanged += new System.EventHandler(this.GiveItemsInputChanged);
//
// LblGiveCommandDescription
//
resources.ApplyResources(this.LblGiveCommandDescription, "LblGiveCommandDescription");
this.LblGiveCommandDescription.Name = "LblGiveCommandDescription";
//
// PageGiveItem
//
resources.ApplyResources(this, "$this");
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.Controls.Add(this.LblClearGiveItemLogs);
this.Controls.Add(this.BtnSaveGiveItemLog);
this.Controls.Add(this.BtnRemoveGiveItemLog);
this.Controls.Add(this.GrpGiveItemRecord);
this.Controls.Add(this.ChkDrop);
this.Controls.Add(this.TxtGameItemFilter);
this.Controls.Add(this.ListGameItems);
this.Controls.Add(this.LblGameItemAmount);
this.Controls.Add(this.LblGameItemLevel);
this.Controls.Add(this.NUDGameItemAmout);
this.Controls.Add(this.NUDGameItemLevel);
this.Controls.Add(this.LblGiveCommandDescription);
this.Name = "PageGiveItem";
this.GrpGiveItemRecord.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.NUDGameItemAmout)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.NUDGameItemLevel)).EndInit();
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private System.Windows.Forms.Label LblClearGiveItemLogs;
private System.Windows.Forms.Button BtnSaveGiveItemLog;
private System.Windows.Forms.Button BtnRemoveGiveItemLog;
private System.Windows.Forms.GroupBox GrpGiveItemRecord;
private System.Windows.Forms.ListBox ListGiveItemLogs;
private System.Windows.Forms.CheckBox ChkDrop;
private System.Windows.Forms.TextBox TxtGameItemFilter;
private System.Windows.Forms.ListBox ListGameItems;
private System.Windows.Forms.Label LblGameItemAmount;
private System.Windows.Forms.Label LblGameItemLevel;
private System.Windows.Forms.NumericUpDown NUDGameItemAmout;
private System.Windows.Forms.NumericUpDown NUDGameItemLevel;
private System.Windows.Forms.Label LblGiveCommandDescription;
}
}

View File

@@ -0,0 +1,190 @@
/**
* Grasscutter Tools
* Copyright (C) 2022 jie65535
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published
* by the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*
**/
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Windows.Forms;
using GrasscutterTools.Game;
using GrasscutterTools.Properties;
using GrasscutterTools.Utils;
namespace GrasscutterTools.Pages
{
internal partial class PageGiveItem : BasePage
{
public PageGiveItem()
{
InitializeComponent();
if (DesignMode) return;
InitGiveItemRecord();
}
/// <summary>
/// 初始化游戏物品列表
/// </summary>
public override void OnLoad()
{
ListGameItems.Items.Clear();
ListGameItems.Items.AddRange(GameData.Items.Lines);
}
/// <summary>
/// 物品列表过滤器文本改变时触发
/// </summary>
private void TxtGameItemFilter_TextChanged(object sender, EventArgs e)
{
UIUtil.ListBoxFilter(ListGameItems, GameData.Items.Lines, TxtGameItemFilter.Text);
}
/// <summary>
/// 生成获取物品命令
/// </summary>
/// <returns>是否生成成功</returns>
private bool GenGiveItemCommand()
{
var name = ListGameItems.SelectedItem as string;
if (!string.IsNullOrEmpty(name))
{
var id = ItemMap.ToId(name);
if (ChkDrop.Checked)
{
NUDGameItemLevel.Enabled = false;
SetCommand("/drop", $"{id} {NUDGameItemAmout.Value}");
}
else
{
NUDGameItemLevel.Enabled = true;
if (CommandVersion.Check(CommandVersion.V1_2_2))
SetCommand("/give", $"{id} x{NUDGameItemAmout.Value} lv{NUDGameItemLevel.Value}");
else
SetCommand("/give", $"{id} {NUDGameItemAmout.Value} {NUDGameItemLevel.Value}");
}
return true;
}
return false;
}
/// <summary>
/// 获取物品输入改变时触发
/// </summary>
private void GiveItemsInputChanged(object sender, EventArgs e)
{
GenGiveItemCommand();
}
#region -- --
/// <summary>
/// 获取物品记录文件路径
/// </summary>
private readonly string GiveItemCommandsRecordPath = Path.Combine(Application.LocalUserAppDataPath, "GiveItemCommands.txt");
/// <summary>
/// 获取物品记录
/// </summary>
private List<GameCommand> GiveItemCommands;
/// <summary>
/// 初始化获取物品记录
/// </summary>
private void InitGiveItemRecord()
{
if (File.Exists(GiveItemCommandsRecordPath))
{
GiveItemCommands = GameCommand.Parse(File.ReadAllText(GiveItemCommandsRecordPath));
ListGiveItemLogs.Items.AddRange(GiveItemCommands.Select(c => c.Name).ToArray());
}
else
{
GiveItemCommands = new List<GameCommand>();
}
}
/// <summary>
/// 保存获取物品记录
/// </summary>
private void SaveGiveItemRecord()
{
File.WriteAllText(GiveItemCommandsRecordPath, GameCommand.ToString(GiveItemCommands));
}
/// <summary>
/// 获取物品记录列表选中项改变时触发
/// </summary>
private void ListGiveItemLogs_SelectedIndexChanged(object sender, EventArgs e)
{
if (ListGiveItemLogs.SelectedIndex >= 0)
{
BtnRemoveGiveItemLog.Enabled = true;
SetCommand(GiveItemCommands[ListGiveItemLogs.SelectedIndex].Command);
}
else
{
BtnRemoveGiveItemLog.Enabled = false;
}
}
/// <summary>
/// 点击保存记录按钮时触发
/// </summary>
private void BtnSaveGiveItemLog_Click(object sender, EventArgs e)
{
var cmd = new GameCommand($"{ListGameItems.SelectedItem} x{NUDGameItemAmout.Value}", GetCommand());
GiveItemCommands.Add(cmd);
ListGiveItemLogs.Items.Add(cmd.Name);
SaveGiveItemRecord();
}
/// <summary>
/// 点击移除获取物品记录时触发
/// </summary>
private void BtnRemoveGiveItemLog_Click(object sender, EventArgs e)
{
if (ListGiveItemLogs.SelectedIndex >= 0)
{
GiveItemCommands.RemoveAt(ListGiveItemLogs.SelectedIndex);
ListGiveItemLogs.Items.RemoveAt(ListGiveItemLogs.SelectedIndex);
SaveGiveItemRecord();
}
}
/// <summary>
/// 点击清空获取物品记录时触发
/// </summary>
private void LblClearGiveItemLogs_Click(object sender, EventArgs e)
{
if (MessageBox.Show(Resources.AskConfirmDeletion, Resources.Tips, MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
{
GiveItemCommands.Clear();
ListGiveItemLogs.Items.Clear();
SaveGiveItemRecord();
}
}
#endregion -- --
}
}

View File

@@ -0,0 +1,166 @@
<?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="LblClearGiveItemLogs.Size" type="System.Drawing.Size, System.Drawing">
<value>50, 17</value>
</data>
<data name="LblClearGiveItemLogs.Text" xml:space="preserve">
<value>X Clear</value>
</data>
<data name="BtnSaveGiveItemLog.Text" xml:space="preserve">
<value>√ Record</value>
</data>
<data name="BtnRemoveGiveItemLog.Text" xml:space="preserve">
<value>× Delete</value>
</data>
<data name="GrpGiveItemRecord.Text" xml:space="preserve">
<value>Records</value>
</data>
<data name="ChkDrop.Size" type="System.Drawing.Size, System.Drawing">
<value>57, 21</value>
</data>
<data name="ChkDrop.Text" xml:space="preserve">
<value>Drop</value>
</data>
<data name="LblGameItemAmount.Size" type="System.Drawing.Size, System.Drawing">
<value>53, 17</value>
</data>
<data name="LblGameItemAmount.Text" xml:space="preserve">
<value>Amount</value>
</data>
<data name="LblGameItemLevel.Size" type="System.Drawing.Size, System.Drawing">
<value>37, 17</value>
</data>
<data name="LblGameItemLevel.Text" xml:space="preserve">
<value>Level</value>
</data>
<data name="NUDGameItemAmout.Location" type="System.Drawing.Point, System.Drawing">
<value>66, 213</value>
</data>
<data name="NUDGameItemAmout.Size" type="System.Drawing.Size, System.Drawing">
<value>79, 23</value>
</data>
<data name="LblGiveCommandDescription.Size" type="System.Drawing.Size, System.Drawing">
<value>118, 17</value>
</data>
<data name="LblGiveCommandDescription.Text" xml:space="preserve">
<value>Give item to player</value>
</data>
</root>

View File

@@ -0,0 +1,508 @@
<?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="LblClearGiveItemLogs.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Bottom, Left</value>
</data>
<assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="LblClearGiveItemLogs.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="LblClearGiveItemLogs.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="LblClearGiveItemLogs.Location" type="System.Drawing.Point, System.Drawing">
<value>262, 187</value>
</data>
<data name="LblClearGiveItemLogs.Size" type="System.Drawing.Size, System.Drawing">
<value>44, 17</value>
</data>
<data name="LblClearGiveItemLogs.TabIndex" type="System.Int32, mscorlib">
<value>16</value>
</data>
<data name="LblClearGiveItemLogs.Text" xml:space="preserve">
<value>X 清空</value>
</data>
<data name="&gt;&gt;LblClearGiveItemLogs.Name" xml:space="preserve">
<value>LblClearGiveItemLogs</value>
</data>
<data name="&gt;&gt;LblClearGiveItemLogs.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;LblClearGiveItemLogs.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;LblClearGiveItemLogs.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="BtnSaveGiveItemLog.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="BtnSaveGiveItemLog.Location" type="System.Drawing.Point, System.Drawing">
<value>265, 48</value>
</data>
<data name="BtnSaveGiveItemLog.Size" type="System.Drawing.Size, System.Drawing">
<value>75, 23</value>
</data>
<data name="BtnSaveGiveItemLog.TabIndex" type="System.Int32, mscorlib">
<value>2</value>
</data>
<data name="BtnSaveGiveItemLog.Text" xml:space="preserve">
<value>√ 记录</value>
</data>
<data name="&gt;&gt;BtnSaveGiveItemLog.Name" xml:space="preserve">
<value>BtnSaveGiveItemLog</value>
</data>
<data name="&gt;&gt;BtnSaveGiveItemLog.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;BtnSaveGiveItemLog.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;BtnSaveGiveItemLog.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="BtnRemoveGiveItemLog.Enabled" type="System.Boolean, mscorlib">
<value>False</value>
</data>
<data name="BtnRemoveGiveItemLog.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="BtnRemoveGiveItemLog.Location" type="System.Drawing.Point, System.Drawing">
<value>265, 77</value>
</data>
<data name="BtnRemoveGiveItemLog.Size" type="System.Drawing.Size, System.Drawing">
<value>75, 23</value>
</data>
<data name="BtnRemoveGiveItemLog.TabIndex" type="System.Int32, mscorlib">
<value>3</value>
</data>
<data name="BtnRemoveGiveItemLog.Text" xml:space="preserve">
<value>× 删除</value>
</data>
<data name="&gt;&gt;BtnRemoveGiveItemLog.Name" xml:space="preserve">
<value>BtnRemoveGiveItemLog</value>
</data>
<data name="&gt;&gt;BtnRemoveGiveItemLog.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;BtnRemoveGiveItemLog.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;BtnRemoveGiveItemLog.ZOrder" xml:space="preserve">
<value>2</value>
</data>
<data name="GrpGiveItemRecord.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Bottom, Left</value>
</data>
<data name="ListGiveItemLogs.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="ListGiveItemLogs.ItemHeight" type="System.Int32, mscorlib">
<value>17</value>
</data>
<data name="ListGiveItemLogs.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 19</value>
</data>
<data name="ListGiveItemLogs.Size" type="System.Drawing.Size, System.Drawing">
<value>243, 145</value>
</data>
<data name="ListGiveItemLogs.TabIndex" type="System.Int32, mscorlib">
<value>6</value>
</data>
<data name="&gt;&gt;ListGiveItemLogs.Name" xml:space="preserve">
<value>ListGiveItemLogs</value>
</data>
<data name="&gt;&gt;ListGiveItemLogs.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;ListGiveItemLogs.Parent" xml:space="preserve">
<value>GrpGiveItemRecord</value>
</data>
<data name="&gt;&gt;ListGiveItemLogs.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="GrpGiveItemRecord.Location" type="System.Drawing.Point, System.Drawing">
<value>10, 45</value>
</data>
<data name="GrpGiveItemRecord.Size" type="System.Drawing.Size, System.Drawing">
<value>249, 167</value>
</data>
<data name="GrpGiveItemRecord.TabIndex" type="System.Int32, mscorlib">
<value>1</value>
</data>
<data name="GrpGiveItemRecord.Text" xml:space="preserve">
<value>物品记录本</value>
</data>
<data name="&gt;&gt;GrpGiveItemRecord.Name" xml:space="preserve">
<value>GrpGiveItemRecord</value>
</data>
<data name="&gt;&gt;GrpGiveItemRecord.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;GrpGiveItemRecord.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;GrpGiveItemRecord.ZOrder" xml:space="preserve">
<value>3</value>
</data>
<data name="ChkDrop.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Bottom, Left</value>
</data>
<data name="ChkDrop.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="ChkDrop.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="ChkDrop.Location" type="System.Drawing.Point, System.Drawing">
<value>256, 214</value>
</data>
<data name="ChkDrop.Size" type="System.Drawing.Size, System.Drawing">
<value>51, 21</value>
</data>
<data name="ChkDrop.TabIndex" type="System.Int32, mscorlib">
<value>8</value>
</data>
<data name="ChkDrop.Text" xml:space="preserve">
<value>掉落</value>
</data>
<data name="&gt;&gt;ChkDrop.Name" xml:space="preserve">
<value>ChkDrop</value>
</data>
<data name="&gt;&gt;ChkDrop.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;ChkDrop.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;ChkDrop.ZOrder" xml:space="preserve">
<value>4</value>
</data>
<data name="TxtGameItemFilter.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Left, Right</value>
</data>
<data name="TxtGameItemFilter.Location" type="System.Drawing.Point, System.Drawing">
<value>343, 3</value>
</data>
<data name="TxtGameItemFilter.Size" type="System.Drawing.Size, System.Drawing">
<value>300, 23</value>
</data>
<data name="TxtGameItemFilter.TabIndex" type="System.Int32, mscorlib">
<value>9</value>
</data>
<data name="&gt;&gt;TxtGameItemFilter.Name" xml:space="preserve">
<value>TxtGameItemFilter</value>
</data>
<data name="&gt;&gt;TxtGameItemFilter.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;TxtGameItemFilter.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;TxtGameItemFilter.ZOrder" xml:space="preserve">
<value>5</value>
</data>
<data name="ListGameItems.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Bottom, Left, Right</value>
</data>
<data name="ListGameItems.ItemHeight" type="System.Int32, mscorlib">
<value>17</value>
</data>
<data name="ListGameItems.Location" type="System.Drawing.Point, System.Drawing">
<value>343, 29</value>
</data>
<data name="ListGameItems.Size" type="System.Drawing.Size, System.Drawing">
<value>300, 208</value>
</data>
<data name="ListGameItems.TabIndex" type="System.Int32, mscorlib">
<value>10</value>
</data>
<data name="&gt;&gt;ListGameItems.Name" xml:space="preserve">
<value>ListGameItems</value>
</data>
<data name="&gt;&gt;ListGameItems.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;ListGameItems.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;ListGameItems.ZOrder" xml:space="preserve">
<value>6</value>
</data>
<data name="LblGameItemAmount.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Bottom, Left</value>
</data>
<data name="LblGameItemAmount.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="LblGameItemAmount.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="LblGameItemAmount.Location" type="System.Drawing.Point, System.Drawing">
<value>7, 215</value>
</data>
<data name="LblGameItemAmount.Size" type="System.Drawing.Size, System.Drawing">
<value>32, 17</value>
</data>
<data name="LblGameItemAmount.TabIndex" type="System.Int32, mscorlib">
<value>4</value>
</data>
<data name="LblGameItemAmount.Text" xml:space="preserve">
<value>数量</value>
</data>
<data name="&gt;&gt;LblGameItemAmount.Name" xml:space="preserve">
<value>LblGameItemAmount</value>
</data>
<data name="&gt;&gt;LblGameItemAmount.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;LblGameItemAmount.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;LblGameItemAmount.ZOrder" xml:space="preserve">
<value>7</value>
</data>
<data name="LblGameItemLevel.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Bottom, Left</value>
</data>
<data name="LblGameItemLevel.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="LblGameItemLevel.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="LblGameItemLevel.Location" type="System.Drawing.Point, System.Drawing">
<value>151, 215</value>
</data>
<data name="LblGameItemLevel.Size" type="System.Drawing.Size, System.Drawing">
<value>32, 17</value>
</data>
<data name="LblGameItemLevel.TabIndex" type="System.Int32, mscorlib">
<value>6</value>
</data>
<data name="LblGameItemLevel.Text" xml:space="preserve">
<value>等级</value>
</data>
<data name="&gt;&gt;LblGameItemLevel.Name" xml:space="preserve">
<value>LblGameItemLevel</value>
</data>
<data name="&gt;&gt;LblGameItemLevel.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;LblGameItemLevel.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;LblGameItemLevel.ZOrder" xml:space="preserve">
<value>8</value>
</data>
<data name="NUDGameItemAmout.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Bottom, Left</value>
</data>
<data name="NUDGameItemAmout.Location" type="System.Drawing.Point, System.Drawing">
<value>45, 213</value>
</data>
<data name="NUDGameItemAmout.Size" type="System.Drawing.Size, System.Drawing">
<value>100, 23</value>
</data>
<data name="NUDGameItemAmout.TabIndex" type="System.Int32, mscorlib">
<value>5</value>
</data>
<data name="&gt;&gt;NUDGameItemAmout.Name" xml:space="preserve">
<value>NUDGameItemAmout</value>
</data>
<data name="&gt;&gt;NUDGameItemAmout.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;NUDGameItemAmout.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;NUDGameItemAmout.ZOrder" xml:space="preserve">
<value>9</value>
</data>
<data name="NUDGameItemLevel.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Bottom, Left</value>
</data>
<data name="NUDGameItemLevel.Location" type="System.Drawing.Point, System.Drawing">
<value>189, 213</value>
</data>
<data name="NUDGameItemLevel.Size" type="System.Drawing.Size, System.Drawing">
<value>50, 23</value>
</data>
<data name="NUDGameItemLevel.TabIndex" type="System.Int32, mscorlib">
<value>7</value>
</data>
<data name="&gt;&gt;NUDGameItemLevel.Name" xml:space="preserve">
<value>NUDGameItemLevel</value>
</data>
<data name="&gt;&gt;NUDGameItemLevel.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;NUDGameItemLevel.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;NUDGameItemLevel.ZOrder" xml:space="preserve">
<value>10</value>
</data>
<data name="LblGiveCommandDescription.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="LblGiveCommandDescription.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="LblGiveCommandDescription.Location" type="System.Drawing.Point, System.Drawing">
<value>6, 6</value>
</data>
<data name="LblGiveCommandDescription.Size" type="System.Drawing.Size, System.Drawing">
<value>236, 34</value>
</data>
<data name="LblGiveCommandDescription.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
</data>
<data name="LblGiveCommandDescription.Text" xml:space="preserve">
<value>给玩家指定物品
说明:可选择直接给到背包或者掉落到世界</value>
</data>
<data name="&gt;&gt;LblGiveCommandDescription.Name" xml:space="preserve">
<value>LblGiveCommandDescription</value>
</data>
<data name="&gt;&gt;LblGiveCommandDescription.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;LblGiveCommandDescription.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;LblGiveCommandDescription.ZOrder" xml:space="preserve">
<value>11</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>PageGiveItem</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,193 @@
<?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="LblClearGiveItemLogs.Size" type="System.Drawing.Size, System.Drawing">
<value>76, 17</value>
</data>
<data name="LblClearGiveItemLogs.Text" xml:space="preserve">
<value>X Очистить</value>
</data>
<data name="BtnSaveGiveItemLog.Location" type="System.Drawing.Point, System.Drawing">
<value>259, 48</value>
</data>
<data name="BtnSaveGiveItemLog.Size" type="System.Drawing.Size, System.Drawing">
<value>80, 23</value>
</data>
<data name="BtnSaveGiveItemLog.Text" xml:space="preserve">
<value>√ Сохр.</value>
</data>
<data name="BtnRemoveGiveItemLog.Location" type="System.Drawing.Point, System.Drawing">
<value>259, 77</value>
</data>
<data name="BtnRemoveGiveItemLog.Size" type="System.Drawing.Size, System.Drawing">
<value>80, 23</value>
</data>
<data name="BtnRemoveGiveItemLog.Text" xml:space="preserve">
<value>× Удалить</value>
</data>
<data name="GrpGiveItemRecord.Size" type="System.Drawing.Size, System.Drawing">
<value>246, 159</value>
</data>
<data name="GrpGiveItemRecord.Text" xml:space="preserve">
<value>Список предметов</value>
</data>
<data name="ListGiveItemLogs.Size" type="System.Drawing.Size, System.Drawing">
<value>240, 137</value>
</data>
<data name="ChkDrop.Location" type="System.Drawing.Point, System.Drawing">
<value>265, 214</value>
</data>
<data name="ChkDrop.Size" type="System.Drawing.Size, System.Drawing">
<value>60, 21</value>
</data>
<data name="ChkDrop.Text" xml:space="preserve">
<value>Дроп</value>
</data>
<data name="LblGameItemAmount.Size" type="System.Drawing.Size, System.Drawing">
<value>51, 17</value>
</data>
<data name="LblGameItemAmount.Text" xml:space="preserve">
<value>Кол-во</value>
</data>
<data name="LblGameItemLevel.Location" type="System.Drawing.Point, System.Drawing">
<value>149, 215</value>
</data>
<data name="LblGameItemLevel.Size" type="System.Drawing.Size, System.Drawing">
<value>60, 17</value>
</data>
<data name="LblGameItemLevel.Text" xml:space="preserve">
<value>Уровень</value>
</data>
<data name="NUDGameItemAmout.Location" type="System.Drawing.Point, System.Drawing">
<value>60, 213</value>
</data>
<data name="NUDGameItemAmout.Size" type="System.Drawing.Size, System.Drawing">
<value>81, 23</value>
</data>
<data name="NUDGameItemLevel.Location" type="System.Drawing.Point, System.Drawing">
<value>209, 213</value>
</data>
<data name="LblGiveCommandDescription.Size" type="System.Drawing.Size, System.Drawing">
<value>137, 17</value>
</data>
<data name="LblGiveCommandDescription.Text" xml:space="preserve">
<value>Дать предмет игроку</value>
</data>
</root>

View File

@@ -0,0 +1,140 @@
<?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="BtnSaveGiveItemLog.Text" xml:space="preserve">
<value>√ 記錄</value>
</data>
<data name="BtnRemoveGiveItemLog.Text" xml:space="preserve">
<value>× 刪除</value>
</data>
<data name="GrpGiveItemRecord.Text" xml:space="preserve">
<value>物品記錄本</value>
</data>
<data name="LblGameItemAmount.Text" xml:space="preserve">
<value>數量</value>
</data>
<data name="LblGameItemLevel.Text" xml:space="preserve">
<value>等級</value>
</data>
<data name="LblGiveCommandDescription.Text" xml:space="preserve">
<value>給玩家指定物品
說明:可選擇直接給到背包或者掉落到世界
</value>
</data>
</root>

View File

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

View File

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

View File

@@ -0,0 +1,369 @@
namespace GrasscutterTools.Pages
{
partial class PageMail
{
/// <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(PageMail));
this.LblClearMailContent = new System.Windows.Forms.Label();
this.BtnAddMailItem = new System.Windows.Forms.Button();
this.BtnDeleteMailItem = new System.Windows.Forms.Button();
this.TCMailRight = new System.Windows.Forms.TabControl();
this.TPMailSelectableItemList = new System.Windows.Forms.TabPage();
this.ListMailSelectableItems = new System.Windows.Forms.ListBox();
this.TxtMailSelectableItemFilter = new System.Windows.Forms.TextBox();
this.PanelMailItemArgs = new System.Windows.Forms.Panel();
this.NUDMailItemLevel = new System.Windows.Forms.NumericUpDown();
this.NUDMailItemCount = new System.Windows.Forms.NumericUpDown();
this.LblMailItemCount = new System.Windows.Forms.Label();
this.LblMailItemLevel = new System.Windows.Forms.Label();
this.TPMailList = new System.Windows.Forms.TabPage();
this.ListMailList = new System.Windows.Forms.ListBox();
this.PanelMailListControls = new System.Windows.Forms.Panel();
this.BtnClearMail = new System.Windows.Forms.Button();
this.BtnRemoveMail = new System.Windows.Forms.Button();
this.BtnSendMail = new System.Windows.Forms.Button();
this.ListMailItems = new System.Windows.Forms.ListBox();
this.LblMailItemsLabel = new System.Windows.Forms.Label();
this.NUDMailRecipient = new System.Windows.Forms.NumericUpDown();
this.RbMailSendToPlayer = new System.Windows.Forms.RadioButton();
this.RbMailSendToAll = new System.Windows.Forms.RadioButton();
this.LblMailRecipientLabel = new System.Windows.Forms.Label();
this.TxtMailContent = new System.Windows.Forms.TextBox();
this.LblMailContentLabel = new System.Windows.Forms.Label();
this.TxtMailTitle = new System.Windows.Forms.TextBox();
this.LblMailTitleLabel = new System.Windows.Forms.Label();
this.TxtMailSender = new System.Windows.Forms.TextBox();
this.LblMailSenderLabel = new System.Windows.Forms.Label();
this.TCMailRight.SuspendLayout();
this.TPMailSelectableItemList.SuspendLayout();
this.PanelMailItemArgs.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.NUDMailItemLevel)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.NUDMailItemCount)).BeginInit();
this.TPMailList.SuspendLayout();
this.PanelMailListControls.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.NUDMailRecipient)).BeginInit();
this.SuspendLayout();
//
// LblClearMailContent
//
resources.ApplyResources(this.LblClearMailContent, "LblClearMailContent");
this.LblClearMailContent.Cursor = System.Windows.Forms.Cursors.Hand;
this.LblClearMailContent.Name = "LblClearMailContent";
this.LblClearMailContent.Click += new System.EventHandler(this.LblClearMailContent_Click);
//
// BtnAddMailItem
//
resources.ApplyResources(this.BtnAddMailItem, "BtnAddMailItem");
this.BtnAddMailItem.Name = "BtnAddMailItem";
this.BtnAddMailItem.UseVisualStyleBackColor = true;
this.BtnAddMailItem.Click += new System.EventHandler(this.BtnAddMailItem_Click);
//
// BtnDeleteMailItem
//
resources.ApplyResources(this.BtnDeleteMailItem, "BtnDeleteMailItem");
this.BtnDeleteMailItem.Name = "BtnDeleteMailItem";
this.BtnDeleteMailItem.UseVisualStyleBackColor = true;
this.BtnDeleteMailItem.Click += new System.EventHandler(this.BtnDeleteMailItem_Click);
//
// TCMailRight
//
resources.ApplyResources(this.TCMailRight, "TCMailRight");
this.TCMailRight.Controls.Add(this.TPMailSelectableItemList);
this.TCMailRight.Controls.Add(this.TPMailList);
this.TCMailRight.Name = "TCMailRight";
this.TCMailRight.SelectedIndex = 0;
//
// TPMailSelectableItemList
//
this.TPMailSelectableItemList.Controls.Add(this.ListMailSelectableItems);
this.TPMailSelectableItemList.Controls.Add(this.TxtMailSelectableItemFilter);
this.TPMailSelectableItemList.Controls.Add(this.PanelMailItemArgs);
resources.ApplyResources(this.TPMailSelectableItemList, "TPMailSelectableItemList");
this.TPMailSelectableItemList.Name = "TPMailSelectableItemList";
this.TPMailSelectableItemList.UseVisualStyleBackColor = true;
//
// ListMailSelectableItems
//
resources.ApplyResources(this.ListMailSelectableItems, "ListMailSelectableItems");
this.ListMailSelectableItems.FormattingEnabled = true;
this.ListMailSelectableItems.Name = "ListMailSelectableItems";
//
// TxtMailSelectableItemFilter
//
resources.ApplyResources(this.TxtMailSelectableItemFilter, "TxtMailSelectableItemFilter");
this.TxtMailSelectableItemFilter.Name = "TxtMailSelectableItemFilter";
this.TxtMailSelectableItemFilter.TextChanged += new System.EventHandler(this.TxtMailSelectableItemFilter_TextChanged);
//
// PanelMailItemArgs
//
this.PanelMailItemArgs.Controls.Add(this.NUDMailItemLevel);
this.PanelMailItemArgs.Controls.Add(this.NUDMailItemCount);
this.PanelMailItemArgs.Controls.Add(this.LblMailItemCount);
this.PanelMailItemArgs.Controls.Add(this.LblMailItemLevel);
resources.ApplyResources(this.PanelMailItemArgs, "PanelMailItemArgs");
this.PanelMailItemArgs.Name = "PanelMailItemArgs";
//
// NUDMailItemLevel
//
resources.ApplyResources(this.NUDMailItemLevel, "NUDMailItemLevel");
this.NUDMailItemLevel.Maximum = new decimal(new int[] {
90,
0,
0,
0});
this.NUDMailItemLevel.Minimum = new decimal(new int[] {
1,
0,
0,
0});
this.NUDMailItemLevel.Name = "NUDMailItemLevel";
this.NUDMailItemLevel.Value = new decimal(new int[] {
1,
0,
0,
0});
//
// NUDMailItemCount
//
resources.ApplyResources(this.NUDMailItemCount, "NUDMailItemCount");
this.NUDMailItemCount.Maximum = new decimal(new int[] {
1000000,
0,
0,
0});
this.NUDMailItemCount.Minimum = new decimal(new int[] {
1,
0,
0,
0});
this.NUDMailItemCount.Name = "NUDMailItemCount";
this.NUDMailItemCount.Value = new decimal(new int[] {
1,
0,
0,
0});
//
// LblMailItemCount
//
resources.ApplyResources(this.LblMailItemCount, "LblMailItemCount");
this.LblMailItemCount.Name = "LblMailItemCount";
//
// LblMailItemLevel
//
resources.ApplyResources(this.LblMailItemLevel, "LblMailItemLevel");
this.LblMailItemLevel.Name = "LblMailItemLevel";
//
// TPMailList
//
this.TPMailList.Controls.Add(this.ListMailList);
this.TPMailList.Controls.Add(this.PanelMailListControls);
resources.ApplyResources(this.TPMailList, "TPMailList");
this.TPMailList.Name = "TPMailList";
this.TPMailList.UseVisualStyleBackColor = true;
//
// ListMailList
//
resources.ApplyResources(this.ListMailList, "ListMailList");
this.ListMailList.FormattingEnabled = true;
this.ListMailList.Name = "ListMailList";
this.ListMailList.SelectedIndexChanged += new System.EventHandler(this.ListMailList_SelectedIndexChanged);
//
// PanelMailListControls
//
this.PanelMailListControls.Controls.Add(this.BtnClearMail);
this.PanelMailListControls.Controls.Add(this.BtnRemoveMail);
resources.ApplyResources(this.PanelMailListControls, "PanelMailListControls");
this.PanelMailListControls.Name = "PanelMailListControls";
//
// BtnClearMail
//
resources.ApplyResources(this.BtnClearMail, "BtnClearMail");
this.BtnClearMail.Name = "BtnClearMail";
this.BtnClearMail.UseVisualStyleBackColor = true;
this.BtnClearMail.Click += new System.EventHandler(this.BtnClearMail_Click);
//
// BtnRemoveMail
//
resources.ApplyResources(this.BtnRemoveMail, "BtnRemoveMail");
this.BtnRemoveMail.Name = "BtnRemoveMail";
this.BtnRemoveMail.UseVisualStyleBackColor = true;
this.BtnRemoveMail.Click += new System.EventHandler(this.BtnRemoveMail_Click);
//
// BtnSendMail
//
resources.ApplyResources(this.BtnSendMail, "BtnSendMail");
this.BtnSendMail.Name = "BtnSendMail";
this.BtnSendMail.UseVisualStyleBackColor = true;
this.BtnSendMail.Click += new System.EventHandler(this.BtnSendMail_Click);
//
// ListMailItems
//
resources.ApplyResources(this.ListMailItems, "ListMailItems");
this.ListMailItems.FormattingEnabled = true;
this.ListMailItems.Name = "ListMailItems";
//
// LblMailItemsLabel
//
resources.ApplyResources(this.LblMailItemsLabel, "LblMailItemsLabel");
this.LblMailItemsLabel.Name = "LblMailItemsLabel";
//
// NUDMailRecipient
//
resources.ApplyResources(this.NUDMailRecipient, "NUDMailRecipient");
this.NUDMailRecipient.Maximum = new decimal(new int[] {
2147483647,
0,
0,
0});
this.NUDMailRecipient.Name = "NUDMailRecipient";
this.NUDMailRecipient.Value = new decimal(new int[] {
10001,
0,
0,
0});
//
// RbMailSendToPlayer
//
resources.ApplyResources(this.RbMailSendToPlayer, "RbMailSendToPlayer");
this.RbMailSendToPlayer.Name = "RbMailSendToPlayer";
this.RbMailSendToPlayer.UseVisualStyleBackColor = true;
//
// RbMailSendToAll
//
resources.ApplyResources(this.RbMailSendToAll, "RbMailSendToAll");
this.RbMailSendToAll.Checked = true;
this.RbMailSendToAll.Name = "RbMailSendToAll";
this.RbMailSendToAll.TabStop = true;
this.RbMailSendToAll.UseVisualStyleBackColor = true;
//
// LblMailRecipientLabel
//
resources.ApplyResources(this.LblMailRecipientLabel, "LblMailRecipientLabel");
this.LblMailRecipientLabel.Name = "LblMailRecipientLabel";
//
// TxtMailContent
//
resources.ApplyResources(this.TxtMailContent, "TxtMailContent");
this.TxtMailContent.Name = "TxtMailContent";
//
// LblMailContentLabel
//
resources.ApplyResources(this.LblMailContentLabel, "LblMailContentLabel");
this.LblMailContentLabel.Name = "LblMailContentLabel";
//
// TxtMailTitle
//
resources.ApplyResources(this.TxtMailTitle, "TxtMailTitle");
this.TxtMailTitle.Name = "TxtMailTitle";
//
// LblMailTitleLabel
//
resources.ApplyResources(this.LblMailTitleLabel, "LblMailTitleLabel");
this.LblMailTitleLabel.Name = "LblMailTitleLabel";
//
// TxtMailSender
//
resources.ApplyResources(this.TxtMailSender, "TxtMailSender");
this.TxtMailSender.Name = "TxtMailSender";
//
// LblMailSenderLabel
//
resources.ApplyResources(this.LblMailSenderLabel, "LblMailSenderLabel");
this.LblMailSenderLabel.Name = "LblMailSenderLabel";
//
// PageMail
//
resources.ApplyResources(this, "$this");
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.Controls.Add(this.LblClearMailContent);
this.Controls.Add(this.BtnAddMailItem);
this.Controls.Add(this.BtnDeleteMailItem);
this.Controls.Add(this.TCMailRight);
this.Controls.Add(this.BtnSendMail);
this.Controls.Add(this.ListMailItems);
this.Controls.Add(this.LblMailItemsLabel);
this.Controls.Add(this.NUDMailRecipient);
this.Controls.Add(this.RbMailSendToPlayer);
this.Controls.Add(this.RbMailSendToAll);
this.Controls.Add(this.LblMailRecipientLabel);
this.Controls.Add(this.TxtMailContent);
this.Controls.Add(this.LblMailContentLabel);
this.Controls.Add(this.TxtMailTitle);
this.Controls.Add(this.LblMailTitleLabel);
this.Controls.Add(this.TxtMailSender);
this.Controls.Add(this.LblMailSenderLabel);
this.Name = "PageMail";
this.TCMailRight.ResumeLayout(false);
this.TPMailSelectableItemList.ResumeLayout(false);
this.TPMailSelectableItemList.PerformLayout();
this.PanelMailItemArgs.ResumeLayout(false);
this.PanelMailItemArgs.PerformLayout();
((System.ComponentModel.ISupportInitialize)(this.NUDMailItemLevel)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.NUDMailItemCount)).EndInit();
this.TPMailList.ResumeLayout(false);
this.PanelMailListControls.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.NUDMailRecipient)).EndInit();
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private System.Windows.Forms.Label LblClearMailContent;
private System.Windows.Forms.Button BtnAddMailItem;
private System.Windows.Forms.Button BtnDeleteMailItem;
private System.Windows.Forms.TabControl TCMailRight;
private System.Windows.Forms.TabPage TPMailSelectableItemList;
private System.Windows.Forms.ListBox ListMailSelectableItems;
private System.Windows.Forms.TextBox TxtMailSelectableItemFilter;
private System.Windows.Forms.Panel PanelMailItemArgs;
private System.Windows.Forms.NumericUpDown NUDMailItemLevel;
private System.Windows.Forms.NumericUpDown NUDMailItemCount;
private System.Windows.Forms.Label LblMailItemCount;
private System.Windows.Forms.Label LblMailItemLevel;
private System.Windows.Forms.TabPage TPMailList;
private System.Windows.Forms.ListBox ListMailList;
private System.Windows.Forms.Panel PanelMailListControls;
private System.Windows.Forms.Button BtnClearMail;
private System.Windows.Forms.Button BtnRemoveMail;
private System.Windows.Forms.Button BtnSendMail;
private System.Windows.Forms.ListBox ListMailItems;
private System.Windows.Forms.Label LblMailItemsLabel;
private System.Windows.Forms.NumericUpDown NUDMailRecipient;
private System.Windows.Forms.RadioButton RbMailSendToPlayer;
private System.Windows.Forms.RadioButton RbMailSendToAll;
private System.Windows.Forms.Label LblMailRecipientLabel;
private System.Windows.Forms.TextBox TxtMailContent;
private System.Windows.Forms.Label LblMailContentLabel;
private System.Windows.Forms.TextBox TxtMailTitle;
private System.Windows.Forms.Label LblMailTitleLabel;
private System.Windows.Forms.TextBox TxtMailSender;
private System.Windows.Forms.Label LblMailSenderLabel;
}
}

View File

@@ -0,0 +1,291 @@
/**
* Grasscutter Tools
* Copyright (C) 2022 jie65535
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published
* by the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*
**/
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Windows.Forms;
using GrasscutterTools.Game;
using GrasscutterTools.Game.Mail;
using GrasscutterTools.Properties;
using GrasscutterTools.Utils;
using Newtonsoft.Json;
namespace GrasscutterTools.Pages
{
internal partial class PageMail : BasePage
{
public PageMail()
{
InitializeComponent();
if (DesignMode) return;
InitMailList();
}
/// <summary>
/// 初始化邮件页面
/// </summary>
public override void OnLoad()
{
TxtMailSender.Text = Settings.Default.DefaultMailSender;
LoadMailSelectableItems();
}
/// <summary>
/// 保存邮件设置
/// </summary>
public override void OnClosed()
{
Settings.Default.DefaultMailSender = TxtMailSender.Text;
}
/// <summary>
/// 点击清空邮件内容时触发
/// </summary>
private void LblClearMailContent_Click(object sender, EventArgs e)
{
TxtMailContent.Clear();
}
/// <summary>
/// 点击发送邮件时触发
/// </summary>
private void BtnSendMail_Click(object sender, EventArgs e)
{
var mail = new Mail
{
Title = TxtMailTitle.Text.Trim(),
Sender = TxtMailSender.Text.Trim(),
Content = TxtMailContent.Text.Trim(),
Recipient = RbMailSendToAll.Checked ? 0 : (int)NUDMailRecipient.Value,
ItemList = new List<MailItem>(MailItems),
SendTime = DateTime.Now,
};
if (mail.Title == "" || mail.Sender == "" || mail.Content == "")
{
MessageBox.Show(Resources.EmptyInputTip, Resources.Error, MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
if (mail.SendToAll)
{
MessageBox.Show(Resources.MailSendToAllWarning, Resources.Warning, MessageBoxButtons.OK, MessageBoxIcon.Warning);
}
var cmd = $"/sendMail {(mail.SendToAll ? "all" : mail.Recipient.ToString())} |" +
$"/sendMail {mail.Title} |" +
$"/sendMail {mail.Content.Replace("\r", "\\r").Replace("\n", "\\n")} |" +
$"/sendMail {mail.Sender} |";
foreach (var item in mail.ItemList)
cmd += $"/sendMail {item.ItemId} {item.ItemCount} {item.ItemLevel} |";
cmd += "/sendMail finish";
SetCommand(cmd);
AddMailToList(mail);
}
/// <summary>
/// 展示邮件
/// </summary>
/// <param name="mail"></param>
private void ShowMail(Mail mail)
{
TxtMailTitle.Text = mail.Title;
TxtMailSender.Text = mail.Sender;
TxtMailContent.Text = mail.Content;
NUDMailRecipient.Value = mail.Recipient;
RbMailSendToAll.Checked = mail.SendToAll;
RbMailSendToPlayer.Checked = !mail.SendToAll;
ShowMailItems(mail.ItemList);
}
#region -- Mail items --
/// <summary>
/// 当前邮件附件列表
/// </summary>
private readonly List<MailItem> MailItems = new List<MailItem>();
/// <summary>
/// 展示邮件附件列表
/// </summary>
/// <param name="items"></param>
private void ShowMailItems(List<MailItem> items)
{
MailItems.Clear();
MailItems.AddRange(items);
ListMailItems.BeginUpdate();
ListMailItems.Items.Clear();
ListMailItems.Items.AddRange(items.Select(it => it.ToString()).ToArray());
ListMailItems.EndUpdate();
}
/// <summary>
/// 点击添加邮件附件项时触发
/// </summary>
private void BtnAddMailItem_Click(object sender, EventArgs e)
{
if (ListMailSelectableItems.SelectedIndex == -1)
return;
var item = ListMailSelectableItems.SelectedItem as string;
var itemId = ItemMap.ToId(item);
var mailItem = new MailItem
{
ItemId = itemId,
ItemCount = (int)NUDMailItemCount.Value,
ItemLevel = (int)NUDMailItemLevel.Value,
};
MailItems.Add(mailItem);
ListMailItems.Items.Add(mailItem.ToString());
}
/// <summary>
/// 点击删除邮件附件项时触发
/// </summary>
private void BtnDeleteMailItem_Click(object sender, EventArgs e)
{
if (ListMailItems.SelectedIndex == -1) return;
MailItems.RemoveAt(ListMailItems.SelectedIndex);
ListMailItems.Items.RemoveAt(ListMailItems.SelectedIndex);
}
#endregion -- Mail items --
#region -- Mail item selectable list --
private string[] MailSelectableItems;
/// <summary>
/// 加载附件可选项列表
/// </summary>
private void LoadMailSelectableItems()
{
MailSelectableItems = new string[GameData.Items.Count + GameData.Weapons.Count + GameData.Artifacts.Count];
int i = 0;
GameData.Items.Lines.CopyTo(MailSelectableItems, i); i += GameData.Items.Count;
GameData.Weapons.Lines.CopyTo(MailSelectableItems, i); i += GameData.Weapons.Count;
GameData.Artifacts.Lines.CopyTo(MailSelectableItems, i); i += GameData.Artifacts.Count;
Array.Sort(MailSelectableItems, (a, b) => ItemMap.ToId(a) - ItemMap.ToId(b));
ListMailSelectableItems.Items.Clear();
ListMailSelectableItems.Items.AddRange(MailSelectableItems);
}
/// <summary>
/// 邮件页面物品列表过滤器文本改变时触发
/// </summary>
private void TxtMailSelectableItemFilter_TextChanged(object sender, EventArgs e)
{
UIUtil.ListBoxFilter(ListMailSelectableItems, MailSelectableItems, TxtMailSelectableItemFilter.Text);
}
#endregion -- Mail item selectable list --
#region -- Mail list --
/// <summary>
/// 获取物品记录文件路径
/// </summary>
private readonly string MailListPath = Path.Combine(Application.LocalUserAppDataPath, "MailList.json");
/// <summary>
/// 邮件列表
/// </summary>
private List<Mail> MailList = new List<Mail>();
/// <summary>
/// 初始化邮件列表
/// </summary>
private void InitMailList()
{
if (File.Exists(MailListPath))
{
MailList = JsonConvert.DeserializeObject<List<Mail>>(File.ReadAllText(MailListPath));
ListMailList.Items.AddRange(MailList.Select(it => it.ToString()).ToArray());
}
else
{
MailList = new List<Mail>();
}
}
/// <summary>
/// 保存邮件列表
/// </summary>
private void SaveMailList()
{
File.WriteAllText(MailListPath, JsonConvert.SerializeObject(MailList));
}
/// <summary>
/// 添加邮件到列表
/// </summary>
/// <param name="mail">邮件</param>
private void AddMailToList(Mail mail)
{
MailList.Add(mail);
ListMailList.Items.Add(mail.ToString());
SaveMailList();
}
/// <summary>
/// 邮件列表选中项改变时发生
/// </summary>
private void ListMailList_SelectedIndexChanged(object sender, EventArgs e)
{
if (ListMailList.SelectedIndex == -1) return;
// 显示选中邮件
var mail = MailList[ListMailList.SelectedIndex];
ShowMail(mail);
}
/// <summary>
/// 点击删除邮件按钮时触发
/// </summary>
private void BtnRemoveMail_Click(object sender, EventArgs e)
{
if (ListMailList.SelectedIndex == -1) return;
MailList.RemoveAt(ListMailList.SelectedIndex);
ListMailList.Items.RemoveAt(ListMailList.SelectedIndex);
SaveMailList();
}
/// <summary>
/// 点击清空邮件列表按钮时触发
/// </summary>
private void BtnClearMail_Click(object sender, EventArgs e)
{
if (MailList.Count == 0) return;
if (MessageBox.Show(Resources.AskConfirmDeletion, Resources.Tips, MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
{
ListMailList.Items.Clear();
MailList.Clear();
SaveMailList();
}
}
#endregion -- Mail list --
}
}

View File

@@ -0,0 +1,193 @@
<?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="BtnAddMailItem.Text" xml:space="preserve">
<value>+ Add</value>
</data>
<data name="BtnDeleteMailItem.Text" xml:space="preserve">
<value>- Delete</value>
</data>
<data name="TPMailSelectableItemList.Text" xml:space="preserve">
<value>Item list</value>
</data>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="LblMailItemCount.Size" type="System.Drawing.Size, System.Drawing">
<value>45, 17</value>
</data>
<data name="LblMailItemCount.Text" xml:space="preserve">
<value>Count:</value>
</data>
<data name="LblMailItemLevel.Size" type="System.Drawing.Size, System.Drawing">
<value>40, 17</value>
</data>
<data name="LblMailItemLevel.Text" xml:space="preserve">
<value>Level:</value>
</data>
<data name="TPMailList.Text" xml:space="preserve">
<value>Mail list</value>
</data>
<data name="BtnClearMail.Text" xml:space="preserve">
<value>× Clear</value>
</data>
<data name="BtnRemoveMail.Text" xml:space="preserve">
<value>- Delete</value>
</data>
<data name="BtnSendMail.Text" xml:space="preserve">
<value>Send</value>
</data>
<data name="LblMailItemsLabel.Size" type="System.Drawing.Size, System.Drawing">
<value>43, 17</value>
</data>
<data name="LblMailItemsLabel.Text" xml:space="preserve">
<value>Items:</value>
</data>
<data name="RbMailSendToPlayer.Size" type="System.Drawing.Size, System.Drawing">
<value>61, 21</value>
</data>
<data name="RbMailSendToPlayer.Text" xml:space="preserve">
<value>Player</value>
</data>
<data name="RbMailSendToAll.Size" type="System.Drawing.Size, System.Drawing">
<value>40, 21</value>
</data>
<data name="RbMailSendToAll.Text" xml:space="preserve">
<value>All</value>
</data>
<data name="LblMailRecipientLabel.Text" xml:space="preserve">
<value>Send to:</value>
</data>
<data name="LblMailContentLabel.Size" type="System.Drawing.Size, System.Drawing">
<value>56, 17</value>
</data>
<data name="LblMailContentLabel.Text" xml:space="preserve">
<value>Content:</value>
</data>
<data name="LblMailTitleLabel.Size" type="System.Drawing.Size, System.Drawing">
<value>35, 17</value>
</data>
<data name="LblMailTitleLabel.Text" xml:space="preserve">
<value>Title:</value>
</data>
<data name="LblMailSenderLabel.Size" type="System.Drawing.Size, System.Drawing">
<value>52, 17</value>
</data>
<data name="LblMailSenderLabel.Text" xml:space="preserve">
<value>Sender:</value>
</data>
</root>

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,256 @@
<?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="BtnAddMailItem.Location" type="System.Drawing.Point, System.Drawing">
<value>301, 147</value>
</data>
<data name="BtnAddMailItem.Size" type="System.Drawing.Size, System.Drawing">
<value>100, 23</value>
</data>
<data name="BtnAddMailItem.Text" xml:space="preserve">
<value>+ Добавить</value>
</data>
<data name="BtnDeleteMailItem.Location" type="System.Drawing.Point, System.Drawing">
<value>301, 176</value>
</data>
<data name="BtnDeleteMailItem.Size" type="System.Drawing.Size, System.Drawing">
<value>100, 23</value>
</data>
<data name="BtnDeleteMailItem.Text" xml:space="preserve">
<value>- Удалить</value>
</data>
<data name="TPMailSelectableItemList.Text" xml:space="preserve">
<value>Предметы</value>
</data>
<data name="LblMailItemCount.Size" type="System.Drawing.Size, System.Drawing">
<value>51, 17</value>
</data>
<data name="LblMailItemCount.Text" xml:space="preserve">
<value>Кол-во</value>
</data>
<data name="LblMailItemLevel.Location" type="System.Drawing.Point, System.Drawing">
<value>113, 7</value>
</data>
<data name="LblMailItemLevel.Size" type="System.Drawing.Size, System.Drawing">
<value>60, 17</value>
</data>
<data name="LblMailItemLevel.Text" xml:space="preserve">
<value>Уровень</value>
</data>
<data name="TPMailList.Text" xml:space="preserve">
<value>Список рассылки</value>
</data>
<data name="BtnClearMail.Location" type="System.Drawing.Point, System.Drawing">
<value>109, 3</value>
</data>
<data name="BtnClearMail.Size" type="System.Drawing.Size, System.Drawing">
<value>100, 23</value>
</data>
<data name="BtnClearMail.Text" xml:space="preserve">
<value>× Очистить</value>
</data>
<data name="BtnRemoveMail.Size" type="System.Drawing.Size, System.Drawing">
<value>100, 23</value>
</data>
<data name="BtnRemoveMail.Text" xml:space="preserve">
<value>- Удалить</value>
</data>
<data name="BtnSendMail.Location" type="System.Drawing.Point, System.Drawing">
<value>301, 202</value>
</data>
<data name="BtnSendMail.Size" type="System.Drawing.Size, System.Drawing">
<value>100, 32</value>
</data>
<data name="BtnSendMail.Text" xml:space="preserve">
<value>Отправить</value>
</data>
<data name="ListMailItems.Location" type="System.Drawing.Point, System.Drawing">
<value>99, 147</value>
</data>
<data name="ListMailItems.Size" type="System.Drawing.Size, System.Drawing">
<value>196, 89</value>
</data>
<data name="LblMailItemsLabel.Size" type="System.Drawing.Size, System.Drawing">
<value>74, 17</value>
</data>
<data name="LblMailItemsLabel.Text" xml:space="preserve">
<value>Вложение:</value>
</data>
<data name="RbMailSendToPlayer.Location" type="System.Drawing.Point, System.Drawing">
<value>210, 31</value>
</data>
<data name="RbMailSendToPlayer.Size" type="System.Drawing.Size, System.Drawing">
<value>64, 21</value>
</data>
<data name="RbMailSendToPlayer.Text" xml:space="preserve">
<value>Игрок</value>
</data>
<data name="RbMailSendToAll.Location" type="System.Drawing.Point, System.Drawing">
<value>99, 31</value>
</data>
<data name="RbMailSendToAll.Size" type="System.Drawing.Size, System.Drawing">
<value>47, 21</value>
</data>
<data name="RbMailSendToAll.Text" xml:space="preserve">
<value>Все</value>
</data>
<data name="LblMailRecipientLabel.Size" type="System.Drawing.Size, System.Drawing">
<value>81, 17</value>
</data>
<data name="LblMailRecipientLabel.Text" xml:space="preserve">
<value>Получатель:</value>
</data>
<data name="TxtMailContent.Location" type="System.Drawing.Point, System.Drawing">
<value>99, 89</value>
</data>
<data name="TxtMailContent.Size" type="System.Drawing.Size, System.Drawing">
<value>302, 52</value>
</data>
<data name="LblMailContentLabel.Size" type="System.Drawing.Size, System.Drawing">
<value>89, 17</value>
</data>
<data name="LblMailContentLabel.Text" xml:space="preserve">
<value>Содержание:</value>
</data>
<data name="TxtMailTitle.Location" type="System.Drawing.Point, System.Drawing">
<value>99, 60</value>
</data>
<data name="TxtMailTitle.Size" type="System.Drawing.Size, System.Drawing">
<value>302, 23</value>
</data>
<data name="LblMailTitleLabel.Size" type="System.Drawing.Size, System.Drawing">
<value>70, 17</value>
</data>
<data name="LblMailTitleLabel.Text" xml:space="preserve">
<value>Название:</value>
</data>
<data name="TxtMailSender.Location" type="System.Drawing.Point, System.Drawing">
<value>99, 2</value>
</data>
<data name="TxtMailSender.Size" type="System.Drawing.Size, System.Drawing">
<value>302, 23</value>
</data>
<data name="LblMailSenderLabel.Size" type="System.Drawing.Size, System.Drawing">
<value>90, 17</value>
</data>
<data name="LblMailSenderLabel.Text" xml:space="preserve">
<value>Отправитель:</value>
</data>
</root>

View File

@@ -0,0 +1,147 @@
<?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="BtnDeleteMailItem.Text" xml:space="preserve">
<value>- 刪除</value>
</data>
<data name="LblMailItemCount.Text" xml:space="preserve">
<value>數量:</value>
</data>
<data name="LblMailItemLevel.Text" xml:space="preserve">
<value>等級:</value>
</data>
<data name="TPMailList.Text" xml:space="preserve">
<value>郵件列表</value>
</data>
<data name="BtnRemoveMail.Text" xml:space="preserve">
<value>- 刪除</value>
</data>
<data name="BtnSendMail.Text" xml:space="preserve">
<value>發送</value>
</data>
<data name="LblMailContentLabel.Text" xml:space="preserve">
<value>內容:</value>
</data>
<data name="LblMailTitleLabel.Text" xml:space="preserve">
<value>標題:</value>
</data>
<data name="LblMailSenderLabel.Text" xml:space="preserve">
<value>發件人:</value>
</data>
</root>

View File

@@ -0,0 +1,308 @@
namespace GrasscutterTools.Pages
{
partial class PageManagement
{
/// <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(PageManagement));
this.GrpBanPlayer = new System.Windows.Forms.GroupBox();
this.TxtBanReason = new System.Windows.Forms.TextBox();
this.DTPBanEndTime = new System.Windows.Forms.DateTimePicker();
this.BtnUnban = new System.Windows.Forms.Button();
this.BtnBan = new System.Windows.Forms.Button();
this.NUDBanUID = new System.Windows.Forms.NumericUpDown();
this.LblBanUID = new System.Windows.Forms.Label();
this.GrpAccount = new System.Windows.Forms.GroupBox();
this.ChkAccountSetUid = new System.Windows.Forms.CheckBox();
this.NUDAccountUid = new System.Windows.Forms.NumericUpDown();
this.BtnDeleteAccount = new System.Windows.Forms.Button();
this.BtnCreateAccount = new System.Windows.Forms.Button();
this.LblAccountUserName = new System.Windows.Forms.Label();
this.TxtAccountUserName = new System.Windows.Forms.TextBox();
this.GrpPermission = new System.Windows.Forms.GroupBox();
this.CmbPerm = new System.Windows.Forms.ComboBox();
this.NUDPermUID = new System.Windows.Forms.NumericUpDown();
this.BtnPermClear = new System.Windows.Forms.Button();
this.BtmPermRemove = new System.Windows.Forms.Button();
this.BtnPermList = new System.Windows.Forms.Button();
this.BtnPermAdd = new System.Windows.Forms.Button();
this.LblPerm = new System.Windows.Forms.Label();
this.LblPermUID = new System.Windows.Forms.Label();
this.GrpBanPlayer.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.NUDBanUID)).BeginInit();
this.GrpAccount.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.NUDAccountUid)).BeginInit();
this.GrpPermission.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.NUDPermUID)).BeginInit();
this.SuspendLayout();
//
// GrpBanPlayer
//
resources.ApplyResources(this.GrpBanPlayer, "GrpBanPlayer");
this.GrpBanPlayer.Controls.Add(this.TxtBanReason);
this.GrpBanPlayer.Controls.Add(this.DTPBanEndTime);
this.GrpBanPlayer.Controls.Add(this.BtnUnban);
this.GrpBanPlayer.Controls.Add(this.BtnBan);
this.GrpBanPlayer.Controls.Add(this.NUDBanUID);
this.GrpBanPlayer.Controls.Add(this.LblBanUID);
this.GrpBanPlayer.Name = "GrpBanPlayer";
this.GrpBanPlayer.TabStop = false;
//
// TxtBanReason
//
resources.ApplyResources(this.TxtBanReason, "TxtBanReason");
this.TxtBanReason.Name = "TxtBanReason";
//
// DTPBanEndTime
//
this.DTPBanEndTime.Format = System.Windows.Forms.DateTimePickerFormat.Short;
resources.ApplyResources(this.DTPBanEndTime, "DTPBanEndTime");
this.DTPBanEndTime.MaxDate = new System.DateTime(2034, 12, 31, 0, 0, 0, 0);
this.DTPBanEndTime.MinDate = new System.DateTime(2022, 6, 28, 0, 0, 0, 0);
this.DTPBanEndTime.Name = "DTPBanEndTime";
this.DTPBanEndTime.Value = new System.DateTime(2025, 12, 31, 0, 0, 0, 0);
//
// BtnUnban
//
resources.ApplyResources(this.BtnUnban, "BtnUnban");
this.BtnUnban.Name = "BtnUnban";
this.BtnUnban.UseVisualStyleBackColor = true;
this.BtnUnban.Click += new System.EventHandler(this.BtnUnban_Click);
//
// BtnBan
//
resources.ApplyResources(this.BtnBan, "BtnBan");
this.BtnBan.Name = "BtnBan";
this.BtnBan.UseVisualStyleBackColor = true;
this.BtnBan.Click += new System.EventHandler(this.BtnBan_Click);
//
// NUDBanUID
//
resources.ApplyResources(this.NUDBanUID, "NUDBanUID");
this.NUDBanUID.Maximum = new decimal(new int[] {
2147483647,
0,
0,
0});
this.NUDBanUID.Name = "NUDBanUID";
this.NUDBanUID.Value = new decimal(new int[] {
10001,
0,
0,
0});
//
// LblBanUID
//
resources.ApplyResources(this.LblBanUID, "LblBanUID");
this.LblBanUID.Name = "LblBanUID";
//
// GrpAccount
//
resources.ApplyResources(this.GrpAccount, "GrpAccount");
this.GrpAccount.Controls.Add(this.ChkAccountSetUid);
this.GrpAccount.Controls.Add(this.NUDAccountUid);
this.GrpAccount.Controls.Add(this.BtnDeleteAccount);
this.GrpAccount.Controls.Add(this.BtnCreateAccount);
this.GrpAccount.Controls.Add(this.LblAccountUserName);
this.GrpAccount.Controls.Add(this.TxtAccountUserName);
this.GrpAccount.Name = "GrpAccount";
this.GrpAccount.TabStop = false;
//
// ChkAccountSetUid
//
resources.ApplyResources(this.ChkAccountSetUid, "ChkAccountSetUid");
this.ChkAccountSetUid.Name = "ChkAccountSetUid";
this.ChkAccountSetUid.UseVisualStyleBackColor = true;
//
// NUDAccountUid
//
resources.ApplyResources(this.NUDAccountUid, "NUDAccountUid");
this.NUDAccountUid.Maximum = new decimal(new int[] {
2147483647,
0,
0,
0});
this.NUDAccountUid.Name = "NUDAccountUid";
this.NUDAccountUid.Value = new decimal(new int[] {
10001,
0,
0,
0});
//
// BtnDeleteAccount
//
resources.ApplyResources(this.BtnDeleteAccount, "BtnDeleteAccount");
this.BtnDeleteAccount.Name = "BtnDeleteAccount";
this.BtnDeleteAccount.Tag = "delete";
this.BtnDeleteAccount.UseVisualStyleBackColor = true;
this.BtnDeleteAccount.Click += new System.EventHandler(this.AccountButtonClicked);
//
// BtnCreateAccount
//
resources.ApplyResources(this.BtnCreateAccount, "BtnCreateAccount");
this.BtnCreateAccount.Name = "BtnCreateAccount";
this.BtnCreateAccount.Tag = "create";
this.BtnCreateAccount.UseVisualStyleBackColor = true;
this.BtnCreateAccount.Click += new System.EventHandler(this.AccountButtonClicked);
//
// LblAccountUserName
//
resources.ApplyResources(this.LblAccountUserName, "LblAccountUserName");
this.LblAccountUserName.Name = "LblAccountUserName";
//
// TxtAccountUserName
//
resources.ApplyResources(this.TxtAccountUserName, "TxtAccountUserName");
this.TxtAccountUserName.Name = "TxtAccountUserName";
//
// GrpPermission
//
resources.ApplyResources(this.GrpPermission, "GrpPermission");
this.GrpPermission.Controls.Add(this.CmbPerm);
this.GrpPermission.Controls.Add(this.NUDPermUID);
this.GrpPermission.Controls.Add(this.BtnPermClear);
this.GrpPermission.Controls.Add(this.BtmPermRemove);
this.GrpPermission.Controls.Add(this.BtnPermList);
this.GrpPermission.Controls.Add(this.BtnPermAdd);
this.GrpPermission.Controls.Add(this.LblPerm);
this.GrpPermission.Controls.Add(this.LblPermUID);
this.GrpPermission.Name = "GrpPermission";
this.GrpPermission.TabStop = false;
//
// CmbPerm
//
this.CmbPerm.AutoCompleteMode = System.Windows.Forms.AutoCompleteMode.SuggestAppend;
this.CmbPerm.AutoCompleteSource = System.Windows.Forms.AutoCompleteSource.ListItems;
this.CmbPerm.FormattingEnabled = true;
resources.ApplyResources(this.CmbPerm, "CmbPerm");
this.CmbPerm.Name = "CmbPerm";
//
// NUDPermUID
//
resources.ApplyResources(this.NUDPermUID, "NUDPermUID");
this.NUDPermUID.Maximum = new decimal(new int[] {
2147483647,
0,
0,
0});
this.NUDPermUID.Name = "NUDPermUID";
this.NUDPermUID.Value = new decimal(new int[] {
10001,
0,
0,
0});
//
// BtnPermClear
//
resources.ApplyResources(this.BtnPermClear, "BtnPermClear");
this.BtnPermClear.Name = "BtnPermClear";
this.BtnPermClear.Tag = "clear";
this.BtnPermClear.UseVisualStyleBackColor = true;
this.BtnPermClear.Click += new System.EventHandler(this.BtnPermClick);
//
// BtmPermRemove
//
resources.ApplyResources(this.BtmPermRemove, "BtmPermRemove");
this.BtmPermRemove.Name = "BtmPermRemove";
this.BtmPermRemove.Tag = "remove";
this.BtmPermRemove.UseVisualStyleBackColor = true;
this.BtmPermRemove.Click += new System.EventHandler(this.BtnPermClick);
//
// BtnPermList
//
resources.ApplyResources(this.BtnPermList, "BtnPermList");
this.BtnPermList.Name = "BtnPermList";
this.BtnPermList.Tag = "list";
this.BtnPermList.UseVisualStyleBackColor = true;
this.BtnPermList.Click += new System.EventHandler(this.BtnPermClick);
//
// BtnPermAdd
//
resources.ApplyResources(this.BtnPermAdd, "BtnPermAdd");
this.BtnPermAdd.Name = "BtnPermAdd";
this.BtnPermAdd.Tag = "add";
this.BtnPermAdd.UseVisualStyleBackColor = true;
this.BtnPermAdd.Click += new System.EventHandler(this.BtnPermClick);
//
// LblPerm
//
resources.ApplyResources(this.LblPerm, "LblPerm");
this.LblPerm.Name = "LblPerm";
//
// LblPermUID
//
resources.ApplyResources(this.LblPermUID, "LblPermUID");
this.LblPermUID.Name = "LblPermUID";
//
// PageManagement
//
resources.ApplyResources(this, "$this");
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.Controls.Add(this.GrpBanPlayer);
this.Controls.Add(this.GrpAccount);
this.Controls.Add(this.GrpPermission);
this.Name = "PageManagement";
this.GrpBanPlayer.ResumeLayout(false);
this.GrpBanPlayer.PerformLayout();
((System.ComponentModel.ISupportInitialize)(this.NUDBanUID)).EndInit();
this.GrpAccount.ResumeLayout(false);
this.GrpAccount.PerformLayout();
((System.ComponentModel.ISupportInitialize)(this.NUDAccountUid)).EndInit();
this.GrpPermission.ResumeLayout(false);
this.GrpPermission.PerformLayout();
((System.ComponentModel.ISupportInitialize)(this.NUDPermUID)).EndInit();
this.ResumeLayout(false);
}
#endregion
private System.Windows.Forms.GroupBox GrpBanPlayer;
private System.Windows.Forms.DateTimePicker DTPBanEndTime;
private System.Windows.Forms.Button BtnUnban;
private System.Windows.Forms.Button BtnBan;
private System.Windows.Forms.NumericUpDown NUDBanUID;
private System.Windows.Forms.Label LblBanUID;
private System.Windows.Forms.GroupBox GrpAccount;
private System.Windows.Forms.CheckBox ChkAccountSetUid;
private System.Windows.Forms.NumericUpDown NUDAccountUid;
private System.Windows.Forms.Button BtnDeleteAccount;
private System.Windows.Forms.Button BtnCreateAccount;
private System.Windows.Forms.Label LblAccountUserName;
private System.Windows.Forms.TextBox TxtAccountUserName;
private System.Windows.Forms.GroupBox GrpPermission;
private System.Windows.Forms.ComboBox CmbPerm;
private System.Windows.Forms.NumericUpDown NUDPermUID;
private System.Windows.Forms.Button BtnPermClear;
private System.Windows.Forms.Button BtmPermRemove;
private System.Windows.Forms.Button BtnPermList;
private System.Windows.Forms.Button BtnPermAdd;
private System.Windows.Forms.Label LblPerm;
private System.Windows.Forms.Label LblPermUID;
private System.Windows.Forms.TextBox TxtBanReason;
}
}

View File

@@ -0,0 +1,102 @@
/**
* Grasscutter Tools
* Copyright (C) 2022 jie65535
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published
* by the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*
**/
using System;
using System.Linq;
using System.Text.RegularExpressions;
using System.Windows.Forms;
using GrasscutterTools.Properties;
namespace GrasscutterTools.Pages
{
internal partial class PageManagement : BasePage
{
public PageManagement()
{
InitializeComponent();
if (DesignMode) return;
}
public override void OnLoad()
{
CmbPerm.Items.Clear();
CmbPerm.Items.AddRange(Resources.Permissions.Split('\n').Select(l => l.Trim()).ToArray());
}
/// <summary>
/// 点击授权按钮时触发
/// </summary>
private void BtnPermClick(object sender, EventArgs e)
{
var uid = NUDPermUID.Value;
var perm = CmbPerm.Text.Trim();
var act = (sender as Button).Tag.ToString();
if (act == "list" || act == "clear")
{
SetCommand($"/permission {act} @{uid}");
}
else
{
if (string.IsNullOrEmpty(perm))
{
MessageBox.Show(Resources.PermissionCannotBeEmpty, Resources.Error, MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
SetCommand($"/permission {act} @{uid} {perm}");
}
}
/// <summary>
/// 账号相关按钮点击时触发Tag包含子命令
/// </summary>
private void AccountButtonClicked(object sender, EventArgs e)
{
var username = TxtAccountUserName.Text.Trim();
if (string.IsNullOrEmpty(username))
{
MessageBox.Show(Resources.UsernameCannotBeEmpty, Resources.Error, MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
SetCommand($"/account {(sender as Button).Tag} {username} {(ChkAccountSetUid.Checked ? NUDAccountUid.Value.ToString() : "")}");
}
/// <summary>
/// 点击封禁按钮时触发
/// </summary>
private void BtnBan_Click(object sender, EventArgs e)
{
var uid = NUDBanUID.Value;
var endTime = DTPBanEndTime.Value;
var command = $"/ban @{uid} {new DateTimeOffset(endTime).ToUnixTimeSeconds()}";
var reaseon = Regex.Replace(TxtBanReason.Text.Trim(), @"\s+", "-");
if (!string.IsNullOrEmpty(reaseon))
command += $" {reaseon}";
SetCommand(command);
}
/// <summary>
/// 点击解封按钮时触发
/// </summary>
private void BtnUnban_Click(object sender, EventArgs e)
{
SetCommand($"/unban @{NUDBanUID.Value}");
}
}
}

View File

@@ -0,0 +1,208 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="BtnUnban.Text" xml:space="preserve">
<value>Unban</value>
</data>
<data name="BtnBan.Text" xml:space="preserve">
<value>Ban</value>
</data>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="NUDBanUID.Location" type="System.Drawing.Point, System.Drawing">
<value>54, 22</value>
</data>
<data name="NUDBanUID.Size" type="System.Drawing.Size, System.Drawing">
<value>94, 23</value>
</data>
<data name="LblBanUID.Location" type="System.Drawing.Point, System.Drawing">
<value>18, 25</value>
</data>
<data name="LblBanUID.Size" type="System.Drawing.Size, System.Drawing">
<value>30, 17</value>
</data>
<data name="LblBanUID.Text" xml:space="preserve">
<value>UID</value>
</data>
<data name="GrpBanPlayer.Text" xml:space="preserve">
<value>Ban</value>
</data>
<data name="GrpAccount.Text" xml:space="preserve">
<value>Account</value>
</data>
<data name="ChkAccountSetUid.Location" type="System.Drawing.Point, System.Drawing">
<value>239, 24</value>
</data>
<data name="ChkAccountSetUid.Size" type="System.Drawing.Size, System.Drawing">
<value>49, 21</value>
</data>
<data name="ChkAccountSetUid.Text" xml:space="preserve">
<value>UID</value>
</data>
<data name="BtnDeleteAccount.Text" xml:space="preserve">
<value>Delete</value>
</data>
<data name="BtnCreateAccount.Text" xml:space="preserve">
<value>Create</value>
</data>
<data name="LblAccountUserName.Size" type="System.Drawing.Size, System.Drawing">
<value>67, 17</value>
</data>
<data name="LblAccountUserName.Text" xml:space="preserve">
<value>Username</value>
</data>
<data name="TxtAccountUserName.Location" type="System.Drawing.Point, System.Drawing">
<value>80, 21</value>
</data>
<data name="GrpPermission.Text" xml:space="preserve">
<value>Permissions</value>
</data>
<data name="NUDPermUID.Location" type="System.Drawing.Point, System.Drawing">
<value>54, 22</value>
</data>
<data name="BtnPermClear.Text" xml:space="preserve">
<value>Clear</value>
</data>
<data name="BtmPermRemove.Text" xml:space="preserve">
<value>Delete</value>
</data>
<data name="BtnPermList.Text" xml:space="preserve">
<value>List</value>
</data>
<data name="BtnPermAdd.Text" xml:space="preserve">
<value>Add</value>
</data>
<data name="LblPerm.Location" type="System.Drawing.Point, System.Drawing">
<value>200, 25</value>
</data>
<data name="LblPerm.Size" type="System.Drawing.Size, System.Drawing">
<value>44, 17</value>
</data>
<data name="LblPerm.Text" xml:space="preserve">
<value>Perms</value>
</data>
<data name="LblPermUID.Location" type="System.Drawing.Point, System.Drawing">
<value>18, 24</value>
</data>
<data name="LblPermUID.Size" type="System.Drawing.Size, System.Drawing">
<value>30, 17</value>
</data>
<data name="LblPermUID.Text" xml:space="preserve">
<value>UID</value>
</data>
</root>

View File

@@ -0,0 +1,732 @@
<?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="GrpBanPlayer.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>None</value>
</data>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="TxtBanReason.Location" type="System.Drawing.Point, System.Drawing">
<value>250, 22</value>
</data>
<data name="TxtBanReason.Size" type="System.Drawing.Size, System.Drawing">
<value>150, 23</value>
</data>
<assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="TxtBanReason.TabIndex" type="System.Int32, mscorlib">
<value>3</value>
</data>
<data name="&gt;&gt;TxtBanReason.Name" xml:space="preserve">
<value>TxtBanReason</value>
</data>
<data name="&gt;&gt;TxtBanReason.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;TxtBanReason.Parent" xml:space="preserve">
<value>GrpBanPlayer</value>
</data>
<data name="&gt;&gt;TxtBanReason.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="DTPBanEndTime.Location" type="System.Drawing.Point, System.Drawing">
<value>154, 22</value>
</data>
<data name="DTPBanEndTime.Size" type="System.Drawing.Size, System.Drawing">
<value>90, 23</value>
</data>
<data name="DTPBanEndTime.TabIndex" type="System.Int32, mscorlib">
<value>2</value>
</data>
<data name="&gt;&gt;DTPBanEndTime.Name" xml:space="preserve">
<value>DTPBanEndTime</value>
</data>
<data name="&gt;&gt;DTPBanEndTime.Type" xml:space="preserve">
<value>System.Windows.Forms.DateTimePicker, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;DTPBanEndTime.Parent" xml:space="preserve">
<value>GrpBanPlayer</value>
</data>
<data name="&gt;&gt;DTPBanEndTime.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="BtnUnban.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="BtnUnban.Location" type="System.Drawing.Point, System.Drawing">
<value>473, 22</value>
</data>
<data name="BtnUnban.Size" type="System.Drawing.Size, System.Drawing">
<value>60, 23</value>
</data>
<data name="BtnUnban.TabIndex" type="System.Int32, mscorlib">
<value>5</value>
</data>
<data name="BtnUnban.Text" xml:space="preserve">
<value>解封</value>
</data>
<data name="&gt;&gt;BtnUnban.Name" xml:space="preserve">
<value>BtnUnban</value>
</data>
<data name="&gt;&gt;BtnUnban.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;BtnUnban.Parent" xml:space="preserve">
<value>GrpBanPlayer</value>
</data>
<data name="&gt;&gt;BtnUnban.ZOrder" xml:space="preserve">
<value>2</value>
</data>
<data name="BtnBan.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="BtnBan.Location" type="System.Drawing.Point, System.Drawing">
<value>407, 22</value>
</data>
<data name="BtnBan.Size" type="System.Drawing.Size, System.Drawing">
<value>60, 23</value>
</data>
<data name="BtnBan.TabIndex" type="System.Int32, mscorlib">
<value>4</value>
</data>
<data name="BtnBan.Text" xml:space="preserve">
<value>封号</value>
</data>
<data name="&gt;&gt;BtnBan.Name" xml:space="preserve">
<value>BtnBan</value>
</data>
<data name="&gt;&gt;BtnBan.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;BtnBan.Parent" xml:space="preserve">
<value>GrpBanPlayer</value>
</data>
<data name="&gt;&gt;BtnBan.ZOrder" xml:space="preserve">
<value>3</value>
</data>
<data name="NUDBanUID.Location" type="System.Drawing.Point, System.Drawing">
<value>66, 22</value>
</data>
<data name="NUDBanUID.Size" type="System.Drawing.Size, System.Drawing">
<value>82, 23</value>
</data>
<data name="NUDBanUID.TabIndex" type="System.Int32, mscorlib">
<value>1</value>
</data>
<data name="&gt;&gt;NUDBanUID.Name" xml:space="preserve">
<value>NUDBanUID</value>
</data>
<data name="&gt;&gt;NUDBanUID.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;NUDBanUID.Parent" xml:space="preserve">
<value>GrpBanPlayer</value>
</data>
<data name="&gt;&gt;NUDBanUID.ZOrder" xml:space="preserve">
<value>4</value>
</data>
<data name="LblBanUID.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="LblBanUID.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="LblBanUID.Location" type="System.Drawing.Point, System.Drawing">
<value>6, 25</value>
</data>
<data name="LblBanUID.Size" type="System.Drawing.Size, System.Drawing">
<value>54, 17</value>
</data>
<data name="LblBanUID.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
</data>
<data name="LblBanUID.Text" xml:space="preserve">
<value>目标UID</value>
</data>
<data name="&gt;&gt;LblBanUID.Name" xml:space="preserve">
<value>LblBanUID</value>
</data>
<data name="&gt;&gt;LblBanUID.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;LblBanUID.Parent" xml:space="preserve">
<value>GrpBanPlayer</value>
</data>
<data name="&gt;&gt;LblBanUID.ZOrder" xml:space="preserve">
<value>5</value>
</data>
<data name="GrpBanPlayer.Location" type="System.Drawing.Point, System.Drawing">
<value>53, 165</value>
</data>
<data name="GrpBanPlayer.Size" type="System.Drawing.Size, System.Drawing">
<value>540, 60</value>
</data>
<data name="GrpBanPlayer.TabIndex" type="System.Int32, mscorlib">
<value>2</value>
</data>
<data name="GrpBanPlayer.Text" xml:space="preserve">
<value>封禁管理</value>
</data>
<data name="&gt;&gt;GrpBanPlayer.Name" xml:space="preserve">
<value>GrpBanPlayer</value>
</data>
<data name="&gt;&gt;GrpBanPlayer.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;GrpBanPlayer.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;GrpBanPlayer.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="GrpAccount.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>None</value>
</data>
<data name="ChkAccountSetUid.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="ChkAccountSetUid.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="ChkAccountSetUid.Location" type="System.Drawing.Point, System.Drawing">
<value>215, 23</value>
</data>
<data name="ChkAccountSetUid.Size" type="System.Drawing.Size, System.Drawing">
<value>73, 21</value>
</data>
<data name="ChkAccountSetUid.TabIndex" type="System.Int32, mscorlib">
<value>2</value>
</data>
<data name="ChkAccountSetUid.Text" xml:space="preserve">
<value>指定UID</value>
</data>
<data name="&gt;&gt;ChkAccountSetUid.Name" xml:space="preserve">
<value>ChkAccountSetUid</value>
</data>
<data name="&gt;&gt;ChkAccountSetUid.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;ChkAccountSetUid.Parent" xml:space="preserve">
<value>GrpAccount</value>
</data>
<data name="&gt;&gt;ChkAccountSetUid.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="NUDAccountUid.Location" type="System.Drawing.Point, System.Drawing">
<value>294, 22</value>
</data>
<data name="NUDAccountUid.Size" type="System.Drawing.Size, System.Drawing">
<value>106, 23</value>
</data>
<data name="NUDAccountUid.TabIndex" type="System.Int32, mscorlib">
<value>3</value>
</data>
<data name="&gt;&gt;NUDAccountUid.Name" xml:space="preserve">
<value>NUDAccountUid</value>
</data>
<data name="&gt;&gt;NUDAccountUid.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;NUDAccountUid.Parent" xml:space="preserve">
<value>GrpAccount</value>
</data>
<data name="&gt;&gt;NUDAccountUid.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="BtnDeleteAccount.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="BtnDeleteAccount.Location" type="System.Drawing.Point, System.Drawing">
<value>473, 22</value>
</data>
<data name="BtnDeleteAccount.Size" type="System.Drawing.Size, System.Drawing">
<value>60, 23</value>
</data>
<data name="BtnDeleteAccount.TabIndex" type="System.Int32, mscorlib">
<value>5</value>
</data>
<data name="BtnDeleteAccount.Text" xml:space="preserve">
<value>- 删除</value>
</data>
<data name="&gt;&gt;BtnDeleteAccount.Name" xml:space="preserve">
<value>BtnDeleteAccount</value>
</data>
<data name="&gt;&gt;BtnDeleteAccount.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;BtnDeleteAccount.Parent" xml:space="preserve">
<value>GrpAccount</value>
</data>
<data name="&gt;&gt;BtnDeleteAccount.ZOrder" xml:space="preserve">
<value>2</value>
</data>
<data name="BtnCreateAccount.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="BtnCreateAccount.Location" type="System.Drawing.Point, System.Drawing">
<value>407, 22</value>
</data>
<data name="BtnCreateAccount.Size" type="System.Drawing.Size, System.Drawing">
<value>60, 23</value>
</data>
<data name="BtnCreateAccount.TabIndex" type="System.Int32, mscorlib">
<value>4</value>
</data>
<data name="BtnCreateAccount.Text" xml:space="preserve">
<value>+ 创建</value>
</data>
<data name="&gt;&gt;BtnCreateAccount.Name" xml:space="preserve">
<value>BtnCreateAccount</value>
</data>
<data name="&gt;&gt;BtnCreateAccount.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;BtnCreateAccount.Parent" xml:space="preserve">
<value>GrpAccount</value>
</data>
<data name="&gt;&gt;BtnCreateAccount.ZOrder" xml:space="preserve">
<value>3</value>
</data>
<data name="LblAccountUserName.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="LblAccountUserName.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="LblAccountUserName.Location" type="System.Drawing.Point, System.Drawing">
<value>16, 25</value>
</data>
<data name="LblAccountUserName.Size" type="System.Drawing.Size, System.Drawing">
<value>44, 17</value>
</data>
<data name="LblAccountUserName.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
</data>
<data name="LblAccountUserName.Text" xml:space="preserve">
<value>用户名</value>
</data>
<data name="&gt;&gt;LblAccountUserName.Name" xml:space="preserve">
<value>LblAccountUserName</value>
</data>
<data name="&gt;&gt;LblAccountUserName.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;LblAccountUserName.Parent" xml:space="preserve">
<value>GrpAccount</value>
</data>
<data name="&gt;&gt;LblAccountUserName.ZOrder" xml:space="preserve">
<value>4</value>
</data>
<data name="TxtAccountUserName.Location" type="System.Drawing.Point, System.Drawing">
<value>66, 22</value>
</data>
<data name="TxtAccountUserName.Size" type="System.Drawing.Size, System.Drawing">
<value>140, 23</value>
</data>
<data name="TxtAccountUserName.TabIndex" type="System.Int32, mscorlib">
<value>1</value>
</data>
<data name="TxtAccountUserName.Text" xml:space="preserve">
<value>test</value>
</data>
<data name="&gt;&gt;TxtAccountUserName.Name" xml:space="preserve">
<value>TxtAccountUserName</value>
</data>
<data name="&gt;&gt;TxtAccountUserName.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;TxtAccountUserName.Parent" xml:space="preserve">
<value>GrpAccount</value>
</data>
<data name="&gt;&gt;TxtAccountUserName.ZOrder" xml:space="preserve">
<value>5</value>
</data>
<data name="GrpAccount.Location" type="System.Drawing.Point, System.Drawing">
<value>53, 13</value>
</data>
<data name="GrpAccount.Size" type="System.Drawing.Size, System.Drawing">
<value>540, 60</value>
</data>
<data name="GrpAccount.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
</data>
<data name="GrpAccount.Text" xml:space="preserve">
<value>账号管理</value>
</data>
<data name="&gt;&gt;GrpAccount.Name" xml:space="preserve">
<value>GrpAccount</value>
</data>
<data name="&gt;&gt;GrpAccount.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;GrpAccount.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;GrpAccount.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="GrpPermission.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>None</value>
</data>
<data name="CmbPerm.Location" type="System.Drawing.Point, System.Drawing">
<value>250, 21</value>
</data>
<data name="CmbPerm.Size" type="System.Drawing.Size, System.Drawing">
<value>150, 25</value>
</data>
<data name="CmbPerm.TabIndex" type="System.Int32, mscorlib">
<value>3</value>
</data>
<data name="&gt;&gt;CmbPerm.Name" xml:space="preserve">
<value>CmbPerm</value>
</data>
<data name="&gt;&gt;CmbPerm.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;CmbPerm.Parent" xml:space="preserve">
<value>GrpPermission</value>
</data>
<data name="&gt;&gt;CmbPerm.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="NUDPermUID.Location" type="System.Drawing.Point, System.Drawing">
<value>66, 22</value>
</data>
<data name="NUDPermUID.Size" type="System.Drawing.Size, System.Drawing">
<value>140, 23</value>
</data>
<data name="NUDPermUID.TabIndex" type="System.Int32, mscorlib">
<value>1</value>
</data>
<data name="&gt;&gt;NUDPermUID.Name" xml:space="preserve">
<value>NUDPermUID</value>
</data>
<data name="&gt;&gt;NUDPermUID.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;NUDPermUID.Parent" xml:space="preserve">
<value>GrpPermission</value>
</data>
<data name="&gt;&gt;NUDPermUID.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="BtnPermClear.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="BtnPermClear.Location" type="System.Drawing.Point, System.Drawing">
<value>473, 51</value>
</data>
<data name="BtnPermClear.Size" type="System.Drawing.Size, System.Drawing">
<value>60, 23</value>
</data>
<data name="BtnPermClear.TabIndex" type="System.Int32, mscorlib">
<value>7</value>
</data>
<data name="BtnPermClear.Text" xml:space="preserve">
<value>x 清空</value>
</data>
<data name="&gt;&gt;BtnPermClear.Name" xml:space="preserve">
<value>BtnPermClear</value>
</data>
<data name="&gt;&gt;BtnPermClear.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;BtnPermClear.Parent" xml:space="preserve">
<value>GrpPermission</value>
</data>
<data name="&gt;&gt;BtnPermClear.ZOrder" xml:space="preserve">
<value>2</value>
</data>
<data name="BtmPermRemove.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="BtmPermRemove.Location" type="System.Drawing.Point, System.Drawing">
<value>473, 22</value>
</data>
<data name="BtmPermRemove.Size" type="System.Drawing.Size, System.Drawing">
<value>60, 23</value>
</data>
<data name="BtmPermRemove.TabIndex" type="System.Int32, mscorlib">
<value>5</value>
</data>
<data name="BtmPermRemove.Text" xml:space="preserve">
<value>- 移除</value>
</data>
<data name="&gt;&gt;BtmPermRemove.Name" xml:space="preserve">
<value>BtmPermRemove</value>
</data>
<data name="&gt;&gt;BtmPermRemove.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;BtmPermRemove.Parent" xml:space="preserve">
<value>GrpPermission</value>
</data>
<data name="&gt;&gt;BtmPermRemove.ZOrder" xml:space="preserve">
<value>3</value>
</data>
<data name="BtnPermList.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="BtnPermList.Location" type="System.Drawing.Point, System.Drawing">
<value>407, 51</value>
</data>
<data name="BtnPermList.Size" type="System.Drawing.Size, System.Drawing">
<value>60, 23</value>
</data>
<data name="BtnPermList.TabIndex" type="System.Int32, mscorlib">
<value>6</value>
</data>
<data name="BtnPermList.Text" xml:space="preserve">
<value>列出</value>
</data>
<data name="&gt;&gt;BtnPermList.Name" xml:space="preserve">
<value>BtnPermList</value>
</data>
<data name="&gt;&gt;BtnPermList.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;BtnPermList.Parent" xml:space="preserve">
<value>GrpPermission</value>
</data>
<data name="&gt;&gt;BtnPermList.ZOrder" xml:space="preserve">
<value>4</value>
</data>
<data name="BtnPermAdd.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="BtnPermAdd.Location" type="System.Drawing.Point, System.Drawing">
<value>407, 22</value>
</data>
<data name="BtnPermAdd.Size" type="System.Drawing.Size, System.Drawing">
<value>60, 23</value>
</data>
<data name="BtnPermAdd.TabIndex" type="System.Int32, mscorlib">
<value>4</value>
</data>
<data name="BtnPermAdd.Text" xml:space="preserve">
<value>+ 添加</value>
</data>
<data name="&gt;&gt;BtnPermAdd.Name" xml:space="preserve">
<value>BtnPermAdd</value>
</data>
<data name="&gt;&gt;BtnPermAdd.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;BtnPermAdd.Parent" xml:space="preserve">
<value>GrpPermission</value>
</data>
<data name="&gt;&gt;BtnPermAdd.ZOrder" xml:space="preserve">
<value>5</value>
</data>
<data name="LblPerm.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="LblPerm.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="LblPerm.Location" type="System.Drawing.Point, System.Drawing">
<value>212, 25</value>
</data>
<data name="LblPerm.Size" type="System.Drawing.Size, System.Drawing">
<value>32, 17</value>
</data>
<data name="LblPerm.TabIndex" type="System.Int32, mscorlib">
<value>2</value>
</data>
<data name="LblPerm.Text" xml:space="preserve">
<value>权限</value>
</data>
<data name="&gt;&gt;LblPerm.Name" xml:space="preserve">
<value>LblPerm</value>
</data>
<data name="&gt;&gt;LblPerm.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;LblPerm.Parent" xml:space="preserve">
<value>GrpPermission</value>
</data>
<data name="&gt;&gt;LblPerm.ZOrder" xml:space="preserve">
<value>6</value>
</data>
<data name="LblPermUID.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="LblPermUID.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="LblPermUID.Location" type="System.Drawing.Point, System.Drawing">
<value>6, 25</value>
</data>
<data name="LblPermUID.Size" type="System.Drawing.Size, System.Drawing">
<value>54, 17</value>
</data>
<data name="LblPermUID.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
</data>
<data name="LblPermUID.Text" xml:space="preserve">
<value>目标UID</value>
</data>
<data name="&gt;&gt;LblPermUID.Name" xml:space="preserve">
<value>LblPermUID</value>
</data>
<data name="&gt;&gt;LblPermUID.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;LblPermUID.Parent" xml:space="preserve">
<value>GrpPermission</value>
</data>
<data name="&gt;&gt;LblPermUID.ZOrder" xml:space="preserve">
<value>7</value>
</data>
<data name="GrpPermission.Location" type="System.Drawing.Point, System.Drawing">
<value>53, 79</value>
</data>
<data name="GrpPermission.Size" type="System.Drawing.Size, System.Drawing">
<value>540, 80</value>
</data>
<data name="GrpPermission.TabIndex" type="System.Int32, mscorlib">
<value>1</value>
</data>
<data name="GrpPermission.Text" xml:space="preserve">
<value>权限管理</value>
</data>
<data name="&gt;&gt;GrpPermission.Name" xml:space="preserve">
<value>GrpPermission</value>
</data>
<data name="&gt;&gt;GrpPermission.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;GrpPermission.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;GrpPermission.ZOrder" xml:space="preserve">
<value>2</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>PageManagement</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,268 @@
<?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="TxtBanReason.Size" type="System.Drawing.Size, System.Drawing">
<value>111, 23</value>
</data>
<data name="BtnUnban.Location" type="System.Drawing.Point, System.Drawing">
<value>453, 21</value>
</data>
<data name="BtnUnban.Size" type="System.Drawing.Size, System.Drawing">
<value>80, 23</value>
</data>
<data name="BtnUnban.Text" xml:space="preserve">
<value>Разбанить</value>
</data>
<data name="BtnBan.Location" type="System.Drawing.Point, System.Drawing">
<value>367, 21</value>
</data>
<data name="BtnBan.Size" type="System.Drawing.Size, System.Drawing">
<value>80, 23</value>
</data>
<data name="BtnBan.Text" xml:space="preserve">
<value>Забанить</value>
</data>
<data name="NUDBanUID.Location" type="System.Drawing.Point, System.Drawing">
<value>42, 22</value>
</data>
<data name="NUDBanUID.Size" type="System.Drawing.Size, System.Drawing">
<value>106, 23</value>
</data>
<data name="LblBanUID.Size" type="System.Drawing.Size, System.Drawing">
<value>30, 17</value>
</data>
<data name="LblBanUID.Text" xml:space="preserve">
<value>UID</value>
</data>
<data name="GrpBanPlayer.Text" xml:space="preserve">
<value>Управление банами</value>
</data>
<data name="GrpAccount.Text" xml:space="preserve">
<value>Управление аккаунтом</value>
</data>
<data name="ChkAccountSetUid.Location" type="System.Drawing.Point, System.Drawing">
<value>220, 24</value>
</data>
<data name="ChkAccountSetUid.Size" type="System.Drawing.Size, System.Drawing">
<value>49, 21</value>
</data>
<data name="ChkAccountSetUid.Text" xml:space="preserve">
<value>UID</value>
</data>
<data name="NUDAccountUid.Location" type="System.Drawing.Point, System.Drawing">
<value>275, 22</value>
</data>
<data name="BtnDeleteAccount.Location" type="System.Drawing.Point, System.Drawing">
<value>463, 22</value>
</data>
<data name="BtnDeleteAccount.Size" type="System.Drawing.Size, System.Drawing">
<value>70, 23</value>
</data>
<data name="BtnDeleteAccount.Text" xml:space="preserve">
<value>Удалить</value>
</data>
<data name="BtnCreateAccount.Location" type="System.Drawing.Point, System.Drawing">
<value>387, 22</value>
</data>
<data name="BtnCreateAccount.Size" type="System.Drawing.Size, System.Drawing">
<value>70, 23</value>
</data>
<data name="BtnCreateAccount.Text" xml:space="preserve">
<value>Создать</value>
</data>
<data name="LblAccountUserName.Size" type="System.Drawing.Size, System.Drawing">
<value>81, 17</value>
</data>
<data name="LblAccountUserName.Text" xml:space="preserve">
<value>Имя игрока</value>
</data>
<data name="TxtAccountUserName.Location" type="System.Drawing.Point, System.Drawing">
<value>103, 22</value>
</data>
<data name="TxtAccountUserName.Size" type="System.Drawing.Size, System.Drawing">
<value>111, 23</value>
</data>
<data name="GrpPermission.Text" xml:space="preserve">
<value>Управление правами</value>
</data>
<data name="CmbPerm.Location" type="System.Drawing.Point, System.Drawing">
<value>206, 21</value>
</data>
<data name="CmbPerm.Size" type="System.Drawing.Size, System.Drawing">
<value>155, 25</value>
</data>
<data name="NUDPermUID.Location" type="System.Drawing.Point, System.Drawing">
<value>42, 21</value>
</data>
<data name="NUDPermUID.Size" type="System.Drawing.Size, System.Drawing">
<value>106, 23</value>
</data>
<data name="BtnPermClear.Location" type="System.Drawing.Point, System.Drawing">
<value>453, 51</value>
</data>
<data name="BtnPermClear.Size" type="System.Drawing.Size, System.Drawing">
<value>80, 23</value>
</data>
<data name="BtnPermClear.Text" xml:space="preserve">
<value>Очистить</value>
</data>
<data name="BtmPermRemove.Location" type="System.Drawing.Point, System.Drawing">
<value>453, 22</value>
</data>
<data name="BtmPermRemove.Size" type="System.Drawing.Size, System.Drawing">
<value>80, 23</value>
</data>
<data name="BtmPermRemove.Text" xml:space="preserve">
<value>Удалить</value>
</data>
<data name="BtnPermList.Location" type="System.Drawing.Point, System.Drawing">
<value>352, 51</value>
</data>
<data name="BtnPermList.Size" type="System.Drawing.Size, System.Drawing">
<value>95, 23</value>
</data>
<data name="BtnPermList.Text" xml:space="preserve">
<value>Список прав</value>
</data>
<data name="BtnPermAdd.Location" type="System.Drawing.Point, System.Drawing">
<value>367, 22</value>
</data>
<data name="BtnPermAdd.Size" type="System.Drawing.Size, System.Drawing">
<value>80, 23</value>
</data>
<data name="BtnPermAdd.Text" xml:space="preserve">
<value>Добавить</value>
</data>
<data name="LblPerm.Location" type="System.Drawing.Point, System.Drawing">
<value>154, 24</value>
</data>
<data name="LblPerm.Size" type="System.Drawing.Size, System.Drawing">
<value>46, 17</value>
</data>
<data name="LblPerm.Text" xml:space="preserve">
<value>Права</value>
</data>
<data name="LblPermUID.Size" type="System.Drawing.Size, System.Drawing">
<value>30, 17</value>
</data>
<data name="LblPermUID.Text" xml:space="preserve">
<value>UID</value>
</data>
</root>

View File

@@ -0,0 +1,147 @@
<?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="BtnBan.Text" xml:space="preserve">
<value>封禁</value>
</data>
<data name="LblBanUID.Text" xml:space="preserve">
<value>目標UID</value>
</data>
<data name="GrpAccount.Text" xml:space="preserve">
<value>賬戶管理</value>
</data>
<data name="BtnDeleteAccount.Text" xml:space="preserve">
<value>- 刪除</value>
</data>
<data name="BtnCreateAccount.Text" xml:space="preserve">
<value>+ 創建</value>
</data>
<data name="LblAccountUserName.Text" xml:space="preserve">
<value>用戶名</value>
</data>
<data name="GrpPermission.Text" xml:space="preserve">
<value>權限管理</value>
</data>
<data name="LblPerm.Text" xml:space="preserve">
<value>權限</value>
</data>
<data name="LblPermUID.Text" xml:space="preserve">
<value>目標UID</value>
</data>
</root>

View File

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

View File

@@ -0,0 +1,140 @@
namespace GrasscutterTools.Pages
{
partial class PageQuest
{
/// <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(PageQuest));
this.GrpQuestFilters = new System.Windows.Forms.GroupBox();
this.ChkQuestFilterTEST = new System.Windows.Forms.CheckBox();
this.ChkQuestFilterUNRELEASED = new System.Windows.Forms.CheckBox();
this.ChkQuestFilterHIDDEN = new System.Windows.Forms.CheckBox();
this.BtnFinishQuest = new System.Windows.Forms.Button();
this.BtnAddQuest = new System.Windows.Forms.Button();
this.LblQuestDescription = new System.Windows.Forms.Label();
this.TxtQuestFilter = new System.Windows.Forms.TextBox();
this.ListQuest = new System.Windows.Forms.ListBox();
this.GrpQuestFilters.SuspendLayout();
this.SuspendLayout();
//
// GrpQuestFilters
//
resources.ApplyResources(this.GrpQuestFilters, "GrpQuestFilters");
this.GrpQuestFilters.Controls.Add(this.ChkQuestFilterTEST);
this.GrpQuestFilters.Controls.Add(this.ChkQuestFilterUNRELEASED);
this.GrpQuestFilters.Controls.Add(this.ChkQuestFilterHIDDEN);
this.GrpQuestFilters.Name = "GrpQuestFilters";
this.GrpQuestFilters.TabStop = false;
//
// ChkQuestFilterTEST
//
resources.ApplyResources(this.ChkQuestFilterTEST, "ChkQuestFilterTEST");
this.ChkQuestFilterTEST.Name = "ChkQuestFilterTEST";
this.ChkQuestFilterTEST.Tag = "(test)";
this.ChkQuestFilterTEST.UseVisualStyleBackColor = true;
this.ChkQuestFilterTEST.CheckedChanged += new System.EventHandler(this.QuestFilterChanged);
//
// ChkQuestFilterUNRELEASED
//
resources.ApplyResources(this.ChkQuestFilterUNRELEASED, "ChkQuestFilterUNRELEASED");
this.ChkQuestFilterUNRELEASED.Name = "ChkQuestFilterUNRELEASED";
this.ChkQuestFilterUNRELEASED.Tag = "$UNRELEASED";
this.ChkQuestFilterUNRELEASED.UseVisualStyleBackColor = true;
this.ChkQuestFilterUNRELEASED.CheckedChanged += new System.EventHandler(this.QuestFilterChanged);
//
// ChkQuestFilterHIDDEN
//
resources.ApplyResources(this.ChkQuestFilterHIDDEN, "ChkQuestFilterHIDDEN");
this.ChkQuestFilterHIDDEN.Name = "ChkQuestFilterHIDDEN";
this.ChkQuestFilterHIDDEN.Tag = "$HIDDEN";
this.ChkQuestFilterHIDDEN.UseVisualStyleBackColor = true;
this.ChkQuestFilterHIDDEN.CheckedChanged += new System.EventHandler(this.QuestFilterChanged);
//
// BtnFinishQuest
//
resources.ApplyResources(this.BtnFinishQuest, "BtnFinishQuest");
this.BtnFinishQuest.Name = "BtnFinishQuest";
this.BtnFinishQuest.Tag = "finish";
this.BtnFinishQuest.UseVisualStyleBackColor = true;
this.BtnFinishQuest.Click += new System.EventHandler(this.QuestButsClicked);
//
// BtnAddQuest
//
resources.ApplyResources(this.BtnAddQuest, "BtnAddQuest");
this.BtnAddQuest.Name = "BtnAddQuest";
this.BtnAddQuest.Tag = "add";
this.BtnAddQuest.UseVisualStyleBackColor = true;
this.BtnAddQuest.Click += new System.EventHandler(this.QuestButsClicked);
//
// LblQuestDescription
//
resources.ApplyResources(this.LblQuestDescription, "LblQuestDescription");
this.LblQuestDescription.Name = "LblQuestDescription";
//
// TxtQuestFilter
//
resources.ApplyResources(this.TxtQuestFilter, "TxtQuestFilter");
this.TxtQuestFilter.Name = "TxtQuestFilter";
this.TxtQuestFilter.TextChanged += new System.EventHandler(this.QuestFilterChanged);
//
// ListQuest
//
resources.ApplyResources(this.ListQuest, "ListQuest");
this.ListQuest.FormattingEnabled = true;
this.ListQuest.Name = "ListQuest";
//
// PageQuest
//
resources.ApplyResources(this, "$this");
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.Controls.Add(this.GrpQuestFilters);
this.Controls.Add(this.BtnFinishQuest);
this.Controls.Add(this.BtnAddQuest);
this.Controls.Add(this.LblQuestDescription);
this.Controls.Add(this.TxtQuestFilter);
this.Controls.Add(this.ListQuest);
this.Name = "PageQuest";
this.GrpQuestFilters.ResumeLayout(false);
this.GrpQuestFilters.PerformLayout();
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private System.Windows.Forms.GroupBox GrpQuestFilters;
private System.Windows.Forms.CheckBox ChkQuestFilterTEST;
private System.Windows.Forms.CheckBox ChkQuestFilterUNRELEASED;
private System.Windows.Forms.CheckBox ChkQuestFilterHIDDEN;
private System.Windows.Forms.Button BtnFinishQuest;
private System.Windows.Forms.Button BtnAddQuest;
private System.Windows.Forms.Label LblQuestDescription;
private System.Windows.Forms.TextBox TxtQuestFilter;
private System.Windows.Forms.ListBox ListQuest;
}
}

View File

@@ -0,0 +1,77 @@
/**
* Grasscutter Tools
* Copyright (C) 2022 jie65535
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published
* by the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*
**/
using System;
using System.Linq;
using System.Windows.Forms;
using GrasscutterTools.Game;
namespace GrasscutterTools.Pages
{
internal partial class PageQuest : BasePage
{
public PageQuest()
{
InitializeComponent();
}
/// <summary>
/// 初始化任务列表
/// </summary>
public override void OnLoad()
{
QuestFilterChanged(null, EventArgs.Empty);
}
/// <summary>
/// 任务列表过滤器文本改变时触发
/// </summary>
private void QuestFilterChanged(object sender, EventArgs e)
{
ListQuest.BeginUpdate();
ListQuest.Items.Clear();
ListQuest.Items.AddRange(GameData.Quests.Lines.Where(l =>
{
if (!ChkQuestFilterHIDDEN.Checked && l.Contains((string)ChkQuestFilterHIDDEN.Tag))
return false;
if (!ChkQuestFilterUNRELEASED.Checked && l.Contains((string)ChkQuestFilterUNRELEASED.Tag))
return false;
if (!ChkQuestFilterTEST.Checked && l.Contains((string)ChkQuestFilterTEST.Tag))
return false;
if (!string.IsNullOrEmpty(TxtQuestFilter.Text))
return l.Contains(TxtQuestFilter.Text);
return true;
}).ToArray());
ListQuest.EndUpdate();
}
/// <summary>
/// 任务相关按钮点击时触发Tag带子命令
/// </summary>
private void QuestButsClicked(object sender, EventArgs e)
{
if (ListQuest.SelectedIndex == -1)
return;
var item = ListQuest.SelectedItem as string;
var id = ItemMap.ToId(item);
SetCommand("/quest", $"{(sender as Button).Tag} {id}");
}
}
}

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>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="ChkQuestFilterTEST.Size" type="System.Drawing.Size, System.Drawing">
<value>51, 21</value>
</data>
<data name="ChkQuestFilterTEST.Text" xml:space="preserve">
<value>Test</value>
</data>
<data name="ChkQuestFilterUNRELEASED.Size" type="System.Drawing.Size, System.Drawing">
<value>93, 21</value>
</data>
<data name="ChkQuestFilterUNRELEASED.Text" xml:space="preserve">
<value>Unreleased</value>
</data>
<data name="ChkQuestFilterHIDDEN.Size" type="System.Drawing.Size, System.Drawing">
<value>69, 21</value>
</data>
<data name="ChkQuestFilterHIDDEN.Text" xml:space="preserve">
<value>Hidden</value>
</data>
<data name="GrpQuestFilters.Text" xml:space="preserve">
<value>List Filter</value>
</data>
<data name="BtnFinishQuest.Text" xml:space="preserve">
<value>Finish</value>
</data>
<data name="BtnAddQuest.Text" xml:space="preserve">
<value>Add</value>
</data>
<data name="LblQuestDescription.Text" xml:space="preserve">
<value>Add or Finish Quest
Tip: Many quest require server-side scripting support
Therefore, the quest can be added and finished, but not necessarily work.
</value>
</data>
</root>

View File

@@ -0,0 +1,395 @@
<?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="GrpQuestFilters.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Bottom, Left</value>
</data>
<assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="ChkQuestFilterTEST.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="ChkQuestFilterTEST.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="ChkQuestFilterTEST.Location" type="System.Drawing.Point, System.Drawing">
<value>26, 82</value>
</data>
<data name="ChkQuestFilterTEST.Size" type="System.Drawing.Size, System.Drawing">
<value>75, 21</value>
</data>
<data name="ChkQuestFilterTEST.TabIndex" type="System.Int32, mscorlib">
<value>2</value>
</data>
<data name="ChkQuestFilterTEST.Text" xml:space="preserve">
<value>测试任务</value>
</data>
<data name="&gt;&gt;ChkQuestFilterTEST.Name" xml:space="preserve">
<value>ChkQuestFilterTEST</value>
</data>
<data name="&gt;&gt;ChkQuestFilterTEST.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;ChkQuestFilterTEST.Parent" xml:space="preserve">
<value>GrpQuestFilters</value>
</data>
<data name="&gt;&gt;ChkQuestFilterTEST.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="ChkQuestFilterUNRELEASED.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="ChkQuestFilterUNRELEASED.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="ChkQuestFilterUNRELEASED.Location" type="System.Drawing.Point, System.Drawing">
<value>26, 55</value>
</data>
<data name="ChkQuestFilterUNRELEASED.Size" type="System.Drawing.Size, System.Drawing">
<value>99, 21</value>
</data>
<data name="ChkQuestFilterUNRELEASED.TabIndex" type="System.Int32, mscorlib">
<value>1</value>
</data>
<data name="ChkQuestFilterUNRELEASED.Text" xml:space="preserve">
<value>未发布的任务</value>
</data>
<data name="&gt;&gt;ChkQuestFilterUNRELEASED.Name" xml:space="preserve">
<value>ChkQuestFilterUNRELEASED</value>
</data>
<data name="&gt;&gt;ChkQuestFilterUNRELEASED.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;ChkQuestFilterUNRELEASED.Parent" xml:space="preserve">
<value>GrpQuestFilters</value>
</data>
<data name="&gt;&gt;ChkQuestFilterUNRELEASED.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="ChkQuestFilterHIDDEN.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="ChkQuestFilterHIDDEN.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="ChkQuestFilterHIDDEN.Location" type="System.Drawing.Point, System.Drawing">
<value>26, 28</value>
</data>
<data name="ChkQuestFilterHIDDEN.Size" type="System.Drawing.Size, System.Drawing">
<value>87, 21</value>
</data>
<data name="ChkQuestFilterHIDDEN.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
</data>
<data name="ChkQuestFilterHIDDEN.Text" xml:space="preserve">
<value>隐藏的任务</value>
</data>
<data name="&gt;&gt;ChkQuestFilterHIDDEN.Name" xml:space="preserve">
<value>ChkQuestFilterHIDDEN</value>
</data>
<data name="&gt;&gt;ChkQuestFilterHIDDEN.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;ChkQuestFilterHIDDEN.Parent" xml:space="preserve">
<value>GrpQuestFilters</value>
</data>
<data name="&gt;&gt;ChkQuestFilterHIDDEN.ZOrder" xml:space="preserve">
<value>2</value>
</data>
<data name="GrpQuestFilters.Location" type="System.Drawing.Point, System.Drawing">
<value>199, 106</value>
</data>
<data name="GrpQuestFilters.Size" type="System.Drawing.Size, System.Drawing">
<value>150, 130</value>
</data>
<data name="GrpQuestFilters.TabIndex" type="System.Int32, mscorlib">
<value>3</value>
</data>
<data name="GrpQuestFilters.Text" xml:space="preserve">
<value>列表过滤</value>
</data>
<data name="&gt;&gt;GrpQuestFilters.Name" xml:space="preserve">
<value>GrpQuestFilters</value>
</data>
<data name="&gt;&gt;GrpQuestFilters.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;GrpQuestFilters.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;GrpQuestFilters.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="BtnFinishQuest.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Bottom, Left</value>
</data>
<data name="BtnFinishQuest.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="BtnFinishQuest.Location" type="System.Drawing.Point, System.Drawing">
<value>99, 213</value>
</data>
<data name="BtnFinishQuest.Size" type="System.Drawing.Size, System.Drawing">
<value>90, 23</value>
</data>
<data name="BtnFinishQuest.TabIndex" type="System.Int32, mscorlib">
<value>5</value>
</data>
<data name="BtnFinishQuest.Text" xml:space="preserve">
<value>完成任务</value>
</data>
<data name="&gt;&gt;BtnFinishQuest.Name" xml:space="preserve">
<value>BtnFinishQuest</value>
</data>
<data name="&gt;&gt;BtnFinishQuest.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;BtnFinishQuest.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;BtnFinishQuest.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="BtnAddQuest.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Bottom, Left</value>
</data>
<data name="BtnAddQuest.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="BtnAddQuest.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 213</value>
</data>
<data name="BtnAddQuest.Size" type="System.Drawing.Size, System.Drawing">
<value>90, 23</value>
</data>
<data name="BtnAddQuest.TabIndex" type="System.Int32, mscorlib">
<value>4</value>
</data>
<data name="BtnAddQuest.Text" xml:space="preserve">
<value>添加任务</value>
</data>
<data name="&gt;&gt;BtnAddQuest.Name" xml:space="preserve">
<value>BtnAddQuest</value>
</data>
<data name="&gt;&gt;BtnAddQuest.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;BtnAddQuest.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;BtnAddQuest.ZOrder" xml:space="preserve">
<value>2</value>
</data>
<data name="LblQuestDescription.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Bottom, Left</value>
</data>
<data name="LblQuestDescription.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="LblQuestDescription.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 3</value>
</data>
<data name="LblQuestDescription.Size" type="System.Drawing.Size, System.Drawing">
<value>346, 100</value>
</data>
<data name="LblQuestDescription.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
</data>
<data name="LblQuestDescription.Text" xml:space="preserve">
<value>添加或完成任务
提示:许多任务需要服务端脚本支持
因此任务可以接,可以完成,但是不一定可以做</value>
</data>
<data name="&gt;&gt;LblQuestDescription.Name" xml:space="preserve">
<value>LblQuestDescription</value>
</data>
<data name="&gt;&gt;LblQuestDescription.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;LblQuestDescription.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;LblQuestDescription.ZOrder" xml:space="preserve">
<value>3</value>
</data>
<data name="TxtQuestFilter.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Left, Right</value>
</data>
<data name="TxtQuestFilter.Location" type="System.Drawing.Point, System.Drawing">
<value>355, 2</value>
</data>
<data name="TxtQuestFilter.Size" type="System.Drawing.Size, System.Drawing">
<value>288, 23</value>
</data>
<data name="TxtQuestFilter.TabIndex" type="System.Int32, mscorlib">
<value>1</value>
</data>
<data name="&gt;&gt;TxtQuestFilter.Name" xml:space="preserve">
<value>TxtQuestFilter</value>
</data>
<data name="&gt;&gt;TxtQuestFilter.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;TxtQuestFilter.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;TxtQuestFilter.ZOrder" xml:space="preserve">
<value>4</value>
</data>
<data name="ListQuest.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Bottom, Left, Right</value>
</data>
<data name="ListQuest.ItemHeight" type="System.Int32, mscorlib">
<value>17</value>
</data>
<data name="ListQuest.Location" type="System.Drawing.Point, System.Drawing">
<value>355, 28</value>
</data>
<data name="ListQuest.Size" type="System.Drawing.Size, System.Drawing">
<value>288, 208</value>
</data>
<data name="ListQuest.TabIndex" type="System.Int32, mscorlib">
<value>2</value>
</data>
<data name="&gt;&gt;ListQuest.Name" xml:space="preserve">
<value>ListQuest</value>
</data>
<data name="&gt;&gt;ListQuest.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;ListQuest.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;ListQuest.ZOrder" xml:space="preserve">
<value>5</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>PageQuest</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,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>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="ChkQuestFilterTEST.Size" type="System.Drawing.Size, System.Drawing">
<value>52, 21</value>
</data>
<data name="ChkQuestFilterTEST.Text" xml:space="preserve">
<value>Тест</value>
</data>
<data name="ChkQuestFilterUNRELEASED.Size" type="System.Drawing.Size, System.Drawing">
<value>102, 21</value>
</data>
<data name="ChkQuestFilterUNRELEASED.Text" xml:space="preserve">
<value>Неизданное</value>
</data>
<data name="ChkQuestFilterHIDDEN.Size" type="System.Drawing.Size, System.Drawing">
<value>81, 21</value>
</data>
<data name="ChkQuestFilterHIDDEN.Text" xml:space="preserve">
<value>Скрытый</value>
</data>
<data name="GrpQuestFilters.Text" xml:space="preserve">
<value>Фильтр списка</value>
</data>
<data name="BtnFinishQuest.Text" xml:space="preserve">
<value>Завершить</value>
</data>
<data name="BtnAddQuest.Text" xml:space="preserve">
<value>Добавить</value>
</data>
<data name="LblQuestDescription.Text" xml:space="preserve">
<value>Добавить или завершить задание.
Внимание: для многих квестов требуются скрипты таковых на стороне сервера.
Поэтому квест может быть добавлен или отозван через консоль, но завершён игроком - вряд ли.
</value>
</data>
</root>

View File

@@ -0,0 +1,144 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="ChkQuestFilterTEST.Text" xml:space="preserve">
<value>測試任務</value>
</data>
<data name="ChkQuestFilterUNRELEASED.Text" xml:space="preserve">
<value>未發佈的任務</value>
</data>
<data name="ChkQuestFilterHIDDEN.Text" xml:space="preserve">
<value>隱藏的任務</value>
</data>
<data name="GrpQuestFilters.Text" xml:space="preserve">
<value>列表過濾</value>
</data>
<data name="BtnFinishQuest.Text" xml:space="preserve">
<value>完成任務</value>
</data>
<data name="BtnAddQuest.Text" xml:space="preserve">
<value>添加任務</value>
</data>
<data name="LblQuestDescription.Text" xml:space="preserve">
<value>添加或完成任務
提示:許多任務需要服務端腳本支持
囙此任務可以接,可以完成,但是不一定可以做
</value>
</data>
</root>

View File

@@ -0,0 +1,246 @@
namespace GrasscutterTools.Pages
{
partial class PageScene
{
/// <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(PageScene));
this.RbListDungeons = new System.Windows.Forms.RadioButton();
this.RbListScene = new System.Windows.Forms.RadioButton();
this.TxtSceneFilter = new System.Windows.Forms.TextBox();
this.ChkIncludeSceneId = new System.Windows.Forms.CheckBox();
this.LblTpZ = new System.Windows.Forms.Label();
this.LblTpY = new System.Windows.Forms.Label();
this.BtnTeleport = new System.Windows.Forms.Button();
this.LblTpX = new System.Windows.Forms.Label();
this.NUDTpZ = new System.Windows.Forms.NumericUpDown();
this.NUDTpY = new System.Windows.Forms.NumericUpDown();
this.NUDTpX = new System.Windows.Forms.NumericUpDown();
this.CmbClimateType = new System.Windows.Forms.ComboBox();
this.LblClimateType = new System.Windows.Forms.Label();
this.LblSceneDescription = new System.Windows.Forms.Label();
this.ListScenes = new System.Windows.Forms.ListBox();
this.LblTp = new System.Windows.Forms.Label();
((System.ComponentModel.ISupportInitialize)(this.NUDTpZ)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.NUDTpY)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.NUDTpX)).BeginInit();
this.SuspendLayout();
//
// RbListDungeons
//
resources.ApplyResources(this.RbListDungeons, "RbListDungeons");
this.RbListDungeons.Name = "RbListDungeons";
this.RbListDungeons.UseVisualStyleBackColor = true;
this.RbListDungeons.CheckedChanged += new System.EventHandler(this.RbListDungeons_CheckedChanged);
//
// RbListScene
//
resources.ApplyResources(this.RbListScene, "RbListScene");
this.RbListScene.Checked = true;
this.RbListScene.Name = "RbListScene";
this.RbListScene.TabStop = true;
this.RbListScene.UseVisualStyleBackColor = true;
this.RbListScene.CheckedChanged += new System.EventHandler(this.RbListScene_CheckedChanged);
//
// TxtSceneFilter
//
resources.ApplyResources(this.TxtSceneFilter, "TxtSceneFilter");
this.TxtSceneFilter.Name = "TxtSceneFilter";
this.TxtSceneFilter.TextChanged += new System.EventHandler(this.TxtSceneFilter_TextChanged);
//
// ChkIncludeSceneId
//
resources.ApplyResources(this.ChkIncludeSceneId, "ChkIncludeSceneId");
this.ChkIncludeSceneId.Name = "ChkIncludeSceneId";
this.ChkIncludeSceneId.UseVisualStyleBackColor = true;
//
// LblTpZ
//
resources.ApplyResources(this.LblTpZ, "LblTpZ");
this.LblTpZ.Name = "LblTpZ";
//
// LblTpY
//
resources.ApplyResources(this.LblTpY, "LblTpY");
this.LblTpY.Name = "LblTpY";
//
// BtnTeleport
//
resources.ApplyResources(this.BtnTeleport, "BtnTeleport");
this.BtnTeleport.Name = "BtnTeleport";
this.BtnTeleport.UseVisualStyleBackColor = true;
this.BtnTeleport.Click += new System.EventHandler(this.BtnTeleport_Click);
//
// LblTpX
//
resources.ApplyResources(this.LblTpX, "LblTpX");
this.LblTpX.Name = "LblTpX";
//
// NUDTpZ
//
resources.ApplyResources(this.NUDTpZ, "NUDTpZ");
this.NUDTpZ.Increment = new decimal(new int[] {
100,
0,
0,
0});
this.NUDTpZ.Maximum = new decimal(new int[] {
2147483647,
0,
0,
0});
this.NUDTpZ.Minimum = new decimal(new int[] {
-2147483648,
0,
0,
-2147483648});
this.NUDTpZ.Name = "NUDTpZ";
//
// NUDTpY
//
resources.ApplyResources(this.NUDTpY, "NUDTpY");
this.NUDTpY.Increment = new decimal(new int[] {
100,
0,
0,
0});
this.NUDTpY.Maximum = new decimal(new int[] {
2147483647,
0,
0,
0});
this.NUDTpY.Minimum = new decimal(new int[] {
-2147483648,
0,
0,
-2147483648});
this.NUDTpY.Name = "NUDTpY";
this.NUDTpY.Value = new decimal(new int[] {
300,
0,
0,
0});
//
// NUDTpX
//
resources.ApplyResources(this.NUDTpX, "NUDTpX");
this.NUDTpX.Increment = new decimal(new int[] {
100,
0,
0,
0});
this.NUDTpX.Maximum = new decimal(new int[] {
2147483647,
0,
0,
0});
this.NUDTpX.Minimum = new decimal(new int[] {
-2147483648,
0,
0,
-2147483648});
this.NUDTpX.Name = "NUDTpX";
//
// CmbClimateType
//
resources.ApplyResources(this.CmbClimateType, "CmbClimateType");
this.CmbClimateType.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.CmbClimateType.FormattingEnabled = true;
this.CmbClimateType.Name = "CmbClimateType";
this.CmbClimateType.SelectedIndexChanged += new System.EventHandler(this.CmbClimateType_SelectedIndexChanged);
//
// LblClimateType
//
resources.ApplyResources(this.LblClimateType, "LblClimateType");
this.LblClimateType.Name = "LblClimateType";
//
// LblSceneDescription
//
resources.ApplyResources(this.LblSceneDescription, "LblSceneDescription");
this.LblSceneDescription.Name = "LblSceneDescription";
//
// ListScenes
//
resources.ApplyResources(this.ListScenes, "ListScenes");
this.ListScenes.FormattingEnabled = true;
this.ListScenes.Name = "ListScenes";
this.ListScenes.SelectedIndexChanged += new System.EventHandler(this.ListScenes_SelectedIndexChanged);
//
// LblTp
//
resources.ApplyResources(this.LblTp, "LblTp");
this.LblTp.Name = "LblTp";
//
// PageScene
//
resources.ApplyResources(this, "$this");
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.Controls.Add(this.RbListDungeons);
this.Controls.Add(this.RbListScene);
this.Controls.Add(this.TxtSceneFilter);
this.Controls.Add(this.ChkIncludeSceneId);
this.Controls.Add(this.LblTpZ);
this.Controls.Add(this.LblTpY);
this.Controls.Add(this.BtnTeleport);
this.Controls.Add(this.LblTpX);
this.Controls.Add(this.NUDTpZ);
this.Controls.Add(this.NUDTpY);
this.Controls.Add(this.NUDTpX);
this.Controls.Add(this.CmbClimateType);
this.Controls.Add(this.LblClimateType);
this.Controls.Add(this.LblSceneDescription);
this.Controls.Add(this.ListScenes);
this.Controls.Add(this.LblTp);
this.Name = "PageScene";
((System.ComponentModel.ISupportInitialize)(this.NUDTpZ)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.NUDTpY)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.NUDTpX)).EndInit();
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private System.Windows.Forms.RadioButton RbListDungeons;
private System.Windows.Forms.RadioButton RbListScene;
private System.Windows.Forms.TextBox TxtSceneFilter;
private System.Windows.Forms.CheckBox ChkIncludeSceneId;
private System.Windows.Forms.Label LblTpZ;
private System.Windows.Forms.Label LblTpY;
private System.Windows.Forms.Button BtnTeleport;
private System.Windows.Forms.Label LblTpX;
private System.Windows.Forms.NumericUpDown NUDTpZ;
private System.Windows.Forms.NumericUpDown NUDTpY;
private System.Windows.Forms.NumericUpDown NUDTpX;
private System.Windows.Forms.ComboBox CmbClimateType;
private System.Windows.Forms.Label LblClimateType;
private System.Windows.Forms.Label LblSceneDescription;
private System.Windows.Forms.ListBox ListScenes;
private System.Windows.Forms.Label LblTp;
}
}

View File

@@ -0,0 +1,147 @@
/**
* Grasscutter Tools
* Copyright (C) 2022 jie65535
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published
* by the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*
**/
using System;
using GrasscutterTools.Game;
using GrasscutterTools.Properties;
using GrasscutterTools.Utils;
namespace GrasscutterTools.Pages
{
internal partial class PageScene : BasePage
{
public PageScene()
{
InitializeComponent();
}
private string[] _scenes;
private string[] Scenes
{
get => _scenes;
set
{
if (_scenes == value)
return;
_scenes = value;
ListScenes.Items.Clear();
ListScenes.Items.AddRange(value);
}
}
/// <summary>
/// 初始化场景列表
/// </summary>
public override void OnLoad()
{
Scenes = GameData.Scenes.Lines;
CmbClimateType.Items.Clear();
CmbClimateType.Items.AddRange(Resources.ClimateType.Split(','));
}
/// <summary>
/// 选中场景时触发
/// </summary>
private void RbListScene_CheckedChanged(object sender, EventArgs e)
{
if (RbListScene.Checked)
Scenes = GameData.Scenes.Lines;
}
/// <summary>
/// 选中秘境时触发
/// </summary>
private void RbListDungeons_CheckedChanged(object sender, EventArgs e)
{
if (RbListDungeons.Checked)
Scenes = GameData.Dungeons.Lines;
}
/// <summary>
/// 场景列表过滤器输入项改变时触发
/// </summary>
private void TxtSceneFilter_TextChanged(object sender, EventArgs e)
{
UIUtil.ListBoxFilter(ListScenes, Scenes, TxtSceneFilter.Text);
}
/// <summary>
/// 场景列表选中项改变时触发
/// </summary>
private void ListScenes_SelectedIndexChanged(object sender, EventArgs e)
{
if (ListScenes.SelectedIndex < 0)
{
ChkIncludeSceneId.Enabled = false;
return;
}
ChkIncludeSceneId.Enabled = true;
// 可以直接弃用 scene 命令
var name = ListScenes.SelectedItem as string;
var id = ItemMap.ToId(name);
if (RbListScene.Checked)
{
if (CommandVersion.Check(CommandVersion.V1_2_2))
{
SetCommand("/scene", id.ToString());
}
else
{
SetCommand("/tp ~ ~ ~", id.ToString());
}
}
else if (RbListDungeons.Checked)
{
SetCommand("/dungeon", id.ToString());
}
}
/// <summary>
/// 气候类型列表
/// </summary>
private static readonly string[] climateTypes = { "none", "sunny", "cloudy", "rain", "thunderstorm", "snow", "mist" };
/// <summary>
/// 气候类型下拉框选中项改变时触发
/// </summary>
private void CmbClimateType_SelectedIndexChanged(object sender, EventArgs e)
{
if (CmbClimateType.SelectedIndex < 0)
return;
if (CommandVersion.Check(CommandVersion.V1_2_2))
SetCommand("/weather", CmbClimateType.SelectedIndex < climateTypes.Length ? climateTypes[CmbClimateType.SelectedIndex] : "none");
else
SetCommand("/weather", $"0 {CmbClimateType.SelectedIndex}");
}
/// <summary>
/// 点击传送按钮时触发
/// </summary>
private void BtnTeleport_Click(object sender, EventArgs e)
{
string args = $"{NUDTpX.Value} {NUDTpY.Value} {NUDTpZ.Value}";
if (ChkIncludeSceneId.Checked && RbListScene.Checked && ListScenes.SelectedIndex != -1)
args += $" {GameData.Scenes.Ids[ListScenes.SelectedIndex]}";
SetCommand("/tp", args);
}
}
}

View File

@@ -0,0 +1,176 @@
<?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="RbListDungeons.Location" type="System.Drawing.Point, System.Drawing">
<value>252, 32</value>
</data>
<data name="RbListDungeons.Size" type="System.Drawing.Size, System.Drawing">
<value>85, 21</value>
</data>
<data name="RbListDungeons.Text" xml:space="preserve">
<value>Dungeons</value>
</data>
<data name="RbListScene.Location" type="System.Drawing.Point, System.Drawing">
<value>252, 5</value>
</data>
<data name="RbListScene.Size" type="System.Drawing.Size, System.Drawing">
<value>66, 21</value>
</data>
<data name="RbListScene.Text" xml:space="preserve">
<value>Scenes</value>
</data>
<data name="ChkIncludeSceneId.Size" type="System.Drawing.Size, System.Drawing">
<value>122, 21</value>
</data>
<data name="ChkIncludeSceneId.Text" xml:space="preserve">
<value>Include scene Id</value>
</data>
<data name="BtnTeleport.Text" xml:space="preserve">
<value>Teleport</value>
</data>
<data name="LblClimateType.Size" type="System.Drawing.Size, System.Drawing">
<value>57, 17</value>
</data>
<data name="LblClimateType.Text" xml:space="preserve">
<value>Weather</value>
</data>
<data name="LblSceneDescription.Size" type="System.Drawing.Size, System.Drawing">
<value>87, 17</value>
</data>
<data name="LblSceneDescription.Text" xml:space="preserve">
<value>Scene control</value>
</data>
<assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="LblTp.AutoSize" type="System.Boolean, mscorlib">
<value>False</value>
</data>
<data name="LblTp.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 66</value>
</data>
<data name="LblTp.Size" type="System.Drawing.Size, System.Drawing">
<value>334, 87</value>
</data>
<data name="LblTp.Text" xml:space="preserve">
<value>Teleporting
Tip: You can quickly teleport through the 'fishing hook' pin on the map in-game.
In the command, you can use ~ to indicate the current position, and ~N to indicate the relative current N
</value>
</data>
</root>

View File

@@ -0,0 +1,606 @@
<?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="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="RbListDungeons.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="RbListDungeons.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="RbListDungeons.Location" type="System.Drawing.Point, System.Drawing">
<value>287, 30</value>
</data>
<data name="RbListDungeons.Size" type="System.Drawing.Size, System.Drawing">
<value>50, 21</value>
</data>
<data name="RbListDungeons.TabIndex" type="System.Int32, mscorlib">
<value>2</value>
</data>
<data name="RbListDungeons.Text" xml:space="preserve">
<value>秘境</value>
</data>
<data name="&gt;&gt;RbListDungeons.Name" xml:space="preserve">
<value>RbListDungeons</value>
</data>
<data name="&gt;&gt;RbListDungeons.Type" xml:space="preserve">
<value>System.Windows.Forms.RadioButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;RbListDungeons.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;RbListDungeons.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="RbListScene.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="RbListScene.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="RbListScene.Location" type="System.Drawing.Point, System.Drawing">
<value>287, 3</value>
</data>
<data name="RbListScene.Size" type="System.Drawing.Size, System.Drawing">
<value>50, 21</value>
</data>
<data name="RbListScene.TabIndex" type="System.Int32, mscorlib">
<value>1</value>
</data>
<data name="RbListScene.Text" xml:space="preserve">
<value>场景</value>
</data>
<data name="&gt;&gt;RbListScene.Name" xml:space="preserve">
<value>RbListScene</value>
</data>
<data name="&gt;&gt;RbListScene.Type" xml:space="preserve">
<value>System.Windows.Forms.RadioButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;RbListScene.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;RbListScene.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="TxtSceneFilter.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Left, Right</value>
</data>
<data name="TxtSceneFilter.Location" type="System.Drawing.Point, System.Drawing">
<value>343, 2</value>
</data>
<data name="TxtSceneFilter.Size" type="System.Drawing.Size, System.Drawing">
<value>300, 23</value>
</data>
<data name="TxtSceneFilter.TabIndex" type="System.Int32, mscorlib">
<value>14</value>
</data>
<data name="&gt;&gt;TxtSceneFilter.Name" xml:space="preserve">
<value>TxtSceneFilter</value>
</data>
<data name="&gt;&gt;TxtSceneFilter.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;TxtSceneFilter.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;TxtSceneFilter.ZOrder" xml:space="preserve">
<value>2</value>
</data>
<data name="ChkIncludeSceneId.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Bottom, Left</value>
</data>
<data name="ChkIncludeSceneId.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="ChkIncludeSceneId.Enabled" type="System.Boolean, mscorlib">
<value>False</value>
</data>
<data name="ChkIncludeSceneId.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="ChkIncludeSceneId.Location" type="System.Drawing.Point, System.Drawing">
<value>87, 187</value>
</data>
<data name="ChkIncludeSceneId.Size" type="System.Drawing.Size, System.Drawing">
<value>76, 21</value>
</data>
<data name="ChkIncludeSceneId.TabIndex" type="System.Int32, mscorlib">
<value>13</value>
</data>
<data name="ChkIncludeSceneId.Text" xml:space="preserve">
<value>含场景ID</value>
</data>
<data name="&gt;&gt;ChkIncludeSceneId.Name" xml:space="preserve">
<value>ChkIncludeSceneId</value>
</data>
<data name="&gt;&gt;ChkIncludeSceneId.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;ChkIncludeSceneId.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;ChkIncludeSceneId.ZOrder" xml:space="preserve">
<value>3</value>
</data>
<data name="LblTpZ.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Bottom, Left</value>
</data>
<data name="LblTpZ.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="LblTpZ.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="LblTpZ.Location" type="System.Drawing.Point, System.Drawing">
<value>215, 158</value>
</data>
<data name="LblTpZ.Size" type="System.Drawing.Size, System.Drawing">
<value>14, 17</value>
</data>
<data name="LblTpZ.TabIndex" type="System.Int32, mscorlib">
<value>10</value>
</data>
<data name="LblTpZ.Text" xml:space="preserve">
<value>z</value>
</data>
<data name="&gt;&gt;LblTpZ.Name" xml:space="preserve">
<value>LblTpZ</value>
</data>
<data name="&gt;&gt;LblTpZ.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;LblTpZ.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;LblTpZ.ZOrder" xml:space="preserve">
<value>4</value>
</data>
<data name="LblTpY.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Bottom, Left</value>
</data>
<data name="LblTpY.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="LblTpY.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="LblTpY.Location" type="System.Drawing.Point, System.Drawing">
<value>109, 158</value>
</data>
<data name="LblTpY.Size" type="System.Drawing.Size, System.Drawing">
<value>14, 17</value>
</data>
<data name="LblTpY.TabIndex" type="System.Int32, mscorlib">
<value>8</value>
</data>
<data name="LblTpY.Text" xml:space="preserve">
<value>y</value>
</data>
<data name="&gt;&gt;LblTpY.Name" xml:space="preserve">
<value>LblTpY</value>
</data>
<data name="&gt;&gt;LblTpY.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;LblTpY.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;LblTpY.ZOrder" xml:space="preserve">
<value>5</value>
</data>
<data name="BtnTeleport.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Bottom, Left</value>
</data>
<data name="BtnTeleport.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="BtnTeleport.Location" type="System.Drawing.Point, System.Drawing">
<value>6, 185</value>
</data>
<data name="BtnTeleport.Size" type="System.Drawing.Size, System.Drawing">
<value>75, 23</value>
</data>
<data name="BtnTeleport.TabIndex" type="System.Int32, mscorlib">
<value>12</value>
</data>
<data name="BtnTeleport.Text" xml:space="preserve">
<value>传送</value>
</data>
<data name="&gt;&gt;BtnTeleport.Name" xml:space="preserve">
<value>BtnTeleport</value>
</data>
<data name="&gt;&gt;BtnTeleport.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;BtnTeleport.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;BtnTeleport.ZOrder" xml:space="preserve">
<value>6</value>
</data>
<data name="LblTpX.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Bottom, Left</value>
</data>
<data name="LblTpX.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="LblTpX.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="LblTpX.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 158</value>
</data>
<data name="LblTpX.Size" type="System.Drawing.Size, System.Drawing">
<value>14, 17</value>
</data>
<data name="LblTpX.TabIndex" type="System.Int32, mscorlib">
<value>6</value>
</data>
<data name="LblTpX.Text" xml:space="preserve">
<value>x</value>
</data>
<data name="&gt;&gt;LblTpX.Name" xml:space="preserve">
<value>LblTpX</value>
</data>
<data name="&gt;&gt;LblTpX.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;LblTpX.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;LblTpX.ZOrder" xml:space="preserve">
<value>7</value>
</data>
<data name="NUDTpZ.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Bottom, Left</value>
</data>
<data name="NUDTpZ.Location" type="System.Drawing.Point, System.Drawing">
<value>235, 156</value>
</data>
<data name="NUDTpZ.Size" type="System.Drawing.Size, System.Drawing">
<value>80, 23</value>
</data>
<data name="NUDTpZ.TabIndex" type="System.Int32, mscorlib">
<value>11</value>
</data>
<data name="&gt;&gt;NUDTpZ.Name" xml:space="preserve">
<value>NUDTpZ</value>
</data>
<data name="&gt;&gt;NUDTpZ.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;NUDTpZ.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;NUDTpZ.ZOrder" xml:space="preserve">
<value>8</value>
</data>
<data name="NUDTpY.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Bottom, Left</value>
</data>
<data name="NUDTpY.Location" type="System.Drawing.Point, System.Drawing">
<value>129, 156</value>
</data>
<data name="NUDTpY.Size" type="System.Drawing.Size, System.Drawing">
<value>80, 23</value>
</data>
<data name="NUDTpY.TabIndex" type="System.Int32, mscorlib">
<value>9</value>
</data>
<data name="&gt;&gt;NUDTpY.Name" xml:space="preserve">
<value>NUDTpY</value>
</data>
<data name="&gt;&gt;NUDTpY.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;NUDTpY.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;NUDTpY.ZOrder" xml:space="preserve">
<value>9</value>
</data>
<data name="NUDTpX.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Bottom, Left</value>
</data>
<data name="NUDTpX.Location" type="System.Drawing.Point, System.Drawing">
<value>23, 156</value>
</data>
<data name="NUDTpX.Size" type="System.Drawing.Size, System.Drawing">
<value>80, 23</value>
</data>
<data name="NUDTpX.TabIndex" type="System.Int32, mscorlib">
<value>7</value>
</data>
<data name="&gt;&gt;NUDTpX.Name" xml:space="preserve">
<value>NUDTpX</value>
</data>
<data name="&gt;&gt;NUDTpX.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;NUDTpX.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;NUDTpX.ZOrder" xml:space="preserve">
<value>10</value>
</data>
<data name="CmbClimateType.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Bottom, Left</value>
</data>
<data name="CmbClimateType.Location" type="System.Drawing.Point, System.Drawing">
<value>65, 29</value>
</data>
<data name="CmbClimateType.Size" type="System.Drawing.Size, System.Drawing">
<value>121, 25</value>
</data>
<data name="CmbClimateType.TabIndex" type="System.Int32, mscorlib">
<value>4</value>
</data>
<data name="&gt;&gt;CmbClimateType.Name" xml:space="preserve">
<value>CmbClimateType</value>
</data>
<data name="&gt;&gt;CmbClimateType.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;CmbClimateType.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;CmbClimateType.ZOrder" xml:space="preserve">
<value>11</value>
</data>
<data name="LblClimateType.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Bottom, Left</value>
</data>
<data name="LblClimateType.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="LblClimateType.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="LblClimateType.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 32</value>
</data>
<data name="LblClimateType.Size" type="System.Drawing.Size, System.Drawing">
<value>56, 17</value>
</data>
<data name="LblClimateType.TabIndex" type="System.Int32, mscorlib">
<value>3</value>
</data>
<data name="LblClimateType.Text" xml:space="preserve">
<value>设置天气</value>
</data>
<data name="&gt;&gt;LblClimateType.Name" xml:space="preserve">
<value>LblClimateType</value>
</data>
<data name="&gt;&gt;LblClimateType.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;LblClimateType.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;LblClimateType.ZOrder" xml:space="preserve">
<value>12</value>
</data>
<data name="LblSceneDescription.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="LblSceneDescription.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="LblSceneDescription.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 3</value>
</data>
<data name="LblSceneDescription.Size" type="System.Drawing.Size, System.Drawing">
<value>56, 17</value>
</data>
<data name="LblSceneDescription.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
</data>
<data name="LblSceneDescription.Text" xml:space="preserve">
<value>场景控制</value>
</data>
<data name="&gt;&gt;LblSceneDescription.Name" xml:space="preserve">
<value>LblSceneDescription</value>
</data>
<data name="&gt;&gt;LblSceneDescription.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;LblSceneDescription.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;LblSceneDescription.ZOrder" xml:space="preserve">
<value>13</value>
</data>
<data name="ListScenes.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Bottom, Left, Right</value>
</data>
<data name="ListScenes.ItemHeight" type="System.Int32, mscorlib">
<value>17</value>
</data>
<data name="ListScenes.Location" type="System.Drawing.Point, System.Drawing">
<value>343, 28</value>
</data>
<data name="ListScenes.Size" type="System.Drawing.Size, System.Drawing">
<value>300, 208</value>
</data>
<data name="ListScenes.TabIndex" type="System.Int32, mscorlib">
<value>15</value>
</data>
<data name="&gt;&gt;ListScenes.Name" xml:space="preserve">
<value>ListScenes</value>
</data>
<data name="&gt;&gt;ListScenes.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;ListScenes.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;ListScenes.ZOrder" xml:space="preserve">
<value>14</value>
</data>
<data name="LblTp.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Bottom, Left</value>
</data>
<data name="LblTp.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="LblTp.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="LblTp.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 102</value>
</data>
<data name="LblTp.Size" type="System.Drawing.Size, System.Drawing">
<value>296, 51</value>
</data>
<data name="LblTp.TabIndex" type="System.Int32, mscorlib">
<value>5</value>
</data>
<data name="LblTp.Text" xml:space="preserve">
<value>坐标传送
提示:游戏内可以通过小地图的'鱼钩'标记来快捷传送
命令中可以用~表示当前位置,~100表示相对当前100
</value>
</data>
<data name="&gt;&gt;LblTp.Name" xml:space="preserve">
<value>LblTp</value>
</data>
<data name="&gt;&gt;LblTp.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;LblTp.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;LblTp.ZOrder" xml:space="preserve">
<value>15</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>PageScene</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,200 @@
<?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="RbListDungeons.Location" type="System.Drawing.Point, System.Drawing">
<value>237, 29</value>
</data>
<data name="RbListDungeons.Size" type="System.Drawing.Size, System.Drawing">
<value>100, 21</value>
</data>
<data name="RbListDungeons.Text" xml:space="preserve">
<value>Подземелья</value>
</data>
<data name="RbListScene.Location" type="System.Drawing.Point, System.Drawing">
<value>237, 2</value>
</data>
<data name="RbListScene.Size" type="System.Drawing.Size, System.Drawing">
<value>66, 21</value>
</data>
<data name="RbListScene.Text" xml:space="preserve">
<value>Сцены</value>
</data>
<data name="ChkIncludeSceneId.Location" type="System.Drawing.Point, System.Drawing">
<value>84, 215</value>
</data>
<data name="ChkIncludeSceneId.Size" type="System.Drawing.Size, System.Drawing">
<value>228, 21</value>
</data>
<data name="ChkIncludeSceneId.Text" xml:space="preserve">
<value>Включить идентификатор сцены</value>
</data>
<data name="LblTpZ.Location" type="System.Drawing.Point, System.Drawing">
<value>212, 186</value>
</data>
<data name="LblTpY.Location" type="System.Drawing.Point, System.Drawing">
<value>106, 186</value>
</data>
<data name="BtnTeleport.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 213</value>
</data>
<data name="BtnTeleport.Text" xml:space="preserve">
<value>Телепорт</value>
</data>
<data name="LblTpX.Location" type="System.Drawing.Point, System.Drawing">
<value>0, 186</value>
</data>
<data name="NUDTpZ.Location" type="System.Drawing.Point, System.Drawing">
<value>232, 184</value>
</data>
<data name="NUDTpY.Location" type="System.Drawing.Point, System.Drawing">
<value>126, 184</value>
</data>
<data name="NUDTpX.Location" type="System.Drawing.Point, System.Drawing">
<value>20, 184</value>
</data>
<data name="LblClimateType.Size" type="System.Drawing.Size, System.Drawing">
<value>52, 17</value>
</data>
<data name="LblClimateType.Text" xml:space="preserve">
<value>Погода</value>
</data>
<data name="LblSceneDescription.Size" type="System.Drawing.Size, System.Drawing">
<value>142, 17</value>
</data>
<data name="LblSceneDescription.Text" xml:space="preserve">
<value>Управление сценами.</value>
</data>
<assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="LblTp.AutoSize" type="System.Boolean, mscorlib">
<value>False</value>
</data>
<data name="LblTp.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 57</value>
</data>
<data name="LblTp.Size" type="System.Drawing.Size, System.Drawing">
<value>334, 124</value>
</data>
<data name="LblTp.Text" xml:space="preserve">
<value>Телепортация
Подсказка: вы можете быстро телепортироваться через отметку «рыболовный крючок» на миникарте в игре.
В команде вы можете использовать ~, чтобы указать текущую позицию, и ~N, чтобы указать смещение на N относительно текущей позиции
</value>
</data>
</root>

View File

@@ -0,0 +1,148 @@
<?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="RbListDungeons.Text" xml:space="preserve">
<value>祕境</value>
</data>
<data name="RbListScene.Text" xml:space="preserve">
<value>場景</value>
</data>
<data name="ChkIncludeSceneId.Text" xml:space="preserve">
<value>含場景ID</value>
</data>
<data name="BtnTeleport.Text" xml:space="preserve">
<value>傳送</value>
</data>
<data name="LblClimateType.Text" xml:space="preserve">
<value>設置天氣</value>
</data>
<data name="LblSceneDescription.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="LblTp.Size" type="System.Drawing.Size, System.Drawing">
<value>290, 51</value>
</data>
<data name="LblTp.Text" xml:space="preserve">
<value>座標傳送
提示:遊戲內可以通過小地圖的'魚鉤'標記來快捷傳送
命令中可以用~表示當前位置,~N 表示相對當前N
</value>
</data>
</root>

View File

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