~ruther/NosSmooth.Local

d5e16aadaecab0b8da7e03aad924f6d1bc45347b — Rutherther 2 years ago 269ae8a
fix(bindings): pass position to walks in correct format
M src/Core/NosSmooth.LocalBinding/Hooks/Implementations/PetWalkHook.cs => src/Core/NosSmooth.LocalBinding/Hooks/Implementations/PetWalkHook.cs +2 -2
@@ 49,7 49,7 @@ internal class PetWalkHook : CancelableNostaleHook<IPetWalkHook.PetWalkDelegate,

    /// <inheritdoc />
    public override IPetWalkHook.PetWalkWrapperDelegate WrapperFunction
        => (p, x, y) => OriginalFunction(p.Address, ((int)x << 16) | (int)y) == 1;
        => (p, x, y) => OriginalFunction(p.Address, (y << 16) | x) == 1;

    /// <inheritdoc />
    protected override IPetWalkHook.PetWalkDelegate WrapWithCalling(IPetWalkHook.PetWalkDelegate function)


@@ 77,7 77,7 @@ internal class PetWalkHook : CancelableNostaleHook<IPetWalkHook.PetWalkDelegate,
    {
        var petManager = new PetManager(_memory, petManagerPtr);
        var walkArgs = new PetWalkEventArgs
            (petManager, (ushort)((position >> 16) & 0xFFFF), (ushort)(position & 0xFFFF));
            (petManager, (ushort)(position & 0xFFFF), (ushort)((position >> 16) & 0xFFFF));
        return HandleCall(walkArgs);
    }
}
\ No newline at end of file

M src/Core/NosSmooth.LocalBinding/Hooks/Implementations/PlayerWalkHook.cs => src/Core/NosSmooth.LocalBinding/Hooks/Implementations/PlayerWalkHook.cs +28 -16
@@ 27,12 27,12 @@ internal class PlayerWalkHook : CancelableNostaleHook<IPlayerWalkHook.WalkDelega
        (NosBindingManager bindingManager, NosBrowserManager browserManager, HookOptions<IPlayerWalkHook> options)
    {
        var hook = CreateHook
            (
                bindingManager,
                () => new PlayerWalkHook(browserManager.PlayerManager),
                hook => hook.Detour,
                options
            );
        (
            bindingManager,
            () => new PlayerWalkHook(browserManager.PlayerManager),
            hook => hook.Detour,
            options
        );

        return hook;
    }


@@ 51,22 51,34 @@ internal class PlayerWalkHook : CancelableNostaleHook<IPlayerWalkHook.WalkDelega
    public override IPlayerWalkHook.WalkWrapperDelegate WrapperFunction => (x, y) =>
    {
        var playerManagerObject = _playerManager.Address;
        return OriginalFunction(playerManagerObject, ((int)x << 16) | (int)y) == 1;
        return OriginalFunction(playerManagerObject,  (y << 16) | x) == 1;
    };

    /// <inheritdoc />
    protected override IPlayerWalkHook.WalkDelegate WrapWithCalling(IPlayerWalkHook.WalkDelegate function)
        => (playerManagerPtr, position, un0, un1) =>
        {
            CallingFromNosSmooth = true;
            var res = function(playerManagerPtr, position, un0, un1);
            CallingFromNosSmooth = false;
            return res;
        };
        =>
            (
                playerManagerPtr,
                position,
                un0,
                un1
            ) =>
            {
                CallingFromNosSmooth = true;
                var res = function(playerManagerPtr, position, un0, un1);
                CallingFromNosSmooth = false;
                return res;
            };

    private nuint Detour(nuint playerManagerPtr, int position, short un0, int un1)
    private nuint Detour
    (
        nuint playerManagerPtr,
        int position,
        short un0,
        int un1
    )
    {
        var walkArgs = new WalkEventArgs((ushort)((position >> 16) & 0xFFFF), (ushort)(position & 0xFFFF));
        var walkArgs = new WalkEventArgs((ushort)(position & 0xFFFF), (ushort)((position >> 16) & 0xFFFF));
        return HandleCall(walkArgs);
    }
}
\ No newline at end of file

Do not follow this link