// // IPetWalkHook.cs // // Copyright (c) František Boháček. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. using NosSmooth.LocalBinding.EventArgs; using NosSmooth.LocalBinding.Structs; using Reloaded.Hooks.Definitions.X86; namespace NosSmooth.LocalBinding.Hooks; /// /// A hook of PetManager.Walk. /// public interface IPetWalkHook : INostaleHook { /// /// NosTale walk function to hook. /// /// The pointer to a pet manager object. /// The position to walk to. First 4 bits are x (most significant), next 4 bits are y. /// Unknown 1. TODO. /// Unknown 2. TODO. /// Unknown 3. TODO. /// 1 to proceed to NosTale function, 0 to block the call. [Function ( new[] { FunctionAttribute.Register.eax, FunctionAttribute.Register.edx, FunctionAttribute.Register.ecx }, FunctionAttribute.Register.eax, FunctionAttribute.StackCleanup.Callee, new[] { FunctionAttribute.Register.ebx, FunctionAttribute.Register.esi, FunctionAttribute.Register.edi, FunctionAttribute.Register.ebp } )] public delegate nuint PetWalkDelegate(nuint petManagerPtr, int position, short unknown0 = 0, int unknown1 = 1, int unknown2 = 1); /// /// Pet walk function. /// /// The pet manager. /// The x coordinate to walk to. /// The y coordinate to walk to. /// A bool signaling whether the operation was successful. public delegate bool PetWalkWrapperDelegate(PetManager manager, ushort x, ushort y); }