1.1 --- a/gamedata/sdktools.games/engine.darkm.txt Wed Apr 01 04:34:01 2009 -0700
1.2 +++ b/gamedata/sdktools.games/engine.darkm.txt Tue Apr 07 09:59:21 2009 -0700
1.3 @@ -1,322 +1,333 @@
1.4 -"Games"
1.5 -{
1.6 - /* Sounds */
1.7 - "#default"
1.8 - {
1.9 - "Keys"
1.10 - {
1.11 - "SlapSoundCount" "3"
1.12 - "SlapSound1" "default/player/sword_on_flesh_std01.wav"
1.13 - "SlapSound2" "default/player/sword_on_flesh_std05.wav"
1.14 - "SlapSound3" "default/player/bone_breaking03.wav"
1.15 - }
1.16 - }
1.17 -
1.18 - /* Properties */
1.19 - "#default"
1.20 - {
1.21 - "Offsets"
1.22 - {
1.23 - "m_iHealth"
1.24 - {
1.25 - "class" "CBasePlayer"
1.26 - "prop" "m_fHealth"
1.27 - }
1.28 - }
1.29 - }
1.30 -
1.31 - /* General Temp Entities */
1.32 - "#default"
1.33 - {
1.34 - "#supported"
1.35 - {
1.36 - "game" "!Might and Magic Multiplayer"
1.37 - }
1.38 -
1.39 - "Offsets"
1.40 - {
1.41 - /* Offset into CBaseTempEntity constructor */
1.42 - "s_pTempEntities"
1.43 - {
1.44 - "windows" "17"
1.45 - }
1.46 - "GetTEName"
1.47 - {
1.48 - "windows" "4"
1.49 - }
1.50 - "GetTENext"
1.51 - {
1.52 - "windows" "8"
1.53 - }
1.54 - "TE_GetServerClass"
1.55 - {
1.56 - "windows" "0"
1.57 - }
1.58 - }
1.59 -
1.60 - "Signatures"
1.61 - {
1.62 - "CBaseTempEntity"
1.63 - {
1.64 - "library" "server"
1.65 - "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.66 - }
1.67 - }
1.68 - }
1.69 -
1.70 - /* Create Entity Signatures */
1.71 - "#default"
1.72 - {
1.73 - "#supported"
1.74 - {
1.75 - "game" "!Might and Magic Multiplayer"
1.76 - }
1.77 -
1.78 - "Signatures"
1.79 - {
1.80 - "DispatchSpawn"
1.81 - {
1.82 - "library" "server"
1.83 - "windows" "\x53\x56\x8B\x74\x24\x0C\x85\xF6\x57\x0F\x84\x2A\x2A\x2A\x2A\x8B\x1D\x2A\x2A\x2A\x2A\x8B\x03\x8B\xCB\xFF\x50\x60\x8B\x16"
1.84 - }
1.85 - "CreateEntityByName"
1.86 - {
1.87 - "library" "server"
1.88 - "windows" "\x56\x8B\x74\x24\x0C\x83\xFE\xFF\x57\x8B\x7C\x24\x0C\x74\x25\x8B\x0D\x2A\x2A\x2A\x2A\x8B\x01\x56\xFF\x50\x2A\x85\xC0"
1.89 - }
1.90 - }
1.91 - }
1.92 -
1.93 - /* CGlobalEntityList */
1.94 - "#default"
1.95 - {
1.96 - "#supported"
1.97 - {
1.98 - "game" "!Might and Magic Multiplayer"
1.99 - }
1.100 -
1.101 - "Offsets"
1.102 - {
1.103 - /* Offset into LevelShutdown */
1.104 - "gEntList"
1.105 - {
1.106 - "windows" "11"
1.107 - }
1.108 - }
1.109 -
1.110 - "Signatures"
1.111 - {
1.112 - "LevelShutdown"
1.113 - {
1.114 - "library" "server"
1.115 - "windows" "\xE8\x2A\x2A\x2A\x2A\xE8\x2A\x2A\x2A\x2A\xB9\x2A\x2A\x2A\x2A\xE8\x2A\x2A\x2A\x2A\xE8"
1.116 - }
1.117 -
1.118 - /* Functions in CGlobalEntityList */
1.119 - "FindEntityByClassname"
1.120 - {
1.121 - "library" "server"
1.122 - "windows" "\x53\x55\x56\x8B\xF1\x8B\x4C\x24\x10\x85\xC9\x57\x74\x18\x8B\x01\xFF\x50\x08\x8B\x08\x81\xE1\xFF\x0F\x00\x00\x83\xC1\x01\xC1\xE1\x04\x8B\x3C\x31\xEB\x06\x8B\xBE\x2A\x2A\x2A\x2A\x85\xFF\x74\x3A\x8B\x5C\x24\x18\x8B\x2D\x2A\x2A\x2A\x2A\x8D"
1.123 - }
1.124 - }
1.125 - }
1.126 -
1.127 - /* General GameRules */
1.128 - "#default"
1.129 - {
1.130 - "#supported"
1.131 - {
1.132 - "game" "!Might and Magic Multiplayer"
1.133 - }
1.134 -
1.135 - "Offsets"
1.136 - {
1.137 - /* Offset into CreateGameRulesObject */
1.138 - "g_pGameRules"
1.139 - {
1.140 - "windows" "2"
1.141 - }
1.142 - }
1.143 -
1.144 - "Signatures"
1.145 - {
1.146 - /* This signature sometimes has multiple matches, but this
1.147 - * does not matter as g_pGameRules is involved in all of them.
1.148 - * The same g_pGameRules offset applies to each match.
1.149 - *
1.150 - * Sometimes this block of bytes is at the beginning of the static
1.151 - * CreateGameRulesObject function and sometimes it is in the middle
1.152 - * of an entirely different function. This depends on the game.
1.153 - */
1.154 - "CreateGameRulesObject"
1.155 - {
1.156 - "library" "server"
1.157 - "windows" "\x8B\x0D\x2A\x2A\x2A\x2A\x85\xC9\x74\x2A\x8B\x01\x6A\x01\xFF\x50"
1.158 - }
1.159 - }
1.160 - }
1.161 -
1.162 - /* IServer interface pointer */
1.163 - "#default"
1.164 - {
1.165 - "Keys"
1.166 - {
1.167 - /* Signature for the beginning of IVEngineServer::CreateFakeClient.
1.168 - *
1.169 - * The engine binary is not actually scanned in order to look for
1.170 - * this. SourceHook is used to used to determine the address of the
1.171 - * function and this signature is used to verify that it contains
1.172 - * the expected code. A pointer to sv (IServer interface) is used
1.173 - * here.
1.174 - */
1.175 - "CreateFakeClient_Windows" "\x8B\x44\x24\x2A\x50\xB9\x2A\x2A\x2A\x2A\xE8"
1.176 - }
1.177 -
1.178 - "Offsets"
1.179 - {
1.180 - /* Offset into IVEngineServer::CreateFakeClient */
1.181 - "sv"
1.182 - {
1.183 - "windows" "6"
1.184 - }
1.185 - }
1.186 - }
1.187 -
1.188 - /* EntityFactoryDictionary function */
1.189 - "#default"
1.190 - {
1.191 - "Signatures"
1.192 - {
1.193 - "EntityFactory"
1.194 - {
1.195 - "library" "server"
1.196 - "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.197 - }
1.198 - }
1.199 - }
1.200 -
1.201 - /* CBaseEntityOutput::FireOutput */
1.202 - "#default"
1.203 - {
1.204 - "#supported"
1.205 - {
1.206 - "game" "!Might and Magic Multiplayer"
1.207 - }
1.208 - "Signatures"
1.209 - {
1.210 - "FireOutput"
1.211 - {
1.212 - "library" "server"
1.213 - "windows" "\x83\xEC\x1C\x53\x55\x56\x8B\x71\x14"
1.214 - "linux" "@_ZN17CBaseEntityOutput10FireOutputE9variant_tP11CBaseEntityS2_f"
1.215 - }
1.216 - }
1.217 - "Offsets"
1.218 - {
1.219 - "FireOutputBackup"
1.220 - {
1.221 - "windows" "6"
1.222 - }
1.223 - }
1.224 - }
1.225 -
1.226 - /* SetUserInfo data */
1.227 - "#default"
1.228 - {
1.229 - "Offsets"
1.230 - {
1.231 - /**
1.232 - * CBaseClient::SetUserCVar(char const*,char const*);
1.233 - * Linux offset straight from VTable dump.
1.234 - * Windows offset is crazy. Found the windows 'SetName' function using string "(%d)%-0.*s"
1.235 - * Cross referenced back to the vtable and counted manually (SetUserCvar is 1 higher, offsets start from 1)
1.236 - */
1.237 - "SetUserCvar"
1.238 - {
1.239 - "windows" "17"
1.240 - }
1.241 -
1.242 - "UpdateUserSettings"
1.243 - {
1.244 - "windows" "7"
1.245 - }
1.246 - }
1.247 - }
1.248 -
1.249 - /* Dark Messiah */
1.250 - "!Might and Magic Multiplayer"
1.251 - {
1.252 - "Offsets"
1.253 - {
1.254 - "GiveNamedItem"
1.255 - {
1.256 - "windows" "309"
1.257 - }
1.258 - "RemovePlayerItem"
1.259 - {
1.260 - "windows" "210"
1.261 - }
1.262 - "Weapon_GetSlot"
1.263 - {
1.264 - "windows" "208"
1.265 - }
1.266 - "Ignite"
1.267 - {
1.268 - "windows" "172"
1.269 - }
1.270 - "Extinguish"
1.271 - {
1.272 - "windows" "173"
1.273 - }
1.274 - "Teleport"
1.275 - {
1.276 - "windows" "92"
1.277 - }
1.278 - "GetVelocity"
1.279 - {
1.280 - "windows" "115"
1.281 - }
1.282 - "EyeAngles"
1.283 - {
1.284 - "windows" "107"
1.285 - }
1.286 - "AcceptInput"
1.287 - {
1.288 - "windows" "34"
1.289 - }
1.290 - "DispatchKeyValue"
1.291 - {
1.292 - "windows" "30"
1.293 - }
1.294 - "DispatchKeyValueFloat"
1.295 - {
1.296 - "windows" "29"
1.297 - }
1.298 - "DispatchKeyValueVector"
1.299 - {
1.300 - "windows" "28"
1.301 - }
1.302 - "SetEntityModel"
1.303 - {
1.304 - "windows" "25"
1.305 - }
1.306 - "WeaponEquip"
1.307 - {
1.308 - "windows" "202"
1.309 - }
1.310 - "Activate"
1.311 - {
1.312 - "windows" "32"
1.313 - }
1.314 - }
1.315 -
1.316 - "Signatures"
1.317 - {
1.318 - "CommitSuicide"
1.319 - {
1.320 - "library" "server"
1.321 - "windows" "\x83\xEC\x44\x56\x8B\xF1\x8B\x8E\x2A\x00\x00\x00\x85\xC9"
1.322 - }
1.323 - }
1.324 - }
1.325 -}
1.326 +/**
1.327 + * Do not edit this file. Any changes will be overwritten by the gamedata
1.328 + * updater or by upgrading your SourceMod install.
1.329 + *
1.330 + * To override data in this file, create a subdirectory named "custom" and
1.331 + * place your own gamedata file(s) inside of it. Such files will be parsed
1.332 + * after SM's own.
1.333 + *
1.334 + * For more information, see http://wiki.alliedmods.net/Gamedata_Updating_(SourceMod)
1.335 + */
1.336 +
1.337 +"Games"
1.338 +{
1.339 + /* Sounds */
1.340 + "#default"
1.341 + {
1.342 + "Keys"
1.343 + {
1.344 + "SlapSoundCount" "3"
1.345 + "SlapSound1" "default/player/sword_on_flesh_std01.wav"
1.346 + "SlapSound2" "default/player/sword_on_flesh_std05.wav"
1.347 + "SlapSound3" "default/player/bone_breaking03.wav"
1.348 + }
1.349 + }
1.350 +
1.351 + /* Properties */
1.352 + "#default"
1.353 + {
1.354 + "Offsets"
1.355 + {
1.356 + "m_iHealth"
1.357 + {
1.358 + "class" "CBasePlayer"
1.359 + "prop" "m_fHealth"
1.360 + }
1.361 + }
1.362 + }
1.363 +
1.364 + /* General Temp Entities */
1.365 + "#default"
1.366 + {
1.367 + "#supported"
1.368 + {
1.369 + "game" "!Might and Magic Multiplayer"
1.370 + }
1.371 +
1.372 + "Offsets"
1.373 + {
1.374 + /* Offset into CBaseTempEntity constructor */
1.375 + "s_pTempEntities"
1.376 + {
1.377 + "windows" "17"
1.378 + }
1.379 + "GetTEName"
1.380 + {
1.381 + "windows" "4"
1.382 + }
1.383 + "GetTENext"
1.384 + {
1.385 + "windows" "8"
1.386 + }
1.387 + "TE_GetServerClass"
1.388 + {
1.389 + "windows" "0"
1.390 + }
1.391 + }
1.392 +
1.393 + "Signatures"
1.394 + {
1.395 + "CBaseTempEntity"
1.396 + {
1.397 + "library" "server"
1.398 + "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.399 + }
1.400 + }
1.401 + }
1.402 +
1.403 + /* Create Entity Signatures */
1.404 + "#default"
1.405 + {
1.406 + "#supported"
1.407 + {
1.408 + "game" "!Might and Magic Multiplayer"
1.409 + }
1.410 +
1.411 + "Signatures"
1.412 + {
1.413 + "DispatchSpawn"
1.414 + {
1.415 + "library" "server"
1.416 + "windows" "\x53\x56\x8B\x74\x24\x0C\x85\xF6\x57\x0F\x84\x2A\x2A\x2A\x2A\x8B\x1D\x2A\x2A\x2A\x2A\x8B\x03\x8B\xCB\xFF\x50\x60\x8B\x16"
1.417 + }
1.418 + "CreateEntityByName"
1.419 + {
1.420 + "library" "server"
1.421 + "windows" "\x56\x8B\x74\x24\x0C\x83\xFE\xFF\x57\x8B\x7C\x24\x0C\x74\x25\x8B\x0D\x2A\x2A\x2A\x2A\x8B\x01\x56\xFF\x50\x2A\x85\xC0"
1.422 + }
1.423 + }
1.424 + }
1.425 +
1.426 + /* CGlobalEntityList */
1.427 + "#default"
1.428 + {
1.429 + "#supported"
1.430 + {
1.431 + "game" "!Might and Magic Multiplayer"
1.432 + }
1.433 +
1.434 + "Offsets"
1.435 + {
1.436 + /* Offset into LevelShutdown */
1.437 + "gEntList"
1.438 + {
1.439 + "windows" "11"
1.440 + }
1.441 + }
1.442 +
1.443 + "Signatures"
1.444 + {
1.445 + "LevelShutdown"
1.446 + {
1.447 + "library" "server"
1.448 + "windows" "\xE8\x2A\x2A\x2A\x2A\xE8\x2A\x2A\x2A\x2A\xB9\x2A\x2A\x2A\x2A\xE8\x2A\x2A\x2A\x2A\xE8"
1.449 + }
1.450 +
1.451 + /* Functions in CGlobalEntityList */
1.452 + "FindEntityByClassname"
1.453 + {
1.454 + "library" "server"
1.455 + "windows" "\x53\x55\x56\x8B\xF1\x8B\x4C\x24\x10\x85\xC9\x57\x74\x18\x8B\x01\xFF\x50\x08\x8B\x08\x81\xE1\xFF\x0F\x00\x00\x83\xC1\x01\xC1\xE1\x04\x8B\x3C\x31\xEB\x06\x8B\xBE\x2A\x2A\x2A\x2A\x85\xFF\x74\x3A\x8B\x5C\x24\x18\x8B\x2D\x2A\x2A\x2A\x2A\x8D"
1.456 + }
1.457 + }
1.458 + }
1.459 +
1.460 + /* General GameRules */
1.461 + "#default"
1.462 + {
1.463 + "#supported"
1.464 + {
1.465 + "game" "!Might and Magic Multiplayer"
1.466 + }
1.467 +
1.468 + "Offsets"
1.469 + {
1.470 + /* Offset into CreateGameRulesObject */
1.471 + "g_pGameRules"
1.472 + {
1.473 + "windows" "2"
1.474 + }
1.475 + }
1.476 +
1.477 + "Signatures"
1.478 + {
1.479 + /* This signature sometimes has multiple matches, but this
1.480 + * does not matter as g_pGameRules is involved in all of them.
1.481 + * The same g_pGameRules offset applies to each match.
1.482 + *
1.483 + * Sometimes this block of bytes is at the beginning of the static
1.484 + * CreateGameRulesObject function and sometimes it is in the middle
1.485 + * of an entirely different function. This depends on the game.
1.486 + */
1.487 + "CreateGameRulesObject"
1.488 + {
1.489 + "library" "server"
1.490 + "windows" "\x8B\x0D\x2A\x2A\x2A\x2A\x85\xC9\x74\x2A\x8B\x01\x6A\x01\xFF\x50"
1.491 + }
1.492 + }
1.493 + }
1.494 +
1.495 + /* IServer interface pointer */
1.496 + "#default"
1.497 + {
1.498 + "Keys"
1.499 + {
1.500 + /* Signature for the beginning of IVEngineServer::CreateFakeClient.
1.501 + *
1.502 + * The engine binary is not actually scanned in order to look for
1.503 + * this. SourceHook is used to used to determine the address of the
1.504 + * function and this signature is used to verify that it contains
1.505 + * the expected code. A pointer to sv (IServer interface) is used
1.506 + * here.
1.507 + */
1.508 + "CreateFakeClient_Windows" "\x8B\x44\x24\x2A\x50\xB9\x2A\x2A\x2A\x2A\xE8"
1.509 + }
1.510 +
1.511 + "Offsets"
1.512 + {
1.513 + /* Offset into IVEngineServer::CreateFakeClient */
1.514 + "sv"
1.515 + {
1.516 + "windows" "6"
1.517 + }
1.518 + }
1.519 + }
1.520 +
1.521 + /* EntityFactoryDictionary function */
1.522 + "#default"
1.523 + {
1.524 + "Signatures"
1.525 + {
1.526 + "EntityFactory"
1.527 + {
1.528 + "library" "server"
1.529 + "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.530 + }
1.531 + }
1.532 + }
1.533 +
1.534 + /* CBaseEntityOutput::FireOutput */
1.535 + "#default"
1.536 + {
1.537 + "#supported"
1.538 + {
1.539 + "game" "!Might and Magic Multiplayer"
1.540 + }
1.541 + "Signatures"
1.542 + {
1.543 + "FireOutput"
1.544 + {
1.545 + "library" "server"
1.546 + "windows" "\x83\xEC\x1C\x53\x55\x56\x8B\x71\x14"
1.547 + "linux" "@_ZN17CBaseEntityOutput10FireOutputE9variant_tP11CBaseEntityS2_f"
1.548 + }
1.549 + }
1.550 + "Offsets"
1.551 + {
1.552 + "FireOutputBackup"
1.553 + {
1.554 + "windows" "6"
1.555 + }
1.556 + }
1.557 + }
1.558 +
1.559 + /* SetUserInfo data */
1.560 + "#default"
1.561 + {
1.562 + "Offsets"
1.563 + {
1.564 + /**
1.565 + * CBaseClient::SetUserCVar(char const*,char const*);
1.566 + * Linux offset straight from VTable dump.
1.567 + * Windows offset is crazy. Found the windows 'SetName' function using string "(%d)%-0.*s"
1.568 + * Cross referenced back to the vtable and counted manually (SetUserCvar is 1 higher, offsets start from 1)
1.569 + */
1.570 + "SetUserCvar"
1.571 + {
1.572 + "windows" "17"
1.573 + }
1.574 +
1.575 + "UpdateUserSettings"
1.576 + {
1.577 + "windows" "7"
1.578 + }
1.579 + }
1.580 + }
1.581 +
1.582 + /* Dark Messiah */
1.583 + "!Might and Magic Multiplayer"
1.584 + {
1.585 + "Offsets"
1.586 + {
1.587 + "GiveNamedItem"
1.588 + {
1.589 + "windows" "309"
1.590 + }
1.591 + "RemovePlayerItem"
1.592 + {
1.593 + "windows" "210"
1.594 + }
1.595 + "Weapon_GetSlot"
1.596 + {
1.597 + "windows" "208"
1.598 + }
1.599 + "Ignite"
1.600 + {
1.601 + "windows" "172"
1.602 + }
1.603 + "Extinguish"
1.604 + {
1.605 + "windows" "173"
1.606 + }
1.607 + "Teleport"
1.608 + {
1.609 + "windows" "92"
1.610 + }
1.611 + "GetVelocity"
1.612 + {
1.613 + "windows" "115"
1.614 + }
1.615 + "EyeAngles"
1.616 + {
1.617 + "windows" "107"
1.618 + }
1.619 + "AcceptInput"
1.620 + {
1.621 + "windows" "34"
1.622 + }
1.623 + "DispatchKeyValue"
1.624 + {
1.625 + "windows" "30"
1.626 + }
1.627 + "DispatchKeyValueFloat"
1.628 + {
1.629 + "windows" "29"
1.630 + }
1.631 + "DispatchKeyValueVector"
1.632 + {
1.633 + "windows" "28"
1.634 + }
1.635 + "SetEntityModel"
1.636 + {
1.637 + "windows" "25"
1.638 + }
1.639 + "WeaponEquip"
1.640 + {
1.641 + "windows" "202"
1.642 + }
1.643 + "Activate"
1.644 + {
1.645 + "windows" "32"
1.646 + }
1.647 + }
1.648 +
1.649 + "Signatures"
1.650 + {
1.651 + "CommitSuicide"
1.652 + {
1.653 + "library" "server"
1.654 + "windows" "\x83\xEC\x44\x56\x8B\xF1\x8B\x8E\x2A\x00\x00\x00\x85\xC9"
1.655 + }
1.656 + }
1.657 + }
1.658 +}