From f1f108b2adea1eb2072ad4f9c9523fe32b70dddf Mon Sep 17 00:00:00 2001 From: Controllerdestiny <523321293@qq.com> Date: Mon, 20 May 2024 16:17:01 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0:=20EconomicsAPI=20=E6=B8=90?= =?UTF-8?q?=E5=8F=98=E8=89=B2=E6=B6=88=E6=81=AF=E6=94=AF=E6=8C=81=20?= =?UTF-8?q?=E7=89=A9=E5=93=81=E6=B6=88=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Economics.RPG/RPG.cs | 2 +- Economics.Skill/Skill.cs | 9 +++++++++ EconomicsAPI/Utils/Helper.cs | 19 +++++++++++++++++-- 3 files changed, 27 insertions(+), 3 deletions(-) diff --git a/Economics.RPG/RPG.cs b/Economics.RPG/RPG.cs index 00c786d0..be1361ca 100644 --- a/Economics.RPG/RPG.cs +++ b/Economics.RPG/RPG.cs @@ -32,7 +32,7 @@ public RPG(Main game) : base(game) public override void Initialize() { - Config = ConfigHelper.LoadConfig(PATH); + Config = ConfigHelper.LoadConfig(PATH, Config); Config.Init(); PlayerLevelManager = new(); PlayerHooks.PlayerPermission += PlayerHooks_PlayerPermission; diff --git a/Economics.Skill/Skill.cs b/Economics.Skill/Skill.cs index 3fe5e116..b862c54a 100644 --- a/Economics.Skill/Skill.cs +++ b/Economics.Skill/Skill.cs @@ -45,8 +45,17 @@ public override void Initialize() GetDataHandlers.PlayerMana.Register(OnMP); GetDataHandlers.NewProjectile.Register(OnNewProj); EconomicsAPI.Events.PlayerHandler.OnPlayerKillNpc += OnKillNpc; + EconomicsAPI.Events.PlayerHandler.OnPlayerCountertop += OnPlayerCountertop; GeneralHooks.ReloadEvent += e => LoadConfig(); } + + private void OnPlayerCountertop(PlayerCountertopArgs args) + { + var skill = PlayerSKillManager.QuerySkill(args.Player.Name); + var msg = skill.Any() ? string.Join(",", skill.Select(x => x.Skill == null ? "无效技能" : x.Skill.Name)) : "无"; + args.Messages.Add(new($"绑定技能: {msg}", 12)); + } + private void OnUpdate(EventArgs args) { TimerCount++; diff --git a/EconomicsAPI/Utils/Helper.cs b/EconomicsAPI/Utils/Helper.cs index 6c5c31f9..dd98c3ed 100644 --- a/EconomicsAPI/Utils/Helper.cs +++ b/EconomicsAPI/Utils/Helper.cs @@ -5,6 +5,7 @@ using Rests; using System.Reflection; using System.Text; +using System.Text.RegularExpressions; using TerrariaApi.Server; using TShockAPI; @@ -12,17 +13,29 @@ namespace EconomicsAPI.Utils; public class Helper { - //代码来自于CaiLib + private static readonly Regex Regex = new(@"\[(?[^\]]+):(?\d+)\]"); public static string GetGradientText(string text) { string result = ""; + //匹配物品消息 + var matchs = Regex.Matches(text); + var chat = matchs.Select(x => x.Groups).ToDictionary(x => x[1].Index, x => x); var info = Terraria.UI.Chat.ChatManager.ParseMessage(text, Color.White); var colors = Economics.Setting.GradientColor; + var fullIndex = 1; + var index = 0; foreach (var item in info) { - var index = 0; for(int i = 0; i< item.Text.Length; i++) { + fullIndex++; + if (chat.TryGetValue(fullIndex - 1, out var group) && group != null) + { + result += item.TextOriginal; + fullIndex += item.Text.Length + 1; + break; + } + else if (index >= colors.Count) { result += item.Text[i]; @@ -32,9 +45,11 @@ public static string GetGradientText(string text) { result += Economics.Setting.GradientColor[index].SFormat(item.Text[i]); } + index++; } } + Console.WriteLine(result); return result; } ///