/** * 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" { "#default" { "Keys" { "PriceKey" "in game price" } "Offsets" { // Offset of szClassName in CCSWeaponData, szDefaultName is @ 140 which returns the default weapon class for the loadoutslot ignoring the users inventory. "WeaponName" { "windows" "4" "linux" "4" "linux64" "8" "mac64" "8" } // In HandleCommand_Buy_Internal // -*(_DWORD *)(v34 + 8) in ida 7 -v34[52] "WeaponPrice" { "windows" "208" "linux" "208" "linux64" "328" "mac64" "328" } //Offset into CheckRestartRound "CTTeamScoreOffset" { "windows" "98" "linux" "115" "linux64" "143" "mac64" "148" } //Offset into CheckRestartRound "TTeamScoreOffset" { "windows" "125" "linux" "148" "linux64" "174" "mac64" "177" } //Offset into HandleCommand_Buy_Internal "CCSPlayerInventoryOffset" { "windows" "60" "linux" "97" "linux64" "107" "mac64" "73" } "GetItemInLoadout" { "windows" "8" "linux" "9" "linux64" "9" "mac64" "9" } "GetItemDefintionByName" //_ZN15CEconItemSchema23GetItemDefinitionByNameEPKc { "windows" "42" "linux" "41" "linux64" "41" "mac64" "41" } // Search for "%s (ID %llu) at backpack slot %d" (CCSPlayerInventory::DumpInventoryToConsole(bool)) // Jump to the vtable 2 functions above calls CCStrike15ItemDefinition::GetLoadoutSlot(CCStrike15ItemDefinition *this, int) // This is an offset into CCStrike15ItemDefinition that contains the loadoutslot IGNORING the team param (the second param in the function) "LoadoutSlotOffset" { "windows" "588" "linux" "588" "linux64" "908" "mac64" "908" } // Offset into CEconItemSchema * to a hashmap of all itemdefs // Offset can be found in... GetItemDefinitionMutable (easy to get offset on windows should be the same) "ItemDefHashOffset" { "windows" "172" "linux" "172" "linux64" "232" "mac64" "232" } } "Signatures" { "GetItemSchema" { "library" "server" "windows" "\xA1\x2A\x2A\x2A\x2A\x85\xC0\x75\x2A\xA1\x2A\x2A\x2A\x2A\x56\x68\x2A\x2A\x00\x00\x8B" "linux" "\x55\x89\xE5\x83\xEC\x08\xE8\x2A\x2A\x2A\x2A\xC9\x83\xC0\x04\xC3" "linux64" "\x55\x48\x89\xE5\xE8\x2A\x2A\x2A\x2A\x5D\x48\x83\xC0\x08\xC3" "mac64" "\x55\x48\x89\xE5\x41\x56\x53\x48\x8B\x1D\x2A\x2A\x2A\x2A\x48\x85\xDB\x75" } "RoundRespawn" { "library" "server" "windows" "\x55\x8B\xEC\x83\xEC\x0C\x53\x56\x57\x8B\xF9\x8B\x0D\x2A\x2A\x2A\x2A\x8B\x01" "linux" "\x55\x89\xE5\x57\x56\x53\x83\xEC\x4C\xA1\x2A\x2A\x2A\x2A\x8B\x5D\x08\x89\x04\x24" "linux64" "\x55\x48\x89\xE5\x41\x57\x41\x56\x41\x55\x41\x54\x53\x48\x89\xFB\x48\x83\xEC\x18\x4C\x8B\x25\x85\x17\xB4\x00" "mac64" "\x55\x48\x89\xE5\x41\x57\x41\x56\x41\x54\x53\x48\x83\xEC\x10\x49\x89\xFC\x4C\x8D\x3D\xD7\xB9\x90\x00" } "SwitchTeam" { "library" "server" "windows" "\x55\x8B\xEC\x83\xEC\x10\x53\x56\x8B\x75\x08\x57\x8B\xF9\x85\xF6\x0F\x88\x2A\x2A\x2A\x2A\x3B\x35" "linux" "\x55\x89\xE5\x83\xEC\x68\x89\x75\xF8\x8B\x75\x0C\x89\x5D\xF4\x8B\x5D\x08\x89\x7D\xFC\x89\x34\x24\xE8\x2A\x2A\x2A\x2A\x85\xC0" "linux64" "\x55\x48\x89\xE5\x41\x57\x41\x56\x41\x55\x41\x54\x49\x89\xFC\x89\xF7\x53\x89\xF3" "mac64" "\x55\x48\x89\xE5\x41\x57\x41\x56\x41\x55\x41\x54\x53\x48\x83\xEC\x18\x89\xF3\x49\x89\xFC" } "HandleCommand_Buy_Internal"//Wildcard first 6 bytes for getting address for weapon price. { "library" "server" "windows" "\x2A\x2A\x2A\x2A\x2A\x2A\x83\xEC\x2C\x53\x56\x57\x6A\x01" "linux" "\x2A\x2A\x2A\x2A\x2A\x2A\x0F\xB6\x55\x14\x89\x75\xF8\x8B\x75\x08" "linux64" "\x2A\x2A\x2A\x2A\x2A\x2A\x41\x56\x41\x89\xCE\x41\x55\x49\x89\xD5\x41\x54\x41\x89\xF4" "mac64" "\x2A\x2A\x2A\x2A\x2A\x2A\x41\x56\x41\x55\x41\x54\x53\x48\x83\xEC\x58\x41\x89\xCF\x49\x89\xD4" } "CSWeaponDropBB" //Revert back to using CSWeaponDrop(weapon, bool, bool) { "library" "server" "windows" "\x2A\x2A\x2A\x2A\x2A\x2A\x83\xE4\xF8\x83\xC4\x04\x55\x8B\x6B\x04\x89\x6C\x24\x04\x8B\xEC\x83\xEC\x34\x56" "linux" "\x2A\x2A\x2A\x2A\x2A\x2A\xEC\x70\x8B\x5D\x08\x0F\xB6\x75\x10" "linux64" "\x2A\x2A\x2A\x2A\x2A\x2A\x41\x89\xCE\x41\x55\x41\x89\xD5\x41\x54\x49\x89\xF4" "mac64" "\x2A\x2A\x2A\x2A\x2A\x2A\x41\x56\x41\x54\x53\x48\x83\xEC\x30\x41\x89\xCC\x41\x89\xD7" } "TerminateRound" { "library" "server" "windows" "\x55\x8B\xEC\x83\xE4\xF8\x83\xEC\x2A\x53\x56\x57\x8B\xF9\xF3\x0F\x2A\x2A\x2A\x2A\x89\x2A\x2A\x2A\x83\xBF" "linux" "\x55\x89\xE5\x57\x56\x53\x81\xEC\xBC\x00\x00\x00\x8B\x7D\x08\x8B\x87\xBC\x0B\x00\x00" //"linux64" "\x55\x48\x89\xE5\x41\x57\x41\x56\x49\x89\xFE\x41\x55\x41\x54\x53\x48\x81\xEC\x98\x00\x00\x00\x89\xB5\x68\xFF\xFF\xFF" "mac64" "\x55\x48\x89\xE5\x41\x57\x41\x56\x41\x55\x41\x54\x53\x48\x81\xEC\x08\x01\x00\x00\x41\x89\xF6" } //In CS:GO this is actually CCSGameRules::CheckRestartRound(void) but to keep same gamedata as cs:s. "CheckWinLimit" { "library" "server" "windows" "\x55\x8B\xEC\x83\xE4\xF8\x83\xEC\x2A\x53\x56\x57\x8B\xF9\x8B\x0D\x2A\x2A\x2A\x2A\x81\xF9" "linux" "\x55\x89\xE5\x56\x53\x83\xEC\x70\xA1\x2A\x2A\x2A\x2A\x8B\x35\x2A\x2A\x2A\x2A\x8B" "linux64" "\x55\x48\x89\xE5\x41\x57\x41\x56\x41\x55\x41\x54\x53\x48\x89\xFB\x48\x83\xEC\x58\x64\x48\x8B\x04\x25\x28\x00\x00\x00\x48\x89\x45\xC8\x31\xC0\x4C\x8B\x2D\x46\xD3\xBB\x00" "mac64" "\x55\x48\x89\xE5\x41\x57\x41\x56\x41\x55\x41\x54\x53\x48\x83\xEC\x58\x49\x89\xFD\x48\x8B\x1D\x85\x76\x60\x00" } "SetModelFromClass" { "library" "server" "windows" "\x53\x56\x57\x8B\xF9\x8B\x87\x14\x03\x00\x00" "linux" "\x55\x89\xE5\x83\xEC\x28\x89\x5D\xF4\x8B\x5D\x08\x89\x75\xF8\x89\x7D\xFC\x89\x1C\x24\xE8\x2A\x2A\x2A\x2A\x83\xF8\x02" "linux64" "\x55\x48\x89\xE5\x41\x55\x41\x54\x53\x48\x89\xFB\x48\x83\xEC\x18\xE8\x2A\x2A\x2A\x2A\x83\xF8\x02" "mac64" "\x55\x48\x89\xE5\x41\x57\x41\x56\x41\x54\x53\x49\x89\xFC\xE8\x2A\x2A\x2A\x2A\x83\xF8\x02" } //GetCCSWeaponData Found in HandleCommand_Buy_Internal //Uses an econitemview "GetCCSWeaponData" { "library" "server" "windows" "\x85\xC9\x75\x2A\x33\xC0\xC3\xE8\x2A\x2A\x2A\x2A\x8B" "linux" "\x55\x89\xE5\x83\xEC\x18\x8B\x45\x08\x85\xC0\x74\x2A\x89\x04\x24" "linux64" "\x48\x85\xFF\x74\x2A\x55\x48\x89\xE5\xE8\x2A\x2A\x2A\x2A\x5D\x48\x89\xC7" "mac64" "\x55\x48\x89\xE5\x41\x56\x53\x31\xC0\x48\x85\xFF\x74\x2A\xE8\x2A\x2A\x2A\x2A\x48" } } } "#default" { "Keys" { "AssistsBase" "m_iFrags" } "Offsets" { "Assists" { "windows" "4" "linux" "4" "linux64" "4" "mac64" "4" } } } "#default" { "Keys" { "CScoreBase" "m_bIsHoldingLookAtWeapon" } "Offsets" { "CScore" { "windows" "51‬" "linux" "51‬" "linux64" "51‬" "mac64" "51‬" } } } "#default" { "Keys" { "MVPsBase" "m_bIsHoldingLookAtWeapon" } "Offsets" { "MVPs" { "windows" "11‬" "linux" "11‬" "linux64" "11‬" "mac64" "11‬" } } } // Used for SetClanTag and GetClanTag // to find the ClanTag offset start with the string "ClanTagChanged". Inside the function there is 2 KeyValues::GetString, one for "tag", and one for "name" // The respective function underneath each are SetClanTag and SetClanName. // To get the offset of the base (m_flGroundAccelLinearFracLastTime) unqiue string is "------- accelspeed = %f, flGoalSpeed = %f, flStoredAccel = %f\n" // Inside that function right above the debug message is an if with a call to CBaseEntity::NetworkStateChanged and a member set with the same offset. // Do math. // Note: Second offset can be skipped by simply dumping the netprops instead on each os although the distance will probably be the same on all. "#default" { "Keys" { "ClanTagBase" "m_flGroundAccelLinearFracLastTime" } "Offsets" { "ClanTagSize" { "windows" "16" "linux" "16" "linux64" "16" "mac64" "16" } "ClanTag" { "windows" "140" "linux" "140" "linux64" "140" "mac64" "140" } } } }