diff --git a/gamedata/core.games/common.games.txt b/gamedata/core.games/common.games.txt index 4d7b31f3..ea1219f3 100644 --- a/gamedata/core.games/common.games.txt +++ b/gamedata/core.games/common.games.txt @@ -236,6 +236,7 @@ "game" "berimbau" "game" "cstrike" "game" "synergy" + "game" "bms" } "Keys" diff --git a/gamedata/core.games/engine.bms.txt b/gamedata/core.games/engine.bms.txt new file mode 100644 index 00000000..a7e0c701 --- /dev/null +++ b/gamedata/core.games/engine.bms.txt @@ -0,0 +1,60 @@ +/** + * Do not edit this file. Any changes will be overwritten by the gamedata + * updater or by upgrading your SourceMod install. + * + * To override data in this file, create a subdirectory named "custom" and + * place your own gamedata file(s) inside of it. Such files will be parsed + * after SM's own. + * + * For more information, see http://wiki.alliedmods.net/Gamedata_Updating_(SourceMod) + */ + +"Games" +{ + /* CGlobalEntityList */ + "#default" + { + "Offsets" + { + /* Offset into LevelShutdown */ + "gEntList" + { + "windows" "11" + } + } + + "Signatures" + { + "LevelShutdown" + { + "library" "server" + "windows" "\xE8\x2A\x2A\x2A\x2A\xE8\x2A\x2A\x2A\x2A\xB9\x2A\x2A\x2A\x2A\xE8\x2A\x2A\x2A\x2A\xE8" + "linux" "\xE8\x2A\x2A\x2A\x2A\xE8\x2A\x2A\x2A\x2A\xC7\x2A\x2A\x2A\x2A\x2A\x2A\xE8\x2A\x2A\x2A\x2A\xE8" + } + "gEntList" + { + "library" "server" + "linux" "@gEntList" + "mac" "@gEntList" + } + } + } + + "#default" + { + "Keys" + { + "UseInvalidUniverseInSteam2IDs" "1" + } + + "Offsets" + { + "EntInfo" + { + "windows" "4" + "linux" "4" + "mac" "4" + } + } + } +} diff --git a/gamedata/core.games/master.games.txt b/gamedata/core.games/master.games.txt index c6b29853..0bb61480 100644 --- a/gamedata/core.games/master.games.txt +++ b/gamedata/core.games/master.games.txt @@ -50,6 +50,11 @@ "engine" "sdk2013" } + "engine.bms.txt" + { + "engine" "bms" + } + "engine.css.txt" { "engine" "css" diff --git a/gamedata/sdkhooks.games/game.bms.txt b/gamedata/sdkhooks.games/game.bms.txt new file mode 100644 index 00000000..13cc7346 --- /dev/null +++ b/gamedata/sdkhooks.games/game.bms.txt @@ -0,0 +1,129 @@ +"Games" +{ + "#default" + { + "Offsets" + { + "Blocked" + { + "windows" "108" + "linux" "109" + "mac" "109" + } + "EndTouch" + { + "windows" "106" + "linux" "107" + "mac" "107" + } + "FireBullets" + { + "windows" "119" + "linux" "120" + "mac" "120" + } + "OnTakeDamage" + { + "windows" "66" + "linux" "67" + "mac" "67" + } + "OnTakeDamage_Alive" + { + "windows" "287" + "linux" "288" + "mac" "288" + } + "PreThink" + { + "windows" "349" + "linux" "350" + "mac" "350" + } + "PostThink" + { + "windows" "350" + "linux" "351" + "mac" "351" + } + "SetTransmit" + { + "windows" "20" + "linux" "21" + "mac" "21" + } + "ShouldCollide" + { + "windows" "16" + "linux" "17" + "mac" "17" + } + "Spawn" + { + "windows" "22" + "linux" "23" + "mac" "23" + } + "StartTouch" + { + "windows" "104" + "linux" "105" + "mac" "105" + } + "Think" + { + "windows" "48" + "linux" "49" + "mac" "49" + } + "Touch" + { + "windows" "105" + "linux" "106" + "mac" "106" + } + "TraceAttack" + { + "windows" "64" + "linux" "65" + "mac" "65" + } + "VPhysicsUpdate" + { + "windows" "155" + "linux" "156" + "mac" "156" + } + "Weapon_CanSwitchTo" + { + "windows" "281" + "linux" "282" + "mac" "282" + } + "Weapon_CanUse" + { + "windows" "275" + "linux" "276 + "mac" "276" + } + "Weapon_Drop" + { + "windows" "278" + "linux" "279" + "mac" "279" + } + "Weapon_Equip" + { + "windows" "276" + "linux" "277" + "mac" "277" + } + "Weapon_Switch" + { + "windows" "279" + "linux" "280" + "mac" "280" + } + } + } +} \ No newline at end of file diff --git a/gamedata/sdkhooks.games/master.games.txt b/gamedata/sdkhooks.games/master.games.txt index aefdfa85..0d45ef4a 100644 --- a/gamedata/sdkhooks.games/master.games.txt +++ b/gamedata/sdkhooks.games/master.games.txt @@ -179,4 +179,9 @@ { "game" "hl2ctf" } + + "game.bms.txt" + { + "game" "bms" + } } diff --git a/gamedata/sdktools.games/game.bms.txt b/gamedata/sdktools.games/game.bms.txt new file mode 100644 index 00000000..c29bf8ed --- /dev/null +++ b/gamedata/sdktools.games/game.bms.txt @@ -0,0 +1,200 @@ +/** + * Do not edit this file. Any changes will be overwritten by the gamedata + * updater or by upgrading your SourceMod install. + * + * To override data in this file, create a subdirectory named "custom" and + * place your own gamedata file(s) inside of it. Such files will be parsed + * after SM's own. + * + * For more information, see http://wiki.alliedmods.net/Gamedata_Updating_(SourceMod) + */ + +"Games" +{ + /* General Temp Entities */ + "#default" + { + "Offsets" + { + "GetTEName" + { + "windows" "4" + "linux" "4" + "mac" "4" + } + "GetTENext" + { + "windows" "8" + "linux" "8" + "mac" "8" + } + "TE_GetServerClass" + { + "windows" "0" + "linux" "0" + "mac" "0" + } + } + } + + /* CBaseEntityOutput::FireOutput */ + "#default" + { + "Signatures" + { + "FireOutput" + { + "library" "server" + "windows" "\x55\x8B\xEC\x81\xEC\x2A\x2A\x2A\x2A\xA1\x2A\x2A\x2A\x2A\x33\xC5\x89\x45\xFC\x53\x8B\x5D\x20\x8B\xC1\x8B\x4D\x1C\x56\x57\x8B" + "linux" "@_ZN17CBaseEntityOutput10FireOutputE9variant_tP11CBaseEntityS2_f" + "mac" "@_ZN17CBaseEntityOutput10FireOutputE9variant_tP11CBaseEntityS2_f" + } + } + } + + /* SetUserInfo data */ + "#default" + { + "Offsets" + { + /** + * CBaseClient::SetUserCVar(char const*,char const*); + * Linux offset straight from VTable dump. + * Windows offset is crazy. Found the windows SetName function using string "(%d)%-0.*s" + * Cross referenced back to the vtable and counted manually (SetUserCvar is 1 higher, offsets start from 1) + */ + "SetUserCvar" + { + "windows" "18" + "linux" "58" + "mac" "58" + } + /** + * CBaseClient::SetName(char const*); + * Linux offset straight from VTable dump. + * Has string "(%d)%-0.*s" + */ + "SetClientName" + { + "windows" "17" + "linux" "57" + "mac" "57" + } + /** + * Offset into CBaseClient - Used by CBaseServer::UpdateUserSettings to determine when changes have been made. + * Find CBaseClient::UpdateUserSettings (strings "net_maxroutable", "cl_updaterate" etc) and the offset is set to 0 near the end. + * Linux: mov byte ptr [esi+98h], 0 + * Win: mov byte ptr [esi+0A4h], 0 + */ + "InfoChanged" + { + "windows" "140" + "linux" "140" + "mac" "140" + } + } + } + + "#default" + { + "Offsets" + { + "GiveNamedItem" + { + "windows" "418" + "linux" "419" + "mac" "419" + } + "RemovePlayerItem" + { + "windows" "285" + "linux" "286" + "mac" "286" + } + "Weapon_GetSlot" + { + "windows" "283" + "linux" "284" + "mac" "284" + } + "Ignite" + { + "windows" "222" + "linux" "223" + "mac" "223" + } + "Extinguish" + { + "windows" "226" + "linux" "227" + "mac" "227" + } + "Teleport" + { + "windows" "115" + "linux" "116" + "mac" "116" + } + "CommitSuicide" + { + "windows" "458" + "linux" "458" + "mac" "458" + } + "GetVelocity" + { + "windows" "148" + "linux" "149" + "mac" "149" + } + "EyeAngles" + { + "windows" "138" + "linux" "139" + "mac" "139" + } + "SetEntityModel" + { + "windows" "24" + "linux" "25" + "mac" "25" + } + "AcceptInput" + { + "windows" "37" + "linux" "38" + "mac" "38" + } + "WeaponEquip" + { + "windows" "276" + "linux" "277" + "mac" "277" + } + "Activate" + { + "windows" "34" + "linux" "35" + "mac" "35" + } + "PlayerRunCmd" + { + "windows" "437" + "linux" "438" + "mac" "438" + } + "GiveAmmo" + { + "windows" "267" + "linux" "268" + "mac" "268" + } + } + + "Keys" + { + "GameRulesProxy" "CTFGameRulesProxy" + "GameRulesDataTable" "tf_gamerules_data" + } + } +} diff --git a/gamedata/sdktools.games/master.games.txt b/gamedata/sdktools.games/master.games.txt index b0926386..2f2e550a 100644 --- a/gamedata/sdktools.games/master.games.txt +++ b/gamedata/sdktools.games/master.games.txt @@ -243,4 +243,8 @@ { "game" "nmrih" } + "game.bms.txt" + { + "game" "bms" + } } diff --git a/tools/buildbot/PackageScript b/tools/buildbot/PackageScript index 94219560..ca16d605 100644 --- a/tools/buildbot/PackageScript +++ b/tools/buildbot/PackageScript @@ -150,6 +150,7 @@ CopyFiles('gamedata/sdkhooks.games', 'addons/sourcemod/gamedata/sdkhooks.games', 'game.ag2.txt', 'game.alienswarm.txt', 'game.aoc.txt', + 'game.bms.txt', 'game.cspromod.txt', 'game.cstrike.txt', 'game.dinodday.txt', @@ -195,6 +196,7 @@ CopyFiles('gamedata/sdktools.games', 'addons/sourcemod/gamedata/sdktools.games', 'game.alienswarm.txt', 'game.aoc.txt', 'game.bg2.txt', + 'game.bms.txt', 'game.cspromod.txt', 'game.cstrike.txt', 'game.dinodday.txt',