mirror of
https://github.com/jie65535/GrasscutterCommandGenerator.git
synced 2025-10-24 20:49:47 +08:00
Compare commits
25 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| cfb94e70b7 | |||
| ab9b955c31 | |||
| 4e4b47a9e6 | |||
| 3da3bc4f23 | |||
| 7cc46eb677 | |||
| b9d1a2c2cd | |||
| a0cc908983 | |||
| 7dc7c7c8ac | |||
| ad4ca74e71 | |||
| a079685be8 | |||
| 6703037527 | |||
| 417f0b7334 | |||
| 45aec44f39 | |||
| 7dd1e78512 | |||
| 418dfec289 | |||
| bc69a1c4ba | |||
| 63f7eda5c3 | |||
| 879bc34358 | |||
| c5a6d7f041 | |||
| 20b1aca700 | |||
| fb1a332f2c | |||
| 867bdd1d00 | |||
| 5e28d1e625 | |||
| e6ecde9951 | |||
|
|
2cb9f08caa |
BIN
Doc/Screenshots/ConfigHttp.png
Normal file
BIN
Doc/Screenshots/ConfigHttp.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 32 KiB |
22
README.md
22
README.md
@@ -10,24 +10,24 @@
|
||||
|
||||
请从 [Releases](https://github.com/jie65535/GrasscutterCommandGenerator/releases) 中获取最新版本
|
||||
|
||||
本工具支持 简中, 繁中, English 与 Русский 等语言。
|
||||
|
||||
## 远程执行
|
||||
|
||||
服务端需要 [gc-opencommand-plugin](https://github.com/jie65535/gc-opencommand-plugin) 插件支持
|
||||
|
||||

|
||||
|
||||
---
|
||||
> 如果你无法连接到服务器,请确认填写的服务器地址是否正确。
|
||||
>
|
||||
> 建议配置服务器为HTTP模式,如图所示(config.json):
|
||||
> 
|
||||
>
|
||||
> 你可以用浏览器访问 http://127.0.0.1/status/server 来测试服务是否正常工作。
|
||||
>
|
||||
> 如果使用的不是`80`端口,则要在url中指定访问的端口号:http://127.0.0.1:443
|
||||
|
||||
## TODO List
|
||||
- [x] 多语言支持
|
||||
- [x] 简体中文
|
||||
- [x] 繁体中文
|
||||
- [x] 英语
|
||||
- [x] 俄语
|
||||
- [x] 远程执行命令
|
||||
- [ ] ~~邮件编辑器(无进度)~~
|
||||
- [ ] ~~商店编辑器(无进度)~~
|
||||
- [ ] 服务器公告编辑器(无进度)
|
||||
---
|
||||
|
||||
## 软件截图
|
||||
|
||||
|
||||
@@ -10,24 +10,24 @@
|
||||
|
||||
Please download the latest version from [Releases](https://github.com/jie65535/GrasscutterCommandGenerator/releases)
|
||||
|
||||
Support 简中, 繁中, English and Русский languages.
|
||||
|
||||
## Remote command
|
||||
|
||||
The server require [gc-opencommand-plugin](https://github.com/jie65535/gc-opencommand-plugin) support
|
||||
|
||||

|
||||
|
||||
---
|
||||
> If you cannot connect to the server, please make sure the server address is correct.
|
||||
>
|
||||
> It is recommended to configure the server to HTTP mode, as shown in the figure(config.json):
|
||||
> 
|
||||
>
|
||||
> You can visit http://127.0.0.1/status/server with a browser to test whether the service is working properly.
|
||||
>
|
||||
> If you are not using port `80`, specify the port number to access in the url: http://127.0.0.1:443
|
||||
|
||||
## TODO List
|
||||
- [x] Multi-language support
|
||||
- [x] Simplified Chinese
|
||||
- [x] Traditional Chinese
|
||||
- [x] English
|
||||
- [x] Russian
|
||||
- [x] Execute command remotely
|
||||
- [ ] ~~Mail Editor (no progress)~~
|
||||
- [ ] ~~Shop Editor (no progress)~~
|
||||
- [ ] Announcement Editor (no progress)
|
||||
---
|
||||
|
||||
## Screenshots
|
||||
|
||||
|
||||
@@ -10,24 +10,24 @@
|
||||
|
||||
Пожалуйса загрузите последнюю версию с [Releases](https://github.com/jie65535/GrasscutterCommandGenerator/releases)
|
||||
|
||||
Support 简中, 繁中, English and Русский languages.
|
||||
|
||||
## Удаленная команда
|
||||
|
||||
Сервер требует [gc-opencommand-plugin](https://github.com/jie65535/gc-opencommand-plugin) помощь
|
||||
|
||||

|
||||
|
||||
---
|
||||
> If you cannot connect to the server, please make sure the server address is correct.
|
||||
>
|
||||
> It is recommended to configure the server to HTTP mode, as shown in the figure(config.json):
|
||||
> 
|
||||
>
|
||||
> You can visit http://127.0.0.1/status/server with a browser to test whether the service is working properly.
|
||||
>
|
||||
> If you are not using port `80`, specify the port number to access in the url: http://127.0.0.1:443
|
||||
|
||||
## Список задач
|
||||
- [x] Многоязычная поддержка
|
||||
- [x] Упрощенный китайский
|
||||
- [x] сложный китайский
|
||||
- [х] английский
|
||||
- [х] Русский
|
||||
- [x] Выполнить команду удаленно
|
||||
- [ ] ~~Редактор почты (нет прогресса)~~
|
||||
- [ ] ~~Редактор магазина (нет прогресса)~~
|
||||
- [ ] Announcement Editor (no progress)
|
||||
---
|
||||
|
||||
## Скриншоты
|
||||
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
using System;
|
||||
using System.ComponentModel;
|
||||
using System.Drawing;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Windows.Forms;
|
||||
|
||||
|
||||
@@ -18,7 +18,6 @@
|
||||
**/
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Data;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Windows.Forms;
|
||||
|
||||
@@ -19,7 +19,6 @@
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.Linq;
|
||||
using System.Windows.Forms;
|
||||
|
||||
88
Source/GrasscutterTools/Forms/FormMain.Designer.cs
generated
88
Source/GrasscutterTools/Forms/FormMain.Designer.cs
generated
@@ -35,6 +35,11 @@ namespace GrasscutterTools.Forms
|
||||
this.GrpCommand = new System.Windows.Forms.GroupBox();
|
||||
this.BtnInvokeOpenCommand = new System.Windows.Forms.Button();
|
||||
this.TPRemoteCall = new System.Windows.Forms.TabPage();
|
||||
this.LnkLinks = new System.Windows.Forms.LinkLabel();
|
||||
this.LnkGOODHelp = new System.Windows.Forms.LinkLabel();
|
||||
this.LnkInventoryKamera = new System.Windows.Forms.LinkLabel();
|
||||
this.LblGOODHelp = new System.Windows.Forms.Label();
|
||||
this.ButtonOpenGOODImport = new System.Windows.Forms.Button();
|
||||
this.LblHostTip = new System.Windows.Forms.Label();
|
||||
this.GrpServerStatus = new System.Windows.Forms.GroupBox();
|
||||
this.LnkOpenCommandLabel = new System.Windows.Forms.LinkLabel();
|
||||
@@ -127,9 +132,9 @@ namespace GrasscutterTools.Forms
|
||||
this.NUDWeaponLevel = new System.Windows.Forms.NumericUpDown();
|
||||
this.ListWeapons = new System.Windows.Forms.ListBox();
|
||||
this.TPStats = new System.Windows.Forms.TabPage();
|
||||
this.LblResetStatsCommand = new System.Windows.Forms.LinkLabel();
|
||||
this.LblResetStatsTip = new System.Windows.Forms.Label();
|
||||
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();
|
||||
@@ -318,6 +323,11 @@ namespace GrasscutterTools.Forms
|
||||
// TPRemoteCall
|
||||
//
|
||||
resources.ApplyResources(this.TPRemoteCall, "TPRemoteCall");
|
||||
this.TPRemoteCall.Controls.Add(this.LnkLinks);
|
||||
this.TPRemoteCall.Controls.Add(this.LnkGOODHelp);
|
||||
this.TPRemoteCall.Controls.Add(this.LnkInventoryKamera);
|
||||
this.TPRemoteCall.Controls.Add(this.LblGOODHelp);
|
||||
this.TPRemoteCall.Controls.Add(this.ButtonOpenGOODImport);
|
||||
this.TPRemoteCall.Controls.Add(this.LblHostTip);
|
||||
this.TPRemoteCall.Controls.Add(this.GrpServerStatus);
|
||||
this.TPRemoteCall.Controls.Add(this.GrpRemoteCommand);
|
||||
@@ -327,6 +337,40 @@ namespace GrasscutterTools.Forms
|
||||
this.TPRemoteCall.Name = "TPRemoteCall";
|
||||
this.TPRemoteCall.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// LnkLinks
|
||||
//
|
||||
resources.ApplyResources(this.LnkLinks, "LnkLinks");
|
||||
this.LnkLinks.Name = "LnkLinks";
|
||||
this.LnkLinks.TabStop = true;
|
||||
this.LnkLinks.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.LnkLinks_LinkClicked);
|
||||
//
|
||||
// LnkGOODHelp
|
||||
//
|
||||
resources.ApplyResources(this.LnkGOODHelp, "LnkGOODHelp");
|
||||
this.LnkGOODHelp.Cursor = System.Windows.Forms.Cursors.Help;
|
||||
this.LnkGOODHelp.Name = "LnkGOODHelp";
|
||||
this.LnkGOODHelp.TabStop = true;
|
||||
this.LnkGOODHelp.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.LnkGOODHelp_LinkClicked);
|
||||
//
|
||||
// LnkInventoryKamera
|
||||
//
|
||||
resources.ApplyResources(this.LnkInventoryKamera, "LnkInventoryKamera");
|
||||
this.LnkInventoryKamera.Name = "LnkInventoryKamera";
|
||||
this.LnkInventoryKamera.TabStop = true;
|
||||
this.LnkInventoryKamera.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.LnkInventoryKamera_LinkClicked);
|
||||
//
|
||||
// LblGOODHelp
|
||||
//
|
||||
resources.ApplyResources(this.LblGOODHelp, "LblGOODHelp");
|
||||
this.LblGOODHelp.Name = "LblGOODHelp";
|
||||
//
|
||||
// ButtonOpenGOODImport
|
||||
//
|
||||
resources.ApplyResources(this.ButtonOpenGOODImport, "ButtonOpenGOODImport");
|
||||
this.ButtonOpenGOODImport.Name = "ButtonOpenGOODImport";
|
||||
this.ButtonOpenGOODImport.UseVisualStyleBackColor = true;
|
||||
this.ButtonOpenGOODImport.Click += new System.EventHandler(this.ButtonOpenGOODImport_Click);
|
||||
//
|
||||
// LblHostTip
|
||||
//
|
||||
resources.ApplyResources(this.LblHostTip, "LblHostTip");
|
||||
@@ -1128,30 +1172,17 @@ namespace GrasscutterTools.Forms
|
||||
// TPStats
|
||||
//
|
||||
resources.ApplyResources(this.TPStats, "TPStats");
|
||||
this.TPStats.Controls.Add(this.LblResetStatsCommand);
|
||||
this.TPStats.Controls.Add(this.LblResetStatsTip);
|
||||
this.TPStats.Controls.Add(this.GrpSetStats);
|
||||
this.TPStats.Controls.Add(this.GrpTalentLevel);
|
||||
this.TPStats.Controls.Add(this.LblStatsDescription);
|
||||
this.TPStats.Name = "TPStats";
|
||||
this.TPStats.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// LblResetStatsCommand
|
||||
//
|
||||
resources.ApplyResources(this.LblResetStatsCommand, "LblResetStatsCommand");
|
||||
this.LblResetStatsCommand.Name = "LblResetStatsCommand";
|
||||
this.LblResetStatsCommand.TabStop = true;
|
||||
this.LblResetStatsCommand.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.LblResetStatsCommand_LinkClicked);
|
||||
//
|
||||
// LblResetStatsTip
|
||||
//
|
||||
resources.ApplyResources(this.LblResetStatsTip, "LblResetStatsTip");
|
||||
this.LblResetStatsTip.ForeColor = System.Drawing.SystemColors.ActiveCaption;
|
||||
this.LblResetStatsTip.Name = "LblResetStatsTip";
|
||||
//
|
||||
// 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);
|
||||
@@ -1159,6 +1190,20 @@ namespace GrasscutterTools.Forms
|
||||
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
|
||||
//
|
||||
resources.ApplyResources(this.LblStatTip, "LblStatTip");
|
||||
@@ -2237,12 +2282,17 @@ namespace GrasscutterTools.Forms
|
||||
private System.Windows.Forms.Label LblArtifactLevelTip;
|
||||
private System.Windows.Forms.Label LblClearSpawnLogs;
|
||||
private System.Windows.Forms.Label LblClearGiveItemLogs;
|
||||
private System.Windows.Forms.LinkLabel LblResetStatsCommand;
|
||||
private System.Windows.Forms.Label LblResetStatsTip;
|
||||
private System.Windows.Forms.Label LblAvatarConstellation;
|
||||
private System.Windows.Forms.NumericUpDown NUDAvatarConstellation;
|
||||
private System.Windows.Forms.Label LblConstellationTip;
|
||||
private System.Windows.Forms.Button BtnGiveAllChar;
|
||||
private System.Windows.Forms.Label LblHostTip;
|
||||
private System.Windows.Forms.Button ButtonOpenGOODImport;
|
||||
private System.Windows.Forms.LinkLabel LnkInventoryKamera;
|
||||
private System.Windows.Forms.Label LblGOODHelp;
|
||||
private System.Windows.Forms.LinkLabel LnkGOODHelp;
|
||||
private System.Windows.Forms.LinkLabel LnkLinks;
|
||||
private System.Windows.Forms.Button BtnUnlockStat;
|
||||
private System.Windows.Forms.Button BtnLockStat;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -28,8 +28,12 @@ using System.Windows.Forms;
|
||||
|
||||
using GrasscutterTools.DispatchServer;
|
||||
using GrasscutterTools.Game;
|
||||
using GrasscutterTools.GOOD;
|
||||
using GrasscutterTools.OpenCommand;
|
||||
using GrasscutterTools.Properties;
|
||||
using GrasscutterTools.Utils;
|
||||
|
||||
using Newtonsoft.Json;
|
||||
|
||||
namespace GrasscutterTools.Forms
|
||||
{
|
||||
@@ -134,11 +138,12 @@ namespace GrasscutterTools.Forms
|
||||
private void LoadUpdate()
|
||||
{
|
||||
#if !DEBUG
|
||||
Task.Run(() =>
|
||||
Task.Run(async () =>
|
||||
{
|
||||
try
|
||||
{
|
||||
var info = Github.ReleaseAPI.GetReleasesLastest("jie65535", "GrasscutterCommandGenerator").Result;
|
||||
await Task.Delay(5000);
|
||||
var info = await ReleaseAPI.GetReleasesLastest("jie65535", "GrasscutterCommandGenerator");
|
||||
if (Version.TryParse(info.TagName.Substring(1), out Version lastestVersion) && AppVersion < lastestVersion)
|
||||
{
|
||||
if (!string.IsNullOrEmpty(Settings.Default.CheckedLastVersion)
|
||||
@@ -153,7 +158,7 @@ namespace GrasscutterTools.Forms
|
||||
MessageBoxButtons.YesNo,
|
||||
MessageBoxIcon.Information);
|
||||
if (r == DialogResult.Yes)
|
||||
System.Diagnostics.Process.Start(info.Url);
|
||||
OpenURL(info.Url);
|
||||
else if (r == DialogResult.No)
|
||||
Settings.Default.CheckedLastVersion = lastestVersion.ToString();
|
||||
}));
|
||||
@@ -202,6 +207,125 @@ namespace GrasscutterTools.Forms
|
||||
TextMapBrowser.TopMost = false;
|
||||
}
|
||||
}
|
||||
async private void ButtonOpenGOODImport_Click(object sender, EventArgs e)
|
||||
{
|
||||
OpenFileDialog openFileDialog1 = new OpenFileDialog
|
||||
{
|
||||
Filter = "GOOD file (*.GOOD;*.json)|*.GOOD;*.json|All files (*.*)|*.*",
|
||||
};
|
||||
if (openFileDialog1.ShowDialog() == DialogResult.OK)
|
||||
{
|
||||
if (DialogResult.Yes != MessageBox.Show(Resources.GOODImportText + openFileDialog1.FileName + "?",
|
||||
Resources.GOODImportTitle, MessageBoxButtons.YesNo))
|
||||
return;
|
||||
try
|
||||
{
|
||||
GOOD.GOOD good = JsonConvert.DeserializeObject<GOOD.GOOD>(File.ReadAllText(openFileDialog1.FileName));
|
||||
var commands_list = new List<string>();
|
||||
var missingItems = new List<string>();
|
||||
|
||||
if (good.Characters != null)
|
||||
{
|
||||
foreach (var character in good.Characters)
|
||||
{
|
||||
if (character.Name != "Traveler")
|
||||
{
|
||||
if (GOODData.Avatars.TryGetValue(character.Name, out var character_id))
|
||||
commands_list.Add("/give " + character_id + " lv" + character.Level + "c" + character.Constellation);
|
||||
else
|
||||
missingItems.Add(character.Name);
|
||||
// TODO: Implement command to set talent level when giving character in Grasscutter
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (good.Weapons != null)
|
||||
{
|
||||
foreach (var weapon in good.Weapons)
|
||||
{
|
||||
if (GOODData.Weapons.TryGetValue(weapon.Name, out var weapon_id))
|
||||
commands_list.Add("/give " + weapon_id + " lv" + weapon.Level + "r" + weapon.RefinementLevel);
|
||||
else
|
||||
missingItems.Add(weapon.Name);
|
||||
// TODO: Implement command to give weapon directly to character in Grasscutter
|
||||
}
|
||||
}
|
||||
|
||||
if (good.Artifacts != null)
|
||||
{
|
||||
foreach (var artifact in good.Artifacts)
|
||||
{
|
||||
// Format: set rarity slot
|
||||
if (!GOODData.ArtifactCats.TryGetValue(artifact.SetName, out var artifact_set_id))
|
||||
{
|
||||
missingItems.Add(artifact.SetName);
|
||||
continue;
|
||||
}
|
||||
var artifact_id = artifact_set_id.ToString() + artifact.Rarity.ToString() + GOODData.ArtifactSlotMap[artifact.GearSlot] + "4";
|
||||
var artifact_mainStat_id = GOODData.ArtifactMainAttribution[artifact.MainStat];
|
||||
var artifact_substats = "";
|
||||
var artifact_substat_prefix = artifact.Rarity + "0";
|
||||
int substat_count = 0;
|
||||
foreach (var substat in artifact.SubStats)
|
||||
{
|
||||
if (substat.Value <= 0)
|
||||
continue;
|
||||
substat_count++;
|
||||
var substat_key = substat.Stat;
|
||||
var substat_key_id = GOODData.ArtifactSubAttribution[substat_key];
|
||||
var substat_indices = ArtifactUtils.SplitSubstats(substat_key, artifact.Rarity, substat.Value);
|
||||
|
||||
foreach (int index in substat_indices)
|
||||
{
|
||||
artifact_substats += artifact_substat_prefix + substat_key_id + index.ToString() + " ";
|
||||
}
|
||||
}
|
||||
|
||||
// HACK: Add def+2 substat to counteract Grasscutter automatically adding another substat
|
||||
if (substat_count == 4)
|
||||
artifact_substats += "101081 ";
|
||||
commands_list.Add("/give " + artifact_id + " lv" + artifact.Level + " " + artifact_mainStat_id + " " + artifact_substats);
|
||||
// TODO: Implement command to give artifact directly to character in Grasscutter
|
||||
}
|
||||
}
|
||||
|
||||
// TODO: Materials
|
||||
//if (good.Materials != null)
|
||||
//{
|
||||
// foreach (var material in good.Materials)
|
||||
// {
|
||||
|
||||
// }
|
||||
//}
|
||||
|
||||
var msg = string.Format("Loaded {0} Characters\nLoaded {1} Weapons\nLoaded {2} Artifacts\n",
|
||||
good.Characters?.Count ?? 0,
|
||||
good.Weapons?.Count ?? 0,
|
||||
good.Artifacts?.Count ?? 0
|
||||
);
|
||||
if (missingItems.Count > 0)
|
||||
{
|
||||
msg += string.Format("There are {0} pieces of data that cannot be parsed, including:\n{1}",
|
||||
missingItems.Count,
|
||||
string.Join("\n", missingItems.Take(10)));
|
||||
if (missingItems.Count > 10)
|
||||
msg += "......";
|
||||
}
|
||||
msg += "Do you want to start?";
|
||||
|
||||
if (DialogResult.Yes != MessageBox.Show(msg, Resources.Tips, MessageBoxButtons.YesNo, MessageBoxIcon.Information))
|
||||
return;
|
||||
|
||||
|
||||
if (await RunCommands(commands_list.ToArray()))
|
||||
MessageBox.Show(Resources.GOODImportSuccess);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
MessageBox.Show(ex.ToString(), Resources.Error, MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void CmbLanguage_SelectedIndexChanged(object sender, EventArgs e)
|
||||
{
|
||||
@@ -495,8 +619,14 @@ namespace GrasscutterTools.Forms
|
||||
var id = GameData.Artifacts.Ids[Array.LastIndexOf(GameData.Artifacts.Names, name)];
|
||||
id = id / 1000 * 1000 + (int)NUDArtifactStars.Value * 100 + id % 100;
|
||||
if (CmbMainAttribution.SelectedIndex < 0)
|
||||
return;
|
||||
|
||||
{
|
||||
if (ChkNewCommand.Checked)
|
||||
SetCommand("/give", $"{id} lv{NUDArtifactLevel.Value}");
|
||||
else
|
||||
SetCommand("/giveart", $"{id} {NUDArtifactLevel.Value}");
|
||||
}
|
||||
else
|
||||
{
|
||||
var t = CmbMainAttribution.SelectedItem as string;
|
||||
var mainAttr = t.Substring(0, t.IndexOf(':')).Trim();
|
||||
|
||||
@@ -527,6 +657,7 @@ namespace GrasscutterTools.Forms
|
||||
else
|
||||
SetCommand("/giveart", $"{id} {mainAttr} {subAttrs}{NUDArtifactLevel.Value}");
|
||||
}
|
||||
}
|
||||
|
||||
private void ListSubAttributionChecked_SelectedIndexChanged(object sender, EventArgs e)
|
||||
{
|
||||
@@ -540,6 +671,7 @@ namespace GrasscutterTools.Forms
|
||||
|
||||
private void LblClearSubAttrCheckedList_Click(object sender, EventArgs e)
|
||||
{
|
||||
CmbMainAttribution.SelectedIndex = -1;
|
||||
ListSubAttributionChecked.Items.Clear();
|
||||
ArtifactInputChanged(null, EventArgs.Empty);
|
||||
}
|
||||
@@ -968,6 +1100,8 @@ namespace GrasscutterTools.Forms
|
||||
{
|
||||
if (CmbStat.SelectedIndex < 0)
|
||||
return;
|
||||
else
|
||||
BtnLockStat.Enabled = BtnUnlockStat.Enabled = true;
|
||||
|
||||
var stat = SetStatsCommand.Stats[CmbStat.SelectedIndex];
|
||||
LblStatPercent.Visible = stat.Percent;
|
||||
@@ -976,16 +1110,23 @@ namespace GrasscutterTools.Forms
|
||||
SetCommand("/setstats", $"{stat.ArgName} {NUDStat.Value}{(stat.Percent ? "%" : "")}");
|
||||
}
|
||||
|
||||
private void BtnLockStat_Click(object sender, EventArgs e)
|
||||
{
|
||||
var stat = SetStatsCommand.Stats[CmbStat.SelectedIndex];
|
||||
SetCommand("/setstats", $"lock {stat.ArgName} {NUDStat.Value}{(stat.Percent ? "%" : "")}");
|
||||
}
|
||||
|
||||
private void BtnUnlockStat_Click(object sender, EventArgs e)
|
||||
{
|
||||
var stat = SetStatsCommand.Stats[CmbStat.SelectedIndex];
|
||||
SetCommand("/setstats", $"unlock {stat.ArgName}");
|
||||
}
|
||||
|
||||
private void LnkSetTalentClicked(object sender, LinkLabelLinkClickedEventArgs e)
|
||||
{
|
||||
SetCommand("/talent", $"{(sender as LinkLabel).Tag} {NUDTalentLevel.Value}");
|
||||
}
|
||||
|
||||
private void LblResetStatsCommand_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
|
||||
{
|
||||
SetCommand("/give 101");
|
||||
}
|
||||
|
||||
#endregion - 数据 -
|
||||
|
||||
#region - 管理 -
|
||||
@@ -1041,16 +1182,7 @@ namespace GrasscutterTools.Forms
|
||||
|
||||
private void LnkGithub_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
|
||||
{
|
||||
try
|
||||
{
|
||||
System.Diagnostics.Process.Start("https://github.com/jie65535/GrasscutterCommandGenerator");
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
MessageBox.Show(Resources.BrowserOpenFailedTip
|
||||
+ "\n https://github.com/jie65535/GrasscutterCommandGenerator",
|
||||
Resources.Error, MessageBoxButtons.OK, MessageBoxIcon.Warning);
|
||||
}
|
||||
OpenURL("https://github.com/jie65535/GrasscutterCommandGenerator");
|
||||
}
|
||||
|
||||
#endregion - 关于 -
|
||||
@@ -1069,9 +1201,9 @@ namespace GrasscutterTools.Forms
|
||||
private void SetCommand(string command, string args)
|
||||
{
|
||||
if (ChkIncludeUID.Checked)
|
||||
SetCommand($"{command} @{NUDUid.Value} {args}");
|
||||
SetCommand($"{command} @{NUDUid.Value} {args.Trim()}");
|
||||
else
|
||||
SetCommand($"{command} {args}");
|
||||
SetCommand($"{command} {args.Trim()}");
|
||||
}
|
||||
|
||||
private async void BtnCopy_Click(object sender, EventArgs e)
|
||||
@@ -1093,31 +1225,43 @@ namespace GrasscutterTools.Forms
|
||||
|
||||
private async void BtnInvokeOpenCommand_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (OC == null || !OC.CanInvoke)
|
||||
{
|
||||
ShowTip(Resources.RequireOpenCommandTip, BtnInvokeOpenCommand);
|
||||
TCMain.SelectedTab = TPRemoteCall;
|
||||
return;
|
||||
}
|
||||
if (!BtnInvokeOpenCommand.Enabled) return;
|
||||
if (TxtCommand.Text.Length < 2)
|
||||
{
|
||||
ShowTip(Resources.CommandContentCannotBeEmpty, TxtCommand);
|
||||
return;
|
||||
}
|
||||
await RunCommands(TxtCommand.Text);
|
||||
}
|
||||
|
||||
private async Task<bool> RunCommands(params string[] commands)
|
||||
{
|
||||
if (OC == null || !OC.CanInvoke)
|
||||
{
|
||||
ShowTip(Resources.RequireOpenCommandTip, BtnInvokeOpenCommand);
|
||||
TCMain.SelectedTab = TPRemoteCall;
|
||||
return false;
|
||||
}
|
||||
|
||||
ExpandCommandRunLog();
|
||||
try
|
||||
{
|
||||
BtnInvokeOpenCommand.Enabled = false;
|
||||
BtnInvokeOpenCommand.Cursor = Cursors.WaitCursor;
|
||||
int i = 0;
|
||||
foreach (var command in commands)
|
||||
{
|
||||
TxtCommandRunLog.AppendText(">");
|
||||
TxtCommandRunLog.AppendText(TxtCommand.Text);
|
||||
TxtCommandRunLog.AppendText(command);
|
||||
if (commands.Length > 1)
|
||||
TxtCommandRunLog.AppendText($" ({++i}/{commands.Length})");
|
||||
TxtCommandRunLog.AppendText(Environment.NewLine);
|
||||
var cmd = TxtCommand.Text.Substring(1);
|
||||
var btn = sender as Button;
|
||||
btn.Enabled = false;
|
||||
var cmd = command.Substring(1);
|
||||
try
|
||||
{
|
||||
var msg = await OC.Invoke(cmd);
|
||||
TxtCommandRunLog.AppendText(string.IsNullOrEmpty(msg) ? "OK" : msg);
|
||||
TxtCommandRunLog.AppendText(Environment.NewLine);
|
||||
//ShowTip(string.IsNullOrEmpty(msg) ? "OK" : msg, btn);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
@@ -1125,10 +1269,17 @@ namespace GrasscutterTools.Forms
|
||||
TxtCommandRunLog.AppendText(ex.Message);
|
||||
TxtCommandRunLog.AppendText(Environment.NewLine);
|
||||
MessageBox.Show(ex.Message, Resources.Error, MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
return false;
|
||||
}
|
||||
TxtCommandRunLog.ScrollToCaret();
|
||||
btn.Cursor = Cursors.Default;
|
||||
btn.Enabled = true;
|
||||
}
|
||||
}
|
||||
finally
|
||||
{
|
||||
BtnInvokeOpenCommand.Cursor = Cursors.Default;
|
||||
BtnInvokeOpenCommand.Enabled = true;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
private const int TxtCommandRunLogMinHeight = 150;
|
||||
@@ -1332,6 +1483,7 @@ namespace GrasscutterTools.Forms
|
||||
GrpRemoteCommand.Enabled = false;
|
||||
BtnInvokeOpenCommand.Focus();
|
||||
ShowTip(Resources.ConnectedTip, BtnInvokeOpenCommand);
|
||||
ButtonOpenGOODImport.Enabled = true;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
@@ -1357,16 +1509,7 @@ namespace GrasscutterTools.Forms
|
||||
|
||||
private void LnkOpenCommandLabel_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
|
||||
{
|
||||
try
|
||||
{
|
||||
System.Diagnostics.Process.Start("https://github.com/jie65535/gc-opencommand-plugin");
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
MessageBox.Show(Resources.BrowserOpenFailedTip
|
||||
+ "\n https://github.com/jie65535/gc-opencommand-plugin",
|
||||
Resources.Error, MessageBoxButtons.OK, MessageBoxIcon.Warning);
|
||||
}
|
||||
OpenURL("https://github.com/jie65535/gc-opencommand-plugin");
|
||||
}
|
||||
|
||||
private void LnkRCHelp_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
|
||||
@@ -1374,6 +1517,45 @@ namespace GrasscutterTools.Forms
|
||||
MessageBox.Show(Resources.OpenCommandHelp, Resources.Help, MessageBoxButtons.OK, MessageBoxIcon.Information);
|
||||
}
|
||||
|
||||
private void LnkInventoryKamera_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
|
||||
{
|
||||
OpenURL("https://github.com/Andrewthe13th/Inventory_Kamera");
|
||||
}
|
||||
|
||||
private void LnkGOODHelp_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
|
||||
{
|
||||
OpenURL("https://frzyc.github.io/genshin-optimizer/#/doc");
|
||||
}
|
||||
|
||||
private void LnkLinks_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
|
||||
{
|
||||
var links = new List<string>
|
||||
{
|
||||
"https://frzyc.github.io/genshin-optimizer/",
|
||||
"https://genshin.aspirine.su/",
|
||||
"https://genshin.mingyulab.com/",
|
||||
"https://genshin-center.com/",
|
||||
"https://github.com/Andrewthe13th/Inventory_Kamera",
|
||||
"https://github.com/daydreaming666/Amenoma",
|
||||
"https://seelie.me/",
|
||||
"https://www.mona-uranai.com/",
|
||||
};
|
||||
MessageBox.Show(string.Join("\n", links), "Links", MessageBoxButtons.OK, MessageBoxIcon.Information);
|
||||
}
|
||||
|
||||
private void OpenURL(string url)
|
||||
{
|
||||
try
|
||||
{
|
||||
System.Diagnostics.Process.Start(url);
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
MessageBox.Show(Resources.BrowserOpenFailedTip + "\n " + url,
|
||||
Resources.Error, MessageBoxButtons.OK, MessageBoxIcon.Warning);
|
||||
}
|
||||
}
|
||||
|
||||
#endregion - 远程 -
|
||||
|
||||
#region - 任务 -
|
||||
|
||||
@@ -136,6 +136,15 @@
|
||||
<data name="TPRemoteCall.Text" xml:space="preserve">
|
||||
<value>Remote</value>
|
||||
</data>
|
||||
<data name="LnkInventoryKamera.Text" xml:space="preserve">
|
||||
<value>InventoryKamera</value>
|
||||
</data>
|
||||
<data name="LblGOODHelp.Text" xml:space="preserve">
|
||||
<value>Come and import your official server archive into GC!</value>
|
||||
</data>
|
||||
<data name="ButtonOpenGOODImport.Text" xml:space="preserve">
|
||||
<value>Import GOOD</value>
|
||||
</data>
|
||||
<data name="LblHostTip.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>108, 16</value>
|
||||
</data>
|
||||
@@ -208,6 +217,9 @@
|
||||
<data name="BtnSendVerificationCode.Text" xml:space="preserve">
|
||||
<value>Send Code</value>
|
||||
</data>
|
||||
<data name="TPConsoleCheck.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>296, 111</value>
|
||||
</data>
|
||||
<data name="TPConsoleCheck.Text" xml:space="preserve">
|
||||
<value>Console</value>
|
||||
</data>
|
||||
@@ -509,27 +521,15 @@ Tip: Most of the scenes have no effect and cannot be entered.</value>
|
||||
<data name="TPStats.Text" xml:space="preserve">
|
||||
<value>Stats</value>
|
||||
</data>
|
||||
<data name="LblResetStatsCommand.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>126, 135</value>
|
||||
</data>
|
||||
<data name="LblResetStatsCommand.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>112, 17</value>
|
||||
</data>
|
||||
<data name="LblResetStatsCommand.Text" xml:space="preserve">
|
||||
<value>When getting CEP</value>
|
||||
</data>
|
||||
<data name="LblResetStatsTip.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>235, 135</value>
|
||||
</data>
|
||||
<data name="LblResetStatsTip.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>243, 17</value>
|
||||
</data>
|
||||
<data name="LblResetStatsTip.Text" xml:space="preserve">
|
||||
<value>the current character's stats will be reset</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>
|
||||
@@ -856,4 +856,8 @@ Therefore, the quest can be added and finished, but not necessarily work.</value
|
||||
<data name="ChkIncludeUID.Text" xml:space="preserve">
|
||||
<value>Include UID</value>
|
||||
</data>
|
||||
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||
<data name="$this.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
||||
<value>Inherit</value>
|
||||
</data>
|
||||
</root>
|
||||
File diff suppressed because it is too large
Load Diff
@@ -139,6 +139,15 @@
|
||||
<data name="TPRemoteCall.Text" xml:space="preserve">
|
||||
<value>Подключение к БД</value>
|
||||
</data>
|
||||
<data name="LnkInventoryKamera.Text" xml:space="preserve">
|
||||
<value>InventoryKamera</value>
|
||||
</data>
|
||||
<data name="LblGOODHelp.Text" xml:space="preserve">
|
||||
<value>Приходите и импортируйте свой официальный архив сервера в GC!</value>
|
||||
</data>
|
||||
<data name="ButtonOpenGOODImport.Text" xml:space="preserve">
|
||||
<value>импорт GOOD</value>
|
||||
</data>
|
||||
<data name="LblHostTip.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>83, 16</value>
|
||||
</data>
|
||||
@@ -211,6 +220,9 @@
|
||||
<data name="BtnSendVerificationCode.Text" xml:space="preserve">
|
||||
<value>Отправить код</value>
|
||||
</data>
|
||||
<data name="TPConsoleCheck.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>296, 111</value>
|
||||
</data>
|
||||
<data name="TPConsoleCheck.Text" xml:space="preserve">
|
||||
<value>консоль</value>
|
||||
</data>
|
||||
@@ -218,7 +230,7 @@
|
||||
<value>Подключить</value>
|
||||
</data>
|
||||
<data name="LblConsoleTip.Font" type="System.Drawing.Font, System.Drawing">
|
||||
<value>微软雅黑, 8pt, style=Italic</value>
|
||||
<value>Microsoft YaHei UI, 8pt, style=Italic</value>
|
||||
</data>
|
||||
<data name="LblConsoleTip.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>15, 34</value>
|
||||
@@ -397,7 +409,7 @@
|
||||
<value>False</value>
|
||||
</data>
|
||||
<data name="LblTp.Font" type="System.Drawing.Font, System.Drawing">
|
||||
<value>微软雅黑, 8pt</value>
|
||||
<value>Microsoft YaHei UI, 8pt</value>
|
||||
</data>
|
||||
<data name="LblTp.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>6, 89</value>
|
||||
@@ -558,27 +570,15 @@
|
||||
<data name="TPStats.Text" xml:space="preserve">
|
||||
<value>Статы</value>
|
||||
</data>
|
||||
<data name="LblResetStatsCommand.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>88, 135</value>
|
||||
</data>
|
||||
<data name="LblResetStatsCommand.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>130, 17</value>
|
||||
</data>
|
||||
<data name="LblResetStatsCommand.Text" xml:space="preserve">
|
||||
<value>При получении CEP</value>
|
||||
</data>
|
||||
<data name="LblResetStatsTip.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>214, 135</value>
|
||||
</data>
|
||||
<data name="LblResetStatsTip.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>301, 17</value>
|
||||
</data>
|
||||
<data name="LblResetStatsTip.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="LblStatTip.Text" xml:space="preserve">
|
||||
<value>Совет</value>
|
||||
</data>
|
||||
@@ -977,6 +977,10 @@
|
||||
<data name="ChkIncludeUID.Text" xml:space="preserve">
|
||||
<value>Включить UID</value>
|
||||
</data>
|
||||
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||
<data name="$this.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
||||
<value>Inherit</value>
|
||||
</data>
|
||||
<data name="$this.Text" xml:space="preserve">
|
||||
<value>GrasscutterTools - перевод Юрий Дворецкий</value>
|
||||
</data>
|
||||
|
||||
@@ -123,11 +123,23 @@
|
||||
<data name="ChkAutoCopy.Text" xml:space="preserve">
|
||||
<value>自動</value>
|
||||
</data>
|
||||
<data name="GrpCommand.Text" xml:space="preserve">
|
||||
<value>命令(按住 Ctrl 自動執行)</value>
|
||||
</data>
|
||||
<data name="BtnInvokeOpenCommand.Text" xml:space="preserve">
|
||||
<value>執行(F5)</value>
|
||||
</data>
|
||||
<data name="GrpCommand.Text" xml:space="preserve">
|
||||
<value>命令(按住 Ctrl 自動執行)</value>
|
||||
<data name="TPRemoteCall.Text" xml:space="preserve">
|
||||
<value>遠程</value>
|
||||
</data>
|
||||
<data name="LnkInventoryKamera.Text" xml:space="preserve">
|
||||
<value>存檔掃描開源工具</value>
|
||||
</data>
|
||||
<data name="LblGOODHelp.Text" xml:space="preserve">
|
||||
<value>快來把你的官服存檔導入GC吧!</value>
|
||||
</data>
|
||||
<data name="ButtonOpenGOODImport.Text" xml:space="preserve">
|
||||
<value>導入GOOD檔案</value>
|
||||
</data>
|
||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
<data name="LblHostTip.Size" type="System.Drawing.Size, System.Drawing">
|
||||
@@ -136,6 +148,9 @@
|
||||
<data name="LblHostTip.Text" xml:space="preserve">
|
||||
<value>請確保地址中包含 http:// 或 https://</value>
|
||||
</data>
|
||||
<data name="GrpServerStatus.Text" xml:space="preserve">
|
||||
<value>伺服器狀態</value>
|
||||
</data>
|
||||
<data name="LnkOpenCommandLabel.Text" xml:space="preserve">
|
||||
<value>遠程執行插件</value>
|
||||
</data>
|
||||
@@ -145,8 +160,11 @@
|
||||
<data name="LblPlayerCountLabel.Text" xml:space="preserve">
|
||||
<value>當前玩家數</value>
|
||||
</data>
|
||||
<data name="GrpServerStatus.Text" xml:space="preserve">
|
||||
<value>伺服器狀態</value>
|
||||
<data name="GrpRemoteCommand.Text" xml:space="preserve">
|
||||
<value>遠程執行</value>
|
||||
</data>
|
||||
<data name="TPPlayerCheck.Text" xml:space="preserve">
|
||||
<value>玩家驗證</value>
|
||||
</data>
|
||||
<data name="LnkRCHelp.Text" xml:space="preserve">
|
||||
<value>幫助</value>
|
||||
@@ -160,8 +178,8 @@
|
||||
<data name="BtnSendVerificationCode.Text" xml:space="preserve">
|
||||
<value>發送驗證碼</value>
|
||||
</data>
|
||||
<data name="TPPlayerCheck.Text" xml:space="preserve">
|
||||
<value>玩家驗證</value>
|
||||
<data name="TPConsoleCheck.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>296, 111</value>
|
||||
</data>
|
||||
<data name="BtnConsoleConnect.Text" xml:space="preserve">
|
||||
<value>連接</value>
|
||||
@@ -170,17 +188,14 @@
|
||||
<value>請注意,控制台狀態下普通命令必須指定目標
|
||||
(即設置包含UID)</value>
|
||||
</data>
|
||||
<data name="GrpRemoteCommand.Text" xml:space="preserve">
|
||||
<value>遠程執行</value>
|
||||
</data>
|
||||
<data name="BtnQueryServerStatus.Text" xml:space="preserve">
|
||||
<value>查詢</value>
|
||||
</data>
|
||||
<data name="LblHost.Text" xml:space="preserve">
|
||||
<value>伺服器地址</value>
|
||||
</data>
|
||||
<data name="TPRemoteCall.Text" xml:space="preserve">
|
||||
<value>遠程</value>
|
||||
<data name="TPAbout.Text" xml:space="preserve">
|
||||
<value>關於</value>
|
||||
</data>
|
||||
<data name="LblSupportDescription.Text" xml:space="preserve">
|
||||
<value>割草機工具箱
|
||||
@@ -190,15 +205,15 @@
|
||||
如果願意請我喝一杯奶茶,那就更好了 : )
|
||||
指令生成有問題,或者有新的功能請求,都可以來Github提出</value>
|
||||
</data>
|
||||
<data name="TPAbout.Text" xml:space="preserve">
|
||||
<value>關於</value>
|
||||
</data>
|
||||
<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>
|
||||
@@ -208,8 +223,8 @@
|
||||
<data name="LblAccountUserName.Text" xml:space="preserve">
|
||||
<value>用戶名</value>
|
||||
</data>
|
||||
<data name="GrpAccount.Text" xml:space="preserve">
|
||||
<value>賬號管理</value>
|
||||
<data name="GrpPermission.Text" xml:space="preserve">
|
||||
<value>權限管理</value>
|
||||
</data>
|
||||
<data name="LblPerm.Text" xml:space="preserve">
|
||||
<value>權限</value>
|
||||
@@ -217,8 +232,8 @@
|
||||
<data name="LblPermUID.Text" xml:space="preserve">
|
||||
<value>目標UID</value>
|
||||
</data>
|
||||
<data name="GrpPermission.Text" xml:space="preserve">
|
||||
<value>權限管理</value>
|
||||
<data name="TPScene.Text" xml:space="preserve">
|
||||
<value>場景</value>
|
||||
</data>
|
||||
<data name="ChkIncludeSceneId.Text" xml:space="preserve">
|
||||
<value>含場景ID</value>
|
||||
@@ -239,9 +254,6 @@
|
||||
|
||||
提示:大部分場景沒有作用,無法進入。</value>
|
||||
</data>
|
||||
<data name="TPScene.Text" xml:space="preserve">
|
||||
<value>場景</value>
|
||||
</data>
|
||||
<data name="BtnSaveGiveItemLog.Text" xml:space="preserve">
|
||||
<value>√ 記錄</value>
|
||||
</data>
|
||||
@@ -281,27 +293,27 @@
|
||||
<data name="LblWeaponLevel.Text" xml:space="preserve">
|
||||
<value>等級</value>
|
||||
</data>
|
||||
<data name="LblResetStatsCommand.Text" xml:space="preserve">
|
||||
<value>獲得角色經驗時</value>
|
||||
</data>
|
||||
<data name="LblResetStatsTip.Text" xml:space="preserve">
|
||||
<value>當前角色屬性將會重置</value>
|
||||
<data name="TPStats.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 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="LblStatsDescription.Text" xml:space="preserve">
|
||||
<value>設置當前活躍角色數據</value>
|
||||
</data>
|
||||
<data name="TPStats.Text" xml:space="preserve">
|
||||
<value>數據</value>
|
||||
</data>
|
||||
<data name="BtnGiveAllChar.Text" xml:space="preserve">
|
||||
<value>一鍵獲得所有角色</value>
|
||||
</data>
|
||||
@@ -317,15 +329,15 @@
|
||||
<data name="GrpSpawnRecord.Text" xml:space="preserve">
|
||||
<value>生成記錄本</value>
|
||||
</data>
|
||||
<data name="GrpEntityType.Text" xml:space="preserve">
|
||||
<value>列表分類</value>
|
||||
</data>
|
||||
<data name="RbEntityAnimal.Text" xml:space="preserve">
|
||||
<value>生物誌</value>
|
||||
</data>
|
||||
<data name="RbEntityMonster.Text" xml:space="preserve">
|
||||
<value>討伐對象</value>
|
||||
</data>
|
||||
<data name="GrpEntityType.Text" xml:space="preserve">
|
||||
<value>列表分類</value>
|
||||
</data>
|
||||
<data name="LblSpawnDescription.Text" xml:space="preserve">
|
||||
<value>在玩家附近召喚生物</value>
|
||||
</data>
|
||||
@@ -335,6 +347,12 @@
|
||||
<data name="LblEntityLevel.Text" xml:space="preserve">
|
||||
<value>等級</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.Text" xml:space="preserve">
|
||||
<value>測試任務</value>
|
||||
</data>
|
||||
@@ -344,9 +362,6 @@
|
||||
<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>
|
||||
@@ -358,8 +373,8 @@
|
||||
提示:許多任務需要服務端腳本支持
|
||||
囙此任務可以接,可以完成,但是不一定可以做</value>
|
||||
</data>
|
||||
<data name="TPQuest.Text" xml:space="preserve">
|
||||
<value>任務</value>
|
||||
<data name="TPArtifact.Text" xml:space="preserve">
|
||||
<value>聖遺物</value>
|
||||
</data>
|
||||
<data name="LblArtifactSet.Text" xml:space="preserve">
|
||||
<value>套裝</value>
|
||||
@@ -376,8 +391,8 @@
|
||||
<data name="LblArtifactStars.Text" xml:space="preserve">
|
||||
<value>星級</value>
|
||||
</data>
|
||||
<data name="TPArtifact.Text" xml:space="preserve">
|
||||
<value>聖遺物</value>
|
||||
<data name="TPCustom.Text" xml:space="preserve">
|
||||
<value>自定義</value>
|
||||
</data>
|
||||
<data name="BtnExportCustomCommands.Text" xml:space="preserve">
|
||||
<value>導出</value>
|
||||
@@ -391,8 +406,8 @@
|
||||
<data name="BtnRemoveCustomCommand.Text" xml:space="preserve">
|
||||
<value>× 刪除</value>
|
||||
</data>
|
||||
<data name="TPCustom.Text" xml:space="preserve">
|
||||
<value>自定義</value>
|
||||
<data name="TPHome.Text" xml:space="preserve">
|
||||
<value>主頁</value>
|
||||
</data>
|
||||
<data name="BtnOpenTextMap.Text" xml:space="preserve">
|
||||
<value>文本瀏覽器</value>
|
||||
@@ -403,7 +418,8 @@
|
||||
<data name="ChkTopMost.Text" xml:space="preserve">
|
||||
<value>置頂</value>
|
||||
</data>
|
||||
<data name="TPHome.Text" xml:space="preserve">
|
||||
<value>主頁</value>
|
||||
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||
<data name="$this.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
||||
<value>Inherit</value>
|
||||
</data>
|
||||
</root>
|
||||
@@ -18,7 +18,6 @@
|
||||
**/
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Data;
|
||||
using System.Linq;
|
||||
using System.Text.RegularExpressions;
|
||||
using System.Windows.Forms;
|
||||
|
||||
@@ -134,7 +134,7 @@
|
||||
<value>80, 21</value>
|
||||
</data>
|
||||
<data name="ChkTopMost.Text" xml:space="preserve">
|
||||
<value>Always on top</value>
|
||||
<value>TopMost</value>
|
||||
</data>
|
||||
<data name="LblResourcesPath.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>294, 17</value>
|
||||
|
||||
94
Source/GrasscutterTools/GOOD/Artifact.cs
Normal file
94
Source/GrasscutterTools/GOOD/Artifact.cs
Normal file
@@ -0,0 +1,94 @@
|
||||
/**
|
||||
* Grasscutter Tools
|
||||
* Copyright (C) 2022 jie65535
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as published
|
||||
* by the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*
|
||||
**/
|
||||
using Newtonsoft.Json;
|
||||
|
||||
namespace GrasscutterTools.GOOD
|
||||
{
|
||||
/// <summary>
|
||||
/// Artifact data representation
|
||||
/// Doc: https://frzyc.github.io/genshin-optimizer/#/doc
|
||||
/// Modified from https://github.com/Andrewthe13th/Inventory_Kamera/blob/master/InventoryKamera/game/Artifact.cs
|
||||
/// </summary>
|
||||
public class Artifact
|
||||
{
|
||||
/// <summary>
|
||||
/// e.g. "GladiatorsFinale"
|
||||
/// </summary>
|
||||
[JsonProperty("setKey")]
|
||||
public string SetName { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// //e.g. "plume"
|
||||
/// type SlotKey = "flower" | "plume" | "sands" | "goblet" | "circlet"
|
||||
/// </summary>
|
||||
[JsonProperty("slotKey")]
|
||||
public string GearSlot { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 1-5 inclusive
|
||||
/// </summary>
|
||||
[JsonProperty("rarity")]
|
||||
public int Rarity { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// mainStatKey
|
||||
/// </summary>
|
||||
[JsonProperty("mainStatKey")]
|
||||
public string MainStat { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 0-20 inclusive
|
||||
/// </summary>
|
||||
[JsonProperty("level")]
|
||||
public int Level { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// substats
|
||||
/// </summary>
|
||||
[JsonProperty("substats")]
|
||||
public SubStat[] SubStats { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// where "" means not equipped.
|
||||
/// </summary>
|
||||
[JsonProperty("location")]
|
||||
public string EquippedCharacter { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Whether the artifact is locked in game.
|
||||
/// </summary>
|
||||
[JsonProperty("lock")]
|
||||
public bool Lock { get; set; }
|
||||
|
||||
public struct SubStat
|
||||
{
|
||||
/// <summary>
|
||||
/// e.g. "critDMG_"
|
||||
/// </summary>
|
||||
[JsonProperty("key")]
|
||||
public string Stat { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// e.g. 19.4
|
||||
/// </summary>
|
||||
[JsonProperty("value")]
|
||||
public double Value { get; set; }
|
||||
}
|
||||
}
|
||||
}
|
||||
72
Source/GrasscutterTools/GOOD/Character.cs
Normal file
72
Source/GrasscutterTools/GOOD/Character.cs
Normal file
@@ -0,0 +1,72 @@
|
||||
/**
|
||||
* Grasscutter Tools
|
||||
* Copyright (C) 2022 jie65535
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as published
|
||||
* by the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*
|
||||
**/
|
||||
using Newtonsoft.Json;
|
||||
|
||||
namespace GrasscutterTools.GOOD
|
||||
{
|
||||
/// <summary>
|
||||
/// Character data representation
|
||||
/// Doc: https://frzyc.github.io/genshin-optimizer/#/doc
|
||||
/// Modified from https://github.com/Andrewthe13th/Inventory_Kamera/blob/master/InventoryKamera/game/Character.cs
|
||||
/// </summary>
|
||||
public class Character
|
||||
{
|
||||
/// <summary>
|
||||
/// e.g. "Rosaria"
|
||||
/// </summary>
|
||||
[JsonProperty("key")]
|
||||
public string Name { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 1-90 inclusive
|
||||
/// </summary>
|
||||
[JsonProperty("level")]
|
||||
public int Level { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 0-6 inclusive
|
||||
/// </summary>
|
||||
[JsonProperty("constellation")]
|
||||
public int Constellation { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 0-6 inclusive. need to disambiguate 80/90 or 80/80
|
||||
/// </summary>
|
||||
[JsonProperty("ascension")]
|
||||
public int Ascension { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// does not include boost from constellations. 1-15 inclusive
|
||||
/// </summary>
|
||||
[JsonProperty("talent")]
|
||||
public Talents Talents { get; set; }
|
||||
}
|
||||
|
||||
public struct Talents
|
||||
{
|
||||
[JsonProperty("auto")]
|
||||
public int Auto { get; set; }
|
||||
|
||||
[JsonProperty("skill")]
|
||||
public int Skill { get; set; }
|
||||
|
||||
[JsonProperty("burst")]
|
||||
public int Burst { get; set; }
|
||||
}
|
||||
}
|
||||
63
Source/GrasscutterTools/GOOD/GOOD.cs
Normal file
63
Source/GrasscutterTools/GOOD/GOOD.cs
Normal file
@@ -0,0 +1,63 @@
|
||||
/**
|
||||
* Grasscutter Tools
|
||||
* Copyright (C) 2022 jie65535
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as published
|
||||
* by the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*
|
||||
**/
|
||||
using System.Collections.Generic;
|
||||
|
||||
using Newtonsoft.Json;
|
||||
|
||||
namespace GrasscutterTools.GOOD
|
||||
{
|
||||
/// <summary>
|
||||
/// Genshin Open Object Description (GOOD)
|
||||
/// Doc: https://frzyc.github.io/genshin-optimizer/#/doc
|
||||
/// Modified from https://github.com/Andrewthe13th/Inventory_Kamera/blob/master/InventoryKamera/data/GOOD.cs
|
||||
///
|
||||
/// Available for
|
||||
/// https://frzyc.github.io/genshin-optimizer/
|
||||
/// https://github.com/Andrewthe13th/Inventory_Kamera
|
||||
/// https://genshin.aspirine.su/
|
||||
/// https://seelie.me/
|
||||
/// https://github.com/daydreaming666/Amenoma
|
||||
/// https://www.mona-uranai.com/
|
||||
/// https://genshin.mingyulab.com/
|
||||
/// https://genshin-center.com/
|
||||
/// </summary>
|
||||
public class GOOD
|
||||
{
|
||||
[JsonProperty("format")]
|
||||
public string Format { get; set; }
|
||||
|
||||
[JsonProperty("version")]
|
||||
public int Version { get; set; }
|
||||
|
||||
[JsonProperty("source")]
|
||||
public string Source { get; set; }
|
||||
|
||||
[JsonProperty("weapons", DefaultValueHandling = DefaultValueHandling.Ignore)]
|
||||
public List<Weapon> Weapons { get; set; }
|
||||
|
||||
[JsonProperty("artifacts", DefaultValueHandling = DefaultValueHandling.Ignore)]
|
||||
public List<Artifact> Artifacts { get; set; }
|
||||
|
||||
[JsonProperty("characters", DefaultValueHandling = DefaultValueHandling.Ignore)]
|
||||
public List<Character> Characters { get; set; }
|
||||
|
||||
[JsonProperty("materials", DefaultValueHandling = DefaultValueHandling.Ignore)]
|
||||
public Dictionary<string, int> Materials { get; set; }
|
||||
}
|
||||
}
|
||||
108
Source/GrasscutterTools/GOOD/GOODData.cs
Normal file
108
Source/GrasscutterTools/GOOD/GOODData.cs
Normal file
@@ -0,0 +1,108 @@
|
||||
/**
|
||||
* Grasscutter Tools
|
||||
* Copyright (C) 2022 jie65535
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as published
|
||||
* by the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*
|
||||
**/
|
||||
using System.Collections.Generic;
|
||||
using System.Globalization;
|
||||
using System.Text.RegularExpressions;
|
||||
|
||||
using GrasscutterTools.Game;
|
||||
using GrasscutterTools.Properties;
|
||||
|
||||
namespace GrasscutterTools.GOOD
|
||||
{
|
||||
public static class GOODData
|
||||
{
|
||||
static GOODData()
|
||||
{
|
||||
var cultureInfo = CultureInfo.GetCultureInfo("en-US");
|
||||
var regex = new Regex(@"[\W]", RegexOptions.Compiled);
|
||||
|
||||
Dictionary<string, int> ToGOODMap(ItemMap itemMap)
|
||||
{
|
||||
var dic = new Dictionary<string, int>(itemMap.Count);
|
||||
for (int i = 0; i < itemMap.Count; i++)
|
||||
{
|
||||
var name = itemMap.Names[i];
|
||||
var pascalCase = cultureInfo.TextInfo.ToTitleCase(name);
|
||||
var nameGOOD = regex.Replace(pascalCase, string.Empty);
|
||||
dic[nameGOOD] = itemMap.Ids[i];
|
||||
//dic.Add(nameGOOD, itemMap.Ids[i]);
|
||||
}
|
||||
return dic;
|
||||
}
|
||||
|
||||
var artifactCats = new ItemMap(Resources.ResourceManager.GetString("ArtifactCat", cultureInfo));
|
||||
var avatars = new ItemMap(Resources.ResourceManager.GetString("Avatar", cultureInfo));
|
||||
var weapons = new ItemMap(Resources.ResourceManager.GetString("Weapon", cultureInfo));
|
||||
|
||||
ArtifactCats = ToGOODMap(artifactCats);
|
||||
Avatars = ToGOODMap(avatars);
|
||||
Weapons = ToGOODMap(weapons);
|
||||
}
|
||||
|
||||
|
||||
public static Dictionary<string, int> ArtifactCats { get; private set; }
|
||||
|
||||
|
||||
public static Dictionary<string, string> ArtifactSlotMap = new Dictionary<string, string> {
|
||||
{"goblet", "1"}, {"plume", "2"}, {"circlet", "3"}, {"flower", "4"}, {"sands", "5"}
|
||||
};
|
||||
|
||||
public static Dictionary<string, int> ArtifactMainAttribution { get; } = new Dictionary<string, int>
|
||||
{
|
||||
{ "hp" , 10001 },
|
||||
{ "hp_" , 10002 },
|
||||
{ "atk" , 10003 },
|
||||
{ "atk_" , 10004 },
|
||||
{ "def" , 10005 },
|
||||
{ "def_" , 10006 },
|
||||
{ "enerRech_" , 10007 },
|
||||
{ "eleMas" , 10008 },
|
||||
{ "critRate_" , 13007 },
|
||||
{ "critDMG_" , 13008 },
|
||||
{ "heal_" , 13009 },
|
||||
{ "pyro_dmg_" , 15008 },
|
||||
{ "electro_dmg_" , 15009 },
|
||||
{ "cryo_dmg_" , 15010 },
|
||||
{ "hydro_dmg_" , 15011 },
|
||||
{ "anemo_dmg_" , 15012 },
|
||||
{ "geo_dmg_" , 15013 },
|
||||
{ "dendro_dmg_" , 15014 },
|
||||
{ "physical_dmg_", 15015 },
|
||||
};
|
||||
|
||||
public static Dictionary<string, int> ArtifactSubAttribution { get; } = new Dictionary<string, int>
|
||||
{
|
||||
{ "hp" , 102 },
|
||||
{ "hp_" , 103 },
|
||||
{ "atk" , 105 },
|
||||
{ "atk_" , 106 },
|
||||
{ "def" , 108 },
|
||||
{ "def_" , 109 },
|
||||
{ "critRate_", 120 },
|
||||
{ "critDMG_" , 122 },
|
||||
{ "enerRech_", 123 },
|
||||
{ "eleMas" , 124 },
|
||||
};
|
||||
|
||||
public static Dictionary<string, int> Avatars { get; private set; }
|
||||
|
||||
public static Dictionary<string, int> Weapons { get; private set; }
|
||||
|
||||
}
|
||||
}
|
||||
68
Source/GrasscutterTools/GOOD/Weapon.cs
Normal file
68
Source/GrasscutterTools/GOOD/Weapon.cs
Normal file
@@ -0,0 +1,68 @@
|
||||
/**
|
||||
* 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.ComponentModel;
|
||||
using Newtonsoft.Json;
|
||||
|
||||
namespace GrasscutterTools.GOOD
|
||||
{
|
||||
/// <summary>
|
||||
/// Weapon data representation
|
||||
/// Doc: https://frzyc.github.io/genshin-optimizer/#/doc
|
||||
/// Modified from https://github.com/Andrewthe13th/Inventory_Kamera/blob/master/InventoryKamera/game/Weapon.cs
|
||||
/// </summary>
|
||||
public class Weapon
|
||||
{
|
||||
/// <summary>
|
||||
/// e.g. "CrescentPike"
|
||||
/// </summary>
|
||||
[JsonProperty("key")]
|
||||
public string Name { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 1-90 inclusive
|
||||
/// </summary>
|
||||
[JsonProperty("level")]
|
||||
public int Level { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 0-6 inclusive. need to disambiguate 80/90 or 80/80
|
||||
/// </summary>
|
||||
[JsonProperty("ascension")]
|
||||
public int AscensionLevel { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 1-5 inclusive
|
||||
/// </summary>
|
||||
[JsonProperty("refinement")]
|
||||
public int RefinementLevel { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// where "" means not equipped.
|
||||
/// </summary>
|
||||
[JsonProperty("location")]
|
||||
[DefaultValue("")]
|
||||
public string EquippedCharacter { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Whether the weapon is locked in game.
|
||||
/// </summary>
|
||||
[JsonProperty("lock")]
|
||||
public bool Lock { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -16,8 +16,6 @@
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*
|
||||
**/
|
||||
using System.ComponentModel;
|
||||
|
||||
using Newtonsoft.Json;
|
||||
using Newtonsoft.Json.Converters;
|
||||
|
||||
|
||||
@@ -38,7 +38,7 @@ namespace GrasscutterTools.Game
|
||||
if (si > 0 && int.TryParse(line.Substring(0, si).Trim(), out int id))
|
||||
{
|
||||
var name = line.Substring(si + 1).Trim();
|
||||
if (!string.IsNullOrEmpty(name))
|
||||
if (!string.IsNullOrEmpty(name) && name != "null")
|
||||
{
|
||||
//IdMap[id] = name;
|
||||
//NameMap[name] = id;
|
||||
|
||||
@@ -46,7 +46,7 @@ namespace GrasscutterTools.Game
|
||||
ManualTextMap = new Dictionary<string, string>();
|
||||
while (reader.Read())
|
||||
{
|
||||
if (reader.TokenType == JsonToken.PropertyName && (string)reader.Value == "TextMapId")
|
||||
if (reader.TokenType == JsonToken.PropertyName && ((string)reader.Value == "TextMapId" || (string)reader.Value == "textMapId"))
|
||||
{
|
||||
var textMapId = reader.ReadAsString();
|
||||
reader.Read();
|
||||
|
||||
@@ -1,7 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<Import Project="..\packages\Resource.Embedder.2.2.0\build\Resource.Embedder.props" Condition="Exists('..\packages\Resource.Embedder.2.2.0\build\Resource.Embedder.props')" />
|
||||
<Import Project="..\packages\Costura.Fody.5.7.0\build\Costura.Fody.props" Condition="Exists('..\packages\Costura.Fody.5.7.0\build\Costura.Fody.props')" />
|
||||
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
|
||||
<PropertyGroup>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
@@ -40,160 +38,18 @@
|
||||
<PropertyGroup>
|
||||
<ApplicationIcon>Resources\IconGrasscutter.ico</ApplicationIcon>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup>
|
||||
<ApplicationManifest>Properties\app.manifest</ApplicationManifest>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup />
|
||||
<ItemGroup>
|
||||
<Reference Include="Costura, Version=5.7.0.0, Culture=neutral, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Costura.Fody.5.7.0\lib\netstandard1.0\Costura.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Microsoft.Build.Framework" />
|
||||
<Reference Include="Microsoft.Build.Utilities.v4.0" />
|
||||
<Reference Include="Microsoft.Win32.Primitives, Version=4.0.2.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Microsoft.Win32.Primitives.4.3.0\lib\net46\Microsoft.Win32.Primitives.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="Newtonsoft.Json, Version=13.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Newtonsoft.Json.13.0.1\lib\net45\Newtonsoft.Json.dll</HintPath>
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>Resources\Newtonsoft.Json.dll</HintPath>
|
||||
<EmbedInteropTypes>False</EmbedInteropTypes>
|
||||
<Private>False</Private>
|
||||
</Reference>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.AppContext, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.AppContext.4.3.0\lib\net463\System.AppContext.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="System.ComponentModel.Composition" />
|
||||
<Reference Include="System.Console, Version=4.0.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Console.4.3.0\lib\net46\System.Console.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="System.Core" />
|
||||
<Reference Include="System.Diagnostics.DiagnosticSource, Version=4.0.1.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Diagnostics.DiagnosticSource.4.3.0\lib\net46\System.Diagnostics.DiagnosticSource.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Diagnostics.Tracing, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Diagnostics.Tracing.4.3.0\lib\net462\System.Diagnostics.Tracing.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="System.Globalization.Calendars, Version=4.0.2.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Globalization.Calendars.4.3.0\lib\net46\System.Globalization.Calendars.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="System.IO, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.IO.4.3.0\lib\net462\System.IO.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="System.IO.Compression, Version=4.1.2.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.IO.Compression.4.3.0\lib\net46\System.IO.Compression.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="System.IO.Compression.FileSystem" />
|
||||
<Reference Include="System.IO.Compression.ZipFile, Version=4.0.2.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.IO.Compression.ZipFile.4.3.0\lib\net46\System.IO.Compression.ZipFile.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="System.IO.FileSystem, Version=4.0.2.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.IO.FileSystem.4.3.0\lib\net46\System.IO.FileSystem.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="System.IO.FileSystem.Primitives, Version=4.0.2.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.IO.FileSystem.Primitives.4.3.0\lib\net46\System.IO.FileSystem.Primitives.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="System.Linq, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Linq.4.3.0\lib\net463\System.Linq.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="System.Linq.Expressions, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Linq.Expressions.4.3.0\lib\net463\System.Linq.Expressions.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="System.Net.Http, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Net.Http.4.3.0\lib\net46\System.Net.Http.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="System.Net.Sockets, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Net.Sockets.4.3.0\lib\net46\System.Net.Sockets.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="System.Numerics" />
|
||||
<Reference Include="System.Reflection, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Reflection.4.3.0\lib\net462\System.Reflection.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="System.Runtime, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Runtime.4.3.0\lib\net462\System.Runtime.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="System.Runtime.Extensions, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Runtime.Extensions.4.3.0\lib\net462\System.Runtime.Extensions.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="System.Runtime.InteropServices, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Runtime.InteropServices.4.3.0\lib\net463\System.Runtime.InteropServices.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="System.Runtime.InteropServices.RuntimeInformation, Version=4.0.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Runtime.InteropServices.RuntimeInformation.4.3.0\lib\net45\System.Runtime.InteropServices.RuntimeInformation.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="System.Security.Cryptography.Algorithms, Version=4.2.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Security.Cryptography.Algorithms.4.3.0\lib\net463\System.Security.Cryptography.Algorithms.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="System.Security.Cryptography.Encoding, Version=4.0.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Security.Cryptography.Encoding.4.3.0\lib\net46\System.Security.Cryptography.Encoding.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="System.Security.Cryptography.Primitives, Version=4.0.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Security.Cryptography.Primitives.4.3.0\lib\net46\System.Security.Cryptography.Primitives.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="System.Security.Cryptography.X509Certificates, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Security.Cryptography.X509Certificates.4.3.0\lib\net461\System.Security.Cryptography.X509Certificates.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="System.Text.RegularExpressions, Version=4.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Text.RegularExpressions.4.3.0\lib\net463\System.Text.RegularExpressions.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="System.Windows.Forms.DataVisualization" />
|
||||
<Reference Include="System.Xml.Linq" />
|
||||
<Reference Include="System.Data.DataSetExtensions" />
|
||||
<Reference Include="Microsoft.CSharp" />
|
||||
<Reference Include="System.Data" />
|
||||
<Reference Include="System.Deployment" />
|
||||
<Reference Include="System.Drawing" />
|
||||
<Reference Include="System.Net.Http" />
|
||||
<Reference Include="System.Windows.Forms" />
|
||||
<Reference Include="System.Xml" />
|
||||
<Reference Include="System.Xml.ReaderWriter, Version=4.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Xml.ReaderWriter.4.3.0\lib\net46\System.Xml.ReaderWriter.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="Controls\TextBoxXP.cs">
|
||||
@@ -233,7 +89,11 @@
|
||||
<Compile Include="Game\ItemMap.cs" />
|
||||
<Compile Include="Game\SetStatsCommand.cs" />
|
||||
<Compile Include="Game\TextMapData.cs" />
|
||||
<Compile Include="Github\ReleaseAPI.cs" />
|
||||
<Compile Include="GOOD\GOOD.cs" />
|
||||
<Compile Include="GOOD\Artifact.cs" />
|
||||
<Compile Include="GOOD\Character.cs" />
|
||||
<Compile Include="GOOD\GOODData.cs" />
|
||||
<Compile Include="GOOD\Weapon.cs" />
|
||||
<Compile Include="OpenCommand\OpenCommandAPI.cs" />
|
||||
<Compile Include="MultiLanguage.cs" />
|
||||
<Compile Include="Program.cs" />
|
||||
@@ -243,7 +103,9 @@
|
||||
<AutoGen>True</AutoGen>
|
||||
<DesignTime>True</DesignTime>
|
||||
</Compile>
|
||||
<Compile Include="Utils\ArtifactUtils.cs" />
|
||||
<Compile Include="Utils\HttpHelper.cs" />
|
||||
<Compile Include="Utils\ReleaseAPI.cs" />
|
||||
<EmbeddedResource Include="Forms\FormGachaBannerEditor2.en-us.resx">
|
||||
<DependentUpon>FormGachaBannerEditor2.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
@@ -281,6 +143,7 @@
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="Forms\FormMain.zh-TW.resx">
|
||||
<DependentUpon>FormMain.cs</DependentUpon>
|
||||
<SubType>Designer</SubType>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="Forms\FormTextMapBrowser.en-US.resx">
|
||||
<DependentUpon>FormTextMapBrowser.cs</DependentUpon>
|
||||
@@ -329,8 +192,6 @@
|
||||
<DependentUpon>Resources.resx</DependentUpon>
|
||||
<DesignTime>True</DesignTime>
|
||||
</Compile>
|
||||
<None Include="packages.config" />
|
||||
<None Include="Properties\app.manifest" />
|
||||
<None Include="Properties\Settings.settings">
|
||||
<Generator>SettingsSingleFileGenerator</Generator>
|
||||
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
|
||||
@@ -363,6 +224,7 @@
|
||||
<Content Include="Resources\en-us\Quest.txt" />
|
||||
<Content Include="Resources\en-us\Scene.txt" />
|
||||
<Content Include="Resources\en-us\Weapon.txt" />
|
||||
<None Include="Resources\Newtonsoft.Json.dll" />
|
||||
<Content Include="Resources\ru-ru\Animal.txt" />
|
||||
<Content Include="Resources\ru-ru\Artifact.txt" />
|
||||
<Content Include="Resources\ru-ru\ArtifactCat.txt" />
|
||||
@@ -419,24 +281,11 @@
|
||||
<ProductName>Microsoft .NET Framework 4.8 %28x86 和 x64%29</ProductName>
|
||||
<Install>true</Install>
|
||||
</BootstrapperPackage>
|
||||
<BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
|
||||
<Visible>False</Visible>
|
||||
<ProductName>.NET Framework 3.5 SP1</ProductName>
|
||||
<Install>false</Install>
|
||||
</BootstrapperPackage>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Resource.Embedder">
|
||||
<Version>2.2.0</Version>
|
||||
</PackageReference>
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
|
||||
<PropertyGroup>
|
||||
<ErrorText>这台计算机上缺少此项目引用的 NuGet 程序包。使用“NuGet 程序包还原”可下载这些程序包。有关更多信息,请参见 http://go.microsoft.com/fwlink/?LinkID=322105。缺少的文件是 {0}。</ErrorText>
|
||||
</PropertyGroup>
|
||||
<Error Condition="!Exists('..\packages\Costura.Fody.5.7.0\build\Costura.Fody.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Costura.Fody.5.7.0\build\Costura.Fody.props'))" />
|
||||
<Error Condition="!Exists('..\packages\Costura.Fody.5.7.0\build\Costura.Fody.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Costura.Fody.5.7.0\build\Costura.Fody.targets'))" />
|
||||
<Error Condition="!Exists('..\packages\Fody.6.6.1\build\Fody.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Fody.6.6.1\build\Fody.targets'))" />
|
||||
<Error Condition="!Exists('..\packages\Resource.Embedder.2.2.0\build\Resource.Embedder.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Resource.Embedder.2.2.0\build\Resource.Embedder.props'))" />
|
||||
<Error Condition="!Exists('..\packages\NETStandard.Library.2.0.3\build\netstandard2.0\NETStandard.Library.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\NETStandard.Library.2.0.3\build\netstandard2.0\NETStandard.Library.targets'))" />
|
||||
</Target>
|
||||
<Import Project="..\packages\Costura.Fody.5.7.0\build\Costura.Fody.targets" Condition="Exists('..\packages\Costura.Fody.5.7.0\build\Costura.Fody.targets')" />
|
||||
<Import Project="..\packages\Fody.6.6.1\build\Fody.targets" Condition="Exists('..\packages\Fody.6.6.1\build\Fody.targets')" />
|
||||
<Import Project="..\packages\NETStandard.Library.2.0.3\build\netstandard2.0\NETStandard.Library.targets" Condition="Exists('..\packages\NETStandard.Library.2.0.3\build\netstandard2.0\NETStandard.Library.targets')" />
|
||||
</Project>
|
||||
@@ -17,6 +17,8 @@
|
||||
*
|
||||
**/
|
||||
using System;
|
||||
using System.Globalization;
|
||||
using System.Reflection;
|
||||
using System.Text;
|
||||
using System.Threading;
|
||||
using System.Windows.Forms;
|
||||
@@ -27,6 +29,33 @@ namespace GrasscutterTools
|
||||
{
|
||||
internal static class Program
|
||||
{
|
||||
static Program()
|
||||
{
|
||||
AppDomain.CurrentDomain.AssemblyResolve += OnResolveAssembly;
|
||||
}
|
||||
|
||||
private static Assembly OnResolveAssembly(object sender, ResolveEventArgs args)
|
||||
{
|
||||
//var executingAssembly = Assembly.GetExecutingAssembly();
|
||||
//var assemblyName = new AssemblyName(args.Name);
|
||||
|
||||
//var path = assemblyName.Name + ".dll";
|
||||
//if (assemblyName.CultureInfo.Equals(CultureInfo.InvariantCulture) == false)
|
||||
// path = $@"{assemblyName.CultureInfo}\{path}";
|
||||
//using (var stream = executingAssembly.GetManifestResourceStream(path))
|
||||
//{
|
||||
// if (stream == null) return null;
|
||||
// var assemblyRawBytes = new byte[stream.Length];
|
||||
// stream.Read(assemblyRawBytes, 0, assemblyRawBytes.Length);
|
||||
// return Assembly.Load(assemblyRawBytes);
|
||||
//}
|
||||
|
||||
// 手工加载嵌入的dll文件
|
||||
if (new AssemblyName(args.Name).Name == "Newtonsoft.Json")
|
||||
return Assembly.Load(Resources.Newtonsoft_Json);
|
||||
return null;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 应用程序的主入口点。
|
||||
/// </summary>
|
||||
|
||||
@@ -5,12 +5,12 @@ using System.Runtime.InteropServices;
|
||||
// 控制。更改这些特性值可修改
|
||||
// 与程序集关联的信息。
|
||||
[assembly: AssemblyTitle("GrasscutterTools")]
|
||||
[assembly: AssemblyDescription("")]
|
||||
[assembly: AssemblyDescription("Grasscutter Command Generator")]
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyCompany("")]
|
||||
[assembly: AssemblyCompany("jie65535")]
|
||||
[assembly: AssemblyProduct("GrasscutterTools")]
|
||||
[assembly: AssemblyCopyright("Copyright © jie65535 2022")]
|
||||
[assembly: AssemblyTrademark("")]
|
||||
[assembly: AssemblyTrademark("jie65535")]
|
||||
[assembly: AssemblyCulture("")]
|
||||
|
||||
// 将 ComVisible 设置为 false 会使此程序集中的类型
|
||||
@@ -31,5 +31,5 @@ using System.Runtime.InteropServices;
|
||||
//可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值
|
||||
//通过使用 "*",如下所示:
|
||||
// [assembly: AssemblyVersion("1.0.*")]
|
||||
[assembly: AssemblyVersion("1.5.3")]
|
||||
[assembly: AssemblyFileVersion("1.0.0")]
|
||||
[assembly: AssemblyVersion("1.6.2")]
|
||||
[assembly: AssemblyFileVersion("1.6.2")]
|
||||
473
Source/GrasscutterTools/Properties/Resources.Designer.cs
generated
473
Source/GrasscutterTools/Properties/Resources.Designer.cs
generated
@@ -67,25 +67,6 @@ namespace GrasscutterTools.Properties {
|
||||
///28010104:将军蟹
|
||||
///28010105:薄红蟹
|
||||
///28010106:螃蟹
|
||||
///28020101: 雪狐
|
||||
///28020102: 红狐
|
||||
///28020103: 送礼雪狐
|
||||
///28020104: 送大礼雪狐
|
||||
///28020105: 雪狐
|
||||
///28020106: 红狐
|
||||
///28020201: 松鼠
|
||||
///28030101: 蓝翎鹭
|
||||
///28030102: 菫鹮
|
||||
///28030201: 茶羽鹰
|
||||
///28030202: 棕翎鹰
|
||||
///28030203: 石鸢
|
||||
///28030204: 白练鹰
|
||||
///28050101: 风晶蝶
|
||||
///28050102: 岩晶蝶
|
||||
///28050103: 冰晶蝶
|
||||
///28050104: 雷晶蝶
|
||||
///28050105: 珊瑚蝶
|
||||
///28050301: 吉光虫
|
||||
///28010201:蓝角蜥
|
||||
///28010202:红角蜥
|
||||
///28010203:绿角蜥
|
||||
@@ -95,7 +76,28 @@ namespace GrasscutterTools.Properties {
|
||||
///28010207:嗜髓蜥
|
||||
///28010301:青蛙
|
||||
///28010302:泥蛙
|
||||
///2801030 [字符串的其余部分被截断]"; 的本地化字符串。
|
||||
///28010303:蓝蛙
|
||||
///28010401:藤纹陆鳗鳗
|
||||
///28010402:深海鳗鳗
|
||||
///28010403:赤鳍陆鳗鳗
|
||||
///28020101:雪狐
|
||||
///28020102:红狐
|
||||
///28020103:送礼雪狐
|
||||
///28020104:送大礼雪狐
|
||||
///28020105:雪狐
|
||||
///28020106:红狐
|
||||
///28020201:松鼠
|
||||
///28020301:野林猪
|
||||
///28020302:小野林猪
|
||||
///28020303:雪猪
|
||||
///28020304:「大雪猪王」
|
||||
///28020305:冰冻雪猪
|
||||
///28020306:雪猪
|
||||
///28020307:野林猪
|
||||
///28020308:冰冻雪猪
|
||||
///28020309:「大雪猪王」
|
||||
///28020401:北地犬
|
||||
/// [字符串的其余部分被截断]"; 的本地化字符串。
|
||||
/// </summary>
|
||||
internal static string Animal {
|
||||
get {
|
||||
@@ -104,46 +106,46 @@ namespace GrasscutterTools.Properties {
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 51110: 异国之盏
|
||||
///51111: 异国之盏
|
||||
///51112: 异国之盏
|
||||
///51113: 异国之盏
|
||||
///51114: 异国之盏
|
||||
///51120: 归乡之羽
|
||||
///51121: 归乡之羽
|
||||
///51122: 归乡之羽
|
||||
///51123: 归乡之羽
|
||||
///51124: 归乡之羽
|
||||
///51130: 感别之冠
|
||||
///51131: 感别之冠
|
||||
///51132: 感别之冠
|
||||
///51133: 感别之冠
|
||||
///51134: 感别之冠
|
||||
///51140: 故人之心
|
||||
///51141: 故人之心
|
||||
///51142: 故人之心
|
||||
///51143: 故人之心
|
||||
///51144: 故人之心
|
||||
///51150: 逐光之石
|
||||
///51151: 逐光之石
|
||||
///51152: 逐光之石
|
||||
///51153: 逐光之石
|
||||
///51154: 逐光之石
|
||||
///51210: 异国之盏
|
||||
///51211: 异国之盏
|
||||
///51212: 异国之盏
|
||||
///51213: 异国之盏
|
||||
///51214: 异国之盏
|
||||
///51220: 归乡之羽
|
||||
///51221: 归乡之羽
|
||||
///51222: 归乡之羽
|
||||
///51223: 归乡之羽
|
||||
///51224: 归乡之羽
|
||||
///51230: 感别之冠
|
||||
///51231: 感别之冠
|
||||
///51232: 感别之冠
|
||||
///51233: 感别之冠
|
||||
///51234 [字符串的其余部分被截断]"; 的本地化字符串。
|
||||
/// 查找类似 20412:迷误者之灯
|
||||
///20413:迷误者之灯
|
||||
///20422:翠蔓的智者
|
||||
///20423:翠蔓的智者
|
||||
///20432:月桂的宝冠
|
||||
///20433:月桂的宝冠
|
||||
///20442:迷宫的游人
|
||||
///20443:迷宫的游人
|
||||
///20452:贤智的定期
|
||||
///20453:贤智的定期
|
||||
///20513:迷误者之灯
|
||||
///20514:迷误者之灯
|
||||
///20523:翠蔓的智者
|
||||
///20524:翠蔓的智者
|
||||
///20533:月桂的宝冠
|
||||
///20534:月桂的宝冠
|
||||
///20543:迷宫的游人
|
||||
///20544:迷宫的游人
|
||||
///20553:贤智的定期
|
||||
///20554:贤智的定期
|
||||
///21412:如蜜的终宴
|
||||
///21413:如蜜的终宴
|
||||
///21422:裁断的翎羽
|
||||
///21423:裁断的翎羽
|
||||
///21432:沙王的投影
|
||||
///21433:沙王的投影
|
||||
///21442:梦中的铁花
|
||||
///21443:梦中的铁花
|
||||
///21452:沉金的岁月
|
||||
///21453:沉金的岁月
|
||||
///21513:如蜜的终宴
|
||||
///21514:如蜜的终宴
|
||||
///21523:裁断的翎羽
|
||||
///21524:裁断的翎羽
|
||||
///21533:沙王的投影
|
||||
///21534:沙王的投影
|
||||
///21543:梦中的铁花
|
||||
///21544:梦中的铁花
|
||||
///21553:沉金的岁月
|
||||
///21554 [字符串的其余部分被截断]"; 的本地化字符串。
|
||||
/// </summary>
|
||||
internal static string Artifact {
|
||||
get {
|
||||
@@ -152,7 +154,9 @@ namespace GrasscutterTools.Properties {
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 51: 行者之心
|
||||
/// 查找类似 20:深林的记忆
|
||||
///21:饰金之梦
|
||||
///51:行者之心
|
||||
///52:勇士之心
|
||||
///53:守护之心
|
||||
///54:奇迹
|
||||
@@ -302,40 +306,60 @@ namespace GrasscutterTools.Properties {
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 10000001 : 凯特
|
||||
///10000002 : 神里绫华
|
||||
///10000003 : 琴
|
||||
///10000005 : 旅行者
|
||||
///10000006 : 丽莎
|
||||
///10000007 : 旅行者
|
||||
///10000014 : 芭芭拉
|
||||
///10000015 : 凯亚
|
||||
///10000016 : 迪卢克
|
||||
///10000020 : 雷泽
|
||||
///10000021 : 安柏
|
||||
///10000022 : 温迪
|
||||
///10000023 : 香菱
|
||||
///10000024 : 北斗
|
||||
///10000025 : 行秋
|
||||
///10000026 : 魈
|
||||
///10000027 : 凝光
|
||||
///10000029 : 可莉
|
||||
///10000030 : 钟离
|
||||
///10000031 : 菲谢尔
|
||||
///10000032 : 班尼特
|
||||
///10000033 : 达达利亚
|
||||
///10000034 : 诺艾尔
|
||||
///10000035 : 七七
|
||||
///10000036 : 重云
|
||||
///10000037 : 甘雨
|
||||
///10000038 : 阿贝多
|
||||
///10000039 : 迪奥娜
|
||||
///10000041 : 莫娜
|
||||
///10000042 : 刻晴
|
||||
///10000043 : 砂糖
|
||||
///10000044 : 辛焱
|
||||
///10000045 : 罗莎莉亚
|
||||
///1000 [字符串的其余部分被截断]"; 的本地化字符串。
|
||||
/// 查找类似 1002:神里绫华
|
||||
///1003:琴
|
||||
///1005:空
|
||||
///1006:丽莎
|
||||
///1007:荧
|
||||
///1014:芭芭拉
|
||||
///1015:凯亚
|
||||
///1016:迪卢克
|
||||
///1020:雷泽
|
||||
///1021:安柏
|
||||
///1022:温迪
|
||||
///1023:香菱
|
||||
///1024:北斗
|
||||
///1025:行秋
|
||||
///1026:魈
|
||||
///1027:凝光
|
||||
///1029:可莉
|
||||
///1030:钟离
|
||||
///1031:菲谢尔
|
||||
///1032:班尼特
|
||||
///1033:达达利亚
|
||||
///1034:诺艾尔
|
||||
///1035:七七
|
||||
///1036:重云
|
||||
///1037:甘雨
|
||||
///1038:阿贝多
|
||||
///1039:迪奥娜
|
||||
///1041:莫娜
|
||||
///1042:刻晴
|
||||
///1043:砂糖
|
||||
///1044:辛焱
|
||||
///1045:罗莎莉亚
|
||||
///1046:胡桃
|
||||
///1047:枫原万叶
|
||||
///1048:烟绯
|
||||
///1049:宵宫
|
||||
///1050:托马
|
||||
///1051:优菈
|
||||
///1052:雷电将军
|
||||
///1053:早柚
|
||||
///1054:珊瑚宫心海
|
||||
///1055:五郎
|
||||
///1056:九条裟罗
|
||||
///1057:荒泷一斗
|
||||
///1058:八重神子
|
||||
///1059:鹿野院平藏
|
||||
///1060:夜兰
|
||||
///1062:埃洛伊
|
||||
///1063:申鹤
|
||||
///1064:云堇
|
||||
///1065:久岐忍
|
||||
///1066:神里绫人
|
||||
///1067:柯莱
|
||||
///1068:多 [字符串的其余部分被截断]"; 的本地化字符串。
|
||||
/// </summary>
|
||||
internal static string Avatar {
|
||||
get {
|
||||
@@ -484,21 +508,25 @@ namespace GrasscutterTools.Properties {
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 无敌
|
||||
////prop godmode on
|
||||
////prop god on
|
||||
///无限体力
|
||||
////prop nostamina on
|
||||
////prop ns on
|
||||
///无限能量
|
||||
////prop unlimitedenergy on
|
||||
////prop ue on
|
||||
///升到60级
|
||||
////give 102 x1880200
|
||||
///设置世界等级
|
||||
////prop worldlevel 8
|
||||
////prop wl 8
|
||||
///点亮地图
|
||||
////prop unlockmap 1
|
||||
///一键解锁深渊
|
||||
////prop abyss 12
|
||||
////prop ut 12
|
||||
///设置纪行等级
|
||||
////prop bp 50
|
||||
///设置好感等级
|
||||
////setfetterlevel 10
|
||||
///奶
|
||||
////heal
|
||||
////h
|
||||
///自杀
|
||||
////kill 0
|
||||
///全队充能
|
||||
@@ -513,8 +541,8 @@ namespace GrasscutterTools.Properties {
|
||||
////give 224 x10000
|
||||
///十万原石
|
||||
////give 201 x100000
|
||||
///十万摩拉
|
||||
////give 202 x100000
|
||||
///一亿摩拉
|
||||
////give 202 x100000000
|
||||
///重载配置
|
||||
////reload
|
||||
///重登
|
||||
@@ -524,11 +552,9 @@ namespace GrasscutterTools.Properties {
|
||||
///清空全部角色命之座(需重登)
|
||||
////resetconst all
|
||||
///清空背包
|
||||
////clear all
|
||||
////clear all lv90 r5 5*
|
||||
///清空武器
|
||||
////clear wp
|
||||
///清空圣遗物
|
||||
////clea [字符串的其余部分被截断]"; 的本地化字符串。
|
||||
//// [字符串的其余部分被截断]"; 的本地化字符串。
|
||||
/// </summary>
|
||||
internal static string CustomCommands {
|
||||
get {
|
||||
@@ -580,7 +606,11 @@ namespace GrasscutterTools.Properties {
|
||||
///061:鬼门斗宴
|
||||
///065:出尘入世
|
||||
///071:华紫樱绯
|
||||
///076: 苍流踏花 的本地化字符串。
|
||||
///076:苍流踏花
|
||||
///081:素霓伣天
|
||||
///091:提纳里池(非原名)
|
||||
///092:钟离池(非原名)
|
||||
///093:猎人之径池(非原名) 的本地化字符串。
|
||||
/// </summary>
|
||||
internal static string GachaBennerPrefab {
|
||||
get {
|
||||
@@ -588,6 +618,33 @@ namespace GrasscutterTools.Properties {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 导入成功! 的本地化字符串。
|
||||
/// </summary>
|
||||
internal static string GOODImportSuccess {
|
||||
get {
|
||||
return ResourceManager.GetString("GOODImportSuccess", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 是否导入 的本地化字符串。
|
||||
/// </summary>
|
||||
internal static string GOODImportText {
|
||||
get {
|
||||
return ResourceManager.GetString("GOODImportText", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 导入GOOD档案 的本地化字符串。
|
||||
/// </summary>
|
||||
internal static string GOODImportTitle {
|
||||
get {
|
||||
return ResourceManager.GetString("GOODImportTitle", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 帮助 的本地化字符串。
|
||||
/// </summary>
|
||||
@@ -640,8 +697,6 @@ namespace GrasscutterTools.Properties {
|
||||
/// <summary>
|
||||
/// 查找类似 101:角色经验
|
||||
///102:冒险阅历
|
||||
///103 : 星尘
|
||||
///104 : 星辉
|
||||
///105:好感经验
|
||||
///106:原粹树脂
|
||||
///107:传说钥匙
|
||||
@@ -678,9 +733,18 @@ namespace GrasscutterTools.Properties {
|
||||
///138:完璧玉符
|
||||
///139:降魔玉符
|
||||
///140:幽蕴砺石
|
||||
///141:花簇簇的漂流物
|
||||
///142:战策碎珀
|
||||
///143:巧思手记
|
||||
///144:随想草稿
|
||||
///145:古铁钱
|
||||
///201:原石
|
||||
///2 [字符串的其余部分被截断]"; 的本地化字符串。
|
||||
///202:摩拉
|
||||
///203:创世结晶
|
||||
///204:洞天宝钱
|
||||
///314:声望经验·稻妻
|
||||
///315:声望经验·蒙德
|
||||
///316:声 [字符串的其余部分被截断]"; 的本地化字符串。
|
||||
/// </summary>
|
||||
internal static string Item {
|
||||
get {
|
||||
@@ -689,36 +753,38 @@ namespace GrasscutterTools.Properties {
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 21010101: 丘丘人
|
||||
///21020101: 木盾丘丘暴徒
|
||||
///21020201: 火斧丘丘暴徒
|
||||
///21020202: 火斧丘丘暴徒
|
||||
///21020301: 岩盾丘丘暴徒
|
||||
///21020401: 丘丘霜铠王
|
||||
///21020501: 丘丘岩盔王
|
||||
///21020601: 冰盾丘丘暴徒
|
||||
///21020701: 雷斧丘丘暴徒
|
||||
///21020703: 雷斧丘丘暴徒
|
||||
///21020801: 丘丘雷兜王
|
||||
///20010101: 草史莱姆
|
||||
/// 查找类似 20010101:草史莱姆
|
||||
///20010201:大型草史莱姆
|
||||
///20010202:大型草史莱姆
|
||||
///20010301:风史莱姆
|
||||
///20010302:风史莱姆
|
||||
///20010401:大型风史莱姆
|
||||
///20010402:大型风史莱姆
|
||||
///20010403:大型风史莱姆
|
||||
///29010101: 裂空的魔龙
|
||||
///29010102: 裂空的魔龙
|
||||
///29010103: 裂空的魔龙
|
||||
///29010104: 裂空的魔龙
|
||||
///29020101: 北风的王狼,奔狼的领主
|
||||
///29020102: 北风的王狼,奔狼的领主
|
||||
///29030103: 「公子」
|
||||
///29030106: 「公子」
|
||||
///29040101: 若陀龙王
|
||||
///29040102: 若陀龙王
|
||||
///29040103: 若陀龙王
|
||||
///29040104: 若陀龙王
|
||||
///290401 [字符串的其余部分被截断]"; 的本地化字符串。
|
||||
///20010501:雷史莱姆
|
||||
///20010502:雷史莱姆
|
||||
///20010601:大型雷史莱姆
|
||||
///20010602:大型雷史莱姆
|
||||
///20010604:大型雷史莱姆
|
||||
///20010701:变异雷史莱姆
|
||||
///20010702:变异雷史莱姆
|
||||
///20010703:变异雷史莱姆
|
||||
///20010801:冰史莱姆
|
||||
///20010802:冰史莱姆
|
||||
///20010803:冰史莱姆
|
||||
///20010901:大型冰史莱姆
|
||||
///20010902:大型冰史莱姆
|
||||
///20010903:大型冰史莱姆
|
||||
///20010904:大型冰史莱姆
|
||||
///20011001:水史莱姆
|
||||
///20011002:水史莱姆
|
||||
///20011101:大型水史莱姆
|
||||
///20011102:大型水史莱姆
|
||||
///20011103:大型水史莱姆
|
||||
///20011201:火史莱姆
|
||||
///20011202:火史莱姆
|
||||
///20011203:火史莱姆
|
||||
///20011301:大型 [字符串的其余部分被截断]"; 的本地化字符串。
|
||||
/// </summary>
|
||||
internal static string Monster {
|
||||
get {
|
||||
@@ -726,6 +792,16 @@ namespace GrasscutterTools.Properties {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找 System.Byte[] 类型的本地化资源。
|
||||
/// </summary>
|
||||
internal static byte[] Newtonsoft_Json {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("Newtonsoft_Json", resourceCulture);
|
||||
return ((byte[])(obj));
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 版本名:{0}
|
||||
///更新时间:{1}
|
||||
@@ -793,33 +869,29 @@ namespace GrasscutterTools.Properties {
|
||||
///player.**
|
||||
///server.*
|
||||
///server.**
|
||||
///player.changescene
|
||||
///permission
|
||||
///player.clearinv
|
||||
///player.clearinv.others
|
||||
///player.enterdungeon
|
||||
///player.enterdungeon.others
|
||||
///player.give
|
||||
///player.giveall
|
||||
///player.giveart
|
||||
///player.givechar
|
||||
///player.godmode
|
||||
///player.give.others
|
||||
///player.heal
|
||||
///player.heal.others
|
||||
///player.killcharacter
|
||||
///player.killcharacter.others
|
||||
///player.quest
|
||||
///player.quest.others
|
||||
///player.resetconstellation
|
||||
///player.resetconstellation.others
|
||||
///player.setfetterlevel
|
||||
///player.setfetterlevel.others
|
||||
///player.setprop
|
||||
///player.setprop.others
|
||||
///player.setstats
|
||||
///player.setstats.others
|
||||
///player.settalent
|
||||
///player.setworldlevel
|
||||
///player.teleport
|
||||
///player.tpall
|
||||
///player.weather
|
||||
///server.broadcast
|
||||
///server.coop
|
||||
///server.drop
|
||||
///server.kick
|
||||
///server.killall
|
||||
///server.reload
|
||||
///server.resetshop
|
||||
///server.sendmail
|
||||
///server.sendmessage
|
||||
///p [字符串的其余部分被截断]"; 的本地化字符串。
|
||||
/// </summary>
|
||||
internal static string Permissions {
|
||||
get {
|
||||
@@ -837,27 +909,20 @@ namespace GrasscutterTools.Properties {
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <summary>
|
||||
/// 查找类似 30302 : 女神像解锁$HIDDEN -
|
||||
///30303 : 女神像解锁$HIDDEN -
|
||||
///30304 : 女神像解锁$HIDDEN -
|
||||
///30305 : 女神像解锁$HIDDEN -
|
||||
///30306 : 女神像解锁$HIDDEN -
|
||||
///30307 : 女神像解锁$HIDDEN -
|
||||
///30308 : 女神像解锁$HIDDEN -
|
||||
///30309 : 女神像解锁$HIDDEN -
|
||||
///30310 : 女神像解锁$HIDDEN -
|
||||
///30311 : 女神像解锁$HIDDEN -
|
||||
///30312 : 女神像解锁$HIDDEN -
|
||||
///30313 : 女神像解锁$HIDDEN -
|
||||
///30314 : 女神像解锁$HIDDEN -
|
||||
///30315 : 女神像解锁$HIDDEN -
|
||||
///30316 : 女神像解锁$HIDDEN -
|
||||
///30317 : 女神像解锁$HIDDEN -
|
||||
///30600 : 昔日的风 - 在庙宇门口跟安柏见面
|
||||
///30601 : 昔日的风 - 与安柏对话
|
||||
///30602 : 昔日的风 - 进入庙宇
|
||||
///30603 : 昔日的风 - 探索庙宇深处
|
||||
/// 查找类似 30302:女神像解锁$HIDDEN - [N/A] 362713143
|
||||
///30303:女神像解锁$HIDDEN - [N/A] 715511863
|
||||
///30304:女神像解锁$HIDDEN - [N/A] 163018255
|
||||
///30305:女神像解锁$HIDDEN - [N/A] 3694648119
|
||||
///30306:女神像解锁$HIDDEN - [N/A] 3223799591
|
||||
///30307:女神像解锁$HIDDEN - [N/A] 1232757671
|
||||
///30308:女神像解锁$HIDDEN - [N/A] 3056513767
|
||||
///30309:女神像解锁$HIDDEN - [N/A] 2426653367
|
||||
///30310:女神像解锁$HIDDEN - [N/A] 2003131071
|
||||
///30311:女神像解锁$HIDDEN - [N/A] 105277231
|
||||
///30312:女神像解锁$HIDDEN - [N/A] 3391806215
|
||||
///30313:女神像解锁$HIDDEN - [N/A] 1357500887
|
||||
///30314:女神像解锁$HIDDEN - [N/A] 3054344935
|
||||
///30315:女神像 [字符串的其余部分被截断]"; 的本地化字符串。
|
||||
/// </summary>
|
||||
internal static string Quest {
|
||||
get {
|
||||
@@ -884,38 +949,34 @@ namespace GrasscutterTools.Properties {
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <summary>
|
||||
/// 查找类似 1 : 提瓦特
|
||||
/// 查找类似 1: BigWorld_LevelStreaming
|
||||
///2: BigWorld_LevelStreaming
|
||||
///3: 提瓦特
|
||||
///3 : 提瓦特
|
||||
///4: 金苹果群岛(1.6)
|
||||
///5: 渊下宫
|
||||
///6: 层岩巨渊·地下矿区
|
||||
///7: 三界路飨祭
|
||||
///7 : 三界路飨祭
|
||||
///2001 : 罗浮洞
|
||||
///2002 : 翠黛峰
|
||||
///2003 : 清琼岛
|
||||
///2004 : 绘绮庭
|
||||
///2201 : 尘歌壶室内_蒙德
|
||||
///2202 : 尘歌壶室内_璃月
|
||||
///2203 : 尘歌壶室内_稻妻
|
||||
///20008: 深入狼之殿
|
||||
///20008: 丘丘人大本营(test)
|
||||
///20008: 丘丘人巢穴(test)
|
||||
///20007: 小岩洞据点(test)
|
||||
///20007: 小岩洞据点(test)
|
||||
///20007: 小岩洞秘境(test)
|
||||
///20006: 遗迹遇险点(test)
|
||||
///20006: 丘丘人小据点(test)
|
||||
///20006: 丘丘人大据点(test)
|
||||
///1006: 密林、废墟与龙之泪
|
||||
///1017: 壶中天
|
||||
///1019: 洞天云海地城玩法测试(test)
|
||||
///1011: 角色战斗测试(test)
|
||||
///9: 金苹果群岛(2.8)
|
||||
///1001: 移动平台性能测试(test)
|
||||
///1001: 移动平台性能测试(test)
|
||||
///50003: 战斗性能测试(test)
|
||||
///50004: 电桩电源白盒(test)
|
||||
///1002: ClimbTest2
|
||||
///1003: TheBigWorld
|
||||
///1004: Knight_Inside_Test
|
||||
///1005: ChurchSteal
|
||||
///1006: 密林、废墟与龙之泪
|
||||
///1008: ChurchLobby
|
||||
///1009: AngelShare
|
||||
///1011: 角色战斗测试(test)
|
||||
///1013: SneakAdvancedTest
|
||||
///1015: 飞翔是勇气的奖励
|
||||
///1016: 飞翔是勇气的奖励
|
||||
///1017: 壶中天
|
||||
///1018: Chateau
|
||||
///1019: 洞天云海地城玩法测试(test)
|
||||
///1023: Level_Yurenzhong
|
||||
///1024: 黑夜循环地城(test)
|
||||
///1030: TestIntercept_LiYue
|
||||
///1031: 爬塔丘丘人模板(test)
|
||||
///1032: 云海白 [字符串的其余部分被截断]"; 的本地化字符串。
|
||||
/// </summary>
|
||||
internal static string Scene {
|
||||
get {
|
||||
@@ -1000,11 +1061,17 @@ namespace GrasscutterTools.Properties {
|
||||
///11413:腐殖之剑
|
||||
///11414:天目影打刀
|
||||
///11415:辰砂之纺锤
|
||||
///11416:笼钓瓶一心
|
||||
///11419:「一心传」名刀
|
||||
///11420:「一心传」名刀
|
||||
///11421:「一心传」名刀
|
||||
///11501:风鹰剑
|
||||
///11502:天空之刃
|
||||
///11503:苍古自由之誓
|
||||
///11504:斫峰之刃
|
||||
///11505:磐岩结绿
|
||||
///11506:磐岩结绿
|
||||
///11507:凭虚
|
||||
///11509:雾切之回光
|
||||
///11510:波乱月白经津
|
||||
///12101:训练大剑
|
||||
@@ -1014,7 +1081,7 @@ namespace GrasscutterTools.Properties {
|
||||
///12303:白铁大剑
|
||||
///12304:石英大剑
|
||||
///12305:以理服人
|
||||
///12305 : 以理服人
|
||||
///12306: [字符串的其余部分被截断]"; 的本地化字符串。
|
||||
/// </summary>
|
||||
internal static string Weapon {
|
||||
get {
|
||||
|
||||
@@ -255,4 +255,14 @@ Do you want to check for updates? Selecting No will no longer remind you of this
|
||||
<data name="WeaponColor" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\WeaponColor.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-8</value>
|
||||
</data>
|
||||
|
||||
<data name="GOODImportText" xml:space="preserve">
|
||||
<value>Do you wish to import </value>
|
||||
</data>
|
||||
<data name="GOODImportTitle" xml:space="preserve">
|
||||
<value>Import GOOD dump file</value>
|
||||
</data>
|
||||
<data name="GOODImportSuccess" xml:space="preserve">
|
||||
<value>Import success!</value>
|
||||
</data>
|
||||
</root>
|
||||
@@ -184,6 +184,9 @@
|
||||
<data name="GachaBennerPrefab" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\zh-cn\GachaBennerPrefab.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-8</value>
|
||||
</data>
|
||||
<data name="SettingSaveError" xml:space="preserve">
|
||||
<value>保存设置时异常:</value>
|
||||
</data>
|
||||
<data name="Help" xml:space="preserve">
|
||||
<value>帮助</value>
|
||||
</data>
|
||||
@@ -243,9 +246,6 @@
|
||||
<data name="SettingLoadError" xml:space="preserve">
|
||||
<value>加载设置时异常:</value>
|
||||
</data>
|
||||
<data name="SettingSaveError" xml:space="preserve">
|
||||
<value>保存设置时异常:</value>
|
||||
</data>
|
||||
<data name="Tips" xml:space="preserve">
|
||||
<value>提示</value>
|
||||
</data>
|
||||
@@ -264,4 +264,16 @@
|
||||
<data name="WeaponColor" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\WeaponColor.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-8</value>
|
||||
</data>
|
||||
<data name="GOODImportText" xml:space="preserve">
|
||||
<value>是否导入 </value>
|
||||
</data>
|
||||
<data name="GOODImportTitle" xml:space="preserve">
|
||||
<value>导入GOOD档案</value>
|
||||
</data>
|
||||
<data name="GOODImportSuccess" xml:space="preserve">
|
||||
<value>导入成功!</value>
|
||||
</data>
|
||||
<data name="Newtonsoft_Json" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\Newtonsoft.Json.dll;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
</root>
|
||||
@@ -252,4 +252,13 @@
|
||||
<data name="WeaponColor" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\WeaponColor.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-8</value>
|
||||
</data>
|
||||
<data name="GOODImportText" xml:space="preserve">
|
||||
<value>是否導入 </value>
|
||||
</data>
|
||||
<data name="GOODImportTitle" xml:space="preserve">
|
||||
<value>導入GOOD檔案</value>
|
||||
</data>
|
||||
<data name="GOODImportSuccess" xml:space="preserve">
|
||||
<value>導入成功!</value>
|
||||
</data>
|
||||
</root>
|
||||
@@ -1,73 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1">
|
||||
<assemblyIdentity version="1.0.0.0" name="MyApplication.app" />
|
||||
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
|
||||
<security>
|
||||
<requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
|
||||
<!-- UAC 清单选项
|
||||
如果想要更改 Windows 用户帐户控制级别,请使用
|
||||
以下节点之一替换 requestedExecutionLevel 节点。
|
||||
|
||||
<requestedExecutionLevel level="asInvoker" uiAccess="false" />
|
||||
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
|
||||
<requestedExecutionLevel level="highestAvailable" uiAccess="false" />
|
||||
|
||||
指定 requestedExecutionLevel 元素将禁用文件和注册表虚拟化。
|
||||
如果你的应用程序需要此虚拟化来实现向后兼容性,则移除此
|
||||
元素。
|
||||
-->
|
||||
<requestedExecutionLevel level="asInvoker" uiAccess="false" />
|
||||
</requestedPrivileges>
|
||||
<applicationRequestMinimum>
|
||||
<defaultAssemblyRequest permissionSetReference="Custom" />
|
||||
<PermissionSet class="System.Security.PermissionSet" version="1" Unrestricted="true" ID="Custom" SameSite="site" />
|
||||
</applicationRequestMinimum>
|
||||
</security>
|
||||
</trustInfo>
|
||||
<compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
|
||||
<application>
|
||||
<!-- 设计此应用程序与其一起工作且已针对此应用程序进行测试的
|
||||
Windows 版本的列表。取消评论适当的元素,
|
||||
Windows 将自动选择最兼容的环境。 -->
|
||||
<!-- Windows Vista -->
|
||||
<!--<supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}" />-->
|
||||
<!-- Windows 7 -->
|
||||
<!--<supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}" />-->
|
||||
<!-- Windows 8 -->
|
||||
<!--<supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}" />-->
|
||||
<!-- Windows 8.1 -->
|
||||
<!--<supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}" />-->
|
||||
<!-- Windows 10 -->
|
||||
<supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}" />
|
||||
</application>
|
||||
</compatibility>
|
||||
<!-- 指示该应用程序可感知 DPI 且 Windows 在 DPI 较高时将不会对其进行
|
||||
自动缩放。Windows Presentation Foundation (WPF)应用程序自动感知 DPI,无需
|
||||
选择加入。选择加入此设置的 Windows 窗体应用程序(面向 .NET Framework 4.6)还应
|
||||
在其 app.config 中将 "EnableWindowsFormsHighDpiAutoResizing" 设置设置为 "true"。
|
||||
|
||||
将应用程序设为感知长路径。请参阅 https://docs.microsoft.com/windows/win32/fileio/maximum-file-path-limitation -->
|
||||
<!--
|
||||
<application xmlns="urn:schemas-microsoft-com:asm.v3">
|
||||
<windowsSettings>
|
||||
<dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">true</dpiAware>
|
||||
<longPathAware xmlns="http://schemas.microsoft.com/SMI/2016/WindowsSettings">true</longPathAware>
|
||||
</windowsSettings>
|
||||
</application>
|
||||
-->
|
||||
<!-- 启用 Windows 公共控件和对话框的主题(Windows XP 和更高版本) -->
|
||||
<!--
|
||||
<dependency>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity
|
||||
type="win32"
|
||||
name="Microsoft.Windows.Common-Controls"
|
||||
version="6.0.0.0"
|
||||
processorArchitecture="*"
|
||||
publicKeyToken="6595b64144ccf1df"
|
||||
language="*"
|
||||
/>
|
||||
</dependentAssembly>
|
||||
</dependency>
|
||||
-->
|
||||
</assembly>
|
||||
BIN
Source/GrasscutterTools/Resources/Newtonsoft.Json.dll
Normal file
BIN
Source/GrasscutterTools/Resources/Newtonsoft.Json.dll
Normal file
Binary file not shown.
@@ -142,3 +142,4 @@
|
||||
15507:yellow
|
||||
15508:yellow
|
||||
15509:yellow
|
||||
15511:yellow
|
||||
@@ -1,4 +1,44 @@
|
||||
51110: Goblet of the Sojourner
|
||||
20412:Lamp of the Lost
|
||||
20413:Lamp of the Lost
|
||||
20422:Scholar of Vines
|
||||
20423:Scholar of Vines
|
||||
20432:Laurel Coronet
|
||||
20433:Laurel Coronet
|
||||
20442:Labyrinth Wayfarer
|
||||
20443:Labyrinth Wayfarer
|
||||
20452:A Time of Insight
|
||||
20453:A Time of Insight
|
||||
20513:Lamp of the Lost
|
||||
20514:Lamp of the Lost
|
||||
20523:Scholar of Vines
|
||||
20524:Scholar of Vines
|
||||
20533:Laurel Coronet
|
||||
20534:Laurel Coronet
|
||||
20543:Labyrinth Wayfarer
|
||||
20544:Labyrinth Wayfarer
|
||||
20553:A Time of Insight
|
||||
20554:A Time of Insight
|
||||
21412:Honeyed Final Feast
|
||||
21413:Honeyed Final Feast
|
||||
21422:Feather of Judgment
|
||||
21423:Feather of Judgment
|
||||
21432:Shadow of the Sand King
|
||||
21433:Shadow of the Sand King
|
||||
21442:Dreaming Steelbloom
|
||||
21443:Dreaming Steelbloom
|
||||
21452:The Sunken Years
|
||||
21453:The Sunken Years
|
||||
21513:Honeyed Final Feast
|
||||
21514:Honeyed Final Feast
|
||||
21523:Feather of Judgment
|
||||
21524:Feather of Judgment
|
||||
21533:Shadow of the Sand King
|
||||
21534:Shadow of the Sand King
|
||||
21543:Dreaming Steelbloom
|
||||
21544:Dreaming Steelbloom
|
||||
21553:The Sunken Years
|
||||
21554:The Sunken Years
|
||||
51110:Goblet of the Sojourner
|
||||
51111:Goblet of the Sojourner
|
||||
51112:Goblet of the Sojourner
|
||||
51113:Goblet of the Sojourner
|
||||
|
||||
@@ -1,4 +1,6 @@
|
||||
51: Resolution of Sojourner
|
||||
20:Deepwood Memories
|
||||
21:Gilded Dreams
|
||||
51:Resolution of Sojourner
|
||||
52:Brave Heart
|
||||
53:Defender's Will
|
||||
54:Tiny Miracle
|
||||
|
||||
@@ -50,3 +50,6 @@
|
||||
1064:Yun Jin
|
||||
1065:Kuki Shinobu
|
||||
1066:Kamisato Ayato
|
||||
1067:Collei
|
||||
1068:Dori
|
||||
1069:Tighnari
|
||||
@@ -8,6 +8,8 @@ Level up to 60
|
||||
/give 102 x1880200
|
||||
Set World Level
|
||||
/prop wl 8
|
||||
Unlock Map
|
||||
/prop unlockmap 1
|
||||
Unlock The Tower
|
||||
/prop ut 12
|
||||
Set BattlePass Level
|
||||
|
||||
@@ -34,3 +34,6 @@
|
||||
071:Everbloom Violet
|
||||
076:Azure Excursion
|
||||
081:Discerner of Enigmas
|
||||
091:Tighnari banner (Non original name)
|
||||
092:Zhongli banner (Non original name)
|
||||
093:Hunter's Path banner (Non original name)
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -149,3 +149,4 @@
|
||||
15507:Polar Star
|
||||
15508:Aqua Simulacra
|
||||
15509:Thundering Pulse
|
||||
15511:Hunter's Path
|
||||
@@ -1,3 +1,43 @@
|
||||
20412:Лампа заблудших
|
||||
20413:Лампа заблудших
|
||||
20422:Мудрец лозы
|
||||
20423:Мудрец лозы
|
||||
20432:Лавровый венец
|
||||
20433:Лавровый венец
|
||||
20442:Странник лабиринта
|
||||
20443:Странник лабиринта
|
||||
20452:Час осмысления
|
||||
20453:Час осмысления
|
||||
20513:Лампа заблудших
|
||||
20514:Лампа заблудших
|
||||
20523:Мудрец лозы
|
||||
20524:Мудрец лозы
|
||||
20533:Лавровый венец
|
||||
20534:Лавровый венец
|
||||
20543:Странник лабиринта
|
||||
20544:Странник лабиринта
|
||||
20553:Час осмысления
|
||||
20554:Час осмысления
|
||||
21412:Последний медовый пир
|
||||
21413:Последний медовый пир
|
||||
21422:Перо суждения
|
||||
21423:Перо суждения
|
||||
21432:Тень Короля песков
|
||||
21433:Тень Короля песков
|
||||
21442:Сон железного цветка
|
||||
21443:Сон железного цветка
|
||||
21452:Золотые годы
|
||||
21453:Золотые годы
|
||||
21513:Последний медовый пир
|
||||
21514:Последний медовый пир
|
||||
21523:Перо суждения
|
||||
21524:Перо суждения
|
||||
21533:Тень Короля песков
|
||||
21534:Тень Короля песков
|
||||
21543:Сон железного цветка
|
||||
21544:Сон железного цветка
|
||||
21553:Золотые годы
|
||||
21554:Золотые годы
|
||||
51110:Кубок временщика
|
||||
51111:Кубок временщика
|
||||
51112:Кубок временщика
|
||||
|
||||
@@ -1,4 +1,6 @@
|
||||
51 Решимость временщика
|
||||
20:Deepwood Memories
|
||||
21:Gilded Dreams
|
||||
51:Решимость временщика
|
||||
52:Душа храбреца
|
||||
53:Воля защитника
|
||||
54:Маленькое чудо
|
||||
|
||||
@@ -50,3 +50,6 @@
|
||||
1064:Юнь Цзинь
|
||||
1065:Куки Синобу
|
||||
1066:Камисато Аято
|
||||
1067:Коллеи
|
||||
1068:Дори
|
||||
1069:Тигнари
|
||||
@@ -8,6 +8,8 @@
|
||||
/give 102 x1880200
|
||||
Уровень мира
|
||||
/prop wl 8
|
||||
Разгадка карту
|
||||
/prop unlockmap 1
|
||||
Разгадка бездны
|
||||
/prop ut 12
|
||||
Уровень Боевой пропуск
|
||||
|
||||
@@ -34,3 +34,6 @@
|
||||
071:Вечноцветущий пурпур
|
||||
076:Лазурный поход
|
||||
081:Белая радуга
|
||||
091:Tighnari banner (Non original name)
|
||||
092:Zhongli banner (Non original name)
|
||||
093:Hunter's Path banner (Non original name)
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -149,3 +149,4 @@
|
||||
15507:Полярная звезда
|
||||
15508:Аква симулякрум
|
||||
15509:Громовой пульс
|
||||
15511:Охотничья тропа
|
||||
@@ -227,3 +227,22 @@
|
||||
28250104:尘歌壶:雷晶蝶
|
||||
28250105:尘歌壶:珊瑚蝶
|
||||
28250301:尘歌壶:吉光虫
|
||||
28020313:大蕈猪?
|
||||
28030313:暝彩鸟
|
||||
28020314:蕈猪
|
||||
28060101:棘冠鳄
|
||||
28060201:长鬓虎
|
||||
28060601:牦牦驮兽
|
||||
28040801:真果角鲀
|
||||
28040802:沉波蜜桃
|
||||
28040803:吹沙角鲀
|
||||
28040804:暮云角鲀
|
||||
28040901:青金斧枪鱼
|
||||
28040902:翡玉斧枪鱼
|
||||
28050106:草晶蝶
|
||||
28010304:丛林树蛙
|
||||
28010208:赤尾蜥
|
||||
31010101:友军 打手丘丘人
|
||||
31020101:友军 木盾丘丘暴徒
|
||||
31020201:友军 火斧丘丘暴徒
|
||||
35210101:友军 娜菈
|
||||
@@ -1,4 +1,44 @@
|
||||
51110: 异国之盏
|
||||
20412:迷误者之灯
|
||||
20413:迷误者之灯
|
||||
20422:翠蔓的智者
|
||||
20423:翠蔓的智者
|
||||
20432:月桂的宝冠
|
||||
20433:月桂的宝冠
|
||||
20442:迷宫的游人
|
||||
20443:迷宫的游人
|
||||
20452:贤智的定期
|
||||
20453:贤智的定期
|
||||
20513:迷误者之灯
|
||||
20514:迷误者之灯
|
||||
20523:翠蔓的智者
|
||||
20524:翠蔓的智者
|
||||
20533:月桂的宝冠
|
||||
20534:月桂的宝冠
|
||||
20543:迷宫的游人
|
||||
20544:迷宫的游人
|
||||
20553:贤智的定期
|
||||
20554:贤智的定期
|
||||
21412:如蜜的终宴
|
||||
21413:如蜜的终宴
|
||||
21422:裁断的翎羽
|
||||
21423:裁断的翎羽
|
||||
21432:沙王的投影
|
||||
21433:沙王的投影
|
||||
21442:梦中的铁花
|
||||
21443:梦中的铁花
|
||||
21452:沉金的岁月
|
||||
21453:沉金的岁月
|
||||
21513:如蜜的终宴
|
||||
21514:如蜜的终宴
|
||||
21523:裁断的翎羽
|
||||
21524:裁断的翎羽
|
||||
21533:沙王的投影
|
||||
21534:沙王的投影
|
||||
21543:梦中的铁花
|
||||
21544:梦中的铁花
|
||||
21553:沉金的岁月
|
||||
21554:沉金的岁月
|
||||
51110:异国之盏
|
||||
51111:异国之盏
|
||||
51112:异国之盏
|
||||
51113:异国之盏
|
||||
|
||||
@@ -1,4 +1,6 @@
|
||||
51: 行者之心
|
||||
20:深林的记忆
|
||||
21:饰金之梦
|
||||
51:行者之心
|
||||
52:勇士之心
|
||||
53:守护之心
|
||||
54:奇迹
|
||||
|
||||
@@ -50,3 +50,6 @@
|
||||
1064:云堇
|
||||
1065:久岐忍
|
||||
1066:神里绫人
|
||||
1067:柯莱
|
||||
1068:多莉
|
||||
1069:提纳里
|
||||
@@ -8,6 +8,8 @@
|
||||
/give 102 x1880200
|
||||
设置世界等级
|
||||
/prop wl 8
|
||||
点亮地图
|
||||
/prop unlockmap 1
|
||||
一键解锁深渊
|
||||
/prop ut 12
|
||||
设置纪行等级
|
||||
|
||||
@@ -34,3 +34,6 @@
|
||||
071:华紫樱绯
|
||||
076:苍流踏花
|
||||
081:素霓伣天
|
||||
091:提纳里池(非原名)
|
||||
092:钟离池(非原名)
|
||||
093:猎人之径池(非原名)
|
||||
File diff suppressed because it is too large
Load Diff
@@ -338,3 +338,25 @@
|
||||
29060201:祸津御建鸣神命
|
||||
29060202:祸津御建鸣神命
|
||||
29060203:祸津御建鸣神命
|
||||
20060701:草飘浮灵
|
||||
24030201:遗迹龙兽·地巡
|
||||
24030101:遗迹龙兽·空巡
|
||||
25210101:镀金旅团·阵前斧手
|
||||
25210201:镀金旅团·机弩兵
|
||||
25210301:镀金旅团·鸦喙戟手
|
||||
25210401:镀金旅团·破阵者
|
||||
25210501:镀金旅团·刀舞者
|
||||
25310101:镀金旅团·沙中净水
|
||||
25310201:镀金旅团·炽阳凝冰
|
||||
25310301:镀金旅团·白日鸣雷
|
||||
26020301:掣电树
|
||||
26090201:浮游草蕈兽
|
||||
26090201:旋转雷蕈兽
|
||||
26090401:旋转冰蕈兽
|
||||
26090501:伸缩火蕈兽
|
||||
26090701:伸缩风蕈兽
|
||||
26090801:伸缩岩蕈兽
|
||||
26090901:陆行水本真蕈
|
||||
26120101:有翼草本真蕈
|
||||
26120201:有翼冰本真蕈
|
||||
26110101:翠翎恐蕈
|
||||
File diff suppressed because it is too large
Load Diff
@@ -149,3 +149,4 @@
|
||||
15507:冬极白星
|
||||
15508:若水
|
||||
15509:飞雷之弦振
|
||||
15511:猎人之径
|
||||
@@ -227,3 +227,22 @@
|
||||
28250104: 塵歌壺:雷晶蝶
|
||||
28250105: 塵歌壺:珊瑚蝶
|
||||
28250301: 塵歌壺:吉光蟲
|
||||
28020313: 大蕈猪?
|
||||
28030313: 暝彩鸟
|
||||
28020314: 蕈猪
|
||||
28060101: 棘冠鳄
|
||||
28060201: 长鬓虎
|
||||
28060601: 牦牦驮兽
|
||||
28040801: 真果角鲀
|
||||
28040802: 沉波蜜桃
|
||||
28040803: 吹沙角鲀
|
||||
28040804: 暮云角鲀
|
||||
28040901: 青金斧枪鱼
|
||||
28040902: 翡玉斧枪鱼
|
||||
28050106: 草晶蝶
|
||||
28010304: 丛林树蛙
|
||||
28010208: 赤尾蜥
|
||||
31010101: 友军 打手丘丘人
|
||||
31020101: 友军 木盾丘丘暴徒
|
||||
31020201: 友军 火斧丘丘暴徒
|
||||
35210101: 友军 娜菈
|
||||
@@ -1,3 +1,43 @@
|
||||
20412:迷誤者之燈
|
||||
20413:迷誤者之燈
|
||||
20422:翠蔓的智者
|
||||
20423:翠蔓的智者
|
||||
20432:月桂的寶冠
|
||||
20433:月桂的寶冠
|
||||
20442:迷宮的遊人
|
||||
20443:迷宮的遊人
|
||||
20452:賢智的定期
|
||||
20453:賢智的定期
|
||||
20513:迷誤者之燈
|
||||
20514:迷誤者之燈
|
||||
20523:翠蔓的智者
|
||||
20524:翠蔓的智者
|
||||
20533:月桂的寶冠
|
||||
20534:月桂的寶冠
|
||||
20543:迷宮的遊人
|
||||
20544:迷宮的遊人
|
||||
20553:賢智的定期
|
||||
20554:賢智的定期
|
||||
21412:如蜜的終宴
|
||||
21413:如蜜的終宴
|
||||
21422:裁斷的翎羽
|
||||
21423:裁斷的翎羽
|
||||
21432:沙王的投影
|
||||
21433:沙王的投影
|
||||
21442:夢中的鐵花
|
||||
21443:夢中的鐵花
|
||||
21452:沉金的歲月
|
||||
21453:沉金的歲月
|
||||
21513:如蜜的終宴
|
||||
21514:如蜜的終宴
|
||||
21523:裁斷的翎羽
|
||||
21524:裁斷的翎羽
|
||||
21533:沙王的投影
|
||||
21534:沙王的投影
|
||||
21543:夢中的鐵花
|
||||
21544:夢中的鐵花
|
||||
21553:沉金的歲月
|
||||
21554:沉金的歲月
|
||||
51110:異國之盞
|
||||
51111:異國之盞
|
||||
51112:異國之盞
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
20:深林的記憶
|
||||
21:飾金之夢
|
||||
51:行者之心
|
||||
52:勇士之心
|
||||
53:守護之心
|
||||
|
||||
@@ -50,3 +50,6 @@
|
||||
1064:雲堇
|
||||
1065:久岐忍
|
||||
1066:神里綾人
|
||||
1067:柯萊
|
||||
1068:多莉
|
||||
1069:提納里
|
||||
@@ -8,6 +8,8 @@
|
||||
/give 102 x1880200
|
||||
設置世界等級
|
||||
/prop wl 8
|
||||
點亮地圖
|
||||
/prop unlockmap 1
|
||||
一鍵解鎖深淵
|
||||
/prop ut 12
|
||||
設置紀行等級
|
||||
|
||||
@@ -34,3 +34,6 @@
|
||||
071:華紫櫻緋
|
||||
076:蒼流踏花
|
||||
081:素霓俔天
|
||||
091:提納里池(非原名)
|
||||
092:钟离池(非原名)
|
||||
093:獵人之徑池(非原名)
|
||||
File diff suppressed because it is too large
Load Diff
@@ -338,3 +338,25 @@
|
||||
29060201:禍津御建鳴神命
|
||||
29060202:禍津御建鳴神命
|
||||
29060203:禍津御建鳴神命
|
||||
20060701:草飄浮靈
|
||||
24030201:遺跡龍獸·地巡
|
||||
24030101:遺跡龍獸·空巡
|
||||
25210101:鍍金旅團·陣前斧手
|
||||
25210201:鍍金旅團·機弩兵
|
||||
25210301:鍍金旅團·鴉喙戟手
|
||||
25210401:鍍金旅團·破陣者
|
||||
25210501:鍍金旅團·刀舞者
|
||||
25310101:鍍金旅團·沙中淨水
|
||||
25310201:鍍金旅團·熾陽凝冰
|
||||
25310301:鍍金旅團·白日鳴雷
|
||||
26020301:掣電樹
|
||||
26090201:浮游草蕈獸
|
||||
26090201:旋轉雷蕈獸
|
||||
26090401:旋轉冰蕈獸
|
||||
26090501:伸縮火蕈獸
|
||||
26090701:伸縮風蕈獸
|
||||
26090801:伸縮岩蕈獸
|
||||
26090901:陸行水本真蕈
|
||||
26120101:有翼草本真蕈
|
||||
26120201:有翼冰本真蕈
|
||||
26110101:翠翎恐蕈
|
||||
File diff suppressed because it is too large
Load Diff
@@ -149,3 +149,4 @@
|
||||
15507:冬極白星
|
||||
15508:若水
|
||||
15509:飛雷之弦振
|
||||
15511:獵人之徑
|
||||
222
Source/GrasscutterTools/Utils/ArtifactUtils.cs
Normal file
222
Source/GrasscutterTools/Utils/ArtifactUtils.cs
Normal file
@@ -0,0 +1,222 @@
|
||||
/**
|
||||
* 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.Linq;
|
||||
|
||||
namespace GrasscutterTools.Utils
|
||||
{
|
||||
class SubstatSumEquality : IEqualityComparer<List<KeyValuePair<int, double>>>
|
||||
{
|
||||
public bool Equals(List<KeyValuePair<int, double>> left, List<KeyValuePair<int, double>> right)
|
||||
{
|
||||
if (sum_substat(left) == sum_substat(right))
|
||||
return true;
|
||||
else
|
||||
return false;
|
||||
}
|
||||
|
||||
public int GetHashCode(List<KeyValuePair<int, double>> dict)
|
||||
{
|
||||
return sum_substat(dict).GetHashCode();
|
||||
}
|
||||
|
||||
public static double sum_substat(List<KeyValuePair<int, double>> dict)
|
||||
{
|
||||
double sum = 0;
|
||||
foreach (KeyValuePair<int, double> kvp in dict)
|
||||
{
|
||||
sum += kvp.Value;
|
||||
}
|
||||
return sum;
|
||||
}
|
||||
}
|
||||
|
||||
class ArtifactUtils
|
||||
{
|
||||
public static Dictionary<string, double[][]> substats_rolls = new Dictionary<string, double[][]>
|
||||
{
|
||||
{
|
||||
"hp",
|
||||
new double[][] {
|
||||
new double[] {23.9, 29.88},
|
||||
new double[] {50.19, 60.95, 71.7},
|
||||
new double[] {100.38, 114.72, 129.06, 143.4},
|
||||
new double[] {167.3, 191.2, 215.1, 239},
|
||||
new double[] {209.13, 239, 268.88, 298.75}
|
||||
}
|
||||
},
|
||||
{
|
||||
"hp_",
|
||||
new double[][] {
|
||||
new double[] {1.17, 1.46},
|
||||
new double[] {1.63, 1.98, 2.33},
|
||||
new double[] {2.45, 2.8, 3.15, 3.5},
|
||||
new double[] {3.26, 3.73, 4.2, 4.66},
|
||||
new double[] {4.08, 4.66, 5.25, 5.83}
|
||||
}
|
||||
},
|
||||
{
|
||||
"atk",
|
||||
new double[][] {
|
||||
new double[] {1.56, 1.95},
|
||||
new double[] {3.27, 3.97, 4.67},
|
||||
new double[] {6.54, 7.47, 8.4, 9.34},
|
||||
new double[] {10.89, 12.45, 14, 15.56},
|
||||
new double[] {13.62, 15.56, 17.51, 19.45 }
|
||||
}
|
||||
},
|
||||
{
|
||||
"atk_",
|
||||
new double[][] {
|
||||
new double[] {1.17, 1.46},
|
||||
new double[] {1.63, 1.98, 2.33},
|
||||
new double[] {2.45, 2.8, 3.15, 3.5},
|
||||
new double[] {3.26, 3.73, 4.2, 4.66},
|
||||
new double[] {4.08, 4.66, 5.25, 5.83}
|
||||
}
|
||||
},
|
||||
{
|
||||
"def",
|
||||
new double[][] {
|
||||
new double[] {1.85, 2.31},
|
||||
new double[] {3.89, 4.72, 5.56},
|
||||
new double[] {10, 11.11, 7.78, 8.89},
|
||||
new double[] {12.96, 14.82, 16.67, 18.52},
|
||||
new double[] {16.2, 18.52, 20.83, 23.15}
|
||||
}
|
||||
},
|
||||
{
|
||||
"def_",
|
||||
new double[][] {
|
||||
new double[] {1.46, 1.82},
|
||||
new double[] {2.04, 2.48, 2.91},
|
||||
new double[] {3.06, 3.5, 3.93, 4.37},
|
||||
new double[] {4.08, 4.66, 5.25, 5.83},
|
||||
new double[] {5.1, 5.83, 6.56, 7.29}
|
||||
}
|
||||
},
|
||||
{
|
||||
"critRate_",
|
||||
new double[][] {
|
||||
new double[] {.78, .97},
|
||||
new double[] {1.09, 1.32, 1.55},
|
||||
new double[] {1.63, 1.86, 2.1, 2.33},
|
||||
new double[] {2.18, 2.49, 2.8, 3.11},
|
||||
new double[] {2.72, 3.11, 3.5, 3.89}
|
||||
}
|
||||
},
|
||||
{
|
||||
"critDMG_",
|
||||
new double[][] {
|
||||
new double[] {1.55, 1.94},
|
||||
new double[] {2.18, 2.64, 3.11},
|
||||
new double[] {3.26, 3.73, 4.2, 4.66},
|
||||
new double[] {4.35, 4.97, 5.6, 6.22},
|
||||
new double[] {5.44, 6.22, 6.99, 7.77}
|
||||
}
|
||||
},
|
||||
{
|
||||
"eleMas",
|
||||
new double[][] {
|
||||
new double[] {4.66, 5.83},
|
||||
new double[] {6.53, 7.93, 9.33},
|
||||
new double[] {11.19, 12.59, 13.99, 9.79},
|
||||
new double[] {13.06, 14.92, 16.79, 18.65},
|
||||
new double[] {16.32, 18.65, 20.98, 23.31}
|
||||
}
|
||||
},
|
||||
{
|
||||
"enerRech_",
|
||||
new double[][] {
|
||||
new double[] {1.3, 1.62},
|
||||
new double[] {1.81, 2.2, 2.59},
|
||||
new double[] {2.72, 3.11, 3.5, 3.89},
|
||||
new double[] {3.63, 4.14, 4.66, 5.18},
|
||||
new double[] {4.53, 5.18, 5.83, 6.48}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
// ArtifactSub -> Rarity -> Stat value -> Stat index list
|
||||
public static Dictionary<string, Dictionary<int, List<KeyValuePair<double, int[]>>>> substats_dict;
|
||||
|
||||
public static int[] SplitSubstats(string type, int rarity, double value)
|
||||
{
|
||||
if (!substats_initiated)
|
||||
{
|
||||
InitSubstats();
|
||||
substats_initiated = true;
|
||||
}
|
||||
double last_stat_diff = 99999;
|
||||
int[] last_stat_list = { 4, 4, 4, 4, 4, 4 };
|
||||
foreach (KeyValuePair<double, int[]> value_to_list in substats_dict[type][rarity])
|
||||
{
|
||||
if (Math.Abs(value - value_to_list.Key) >= last_stat_diff)
|
||||
{
|
||||
return last_stat_list;
|
||||
}
|
||||
last_stat_diff = value - value_to_list.Key;
|
||||
last_stat_list = value_to_list.Value;
|
||||
}
|
||||
|
||||
// Default, should never happen
|
||||
return last_stat_list;
|
||||
}
|
||||
private static void InitSubstats()
|
||||
{
|
||||
substats_dict = new Dictionary<string, Dictionary<int, List<KeyValuePair<double, int[]>>>>();
|
||||
foreach (KeyValuePair<string, double[][]> stat_block_info in substats_rolls)
|
||||
{
|
||||
string stat_name = stat_block_info.Key;
|
||||
substats_dict[stat_name] = new Dictionary<int, List<KeyValuePair<double, int[]>>>();
|
||||
for (int rarity_index = 0; rarity_index < stat_block_info.Value.Length; rarity_index++)
|
||||
{
|
||||
var substat_options = new List<KeyValuePair<int, double>>();
|
||||
// Substat index == 0 means no substat upgrade
|
||||
substat_options.Add(new KeyValuePair<int, double>(0, 0));
|
||||
for (int substat_index = 0; substat_index < substats_rolls[stat_name][rarity_index].Length; substat_index++)
|
||||
{
|
||||
substat_options.Add(new KeyValuePair<int, double>(substat_index+1, substats_rolls[stat_name][rarity_index][substat_index]));
|
||||
}
|
||||
|
||||
var substat_sum_data = (from s1 in substat_options from s2 in substat_options from s3 in substat_options from s4 in substat_options from s5 in substat_options from s6 in substat_options select new { s1, s2, s3, s4, s5, s6 })
|
||||
.Select(x => new List<KeyValuePair<int, double>> { x.s1, x.s2, x.s3, x.s4, x.s5, x.s6 })
|
||||
.Distinct(new SubstatSumEquality());
|
||||
|
||||
var stats_map = new List<KeyValuePair<double, int[]>>();
|
||||
foreach (List<KeyValuePair<int, double>> val in substat_sum_data.ToArray().OrderBy(list => SubstatSumEquality.sum_substat(list)))
|
||||
{
|
||||
var index_list = new List<int>();
|
||||
foreach (KeyValuePair<int, double> pair in val)
|
||||
{
|
||||
if (pair.Key != 0)
|
||||
index_list.Add(pair.Key);
|
||||
}
|
||||
stats_map.Add(new KeyValuePair<double, int[]>(SubstatSumEquality.sum_substat(val), index_list.ToArray()));
|
||||
}
|
||||
|
||||
substats_dict[stat_name][rarity_index + 1] = stats_map;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private static bool substats_initiated = false;
|
||||
}
|
||||
}
|
||||
@@ -2,11 +2,11 @@
|
||||
using System.Net.Http.Headers;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
using GrasscutterTools.Utils;
|
||||
using Newtonsoft.Json;
|
||||
|
||||
namespace GrasscutterTools.Github
|
||||
namespace GrasscutterTools.Utils
|
||||
{
|
||||
public static class ReleaseAPI
|
||||
internal class ReleaseAPI
|
||||
{
|
||||
public static async Task<ReleaseInfo> GetReleasesLastest(string username, string repo)
|
||||
{
|
||||
@@ -14,15 +14,14 @@ namespace GrasscutterTools.Github
|
||||
try
|
||||
{
|
||||
HttpHelper.HttpClient.DefaultRequestHeaders.UserAgent.Add(headerValue);
|
||||
var r = await HttpHelper.GetAsync<dynamic>($"https://api.github.com/repos/{username}/{repo}/releases/latest");
|
||||
return new ReleaseInfo
|
||||
return await HttpHelper.GetAsync<ReleaseInfo>($"https://api.github.com/repos/{username}/{repo}/releases/latest");
|
||||
}
|
||||
catch
|
||||
{
|
||||
TagName = r.tag_name,
|
||||
Url = r.html_url,
|
||||
CraeteTime = r.created_at,
|
||||
Name = r.name,
|
||||
Body = r.body
|
||||
};
|
||||
// 如果Github无法访问,尝试从Gitee获取
|
||||
var release = await HttpHelper.GetAsync<ReleaseInfo>($"https://gitee.com/api/v5/repos/{username}/{repo}/releases/latest");
|
||||
release.Url = $"https://gitee.com/{username}/{repo}/releases";
|
||||
return release;
|
||||
}
|
||||
finally
|
||||
{
|
||||
@@ -32,14 +31,19 @@ namespace GrasscutterTools.Github
|
||||
|
||||
public class ReleaseInfo
|
||||
{
|
||||
[JsonProperty("tag_name")]
|
||||
public string TagName { get; set; }
|
||||
|
||||
[JsonProperty("html_url")]
|
||||
public string Url { get; set; }
|
||||
|
||||
[JsonProperty("created_at")]
|
||||
public DateTimeOffset CraeteTime { get; set; }
|
||||
|
||||
[JsonProperty("name")]
|
||||
public string Name { get; set; }
|
||||
|
||||
[JsonProperty("body")]
|
||||
public string Body { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -1,53 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<packages>
|
||||
<package id="Costura.Fody" version="5.7.0" targetFramework="net48" developmentDependency="true" />
|
||||
<package id="Fody" version="6.6.1" targetFramework="net48" developmentDependency="true" />
|
||||
<package id="Microsoft.NETCore.Platforms" version="1.1.0" targetFramework="net48" />
|
||||
<package id="Microsoft.Win32.Primitives" version="4.3.0" targetFramework="net48" />
|
||||
<package id="NETStandard.Library" version="2.0.3" targetFramework="net48" />
|
||||
<package id="Newtonsoft.Json" version="13.0.1" targetFramework="net452" />
|
||||
<package id="Resource.Embedder" version="2.2.0" targetFramework="net48" />
|
||||
<package id="System.AppContext" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Collections" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Collections.Concurrent" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Console" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Diagnostics.Debug" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Diagnostics.DiagnosticSource" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Diagnostics.Tools" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Diagnostics.Tracing" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Globalization" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Globalization.Calendars" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.IO" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.IO.Compression" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.IO.Compression.ZipFile" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.IO.FileSystem" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.IO.FileSystem.Primitives" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Linq" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Linq.Expressions" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Net.Http" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Net.Primitives" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Net.Sockets" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.ObjectModel" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Reflection" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Reflection.Extensions" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Reflection.Primitives" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Resources.ResourceManager" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Runtime" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Runtime.Extensions" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Runtime.Handles" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Runtime.InteropServices" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Runtime.InteropServices.RuntimeInformation" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Runtime.Numerics" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Security.Cryptography.Algorithms" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Security.Cryptography.Encoding" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Security.Cryptography.Primitives" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Security.Cryptography.X509Certificates" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Text.Encoding" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Text.Encoding.Extensions" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Text.RegularExpressions" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Threading" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Threading.Tasks" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Threading.Timer" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Xml.ReaderWriter" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Xml.XDocument" version="4.3.0" targetFramework="net48" />
|
||||
</packages>
|
||||
Reference in New Issue
Block a user