1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1.2 +++ b/gamedata/sdktools.games/engine.darkm.txt Wed Feb 18 02:19:22 2009 -0600
1.3 @@ -0,0 +1,322 @@
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 +}