From 18a3bf1c3c9468d5f8c91cf2a447840dd7c478ea Mon Sep 17 00:00:00 2001 From: erri120 Date: Sun, 17 May 2020 21:25:03 +0200 Subject: [PATCH] Added OnEchanting Event --- UtilityLibrary.Test/Plugin.cs | 15 ++++++---- UtilityLibrary.Test/Utils.cs | 2 +- UtilityLibrary/Events.cs | 2 ++ UtilityLibrary/Events/OnEnchantingEvent.cs | 32 ++++++++++++++++++++++ UtilityLibrary/Plugin.cs | 3 +- UtilityLibrary/UtilityLibrary.csproj | 1 + 6 files changed, 48 insertions(+), 7 deletions(-) create mode 100644 UtilityLibrary/Events/OnEnchantingEvent.cs diff --git a/UtilityLibrary.Test/Plugin.cs b/UtilityLibrary.Test/Plugin.cs index 2418c30..0fa34ed 100644 --- a/UtilityLibrary.Test/Plugin.cs +++ b/UtilityLibrary.Test/Plugin.cs @@ -20,17 +20,22 @@ protected override bool Initialize(bool loadedAny) if (!utilityLibrary.IsInitialized) return false; if (!loadedAny) return false; - Events.OnCrafting.Register(e => - { - Utils.Log($"Crafting an item: {e.TemperForm.CreatedItem.Name}, getting {e.XP} XP"); - }); - Events.OnTempering.Register(e => { Utils.Log( $"Tempering {e.Item.Name}, old quality: {e.OldQuality}, new quality: {e.NewQuality}, getting {e.XP} XP"); }); + Events.OnEnchanting.Register(e => + { + Utils.Log($"Enchanting {e.Item.Name}, soul gem: {e.SoulGem.Name}, xp: {e.XP}"); + }); + + /*Events.OnCrafting.Register(e => + { + Utils.Log($"Crafting an item: {e.TemperForm.CreatedItem.Name}, getting {e.XP} XP"); + });*/ + return true; } } diff --git a/UtilityLibrary.Test/Utils.cs b/UtilityLibrary.Test/Utils.cs index 3eb4ec6..a788f45 100644 --- a/UtilityLibrary.Test/Utils.cs +++ b/UtilityLibrary.Test/Utils.cs @@ -11,7 +11,7 @@ internal static class Utils static Utils() { //optional to also use LogFileFlags.IncludeTimestampInFileName - LogFile = new LogFile(global::UtilityLibrary.Plugin.PluginName, LogFileFlags.AppendFile | LogFileFlags.AutoFlush | LogFileFlags.IncludeTimestampInLine); + LogFile = new LogFile(Plugin.PluginName, LogFileFlags.AppendFile | LogFileFlags.AutoFlush | LogFileFlags.IncludeTimestampInLine); } internal static void Log(string s) diff --git a/UtilityLibrary/Events.cs b/UtilityLibrary/Events.cs index 9545446..d591f35 100644 --- a/UtilityLibrary/Events.cs +++ b/UtilityLibrary/Events.cs @@ -10,5 +10,7 @@ public static partial class Events public static Event OnTempering { get; internal set; } public static Event OnCrafting { get; internal set; } + + public static Event OnEnchanting { get; internal set; } } } diff --git a/UtilityLibrary/Events/OnEnchantingEvent.cs b/UtilityLibrary/Events/OnEnchantingEvent.cs new file mode 100644 index 0000000..2e76089 --- /dev/null +++ b/UtilityLibrary/Events/OnEnchantingEvent.cs @@ -0,0 +1,32 @@ +using NetScriptFramework; +using NetScriptFramework.SkyrimSE; + +namespace UtilityLibrary +{ + public static partial class Events + { + public class EnchantingEventArgs : HookedEventArgs + { + public TESForm Item { get; internal set; } + public TESForm SoulGem { get; internal set; } + public float XP { get; set; } + } + + internal static EventHookParameters EnchantingEventHookParameters => + new EventHookParameters(AddressLibrary.Enchanting, 6, 6, "FF 90 B8 07 00 00", ctx => + { + var args = new EnchantingEventArgs + { + Item = MemoryObject.FromAddress(Memory.ReadPointer(ctx.R15)), + SoulGem = MemoryObject.FromAddress( + Memory.ReadPointer(Memory.ReadPointer(ctx.BX + 0x18))), + XP = ctx.XMM2f + }; + + return args; + }, (ctx, args) => + { + ctx.XMM2f = args.XP; + }); + } +} diff --git a/UtilityLibrary/Plugin.cs b/UtilityLibrary/Plugin.cs index e0c2541..b55d585 100644 --- a/UtilityLibrary/Plugin.cs +++ b/UtilityLibrary/Plugin.cs @@ -29,7 +29,8 @@ protected override bool Initialize(bool loadedAny) AddressLibrary.Alchemy = Main.GameInfo.GetAddressOf(50449, 0x207, 6); Events.OnTempering = new EventHook(EventHookFlags.None, "utility-library.events.tempering", Events.TemperingEventHookParameters); - Events.OnCrafting = new EventHook(EventHookFlags.None, "utility-library.events.crafting", Events.CraftingEventHookParameters); + //Events.OnCrafting = new EventHook(EventHookFlags.None, "utility-library.events.crafting", Events.CraftingEventHookParameters); + Events.OnEnchanting = new EventHook(EventHookFlags.None, "utility-library.events.enchanting", Events.EnchantingEventHookParameters); NetScriptFramework.SkyrimSE.Events.OnMainMenu.Register(e => { diff --git a/UtilityLibrary/UtilityLibrary.csproj b/UtilityLibrary/UtilityLibrary.csproj index 48d2b73..9c2d071 100644 --- a/UtilityLibrary/UtilityLibrary.csproj +++ b/UtilityLibrary/UtilityLibrary.csproj @@ -56,6 +56,7 @@ +