From 29bff12b23b7a35c6f4b86df023a276cf6919d87 Mon Sep 17 00:00:00 2001 From: MrD4rk5oul <43491107+MrD4rk5oul@users.noreply.github.com> Date: Sat, 2 Nov 2024 12:38:29 -0300 Subject: [PATCH] - Fixes for OnPlayerTeleport hook for linux and linux64 systems (#2214) - Changed signature call of `CanPlayerTeleport` for linux/linux64 to current used name - Applied fix at detour class CanPlayerBeTeleported to use standard parameter proceedings for linux --- extensions/tf2/teleporter.cpp | 11 +++++++++++ gamedata/sm-tf2.games.txt | 4 ++-- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/extensions/tf2/teleporter.cpp b/extensions/tf2/teleporter.cpp index 6a308a1474..3d5c6a8a70 100644 --- a/extensions/tf2/teleporter.cpp +++ b/extensions/tf2/teleporter.cpp @@ -37,7 +37,18 @@ IForward *g_teleportForward = NULL; class CTFPlayer; +#if defined(__linux__) && defined(__i386__) +class CanPlayerBeTeleportedClass +{ +public: + __attribute__((regparm(2))) bool CanPlayerBeTeleported(CTFPlayer * pPlayer); + static __attribute__((regparm(2))) bool (CanPlayerBeTeleportedClass::* CanPlayerBeTeleported_Actual)(CTFPlayer *); +}; +__attribute__((regparm(2))) bool (CanPlayerBeTeleportedClass::* CanPlayerBeTeleportedClass::CanPlayerBeTeleported_Actual)(CTFPlayer *) = NULL; +__attribute__((regparm(2))) bool CanPlayerBeTeleportedClass::CanPlayerBeTeleported(CTFPlayer* pPlayer) +#else DETOUR_DECL_MEMBER1(CanPlayerBeTeleported, bool, CTFPlayer *, pPlayer) +#endif { bool origCanTeleport = DETOUR_MEMBER_CALL(CanPlayerBeTeleported)(pPlayer); diff --git a/gamedata/sm-tf2.games.txt b/gamedata/sm-tf2.games.txt index 0bd44aee22..dc346c8ccb 100644 --- a/gamedata/sm-tf2.games.txt +++ b/gamedata/sm-tf2.games.txt @@ -132,8 +132,8 @@ "library" "server" "windows" "\x55\x8B\xEC\x53\x56\x57\x8B\x7D\x08\x8B\xD9\x85\xFF\x0F\x84\x2A\x2A\x2A\x2A" "windows64" "\x48\x89\x5C\x24\x08\x48\x89\x74\x24\x10\x57\x48\x83\xEC\x20\x48\x8B\xFA\x48\x8B\xF1\x48\x85\xD2\x0F\x84\x2A\x2A\x2A\x2A\x45\x33\xC0" - "linux" "@_ZN17CObjectTeleporter21PlayerCanBeTeleportedEP9CTFPlayer" - "linux64" "@_ZN17CObjectTeleporter21PlayerCanBeTeleportedEP9CTFPlayer" + "linux" "@_ZN17CObjectTeleporter21PlayerCanBeTeleportedEP9CTFPlayer.part.0" + "linux64" "@_ZN17CObjectTeleporter21PlayerCanBeTeleportedEP9CTFPlayer.part.0" } // Obsolete