~ruther/NosSmooth.Local

7eadf00dd34cfce80832221e29e904d48bd16e00 — Rutherther 2 years ago 15cd8ae
fix(binding): add argument from stack to petwalk to prevent crashing
M src/Core/NosSmooth.LocalBinding/Hooks/IPetWalkHook.cs => src/Core/NosSmooth.LocalBinding/Hooks/IPetWalkHook.cs +2 -1
@@ 22,6 22,7 @@ public interface IPetWalkHook : INostaleHook<IPetWalkHook.PetWalkDelegate, IPetW
    /// <param name="position">The position to walk to. First 4 bits are x (most significant), next 4 bits are y.</param>
    /// <param name="unknown0">Unknown 1. TODO.</param>
    /// <param name="unknown1">Unknown 2. TODO.</param>
    /// <param name="unknown2">Unknown 3. TODO.</param>
    /// <returns>1 to proceed to NosTale function, 0 to block the call.</returns>
    [Function
    (


@@ 30,7 31,7 @@ public interface IPetWalkHook : INostaleHook<IPetWalkHook.PetWalkDelegate, IPetW
        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);
    public delegate nuint PetWalkDelegate(nuint petManagerPtr, int position, short unknown0 = 0, int unknown1 = 1, int unknown2 = 1);

    /// <summary>
    /// Pet walk function.

M src/Core/NosSmooth.LocalBinding/Hooks/Implementations/PetWalkHook.cs => src/Core/NosSmooth.LocalBinding/Hooks/Implementations/PetWalkHook.cs +5 -3
@@ 58,11 58,12 @@ internal class PetWalkHook : CancelableNostaleHook<IPetWalkHook.PetWalkDelegate,
                petManagerPtr,
                position,
                un0,
                un1
                un1,
                un2
            ) =>
            {
                CallingFromNosSmooth = true;
                var res = function(petManagerPtr, position, un0, un1);
                var res = function(petManagerPtr, position, un0, un1, un2);
                CallingFromNosSmooth = false;
                return res;
            };


@@ 72,7 73,8 @@ internal class PetWalkHook : CancelableNostaleHook<IPetWalkHook.PetWalkDelegate,
        nuint petManagerPtr,
        int position,
        short un0,
        int un1
        int un1,
        int un2
    )
    {
        var petManager = new PetManager(_memory, petManagerPtr);

Do not follow this link