1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1.2 +++ b/gamedata/sdktools.games/engine.ep2.txt Mon Jan 12 02:28:22 2009 -0500
1.3 @@ -0,0 +1,257 @@
1.4 +"Games"
1.5 +{
1.6 + /* General Temp Entities */
1.7 + "#default"
1.8 + {
1.9 + "#supported"
1.10 + {
1.11 + "game" "dod"
1.12 + "game" "tf"
1.13 + "game" "ageofchivalry"
1.14 + }
1.15 +
1.16 + "Offsets"
1.17 + {
1.18 + /* Offset into CBaseTempEntity constructor */
1.19 + "s_pTempEntities"
1.20 + {
1.21 + "windows" "17"
1.22 + }
1.23 + "GetTEName"
1.24 + {
1.25 + "windows" "4"
1.26 + "linux" "4"
1.27 + }
1.28 + "GetTENext"
1.29 + {
1.30 + "windows" "8"
1.31 + "linux" "8"
1.32 + }
1.33 + "TE_GetServerClass"
1.34 + {
1.35 + "windows" "0"
1.36 + "linux" "0"
1.37 + }
1.38 + }
1.39 +
1.40 + "Signatures"
1.41 + {
1.42 + "CBaseTempEntity"
1.43 + {
1.44 + "library" "server"
1.45 + "windows" "\x8B\xC1\x8B\x4C\x24\x04\xC7\x00\x2A\x2A\x2A\x2A\x89\x48\x04\x8B\x15\x2A\x2A\x2A\x2A\x89\x50\x08\xA3\x2A\x2A\x2A\x2A\xC2\x04\x00"
1.46 + }
1.47 + "s_pTempEntities"
1.48 + {
1.49 + "library" "server"
1.50 + "linux" "@_ZN15CBaseTempEntity15s_pTempEntitiesE"
1.51 + }
1.52 + }
1.53 + }
1.54 +
1.55 + /* Create Entity Signatures */
1.56 + "#default"
1.57 + {
1.58 + "#supported"
1.59 + {
1.60 + "game" "dod"
1.61 + "game" "tf"
1.62 + "game" "ageofchivalry"
1.63 + }
1.64 +
1.65 + "Signatures"
1.66 + {
1.67 + "DispatchSpawn"
1.68 + {
1.69 + "library" "server"
1.70 + "linux" "@_Z13DispatchSpawnP11CBaseEntity"
1.71 + "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"
1.72 + }
1.73 + "CreateEntityByName"
1.74 + {
1.75 + "library" "server"
1.76 + "linux" "@_Z18CreateEntityByNamePKci"
1.77 + "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"
1.78 + }
1.79 + }
1.80 + }
1.81 +
1.82 + /* CGlobalEntityList */
1.83 + "#default"
1.84 + {
1.85 + "#supported"
1.86 + {
1.87 + "game" "dod"
1.88 + "game" "tf"
1.89 + "game" "ageofchivalry"
1.90 + }
1.91 +
1.92 + "Offsets"
1.93 + {
1.94 + /* Offset into LevelShutdown */
1.95 + "gEntList"
1.96 + {
1.97 + "windows" "11"
1.98 + }
1.99 + }
1.100 +
1.101 + "Signatures"
1.102 + {
1.103 + "LevelShutdown"
1.104 + {
1.105 + "library" "server"
1.106 + "windows" "\xE8\x2A\x2A\x2A\x2A\xE8\x2A\x2A\x2A\x2A\xB9\x2A\x2A\x2A\x2A\xE8\x2A\x2A\x2A\x2A\xE8"
1.107 + }
1.108 + "gEntList"
1.109 + {
1.110 + "library" "server"
1.111 + "linux" "@gEntList"
1.112 + }
1.113 +
1.114 + /* Functions in CGlobalEntityList */
1.115 + "FindEntityByClassname"
1.116 + {
1.117 + "library" "server"
1.118 + "windows" "\x53\x55\x56\x8B\xF1\x8B\x4C\x24\x10\x85\xC9\x57\x74\x19\x8B\x01\x8B\x50\x08\xFF\xD2\x8B\x00\x25\xFF\x0F\x00\x00\x83\xC0\x01\xC1\xE0\x04\x8B\x3C\x30\xEB\x06\x8B\xBE\x2A\x2A\x2A\x2A\x85\xFF\x74\x39\x8B\x5C\x24\x18\x8B\x2D\x2A\x2A\x2A\x2A\xEB\x03"
1.119 + "linux" "@_ZN17CGlobalEntityList21FindEntityByClassnameEP11CBaseEntityPKc"
1.120 + }
1.121 + }
1.122 + }
1.123 +
1.124 + /* General GameRules */
1.125 + "#default"
1.126 + {
1.127 + "#supported"
1.128 + {
1.129 + "game" "dod"
1.130 + "game" "tf"
1.131 + "game" "ageofchivalry"
1.132 + }
1.133 +
1.134 + "Offsets"
1.135 + {
1.136 + /* Offset into CreateGameRulesObject */
1.137 + "g_pGameRules"
1.138 + {
1.139 + "windows" "2"
1.140 + }
1.141 + }
1.142 +
1.143 + "Signatures"
1.144 + {
1.145 + /* This signature sometimes has multiple matches, but this
1.146 + * does not matter as g_pGameRules is involved in all of them.
1.147 + * The same g_pGameRules offset applies to each match.
1.148 + *
1.149 + * Sometimes this block of bytes is at the beginning of the static
1.150 + * CreateGameRulesObject function and sometimes it is in the middle
1.151 + * of an entirely different function. This depends on the game.
1.152 + */
1.153 + "CreateGameRulesObject"
1.154 + {
1.155 + "library" "server"
1.156 + "windows" "\x8B\x0D\x2A\x2A\x2A\x2A\x85\xC9\x74\x2A\x8B\x01\x8B\x50\x2A\x6A\x01\xFF\xD2"
1.157 + }
1.158 + "g_pGameRules"
1.159 + {
1.160 + "library" "server"
1.161 + "linux" "@g_pGameRules"
1.162 + }
1.163 + }
1.164 + }
1.165 +
1.166 + /* IServer interface pointer */
1.167 + "#default"
1.168 + {
1.169 + "Offsets"
1.170 + {
1.171 + /* Offset into IVEngineServer::CreateFakeClient */
1.172 + "sv"
1.173 + {
1.174 + "windows" "6"
1.175 + }
1.176 + }
1.177 +
1.178 + "Signatures"
1.179 + {
1.180 + /* CBaseServer object for IServer interface */
1.181 + "sv"
1.182 + {
1.183 + "library" "engine"
1.184 + "linux" "@sv"
1.185 + }
1.186 + }
1.187 + }
1.188 +
1.189 + /* EntityFactoryDictionary function */
1.190 + "#default"
1.191 + {
1.192 + "Signatures"
1.193 + {
1.194 + "EntityFactory"
1.195 + {
1.196 + "library" "server"
1.197 + "windows" "\xB8\x01\x00\x00\x00\x84\x2A\x2A\x2A\x2A\x2A\x75\x1D\x09\x2A\x2A\x2A\x2A\x2A\xB9\x2A\x2A\x2A\x2A\xE8\x2A\x2A\x2A\x2A\x68\x2A\x2A\x2A\x2A\xE8\x2A\x2A\x2A\x2A\x83\xC4\x04\xB8\x2A\x2A\x2A\x2A\xC3"
1.198 + "linux" "@_Z23EntityFactoryDictionaryv"
1.199 + }
1.200 + }
1.201 + }
1.202 +
1.203 + /* CBaseEntityOutput::FireOutput */
1.204 + "#default"
1.205 + {
1.206 + "#supported"
1.207 + {
1.208 + "game" "dod"
1.209 + "game" "tf"
1.210 + "game" "ageofchivalry"
1.211 + }
1.212 + "Signatures"
1.213 + {
1.214 + "FireOutput"
1.215 + {
1.216 + "library" "server"
1.217 + "windows" "\x81\xEC\x1C\x01\x00\x00\x53\x55\x56\x8B\x71\x14\x85\xF6"
1.218 + "linux" "@_ZN17CBaseEntityOutput10FireOutputE9variant_tP11CBaseEntityS2_f"
1.219 + }
1.220 + }
1.221 + "Offsets"
1.222 + {
1.223 + "FireOutputBackup"
1.224 + {
1.225 + "windows" "6"
1.226 + "linux" "10"
1.227 + }
1.228 + }
1.229 + }
1.230 +
1.231 + /* SetUserInfo data */
1.232 + "#default"
1.233 + {
1.234 + "Offsets"
1.235 + {
1.236 + /**
1.237 + * CBaseClient::SetUserCVar(char const*,char const*);
1.238 + * Linux offset straight from VTable dump.
1.239 + * Windows offset is crazy. Found the windows 'SetName' function using string "(%d)%-0.*s"
1.240 + * Cross referenced back to the vtable and counted manually (SetUserCvar is 1 higher, offsets start from 1)
1.241 + */
1.242 + "SetUserCvar"
1.243 + {
1.244 + "windows" "17"
1.245 + "linux" "55"
1.246 + }
1.247 + /**
1.248 + * Offset into CBaseClient - Used by CBaseServer::UpdateUserSettings to determine when changes have been made.
1.249 + * Find CBaseClient::UpdateUserSettings (strings "net_maxroutable", "cl_updaterate" etc) and the offset is set to 0 near the end.
1.250 + * Linux: mov byte ptr [esi+98h], 0
1.251 + * Win: mov byte ptr [esi+0A4h], 0
1.252 + */
1.253 + "InfoChanged"
1.254 + {
1.255 + "windows" "164"
1.256 + "linux" "152"
1.257 + }
1.258 + }
1.259 + }
1.260 +}