From c7410e3a35c2f3066a9d56698cd9101604744452 Mon Sep 17 00:00:00 2001 From: Balim <31295298+Balimbanana@users.noreply.github.com> Date: Sat, 26 Apr 2025 07:09:38 -0700 Subject: [PATCH] Update SDKTools for Synergy (#2310) * Update SDKTools IgniteEntity for Synergy Add missing parameter for IgniteEntity used in Synergy. * Update Linux SDKTools Gamedata for Synergy (25.3) These are only the Linux signatures updated to use the name format. Note, I do not have the updated Windows signatures at the moment. --- extensions/sdktools/vnatives.cpp | 21 +++++++++++++++++++++ gamedata/sdktools.games/game.synergy.txt | 6 +++--- 2 files changed, 24 insertions(+), 3 deletions(-) diff --git a/extensions/sdktools/vnatives.cpp b/extensions/sdktools/vnatives.cpp index e3d71ff3b..559276ff2 100644 --- a/extensions/sdktools/vnatives.cpp +++ b/extensions/sdktools/vnatives.cpp @@ -378,6 +378,23 @@ static cell_t IgniteEntity(IPluginContext *pContext, const cell_t *params) return pContext->ThrowNativeError("\"Ignite\" wrapper failed to initialize"); } } + else if (!strcmp(g_pSM->GetGameFolderName(), "synergy")) + { + ValvePassInfo pass[5]; + InitPass(pass[0], Valve_Float, PassType_Float, PASSFLAG_BYVAL); + InitPass(pass[1], Valve_Bool, PassType_Basic, PASSFLAG_BYVAL); + InitPass(pass[2], Valve_Float, PassType_Float, PASSFLAG_BYVAL); + InitPass(pass[3], Valve_Bool, PassType_Basic, PASSFLAG_BYVAL); + InitPass(pass[4], Valve_CBaseEntity, PassType_Basic, PASSFLAG_BYVAL); + if (!CreateBaseCall("Ignite", ValveCall_Entity, NULL, pass, 5, &pCall)) + { + return pContext->ThrowNativeError("\"Ignite\" not supported by this mod"); + } + else if (!pCall) + { + return pContext->ThrowNativeError("\"Ignite\" wrapper failed to initialize"); + } + } else #endif // SDK2013 { @@ -422,6 +439,10 @@ static cell_t IgniteEntity(IPluginContext *pContext, const cell_t *params) *(int *) (vptr + pCall->vparams[4].offset) = 0; *(int *) (vptr + pCall->vparams[5].offset) = 0; } + else if (!strcmp(g_pSM->GetGameFolderName(), "synergy")) + { + *(CBaseEntity **) (vptr + pCall->vparams[4].offset) = nullptr; // pAttacker + } #elif SOURCE_ENGINE == SE_MCV *(CBaseEntity **) (vptr + pCall->vparams[4].offset) = nullptr; // pAttacker *(string_t *) (vptr + pCall->vparams[5].offset) = NULL_STRING; // sRootWeaponClassname diff --git a/gamedata/sdktools.games/game.synergy.txt b/gamedata/sdktools.games/game.synergy.txt index 6a6131cc1..c79fa62b6 100644 --- a/gamedata/sdktools.games/game.synergy.txt +++ b/gamedata/sdktools.games/game.synergy.txt @@ -48,7 +48,7 @@ { "library" "server" "windows" "\x55\x89\xE5\x89\xC8\x8B\x4D\x08\xC7\x00\x2A\x2A\x2A\x2A\x89\x48\x04" - "linux" "\x55\x89\xE5\x56\xE8\x2A\x2A\x2A\x2A\x58\x81\xC0\xCF\x27\x58\x00" + "linux" "@_ZN15CBaseTempEntityC2EPKc" } "s_pTempEntities" { @@ -68,7 +68,7 @@ { "library" "server" "windows" "\x55\x89\xE5\x53\x57\x56\x83\xEC\x08\x8B\x45\x08\x85\xC0\x0F\x85\x2A\x2A\x2A\x2A" - "linux" "\x55\x89\xE5\x53\x57\x56\x83\xEC\x1C\xE8\x2A\x2A\x2A\x2A\x5B\x81\xC3\xEA\xF8\x83\x00" + "linux" "@_ZN17CGlobalEntityList21FindEntityByClassnameEP11CBaseEntityPKc" "mac" "@_ZN17CGlobalEntityList21FindEntityByClassnameEP11CBaseEntityPKc" } } @@ -83,7 +83,7 @@ { "library" "server" "windows" "\x55\x89\xE5\x53\x57\x56\x81\xEC\x10\x01\x00\x00\x8B\x71\x14" - "linux" "\x55\x89\xE5\x53\x57\x56\x81\xEC\x5C\x01\x00\x00\xE8\x2A\x2A\x2A\x2A\x5B\x81\xC3\x37\x3C\x88\x00" + "linux" "@_ZN17CBaseEntityOutput10FireOutputE9variant_tP11CBaseEntityS2_f" "mac" "@_ZN17CBaseEntityOutput10FireOutputE9variant_tP11CBaseEntityS2_f" } }