1.1 --- a/gamedata/sdktools.games.txt Sun Jul 08 09:34:20 2007 +0000
1.2 +++ b/gamedata/sdktools.games.txt Sun Jul 08 09:46:27 2007 +0000
1.3 @@ -8,9 +8,9 @@
1.4 "game" "cstrike"
1.5 "game" "dod"
1.6 "game" "hl2mp"
1.7 - "game" "insurgency"
1.8 - "game" "dystopia_v1"
1.9 - "game" "sourceforts"
1.10 + "game" "!Dystopia"
1.11 + "game" "!Insurgency"
1.12 + "game" "!SourceForts v1.9.2"
1.13 }
1.14
1.15 "Offsets"
1.16 @@ -48,41 +48,50 @@
1.17 }
1.18 }
1.19 }
1.20 -
1.21 - /* HL2MP */
1.22 - "hl2mp"
1.23 +
1.24 + /* General GameRules */
1.25 + "#default"
1.26 {
1.27 + "#supported"
1.28 + {
1.29 + "game" "cstrike"
1.30 + "game" "dod"
1.31 + "game" "garrysmod"
1.32 + "game" "hl2mp"
1.33 + "game" "ship"
1.34 + "game" "!Dystopia"
1.35 + "game" "!Insurgency"
1.36 + "game" "!SourceForts v1.9.2"
1.37 + }
1.38 +
1.39 "Offsets"
1.40 {
1.41 - "GiveNamedItem"
1.42 - {
1.43 - "windows" "327"
1.44 - "linux" "328"
1.45 - }
1.46 - "RemovePlayerItem"
1.47 + /* Offset into CreateGameRulesObject */
1.48 + "g_pGameRules"
1.49 {
1.50 - "windows" "225"
1.51 - "linux" "226"
1.52 - }
1.53 - "Weapon_GetSlot"
1.54 - {
1.55 - "windows" "223"
1.56 - "linux" "224"
1.57 + "windows" "2"
1.58 }
1.59 - "Ignite"
1.60 - {
1.61 - "windows" "187"
1.62 - "linux" "188"
1.63 - }
1.64 - "Extinguish"
1.65 + }
1.66 +
1.67 + "Signatures"
1.68 + {
1.69 + /* This signature sometimes has multiple matches, but this
1.70 + * does not matter as g_pGameRules is involved in all of them.
1.71 + * The same g_pGameRules offset applies to each match.
1.72 + *
1.73 + * Sometimes this block of bytes is at the beginning of the static
1.74 + * CreateGameRulesObject function and sometimes it is in the middle
1.75 + * of an entirely different function. This depends on the game.
1.76 + */
1.77 + "CreateGameRulesObject"
1.78 {
1.79 - "windows" "188"
1.80 - "linux" "189"
1.81 + "library" "server"
1.82 + "windows" "\x8B\x0D\x2A\x2A\x2A\x2A\x85\xC9\x74\x2A\x8B\x01\x6A\x01\xFF\x50"
1.83 }
1.84 - "Teleport"
1.85 + "g_pGameRules"
1.86 {
1.87 - "windows" "97"
1.88 - "linux" "98"
1.89 + "library" "server"
1.90 + "linux" "@g_pGameRules"
1.91 }
1.92 }
1.93 }
1.94 @@ -162,91 +171,47 @@
1.95 }
1.96 }
1.97 }
1.98 -
1.99 - /* Insurgency */
1.100 - "insurgency"
1.101 - {
1.102 - "Offsets"
1.103 - {
1.104 - /* CBasePlayer */
1.105 - "Ignite"
1.106 - {
1.107 - "windows" "174"
1.108 - "linux" "175"
1.109 - }
1.110 - "Extinguish"
1.111 - {
1.112 - "windows" "175"
1.113 - "linux" "176"
1.114 - }
1.115 - "Teleport"
1.116 - {
1.117 - "windows" "90"
1.118 - "linux" "91"
1.119 - }
1.120 -
1.121 - /* Temp Entities */
1.122 - "s_pTempEntities"
1.123 - {
1.124 - "linux" "28"
1.125 - }
1.126 - }
1.127 - }
1.128 -
1.129 - /* SourceForts 1.9.2
1.130 - * :TODO: use description instead...
1.131 - */
1.132 - "sourceforts"
1.133 +
1.134 + /* Half-Life 2: Deathmatch */
1.135 + "hl2mp"
1.136 {
1.137 "Offsets"
1.138 {
1.139 - /* CBasePlayer */
1.140 "GiveNamedItem"
1.141 {
1.142 - "windows" "294"
1.143 - "linux" "295"
1.144 + "windows" "327"
1.145 + "linux" "328"
1.146 }
1.147 "RemovePlayerItem"
1.148 {
1.149 - "windows" "207"
1.150 - "linux" "208"
1.151 + "windows" "225"
1.152 + "linux" "226"
1.153 }
1.154 "Weapon_GetSlot"
1.155 {
1.156 - "windows" "205"
1.157 - "linux" "206"
1.158 + "windows" "223"
1.159 + "linux" "224"
1.160 }
1.161 "Ignite"
1.162 {
1.163 - "windows" "170"
1.164 - "linux" "171"
1.165 + "windows" "187"
1.166 + "linux" "188"
1.167 }
1.168 "Extinguish"
1.169 {
1.170 - "windows" "171"
1.171 - "linux" "172"
1.172 + "windows" "188"
1.173 + "linux" "189"
1.174 }
1.175 "Teleport"
1.176 {
1.177 - "windows" "90"
1.178 - "linux" "91"
1.179 - }
1.180 -
1.181 - /* Temp Entities */
1.182 - "s_pTempEntities"
1.183 - {
1.184 - "linux" "29"
1.185 - }
1.186 - "TE_GetServerClass"
1.187 - {
1.188 - "windows" "0"
1.189 - "linux" "0"
1.190 + "windows" "97"
1.191 + "linux" "98"
1.192 }
1.193 }
1.194 }
1.195 -
1.196 +
1.197 /* Dsytopia */
1.198 - "dystopia_v1"
1.199 + "!Dystopia"
1.200 {
1.201
1.202 "Offsets"
1.203 @@ -304,6 +269,98 @@
1.204 "library" "server"
1.205 "windows" "\x81\xEC\x84\x00\x00\x00\x56\x8B\xF1\x8B\x46\x6C\x57\x8D\x7E\x6C\x8D\x4C\x24\x08\x83\xC8\x20\x51\x89\x44\x24\x0C\xE8\x2A\x2A\x2A"
1.206 }
1.207 +
1.208 + /* Dystopia always has to be different, doesn't it
1.209 + *
1.210 + * This is very similar to the general signature, except that
1.211 + * it does "mov edx, [eax+2Ch]" before making a call rather than
1.212 + * doing "call dword ptr [eax+2Ch]"
1.213 + */
1.214 + "CreateGameRulesObject"
1.215 + {
1.216 + "library" "server"
1.217 + "windows" "\x8B\x0D\x2A\x2A\x2A\x2A\x85\xC9\x74\x2A\x8B\x01\x8B\x50\x2A\x6A\x01\xFF\xD2"
1.218 + }
1.219 + }
1.220 + }
1.221 +
1.222 + /* Insurgency */
1.223 + "!Insurgency"
1.224 + {
1.225 + "Offsets"
1.226 + {
1.227 + /* CBasePlayer */
1.228 + "Ignite"
1.229 + {
1.230 + "windows" "174"
1.231 + "linux" "175"
1.232 + }
1.233 + "Extinguish"
1.234 + {
1.235 + "windows" "175"
1.236 + "linux" "176"
1.237 + }
1.238 + "Teleport"
1.239 + {
1.240 + "windows" "90"
1.241 + "linux" "91"
1.242 + }
1.243 +
1.244 + /* Temp Entities */
1.245 + "s_pTempEntities"
1.246 + {
1.247 + "linux" "28"
1.248 + }
1.249 + }
1.250 + }
1.251 +
1.252 + /* SourceForts 1.9.2 */
1.253 + "!SourceForts v1.9.2"
1.254 + {
1.255 + "Offsets"
1.256 + {
1.257 + /* CBasePlayer */
1.258 + "GiveNamedItem"
1.259 + {
1.260 + "windows" "294"
1.261 + "linux" "295"
1.262 + }
1.263 + "RemovePlayerItem"
1.264 + {
1.265 + "windows" "207"
1.266 + "linux" "208"
1.267 + }
1.268 + "Weapon_GetSlot"
1.269 + {
1.270 + "windows" "205"
1.271 + "linux" "206"
1.272 + }
1.273 + "Ignite"
1.274 + {
1.275 + "windows" "170"
1.276 + "linux" "171"
1.277 + }
1.278 + "Extinguish"
1.279 + {
1.280 + "windows" "171"
1.281 + "linux" "172"
1.282 + }
1.283 + "Teleport"
1.284 + {
1.285 + "windows" "90"
1.286 + "linux" "91"
1.287 + }
1.288 +
1.289 + /* Temp Entities */
1.290 + "s_pTempEntities"
1.291 + {
1.292 + "linux" "29"
1.293 + }
1.294 + "TE_GetServerClass"
1.295 + {
1.296 + "windows" "0"
1.297 + "linux" "0"
1.298 + }
1.299 }
1.300 }
1.301 }