diff --git a/extensions/sdktools/vnatives.cpp b/extensions/sdktools/vnatives.cpp index a908ffdb..a86b59e0 100644 --- a/extensions/sdktools/vnatives.cpp +++ b/extensions/sdktools/vnatives.cpp @@ -288,6 +288,35 @@ static cell_t TeleportEntity(IPluginContext *pContext, const cell_t *params) return 1; } +#if defined ORANGEBOX_BUILD +/* :TODO: This is Team Fortress 2 specific */ +static cell_t ForcePlayerSuicide(IPluginContext *pContext, const cell_t *params) +{ + static ValveCall *pCall = NULL; + if (!pCall) + { + ValvePassInfo pass[2]; + InitPass(pass[0], Valve_Bool, PassType_Basic, PASSFLAG_BYVAL); + InitPass(pass[1], Valve_Bool, PassType_Basic, PASSFLAG_BYVAL); + if (!CreateBaseCall("CommitSuicide", ValveCall_Player, NULL, pass, 2, &pCall)) + { + return pContext->ThrowNativeError("\"CommitSuicide\" not supported by this mod"); + } + else if (!pCall) + { + return pContext->ThrowNativeError("\"CommitSuicide\" wrapper failed to initialized"); + } + } + + START_CALL(); + DECODE_VALVE_PARAM(1, thisinfo, 0); + *(bool *)(vptr + 4) = false; + *(bool *)(vptr + 5) = false; + FINISH_CALL_SIMPLE(NULL); + + return 1; +} +#else static cell_t ForcePlayerSuicide(IPluginContext *pContext, const cell_t *params) { static ValveCall *pCall = NULL; @@ -307,6 +336,7 @@ static cell_t ForcePlayerSuicide(IPluginContext *pContext, const cell_t *params) return 1; } +#endif static cell_t SetClientViewEntity(IPluginContext *pContext, const cell_t *params) { diff --git a/gamedata/sdktools.games.ep2.txt b/gamedata/sdktools.games.ep2.txt index 63c373fe..07f8d91b 100644 --- a/gamedata/sdktools.games.ep2.txt +++ b/gamedata/sdktools.games.ep2.txt @@ -1,5 +1,31 @@ "Games" { + /* Sounds */ + "#default" + { + "Keys" + { + "SlapSoundCount" "3" + "SlapSound1" "player/pl_fallpain1.wav" + "SlapSound2" "player/pl_fallpain3.wav" + "SlapSound3" "player/pl_pain5.wav" + "m_iFrags" "m_iFrags" + } + "Offsets" + { + "m_iHealth" + { + "class" "CBasePlayer" + "prop" "m_iHealth" + } + "m_lifeState" + { + "class" "CBasePlayer" + "prop" "m_lifeState" + } + } + } + /* General Temp Entities */ "#default" { @@ -46,4 +72,107 @@ } } } -} \ No newline at end of file + + /* Create Entity Signatures */ + "#default" + { + "#supported" + { + "game" "tf" + } + + "Signatures" + { + "DispatchSpawn" + { + "library" "server" + "linux" "@_Z13DispatchSpawnP11CBaseEntity" + "windows" "\x53\x55\x56\x8B\x74\x24\x10\x85\xF6\x57\x0F\x84\x2A\x2A\x2A\x2A\x8B\x1D\x2A\x2A\x2A\x2A\x8B\x03\x8B\x50\x64\x8B\xCB" + } + "CreateEntityByName" + { + "library" "server" + "linux" "@_Z18CreateEntityByNamePKci" + "windows" "\x56\x8B\x74\x24\x0C\x83\xFE\xFF\x57\x8B\x7C\x24\x0C\x74\x27\x8B\x0D\x2A\x2A\x2A\x2A\x8B\x01\x8B\x50\x54\x56\xFF\xD2" + } + } + } + + /* Team Fortress 2 Offsets */ + "tf" + { + "Offsets" + { + "GiveNamedItem" + { + "windows" "348" + "linux" "349" + } + "RemovePlayerItem" + { + "windows" "236" + "linux" "237" + } + "Weapon_GetSlot" + { + "windows" "234" + "linux" "235" + } + "Ignite" + { + "windows" "191" + "linux" "192" + } + "Extinguish" + { + "windows" "195" + "linux" "196" + } + "Teleport" + { + "windows" "99" + "linux" "100" + } + "CommitSuicide" + { + "windows" "383" + "linux" "384" + } + "GetVelocity" + { + "windows" "128" + "linux" "129" + } + "EyeAngles" + { + "windows" "120" + "linux" "121" + } + "DispatchKeyValue" + { + "windows" "29" + "linux" "28" + } + "DispatchKeyValueFloat" + { + "windows" "28" + "linux" "29" + } + "DispatchKeyValueVector" + { + "windows" "27" + "linux" "30" + } + + /** + * THESE ARE DISABLED FOR NOW. + + "AcceptInput" + { + "windows" "34" + "linux" "35" + } + */ + } + } +} diff --git a/gamedata/sdktools.games.txt b/gamedata/sdktools.games.txt index 78507565..45bf1c7c 100644 --- a/gamedata/sdktools.games.txt +++ b/gamedata/sdktools.games.txt @@ -9,7 +9,7 @@ "SlapSound1" "player/pl_fallpain1.wav" "SlapSound2" "player/pl_fallpain3.wav" "SlapSound3" "player/pl_pain5.wav" - "m_iFrags" "m_iFrags" + "m_iFrags" "m_iFrags" } "Offsets" {