From fb9053d7d006cba9aee9c1e675ccbf77a3f3c116 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A7=8B=E6=B0=B4?= <1123993881@qq.com> Date: Fri, 5 May 2023 19:47:13 +0800 Subject: [PATCH] fix: fixed some bugs. --- FakeName.sln | 14 +++++------- FakeName/FakeName.csproj | 2 +- FakeName/Plugin.cs | 6 +++--- FakeName/Replacer.cs | 46 ++++++++++++++++++---------------------- 4 files changed, 30 insertions(+), 38 deletions(-) diff --git a/FakeName.sln b/FakeName.sln index 949bb89..ec665b8 100644 --- a/FakeName.sln +++ b/FakeName.sln @@ -1,9 +1,9 @@  Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 16 -VisualStudioVersion = 16.0.29709.97 +# Visual Studio Version 17 +VisualStudioVersion = 17.5.33516.290 MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FakeName", "FakeName\FakeName.csproj", "{13C812E9-0D42-4B95-8646-40EEBF30636F}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "FakeName", "FakeName\FakeName.csproj", "{13C812E9-0D42-4B95-8646-40EEBF30636F}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -11,14 +11,10 @@ Global Release|x64 = Release|x64 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution - {13C812E9-0D42-4B95-8646-40EEBF30636F}.Debug|x64.ActiveCfg = Debug|x64 - {13C812E9-0D42-4B95-8646-40EEBF30636F}.Debug|x64.Build.0 = Debug|x64 + {13C812E9-0D42-4B95-8646-40EEBF30636F}.Debug|x64.ActiveCfg = Debug|Any CPU + {13C812E9-0D42-4B95-8646-40EEBF30636F}.Debug|x64.Build.0 = Debug|Any CPU {13C812E9-0D42-4B95-8646-40EEBF30636F}.Release|x64.ActiveCfg = Release|x64 {13C812E9-0D42-4B95-8646-40EEBF30636F}.Release|x64.Build.0 = Release|x64 - {4FEC9558-EB25-419F-B86E-51B8CFDA32B7}.Debug|x64.ActiveCfg = Debug|x64 - {4FEC9558-EB25-419F-B86E-51B8CFDA32B7}.Debug|x64.Build.0 = Debug|x64 - {4FEC9558-EB25-419F-B86E-51B8CFDA32B7}.Release|x64.ActiveCfg = Release|x64 - {4FEC9558-EB25-419F-B86E-51B8CFDA32B7}.Release|x64.Build.0 = Release|x64 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/FakeName/FakeName.csproj b/FakeName/FakeName.csproj index a5f62f1..cd06834 100644 --- a/FakeName/FakeName.csproj +++ b/FakeName/FakeName.csproj @@ -4,7 +4,7 @@ 1.0.0.5 net7.0-windows - x64 + x64 true diff --git a/FakeName/Plugin.cs b/FakeName/Plugin.cs index d218881..c398872 100644 --- a/FakeName/Plugin.cs +++ b/FakeName/Plugin.cs @@ -8,7 +8,7 @@ public class Plugin : IDalamudPlugin { public string Name => "FakeName"; - internal Hooker AtkTextNodeSetText { get; } + internal Hooker Hooker { get; } internal WindowManager WindowManager { get; } @@ -19,7 +19,7 @@ public Plugin(DalamudPluginInterface pluginInterface, CommandManager commandMana WindowManager = new WindowManager(); - AtkTextNodeSetText = new Hooker(); + Hooker = new Hooker(); Service.CommandManager.AddHandler("/fakename", new CommandInfo(OnCommand) { @@ -31,7 +31,7 @@ public void Dispose() { Service.CommandManager.RemoveHandler("/fakename"); - AtkTextNodeSetText.Dispose(); + Hooker.Dispose(); WindowManager.Dispose(); } diff --git a/FakeName/Replacer.cs b/FakeName/Replacer.cs index 6085548..3db9901 100644 --- a/FakeName/Replacer.cs +++ b/FakeName/Replacer.cs @@ -1,6 +1,7 @@ using Dalamud.Game.Libc; using Dalamud.Game.Text.SeStringHandling; using Dalamud.Game.Text.SeStringHandling.Payloads; +using Dalamud.Logging; using System; using System.Linq; using System.Runtime.InteropServices; @@ -11,38 +12,33 @@ internal static class Replacer { public static IntPtr ChangeName(IntPtr seStringPtr) { - var str = SeStringFromPtr(seStringPtr); - if(ChangeSeString(ref str)) + if (seStringPtr == IntPtr.Zero) return seStringPtr; + + try { - FreePtr(seStringPtr); - return SeStringToPtr(str); + var str = SeString.Parse(StdString.ReadFromPointer(seStringPtr).RawData); + if (ChangeSeString(ref str)) + { + var bytes = str.Encode(); + var pointer = Marshal.AllocHGlobal(bytes.Length + 1); + Marshal.Copy(bytes, 0, pointer, bytes.Length); + Marshal.WriteByte(pointer, bytes.Length, 0); + + return pointer; + } + else + { + return seStringPtr; + } } - else + catch (Exception ex) { + PluginLog.Error(ex, "Something wrong with change name!"); return seStringPtr; } - } - - static SeString SeStringFromPtr(IntPtr seStringPtr) - { - return SeString.Parse(StdString.ReadFromPointer(seStringPtr).RawData); - } - - public static IntPtr SeStringToPtr(SeString seString) - { - var bytes = seString.Encode(); - var pointer = Marshal.AllocHGlobal(bytes.Length + 1); - Marshal.Copy(bytes, 0, pointer, bytes.Length); - Marshal.WriteByte(pointer, bytes.Length, 0); - - return pointer; - } - public static void FreePtr(IntPtr seStringPtr) - { - Marshal.FreeHGlobal(seStringPtr); } - + public static bool ChangeSeString(ref SeString seString) { if (!Service.Config.Enabled) return false;