From d4edb67594b5381ce6e555eb3460d0ce83d4e29b Mon Sep 17 00:00:00 2001 From: erik Date: Sun, 1 Jun 2025 13:51:27 +0200 Subject: [PATCH] Initial commit of MosswartMassacreNG --- .gitignore | 15 ++ LICENSE | 9 + MosswartMassacreNG.Loader/LoaderCore.cs | 224 ++++++++++++++++++ .../MosswartMassacreNG.Loader.csproj | 32 +++ MosswartMassacreNG.sln | 31 +++ MosswartMassacreNG/ExampleUI.cs | 82 +++++++ MosswartMassacreNG/MosswartMassacreNG.csproj | 40 ++++ MosswartMassacreNG/PluginCore.cs | 136 +++++++++++ MosswartMassacreNG/scripts/installer.nsi | 212 +++++++++++++++++ MosswartMassacreNG/scripts/post-build.ps1 | 17 ++ README.md | 49 ++++ deps/Decal.Adapter.dll | Bin 0 -> 195584 bytes deps/Decal.Interop.Core.dll | Bin 0 -> 44032 bytes 13 files changed, 847 insertions(+) create mode 100644 .gitignore create mode 100644 LICENSE create mode 100644 MosswartMassacreNG.Loader/LoaderCore.cs create mode 100644 MosswartMassacreNG.Loader/MosswartMassacreNG.Loader.csproj create mode 100644 MosswartMassacreNG.sln create mode 100644 MosswartMassacreNG/ExampleUI.cs create mode 100644 MosswartMassacreNG/MosswartMassacreNG.csproj create mode 100644 MosswartMassacreNG/PluginCore.cs create mode 100644 MosswartMassacreNG/scripts/installer.nsi create mode 100644 MosswartMassacreNG/scripts/post-build.ps1 create mode 100644 README.md create mode 100644 deps/Decal.Adapter.dll create mode 100644 deps/Decal.Interop.Core.dll diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..2176308 --- /dev/null +++ b/.gitignore @@ -0,0 +1,15 @@ +# Visual Studio +.vs/ +*.user +*.suo + +# Build output +bin/ +obj/ + +# NuGet packages +packages/ + +# OS-specific +Thumbs.db +.DS_Store diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..9aa6660 --- /dev/null +++ b/LICENSE @@ -0,0 +1,9 @@ +MIT License + +Copyright (c) 2025 SawatoMosswartsEnjoyersClub + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/MosswartMassacreNG.Loader/LoaderCore.cs b/MosswartMassacreNG.Loader/LoaderCore.cs new file mode 100644 index 0000000..f83bfc1 --- /dev/null +++ b/MosswartMassacreNG.Loader/LoaderCore.cs @@ -0,0 +1,224 @@ +using System; +using System.IO; +using System.Reflection; +using System.Runtime.InteropServices; +using Decal.Adapter; +using Microsoft.Win32; + +namespace MosswartMassacreNG +{ + [FriendlyName("MosswartMassacreNG.Loader")] + public class LoaderCore : FilterBase + { + private Assembly pluginAssembly; + private Type pluginType; + private object pluginInstance; + private FileSystemWatcher pluginWatcher; + private bool isSubscribedToRenderFrame = false; + private bool needsReload; + private int oldCurrentUserValue = -1; + + public static string PluginAssemblyNamespace => typeof(LoaderCore).Namespace.Replace(".Loader", ""); + public static string PluginAssemblyName => $"{PluginAssemblyNamespace}.dll"; + public static string PluginAssemblyGuid => "4b1f02bb-9b95-46f0-ad5b-223fea7392fb"; + + public static bool IsPluginLoaded { get; private set; } + + /// + /// Assembly directory (contains both loader and plugin dlls) + /// + public static string AssemblyDirectory => System.IO.Path.GetDirectoryName(Assembly.GetAssembly(typeof(LoaderCore)).Location); + + public DateTime LastDllChange { get; private set; } + + #region Event Handlers + protected override void Startup() + { + try + { + Core.PluginInitComplete += Core_PluginInitComplete; + Core.PluginTermComplete += Core_PluginTermComplete; + Core.FilterInitComplete += Core_FilterInitComplete; + + // watch the AssemblyDirectory for any .dll file changes + pluginWatcher = new FileSystemWatcher(); + pluginWatcher.Path = AssemblyDirectory; + pluginWatcher.NotifyFilter = NotifyFilters.LastWrite; + pluginWatcher.Filter = "*.dll"; + pluginWatcher.Changed += PluginWatcher_Changed; + pluginWatcher.EnableRaisingEvents = true; + } + catch (Exception ex) + { + Log(ex); + } + } + + private void Core_FilterInitComplete(object sender, EventArgs e) + { + Core.EchoFilter.ClientDispatch += EchoFilter_ClientDispatch; + } + + private void EchoFilter_ClientDispatch(object sender, NetworkMessageEventArgs e) + { + try + { + // Login_SendEnterWorldRequest + if (e.Message.Type == 0xF7C8) + { + //EnsurePluginIsDisabledInRegistry(); + } + } + catch (Exception ex) + { + Log(ex); + } + } + + private void Core_PluginInitComplete(object sender, EventArgs e) + { + try + { + LoadPluginAssembly(); + } + catch (Exception ex) + { + Log(ex); + } + } + + private void Core_PluginTermComplete(object sender, EventArgs e) + { + try + { + UnloadPluginAssembly(); + } + catch (Exception ex) + { + Log(ex); + } + } + + protected override void Shutdown() + { + try + { + Core.PluginInitComplete -= Core_PluginInitComplete; + Core.PluginTermComplete -= Core_PluginTermComplete; + Core.FilterInitComplete -= Core_FilterInitComplete; + UnloadPluginAssembly(); + } + catch (Exception ex) + { + Log(ex); + } + } + + private void Core_RenderFrame(object sender, EventArgs e) + { + try + { + if (IsPluginLoaded && needsReload && DateTime.UtcNow - LastDllChange > TimeSpan.FromSeconds(1)) + { + needsReload = false; + Core.RenderFrame -= Core_RenderFrame; + isSubscribedToRenderFrame = false; + LoadPluginAssembly(); + } + } + catch (Exception ex) + { + Log(ex); + } + } + + private void PluginWatcher_Changed(object sender, FileSystemEventArgs e) + { + try + { + LastDllChange = DateTime.UtcNow; + needsReload = true; + + if (!isSubscribedToRenderFrame) + { + isSubscribedToRenderFrame = true; + Core.RenderFrame += Core_RenderFrame; + } + } + catch (Exception ex) + { + Log(ex); + } + } + #endregion + + #region Plugin Loading/Unloading + internal void LoadPluginAssembly() + { + try + { + if (IsPluginLoaded) + { + UnloadPluginAssembly(); + try + { + CoreManager.Current.Actions.AddChatText($"Reloading {PluginAssemblyName}", 1); + } + catch { } + } + + pluginAssembly = Assembly.Load(File.ReadAllBytes(System.IO.Path.Combine(AssemblyDirectory, PluginAssemblyName))); + pluginType = pluginAssembly.GetType($"{PluginAssemblyNamespace}.PluginCore"); + pluginInstance = Activator.CreateInstance(pluginType); + + var assemblyDirAttr = pluginType.GetProperty("AssemblyDirectory", BindingFlags.Public | BindingFlags.Static); + assemblyDirAttr?.SetValue(null, AssemblyDirectory); + + var startupMethod = pluginType.GetMethod("Startup", BindingFlags.NonPublic | BindingFlags.Instance); + startupMethod.Invoke(pluginInstance, new object[] { }); + + IsPluginLoaded = true; + } + catch (Exception ex) + { + Log(ex); + } + } + + private void UnloadPluginAssembly() + { + try + { + if (pluginInstance != null && pluginType != null) + { + MethodInfo shutdownMethod = pluginType.GetMethod("Shutdown", BindingFlags.NonPublic | BindingFlags.Instance); + shutdownMethod.Invoke(pluginInstance, null); + pluginInstance = null; + pluginType = null; + pluginAssembly = null; + } + IsPluginLoaded = false; + } + catch (Exception ex) + { + Log(ex); + } + } + #endregion + + private void Log(Exception ex) + { + Log(ex.ToString()); + } + + private void Log(string message) + { + File.AppendAllText(System.IO.Path.Combine(AssemblyDirectory, "log.txt"), $"{message}\n"); + try + { + CoreManager.Current.Actions.AddChatText(message, 1); + } + catch { } + } + } +} diff --git a/MosswartMassacreNG.Loader/MosswartMassacreNG.Loader.csproj b/MosswartMassacreNG.Loader/MosswartMassacreNG.Loader.csproj new file mode 100644 index 0000000..1845709 --- /dev/null +++ b/MosswartMassacreNG.Loader/MosswartMassacreNG.Loader.csproj @@ -0,0 +1,32 @@ + + + + net48 + Library + false + ..\bin\ + x86 + 10 + True + MosswartMassacreNG + MosswartMassacreNG.Loader + + + + + + + .\..\deps\Decal.Adapter.dll + False + + + False + True + .\..\deps\Decal.Interop.Core.dll + + + + + + + \ No newline at end of file diff --git a/MosswartMassacreNG.sln b/MosswartMassacreNG.sln new file mode 100644 index 0000000..f4935b9 --- /dev/null +++ b/MosswartMassacreNG.sln @@ -0,0 +1,31 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.13.35931.197 d17.13 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MosswartMassacreNG.Loader", "MosswartMassacreNG.Loader\MosswartMassacreNG.Loader.csproj", "{6AF1A09E-A17D-4C9B-971F-3A6BAD982B80}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MosswartMassacreNG", "MosswartMassacreNG\MosswartMassacreNG.csproj", "{4B1F02BB-9B95-46F0-AD5B-223FEA7392FB}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {6AF1A09E-A17D-4C9B-971F-3A6BAD982B80}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {6AF1A09E-A17D-4C9B-971F-3A6BAD982B80}.Debug|Any CPU.Build.0 = Debug|Any CPU + {6AF1A09E-A17D-4C9B-971F-3A6BAD982B80}.Release|Any CPU.ActiveCfg = Release|Any CPU + {6AF1A09E-A17D-4C9B-971F-3A6BAD982B80}.Release|Any CPU.Build.0 = Release|Any CPU + {4B1F02BB-9B95-46F0-AD5B-223FEA7392FB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {4B1F02BB-9B95-46F0-AD5B-223FEA7392FB}.Debug|Any CPU.Build.0 = Debug|Any CPU + {4B1F02BB-9B95-46F0-AD5B-223FEA7392FB}.Release|Any CPU.ActiveCfg = Release|Any CPU + {4B1F02BB-9B95-46F0-AD5B-223FEA7392FB}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {56117760-A4A3-48AD-83D8-012B69980C69} + EndGlobalSection +EndGlobal diff --git a/MosswartMassacreNG/ExampleUI.cs b/MosswartMassacreNG/ExampleUI.cs new file mode 100644 index 0000000..5572cd3 --- /dev/null +++ b/MosswartMassacreNG/ExampleUI.cs @@ -0,0 +1,82 @@ +using System; +using System.Numerics; +using Decal.Adapter; +using ImGuiNET; +using UtilityBelt.Service; +using UtilityBelt.Service.Views; + +namespace MosswartMassacreNG +{ + internal class ExampleUI : IDisposable + { + /// + /// The UBService Hud + /// + private readonly Hud hud; + + /// + /// The default value for TestText. + /// + public const string DefaultTestText = "Some Test Text"; + + /// + /// Some test text. This value is used to the text input in our UI. + /// + public string TestText = DefaultTestText.ToString(); + + public ExampleUI() + { + // Create a new UBService Hud + hud = UBService.Huds.CreateHud("MosswartMassacreNG"); + + // set to show our icon in the UBService HudBar + hud.ShowInBar = true; + + // subscribe to the hud render event so we can draw some controls + hud.OnRender += Hud_OnRender; + } + + /// + /// Called every time the ui is redrawing. + /// + private void Hud_OnRender(object sender, EventArgs e) + { + try + { + ImGui.InputTextMultiline("Test Text", ref TestText, 5000, new Vector2(400, 150)); + + if (ImGui.Button("Print Test Text")) + { + OnPrintTestTextButtonPressed(); + } + + ImGui.SameLine(); + + if (ImGui.Button("Reset Test Text")) + { + TestText = DefaultTestText; + } + } + catch (Exception ex) + { + PluginCore.Log(ex); + } + } + + /// + /// Called when our print test text button is pressed + /// + private void OnPrintTestTextButtonPressed() + { + var textToShow = $"Test Text:\n{TestText}"; + + CoreManager.Current.Actions.AddChatText(textToShow, 1); + UBService.Huds.Toaster.Add(textToShow, ToastType.Info); + } + + public void Dispose() + { + hud.Dispose(); + } + } +} \ No newline at end of file diff --git a/MosswartMassacreNG/MosswartMassacreNG.csproj b/MosswartMassacreNG/MosswartMassacreNG.csproj new file mode 100644 index 0000000..87d07f9 --- /dev/null +++ b/MosswartMassacreNG/MosswartMassacreNG.csproj @@ -0,0 +1,40 @@ + + + + net48 + Library + true + ..\bin\ + x86 + 1.0.0 + 12 + True + 4b1f02bb-9b95-46f0-ad5b-223fea7392fb + MosswartMassacreNG + MosswartMassacreNG + + + + + + + + + + .\..\deps\Decal.Adapter.dll + False + + + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + + + runtime; build; + + + + + + diff --git a/MosswartMassacreNG/PluginCore.cs b/MosswartMassacreNG/PluginCore.cs new file mode 100644 index 0000000..aede109 --- /dev/null +++ b/MosswartMassacreNG/PluginCore.cs @@ -0,0 +1,136 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Reflection; +using System.Text; +using Decal.Adapter; + +namespace MosswartMassacreNG +{ + /// + /// This is the main plugin class. When your plugin is loaded, Startup() is called, and when it's unloaded Shutdown() is called. + /// + [FriendlyName("MosswartMassacreNG")] + public class PluginCore : PluginBase + { + private static string _assemblyDirectory = null; + private ExampleUI ui; + + /// + /// Assembly directory containing the plugin dll + /// + public static string AssemblyDirectory + { + get + { + if (_assemblyDirectory == null) + { + try + { + _assemblyDirectory = System.IO.Path.GetDirectoryName(typeof(PluginCore).Assembly.Location); + } + catch + { + _assemblyDirectory = Environment.CurrentDirectory; + } + } + return _assemblyDirectory; + } + set + { + _assemblyDirectory = value; + } + } + + /// + /// Called when your plugin is first loaded. + /// + protected override void Startup() + { + try + { + // subscribe to CharacterFilter_LoginComplete event, make sure to unscribe later. + // note: if the plugin was reloaded while ingame, this event will never trigger on the newly reloaded instance. + CoreManager.Current.CharacterFilter.LoginComplete += CharacterFilter_LoginComplete; + + // this adds text to the chatbox. it's output is local only, other players do not see this. + CoreManager.Current.Actions.AddChatText($"This is my new decal plugin. Startup was called. MosswartMassacreNG", 1); + + ui = new ExampleUI(); + } + catch (Exception ex) + { + Log(ex); + } + } + + protected void FilterSetup(string assemblyDirectory) + { + AssemblyDirectory = assemblyDirectory; + } + + /// + /// CharacterFilter_LoginComplete event handler. + /// + private void CharacterFilter_LoginComplete(object sender, EventArgs e) + { + // it's generally a good idea to use try/catch blocks inside of decal event handlers. + // throwing an uncaught exception inside one will generally hard crash the client. + try + { + CoreManager.Current.Actions.AddChatText($"This is my new decal plugin. CharacterFilter_LoginComplete", 1); + } + catch (Exception ex) + { + Log(ex); + } + } + + /// + /// Called when your plugin is unloaded. Either when logging out, closing the client, or hot reloading. + /// + protected override void Shutdown() + { + try + { + // make sure to unsubscribe from any events we were subscribed to. Not doing so + // can cause the old plugin to stay loaded between hot reloads. + CoreManager.Current.CharacterFilter.LoginComplete -= CharacterFilter_LoginComplete; + + // clean up our ui view + ui.Dispose(); + } + catch (Exception ex) + { + Log(ex); + } + } + + #region logging + /// + /// Log an exception to log.txt in the same directory as the plugin. + /// + /// + internal static void Log(Exception ex) + { + Log(ex.ToString()); + } + + /// + /// Log a string to log.txt in the same directory as the plugin. + /// + /// + internal static void Log(string message) + { + try + { + File.AppendAllText(System.IO.Path.Combine(AssemblyDirectory, "log.txt"), $"{message}\n"); + + CoreManager.Current.Actions.AddChatText(message, 1); + } + catch { } + } + #endregion // logging + } +} diff --git a/MosswartMassacreNG/scripts/installer.nsi b/MosswartMassacreNG/scripts/installer.nsi new file mode 100644 index 0000000..f9fddf3 --- /dev/null +++ b/MosswartMassacreNG/scripts/installer.nsi @@ -0,0 +1,212 @@ +; Define your application name + +!define APPNAME "MosswartMassacreNG" +!define SOFTWARECOMPANY "MosswartMassacreNG" +!define APPGUID "{4b1f02bb-9b95-46f0-ad5b-223fea7392fb}" +!define CLASSNAME "MosswartMassacreNG.PluginCore" +!define ASSEMBLY "MosswartMassacreNG.dll" +InstallDir "C:\Games\DecalPlugins\${APPNAME}" +;Icon "Installer\Res\Decal.ico" + +!define BUILDPATH ".\..\..\bin\net48" + +!getdllversion "${BUILDPATH}\${ASSEMBLY}" Expv_ +!define VERSION ${Expv_1}.${Expv_2}.${Expv_3} + +OutFile "${BUILDPATH}\${APPNAME}Installer-${VERSION}.exe" + +; Main Install settings +; compressor goes first +SetCompressor LZMA + +Name "${APPNAME} ${VERSION}" +InstallDirRegKey HKLM "Software\${SOFTWARECOMPANY}\${APPNAME}" "" +;SetFont "Verdana" 8 + +; Use compression + +; Modern interface settings +!include "MUI.nsh" + +!define MUI_ABORTWARNING + +!insertmacro MUI_PAGE_WELCOME +;!insertmacro MUI_PAGE_COMPONENTS +!insertmacro MUI_PAGE_DIRECTORY +!insertmacro MUI_PAGE_INSTFILES +!insertmacro MUI_PAGE_FINISH + +!insertmacro MUI_UNPAGE_CONFIRM +!insertmacro MUI_UNPAGE_INSTFILES + +; Set languages (first is default language) +!insertmacro MUI_LANGUAGE "English" +!insertmacro MUI_RESERVEFILE_LANGDLL + +; https://nsis.sourceforge.io/Download_and_Install_dotNET_45 +Function CheckAndDownloadDotNet48 + # Set up our Variables + Var /GLOBAL dotNET48IsThere + Var /GLOBAL dotNET_CMD_LINE + Var /GLOBAL EXIT_CODE + + # We are reading a version release DWORD that Microsoft says is the documented + # way to determine if .NET Framework 4.8 is installed + ReadRegDWORD $dotNET48IsThere HKLM "SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full" "Release" + IntCmp $dotNET48IsThere 528049 is_equal is_less is_greater + + is_equal: + Goto done_compare_not_needed + is_greater: + Goto done_compare_not_needed + is_less: + Goto done_compare_needed + + done_compare_needed: + #.NET Framework 4.8 install is *NEEDED* + + # Microsoft Download Center EXE: + # Web Bootstrapper: https://go.microsoft.com/fwlink/?LinkId=2085155 + # Full Download: https://go.microsoft.com/fwlink/?linkid=2088631 + + # Setup looks for components\dotNET48Full.exe relative to the install EXE location + # This allows the installer to be placed on a USB stick (for computers without internet connections) + # If the .NET Framework 4.8 installer is *NOT* found, Setup will connect to Microsoft's website + # and download it for you + + # Reboot Required with these Exit Codes: + # 1641 or 3010 + + # Command Line Switches: + # /showrmui /passive /norestart + + # Silent Command Line Switches: + # /q /norestart + + + # Let's see if the user is doing a Silent install or not + IfSilent is_quiet is_not_quiet + + is_quiet: + StrCpy $dotNET_CMD_LINE "/q /norestart" + Goto LookForLocalFile + is_not_quiet: + StrCpy $dotNET_CMD_LINE "/showrmui /passive /norestart" + Goto LookForLocalFile + + LookForLocalFile: + # Let's see if the user stored the Full Installer + IfFileExists "$EXEPATH\components\dotNET48Full.exe" do_local_install do_network_install + + do_local_install: + # .NET Framework found on the local disk. Use this copy + + ExecWait '"$EXEPATH\components\dotNET48Full.exe" $dotNET_CMD_LINE' $EXIT_CODE + Goto is_reboot_requested + + # Now, let's Download the .NET + do_network_install: + + Var /GLOBAL dotNetDidDownload + NSISdl::download "https://go.microsoft.com/fwlink/?linkid=2088631" "$TEMP\dotNET48Web.exe" $dotNetDidDownload + + StrCmp $dotNetDidDownload success fail + success: + ExecWait '"$TEMP\dotNET45Web.exe" $dotNET_CMD_LINE' $EXIT_CODE + Goto is_reboot_requested + + fail: + MessageBox MB_OK|MB_ICONEXCLAMATION "Unable to download .NET Framework. ${PRODUCT_NAME} will be installed, but will not function without the Framework!" + Goto done_dotNET_function + + # $EXIT_CODE contains the return codes. 1641 and 3010 means a Reboot has been requested + is_reboot_requested: + ${If} $EXIT_CODE = 1641 + ${OrIf} $EXIT_CODE = 3010 + SetRebootFlag true + ${EndIf} + + done_compare_not_needed: + # Done dotNET Install + Goto done_dotNET_function + + #exit the function + done_dotNET_function: + +FunctionEnd + + +Section "" CoreSection +; Set Section properties + SetOverwrite on + + ; Set Section Files and Shortcuts + SetOutPath "$INSTDIR\" + + File "${BUILDPATH}\${ASSEMBLY}" + File "${BUILDPATH}\${APPNAME}.pdb" + File "${BUILDPATH}\UtilityBelt.Service.Installer.exe" + +SectionEnd + +Section -FinishSection + + WriteRegStr HKLM "Software\${SOFTWARECOMPANY}\${APPNAME}" "" "$INSTDIR" + WriteRegStr HKLM "Software\${SOFTWARECOMPANY}\${APPNAME}" "Version" "${VERSION}" + + ;Register in decal + ClearErrors + ReadRegStr $0 HKLM "Software\Decal\Plugins\${APPGUID}" "" + ${If} ${Errors} + WriteRegStr HKLM "Software\Decal\Plugins\${APPGUID}" "" "${APPNAME}" + WriteRegDWORD HKLM "Software\Decal\Plugins\${APPGUID}" "Enabled" "1" + WriteRegStr HKLM "Software\Decal\Plugins\${APPGUID}" "Object" "${CLASSNAME}" + WriteRegStr HKLM "Software\Decal\Plugins\${APPGUID}" "Assembly" "${ASSEMBLY}" + WriteRegStr HKLM "Software\Decal\Plugins\${APPGUID}" "Path" "$INSTDIR" + WriteRegStr HKLM "Software\Decal\Plugins\${APPGUID}" "Surrogate" "{71A69713-6593-47EC-0002-0000000DECA1}" + WriteRegStr HKLM "Software\Decal\Plugins\${APPGUID}" "Uninstaller" "${APPNAME}" + ${Else} + ${IF} $0 != "${APPNAME}" + MESSAGEBOX MB_OK|MB_ICONSTOP "Skipped decal plugin registration. A decal plugin with this GUID already exists ($0), and is not ${APPNAME}." + ${ENDIF} + ${EndIf} + + WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" "DisplayName" "${APPNAME}" + WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" "UninstallString" "$INSTDIR\uninstall.exe" + WriteUninstaller "$INSTDIR\uninstall.exe" + + ; make sure dotnet 4.8 is installed + Call CheckAndDownloadDotNet48 + + ; make sure UtilityBelt.Service is installed + ; TODO: try and pull UtilityBelt.Service version from the registry and check it against the version required for this plugin + ExecWait '"$instdir\UtilityBelt.Service.Installer.exe"' + +SectionEnd + +; Modern install component descriptions +!insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN + !insertmacro MUI_DESCRIPTION_TEXT ${CoreSection} "" +!insertmacro MUI_FUNCTION_DESCRIPTION_END + +;Uninstall section +Section Uninstall + + ;Remove from registry... + DeleteRegKey HKLM "Software\${SOFTWARECOMPANY}\${APPNAME}" + DeleteRegKey HKLM "Software\Decal\Plugins\${APPGUID}" + DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" + + ; Delete self + Delete "$INSTDIR\uninstall.exe" + + ;Clean up + Delete "$INSTDIR\${ASSEMBLY}" + Delete "$INSTDIR\${APPNAME}.pdb" + Delete "$INSTDIR\UtilityBelt.Service.Installer.exe" + + ;RMDir "$INSTDIR\" + +SectionEnd + +; eof \ No newline at end of file diff --git a/MosswartMassacreNG/scripts/post-build.ps1 b/MosswartMassacreNG/scripts/post-build.ps1 new file mode 100644 index 0000000..baf2d73 --- /dev/null +++ b/MosswartMassacreNG/scripts/post-build.ps1 @@ -0,0 +1,17 @@ +param( + [string]$NuGetPackageRoot, + [string]$ProjectDir +) + +if ($Env:OS -and $Env:OS -like '*Windows*') { + + $makensis = Join-Path $NuGetPackageRoot 'nsis-tool\3.0.8\tools\makensis.exe' + $installer = Join-Path $ProjectDir 'scripts\installer.nsi' + + Write-Verbose "Using makensis at $makensis" + & $makensis $installer +} +else { + # Only runs when building on Linux/macOS with makensis in PATH + & makensis "$ProjectDir/scripts/installer.nsi" +} diff --git a/README.md b/README.md new file mode 100644 index 0000000..7562574 --- /dev/null +++ b/README.md @@ -0,0 +1,49 @@ +<<<<<<< HEAD +# MosswartMassacreNG + +======= +# 🚀 MosswartMassacreNG + +A hot-reloadable [Decal](https://decaldev.com/) v2.9.8.3 plugin that builds against .NET Framework 4.8 and [UtilityBelt.Service](https://gitlab.com/utilitybelt/utilitybelt.service) for the views. + + +## 🔧 Developing + + * The plugin code is located in the `MosswartMassacreNG` project. You can ignore the `MosswartMassacreNG.Loader` project, it contains the hot-reloader and doesn't need to be edited unless you are doing something out of the ordinary. + * `MosswartMassacreNG/PluginCore.cs` is the main Plugin class. It contains the plugin startup / shutdown methods. + * `MosswartMassacreNG/ExampleUI.cs` includes some demo UI code. + * `MosswartMassacreNG/scripts/installer.nsi` is the NSIS script used to generate the installer. + * Build the new plugin solution in Visual Studio with `Ctrl+Shift+B`, or by going to `Build -> Build Solution`. + * Add both `MosswartMassacreNG.dll` and `MosswartMassacreNG.Loader.dll` to decal by opening decal from the tray and selecting `Add -> Browse -> /bin/Release/net481/`. (Select each dll file individually.) + * Disable `MosswartMassacreNG` in decal by unchecking it under the `Plugins` list. + * During development you should have `MosswartMassacreNG` (under `Plugins`) disabled, and `MosswartMassacreNG.Loader` enabled (under `Network Filters`) in decal. This allows for hot-reloading of the plugin without logging out / restarting the client. + * To hot-reload, just recompile the plugin while ingame. You should see a message in the chat window showing that the plugin has reloaded. + +## 📦 Releasing + + * Right click the Plugin project and choose `Properties`. Scroll down and update the version number. + * Build the latest release version. + * In decal, enable your Plugin under the `Plugins` section, and disable `MosswartMassacreNG.Loader` under Network Filters. This allows you to test the plugin with hot-reloading disabled. + * Ensure the plugin works as expected ingame. + * Test the installer in `bin/Release/`. + * Distribute the installer. + +## Build Server Requirements + * Either use the docker image at `TODO` or use a build server with the following requirements: + * All build servers: + * [Powershell](https://learn.microsoft.com/en-us/powershell/) is in the environment `PATH` by calling `powershell`. + * Non-Windows build servers: + * [NSIS](https://nsis.sourceforge.io/Main_Page) is in the environment `PATH` by calling `makensis`. + * DotNet 6 SDK installed. + +## 💡 Tips + + * If you need to reference more decal dlls, make sure to copy them to `deps/` and reference from there to maintain linux build compatibility. + * When hot-reloading, events like `CharacterFilter.LoginComplete` have already triggered when the plugin reloads so the plugin will never see them. During plugin startup, you can check the current login state to determine if this is a normal load, or a hot one. + ```csharp + protected override void Startup() { + var isHotReload = CoreManager.Current.CharacterFilter.LoginStatus == 3; + } + ``` + * If hot-reloading is being prevented because `.Loader` is trying to be recompiled and is locked by acclient, you can right click the `.Loader` project in the Visual Studio `Solution Explorer` and select `Unload Project` to prevent it from being rebuilt. **Note:** You must build `.Loader` at least once before unloading the project, if you want to use hot-reloading. +>>>>>>> bae77fb (init) diff --git a/deps/Decal.Adapter.dll b/deps/Decal.Adapter.dll new file mode 100644 index 0000000000000000000000000000000000000000..69b46097d566337954dc24c5e4f65182504a8027 GIT binary patch literal 195584 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

OGI7X4zEs5kPq+F3i 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

;IH2dz?lKLb|Z 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