├── .github ├── docs │ ├── CS2Fixes.md │ ├── CounterStrikeSharp.md │ ├── cs2-inventory-simulator-plugin.md │ ├── cs2-match-plugin.md │ ├── cs2-retakes-allocator.md │ ├── cs2kz-metamod.md │ ├── plugify.md │ └── swiftly.md ├── source │ ├── .gitignore │ ├── .prettierrc │ ├── License.txt │ ├── binary.ts │ ├── config │ │ ├── 2347771.depot │ │ ├── 2347773.depot │ │ ├── binaries.json │ │ └── sources.json │ ├── counterstrikesharp.ts │ ├── depot.ts │ ├── filesystem.ts │ ├── gamedata.ts │ ├── github.ts │ ├── misc.ts │ ├── package-lock.json │ ├── package.json │ ├── plugify.ts │ ├── sigscan.ts │ ├── sourcemod.ts │ ├── subroutine.ts │ ├── swiftly.ts │ ├── tsconfig.json │ ├── update.ts │ └── writer.ts └── workflows │ └── update.yml └── README.md /.github/docs/CS2Fixes.md: -------------------------------------------------------------------------------- 1 | # CS2Fixes 2 | 3 | Last updated: June 10, 2025 at 11:39:09 PM UTC 4 | 5 | * Manifests: [1070059047104919737](https://steamdb.info/depot/2347771/history/?changeid=M:1070059047104919737), [8955753271543459966](https://steamdb.info/depot/2347773/history/?changeid=M:8955753271543459966) 6 | * Repository: https://github.com/Source2ZE/CS2Fixes 7 | * Gamedata: https://github.com/Source2ZE/CS2Fixes/blob/main/gamedata/cs2fixes.games.txt 8 | 9 | ## Signatures 10 | 11 | ### UTIL_SayTextFilter 12 | 13 | 14 |
StatusPlatformLibraryCODE-StyleIDA-Style
Windowsserver 15 |
  16 | \x48\x89\x5C\x24\x2A\x48\x89\x74\x24\x2A\x48\x89\x7C\x24\x2A\x55\x41\x56\x41\x57\x48\x8D\x6C\x24\x2A\x48\x81\xEC\x2A\x2A\x2A\x2A\x45\x33\xFF\x48\x89\x4D\x2A\x49\x8B\xF8
  17 | 
18 |
19 |
  20 | 48 89 5C 24 ? 48 89 74 24 ? 48 89 7C 24 ? 55 41 56 41 57 48 8D 6C 24 ? 48 81 EC ? ? ? ? 45 33 FF 48 89 4D ? 49 8B F8
  21 | 
22 |
Linuxserver 23 |
  24 | \x55\x48\x8D\x05\x2A\x2A\x2A\x2A\x48\x89\xE5\x41\x57\x49\x89\xD7\x31\xD2
  25 | 
26 |
27 |
  28 | 55 48 8D 05 ? ? ? ? 48 89 E5 41 57 49 89 D7 31 D2
  29 | 
30 |
31 | 32 | ### UTIL_SayText2Filter 33 | 34 | 35 |
StatusPlatformLibraryCODE-StyleIDA-Style
Windowsserver 36 |
  37 | \x48\x89\x5C\x24\x2A\x48\x89\x74\x24\x2A\x48\x89\x7C\x24\x2A\x55\x41\x56\x41\x57\x48\x8D\x6C\x24\x2A\x48\x81\xEC\x2A\x2A\x2A\x2A\x45\x33\xFF\x48\x89\x4D\x2A\x41\x0F\xB6\xF0
  38 | 
39 |
40 |
  41 | 48 89 5C 24 ? 48 89 74 24 ? 48 89 7C 24 ? 55 41 56 41 57 48 8D 6C 24 ? 48 81 EC ? ? ? ? 45 33 FF 48 89 4D ? 41 0F B6 F0
  42 | 
43 |
Linuxserver 44 |
  45 | \x55\x48\x8D\x05\x2A\x2A\x2A\x2A\x48\x89\xE5\x41\x57\x4C\x8D\x7D\x80
  46 | 
47 |
48 |
  49 | 55 48 8D 05 ? ? ? ? 48 89 E5 41 57 4C 8D 7D 80
  50 | 
51 |
52 | 53 | ### IsHearingClient 54 | 55 | 56 |
StatusPlatformLibraryCODE-StyleIDA-Style
Windowsengine 57 |
  58 | \x40\x53\x48\x83\xEC\x20\x48\x8B\xD9\x3B\x51\x48
  59 | 
60 |
61 |
  62 | 40 53 48 83 EC 20 48 8B D9 3B 51 48
  63 | 
64 |
Linuxengine 65 |
  66 | \x55\x48\x89\xE5\x41\x55\x41\x54\x53\x48\x89\xFB\x48\x83\xEC\x08\x3B\x77\x58
  67 | 
68 |
69 |
  70 | 55 48 89 E5 41 55 41 54 53 48 89 FB 48 83 EC 08 3B 77 58
  71 | 
72 |
73 | 74 | ### TriggerPush_Touch 75 | 76 | 77 |
StatusPlatformLibraryCODE-StyleIDA-Style
Windowsserver 78 |
  79 | \x48\x89\x5C\x24\x2A\x48\x89\x7C\x24\x2A\x55\x48\x8D\xAC\x24\x2A\x2A\x2A\x2A\xB8\x2A\x2A\x2A\x2A\xE8\x2A\x2A\x2A\x2A\x48\x2B\xE0\x48\x8B\x02\x48\x8B\xF9
  80 | 
81 |
82 |
  83 | 48 89 5C 24 ? 48 89 7C 24 ? 55 48 8D AC 24 ? ? ? ? B8 ? ? ? ? E8 ? ? ? ? 48 2B E0 48 8B 02 48 8B F9
  84 | 
85 |
Linuxserver 86 |
  87 | \x55\x48\x89\xE5\x41\x57\x41\x56\x41\x55\x49\x89\xF5\x41\x54\x49\x89\xFC\x53\x48\x81\xEC\x2A\x2A\x2A\x2A\xE8\x2A\x2A\x2A\x2A\x84\xC0\x74\x2A\x41\x80\xBC\x24
  88 | 
89 |
90 |
  91 | 55 48 89 E5 41 57 41 56 41 55 49 89 F5 41 54 49 89 FC 53 48 81 EC ? ? ? ? E8 ? ? ? ? 84 C0 74 ? 41 80 BC 24
  92 | 
93 |
94 | 95 | ### SetGroundEntity 96 | 97 | 98 |
StatusPlatformLibraryCODE-StyleIDA-Style
Windowsserver 99 |
 100 | \x48\x89\x5C\x24\x2A\x48\x89\x6C\x24\x2A\x56\x57\x41\x56\x48\x83\xEC\x2A\x33\xED\x4C\x89\x7C\x24
 101 | 
102 |
103 |
 104 | 48 89 5C 24 ? 48 89 6C 24 ? 56 57 41 56 48 83 EC ? 33 ED 4C 89 7C 24
 105 | 
106 |
Linuxserver 107 |
 108 | \x55\x48\x89\xE5\x41\x57\x41\x56\x41\x55\x49\x89\xF5\x41\x54\x49\x89\xFC\x53\x48\x89\xD3\x48\x83\xEC\x2A\x8B\x97
 109 | 
110 |
111 |
 112 | 55 48 89 E5 41 57 41 56 41 55 49 89 F5 41 54 49 89 FC 53 48 89 D3 48 83 EC ? 8B 97
 113 | 
114 |
115 | 116 | ### ServerMovementUnlock 117 | 118 | 119 |
StatusPlatformLibraryCODE-StyleIDA-Style
Windowsserver 120 |
 121 | \x76\x2A\xF2\x0F\x10\x4F\x2A\x41\x0F\x28\xC1\x0F\x28\xD1\xF3\x0F\x59\xC0
 122 | 
123 |
124 |
 125 | 76 ? F2 0F 10 4F ? 41 0F 28 C1 0F 28 D1 F3 0F 59 C0
 126 | 
127 |
Linuxserver 128 |
 129 | \x0F\x87\x2A\x2A\x2A\x2A\x49\x8B\x7C\x24\x2A\xE8\x2A\x2A\x2A\x2A\x66\x0F\xEF\xED\x66\x0F\xD6\x85
 130 | 
131 |
132 |
 133 | 0F 87 ? ? ? ? 49 8B 7C 24 ? E8 ? ? ? ? 66 0F EF ED 66 0F D6 85
 134 | 
135 |
136 | 137 | ### CCSPlayerController_SwitchTeam 138 | 139 | 140 |
StatusPlatformLibraryCODE-StyleIDA-Style
Windowsserver 141 |
 142 | \x40\x56\x57\x48\x81\xEC\x2A\x2A\x2A\x2A\x48\x8B\xF9\x8B\xF2\x8B\xCA
 143 | 
144 |
145 |
 146 | 40 56 57 48 81 EC ? ? ? ? 48 8B F9 8B F2 8B CA
 147 | 
148 |
Linuxserver 149 |
 150 | \x55\x48\x89\xE5\x41\x55\x49\x89\xFD\x89\xF7
 151 | 
152 |
153 |
 154 | 55 48 89 E5 41 55 49 89 FD 89 F7
 155 | 
156 |
157 | 158 | ### CheckJumpButtonWater 159 | 160 | 161 |
StatusPlatformLibraryCODE-StyleIDA-Style
Windowsserver 162 |
 163 | \xC8\x42\xEB\x2A\x48\x8B\x4B\x30
 164 | 
165 |
166 |
 167 | C8 42 EB ? 48 8B 4B 30
 168 | 
169 |
Linuxserver 170 |
 171 | \xC8\x42\x66\x0F\xEF\xFF\x0F\x2F\x7B\x5C
 172 | 
173 |
174 |
 175 | C8 42 66 0F EF FF 0F 2F 7B 5C
 176 | 
177 |
178 | 179 | ### WaterLevelGravity 180 | 181 | 182 |
StatusPlatformLibraryCODE-StyleIDA-Style
Windowsserver 183 |
 184 | \x3C\x01\x49\x8B\x5B\x10\x49\x8B\x7B\x18\x0F\x97\xC0\x41\x0F\x28
 185 | 
186 |
187 |
 188 | 3C 01 49 8B 5B 10 49 8B 7B 18 0F 97 C0 41 0F 28
 189 | 
190 |
Linuxserver 191 |
 192 | \x3C\x01\x0F\x97\xC0\x48\x81\xC4\x50\x01
 193 | 
194 |
195 |
 196 | 3C 01 0F 97 C0 48 81 C4 50 01
 197 | 
198 |
199 | 200 | ### UTIL_Remove 201 | 202 | 203 |
StatusPlatformLibraryCODE-StyleIDA-Style
Windowsserver 204 |
 205 | \x48\x85\xC9\x74\x2A\x48\x8B\xD1\x48\x8B\x0D\x2A\x2A\x2A\x2A
 206 | 
207 |
208 |
 209 | 48 85 C9 74 ? 48 8B D1 48 8B 0D ? ? ? ?
 210 | 
211 |
Linuxserver 212 |
 213 | \x48\x89\xFE\x48\x85\xFF\x74\x2A\x48\x8D\x05\x2A\x2A\x2A\x2A\x48
 214 | 
215 |
216 |
 217 | 48 89 FE 48 85 FF 74 ? 48 8D 05 ? ? ? ? 48
 218 | 
219 |
220 | 221 | ### CEntitySystem_AddEntityIOEvent 222 | 223 | 224 |
StatusPlatformLibraryCODE-StyleIDA-Style
Windowsserver 225 |
 226 | \x48\x89\x5C\x24\x08\x48\x89\x74\x24\x18\x57\x48\x83\xEC\x40\x49\x8B\xF1
 227 | 
228 |
229 |
 230 | 48 89 5C 24 08 48 89 74 24 18 57 48 83 EC 40 49 8B F1
 231 | 
232 |
Linuxserver 233 |
 234 | \x55\x41\xBA\xFF\xFF\xFF\xFF
 235 | 
236 |
237 |
 238 | 55 41 BA FF FF FF FF
 239 | 
240 |
241 | 242 | ### CEntityInstance_AcceptInput 243 | 244 | 245 |
StatusPlatformLibraryCODE-StyleIDA-Style
Windowsserver 246 |
 247 | \x48\x89\x5C\x24\x10\x48\x89\x74\x24\x18\x57\x48\x83\xEC\x40\x49\x8B\xF0
 248 | 
249 |
250 |
 251 | 48 89 5C 24 10 48 89 74 24 18 57 48 83 EC 40 49 8B F0
 252 | 
253 |
Linuxserver 254 |
 255 | \x55\x48\x89\xE5\x41\x57\x49\x89\xFF\x41\x56\x48\x8D\x7D\xC0
 256 | 
257 |
258 |
 259 | 55 48 89 E5 41 57 49 89 FF 41 56 48 8D 7D C0
 260 | 
261 |
262 | 263 | ### CEntityIdentity_AcceptInput 264 | 265 | 266 |
StatusPlatformLibraryCODE-StyleIDA-Style
Windowsserver 267 |
 268 | \x48\x89\x54\x24\x2A\x48\x89\x4C\x24\x2A\x55\x53\x56\x57\x41\x55\x41\x56\x41\x57\x48\x8D\x6C\x24
 269 | 
270 |
271 |
 272 | 48 89 54 24 ? 48 89 4C 24 ? 55 53 56 57 41 55 41 56 41 57 48 8D 6C 24
 273 | 
274 |
Linuxserver 275 |
 276 | \x55\x48\x89\xE5\x41\x57\x41\x56\x4C\x8D\xBD\xD0\xFE\xFF\xFF\x49\x89\xD6\x41\x55\x49\x89\xF5\x41\x54\x49\x89\xCC
 277 | 
278 |
279 |
 280 | 55 48 89 E5 41 57 41 56 4C 8D BD D0 FE FF FF 49 89 D6 41 55 49 89 F5 41 54 49 89 CC
 281 | 
282 |
283 | 284 | ### CEntityIOOutput_FireOutputInternal 285 | 286 | 287 |
StatusPlatformLibraryCODE-StyleIDA-Style
Windowsserver 288 |
 289 | \x4C\x89\x4C\x24\x20\x53\x55\x57\x41\x54\x41\x56\x48\x81\xEC
 290 | 
291 |
292 |
 293 | 4C 89 4C 24 20 53 55 57 41 54 41 56 48 81 EC
 294 | 
295 |
Linuxserver 296 |
 297 | \x55\x48\x89\xE5\x41\x57\x41\x56\x41\x55\x41\x54\x49\x89\xD4\x53\x48\x89\xF3\x48\x83\xEC\x58
 298 | 
299 |
300 |
 301 | 55 48 89 E5 41 57 41 56 41 55 41 54 49 89 D4 53 48 89 F3 48 83 EC 58
 302 | 
303 |
304 | 305 | ### CGameEntitySystem_FindEntityByClassName 306 | 307 | 308 |
StatusPlatformLibraryCODE-StyleIDA-Style
Windowsserver 309 |
 310 | \x48\x83\xEC\x68\x45\x33\xC9
 311 | 
312 |
313 |
 314 | 48 83 EC 68 45 33 C9
 315 | 
316 |
Linuxserver 317 |
 318 | \x55\x45\x31\xC0\x31\xC9\x48\x89\xE5\x41\x54
 319 | 
320 |
321 |
 322 | 55 45 31 C0 31 C9 48 89 E5 41 54
 323 | 
324 |
325 | 326 | ### CGameEntitySystem_FindEntityByName 327 | 328 | 329 |
StatusPlatformLibraryCODE-StyleIDA-Style
Windowsserver 330 |
 331 | \x48\x81\xEC\x88\x2A\x2A\x2A\x4D\x85\xC0
 332 | 
333 |
334 |
 335 | 48 81 EC 88 ? ? ? 4D 85 C0
 336 | 
337 |
Linuxserver 338 |
 339 | \x48\x85\xD2\x74\x2A\x55\x48\x89\xE5\x41\x54
 340 | 
341 |
342 |
 343 | 48 85 D2 74 ? 55 48 89 E5 41 54
 344 | 
345 |
346 | 347 | ### CBaseEntity_TakeDamageOld 348 | 349 | 350 |
StatusPlatformLibraryCODE-StyleIDA-Style
Windowsserver 351 |
 352 | \x48\x89\x74\x24\x2A\x57\x48\x81\xEC\x2A\x2A\x2A\x2A\x48\x8B\x41\x2A\x48\x8B\xFA
 353 | 
354 |
355 |
 356 | 48 89 74 24 ? 57 48 81 EC ? ? ? ? 48 8B 41 ? 48 8B FA
 357 | 
358 |
Linuxserver 359 |
 360 | \x55\x48\x89\xE5\x41\x57\x41\x56\x41\x55\x41\x54\x49\x89\xFC\x53\x48\x83\xEC\x2A\x4C\x8D\x3D\x2A\x2A\x2A\x2A\x49\x8B\x3F
 361 | 
362 |
363 |
 364 | 55 48 89 E5 41 57 41 56 41 55 41 54 49 89 FC 53 48 83 EC ? 4C 8D 3D ? ? ? ? 49 8B 3F
 365 | 
366 |
367 | 368 | ### IGameSystem_InitAllSystems_pFirst 369 | 370 | 371 |
StatusPlatformLibraryCODE-StyleIDA-Style
Windowsserver 372 |
 373 | \x48\x8B\x3D\x2A\x2A\x2A\x2A\x48\x85\xFF\x0F\x84\x2A\x2A\x2A\x2A\xBE
 374 | 
375 |
376 |
 377 | 48 8B 3D ? ? ? ? 48 85 FF 0F 84 ? ? ? ? BE
 378 | 
379 |
Linuxserver 380 |
 381 | \x4C\x8B\x35\x2A\x2A\x2A\x2A\x4D\x85\xF6\x75\x2A\xE9
 382 | 
383 |
384 |
 385 | 4C 8B 35 ? ? ? ? 4D 85 F6 75 ? E9
 386 | 
387 |
388 | 389 | ### IGameSystem_LoopPostInitAllSystems_pEventDispatcher 390 | 391 | 392 |
StatusPlatformLibraryCODE-StyleIDA-Style
Windowsserver 393 |
 394 | \x48\x39\x1D\x2A\x2A\x2A\x2A\x74\x2A\x39\x05
 395 | 
396 |
397 |
 398 | 48 39 1D ? ? ? ? 74 ? 39 05
 399 | 
400 |
Linuxserver 401 |
 402 | \x48\x89\x35\x2A\x2A\x2A\x2A\x45\x85\xF6
 403 | 
404 |
405 |
 406 | 48 89 35 ? ? ? ? 45 85 F6
 407 | 
408 |
409 | 410 | ### IGameSystem_LoopDestroyAllSystems_s_GameSystems 411 | 412 | 413 |
StatusPlatformLibraryCODE-StyleIDA-Style
Windowsserver 414 |
 415 | \x8B\x05\x2A\x2A\x2A\x2A\x83\xE8\x2A\x48\x63\xF8\x0F\x88
 416 | 
417 |
418 |
 419 | 8B 05 ? ? ? ? 83 E8 ? 48 63 F8 0F 88
 420 | 
421 |
Linuxserver 422 |
 423 | \x8B\x05\x2A\x2A\x2A\x2A\x55\x48\x89\xE5\x41\x54\x53\x89\xC2
 424 | 
425 |
426 |
 427 | 8B 05 ? ? ? ? 55 48 89 E5 41 54 53 89 C2
 428 | 
429 |
430 | 431 | ### CBasePlayerController_SetPawn 432 | 433 | 434 |
StatusPlatformLibraryCODE-StyleIDA-Style
Windowsserver 435 |
 436 | \x48\x89\x74\x24\x2A\x55\x41\x54\x41\x55\x41\x56\x41\x57\x48\x8D\x6C\x24\x2A\x48\x81\xEC\x2A\x2A\x2A\x2A\x4C\x8B\xF9
 437 | 
438 |
439 |
 440 | 48 89 74 24 ? 55 41 54 41 55 41 56 41 57 48 8D 6C 24 ? 48 81 EC ? ? ? ? 4C 8B F9
 441 | 
442 |
Linuxserver 443 |
 444 | \x55\x48\x89\xE5\x41\x57\x41\x56\x41\x55\x49\x89\xFD\x41\x54\x45\x89\xC4
 445 | 
446 |
447 |
 448 | 55 48 89 E5 41 57 41 56 41 55 49 89 FD 41 54 45 89 C4
 449 | 
450 |
451 | 452 | ### CNavMesh_GetNearestNavArea 453 | 454 | 455 |
StatusPlatformLibraryCODE-StyleIDA-Style
Windowsserver 456 |
 457 | \x48\x89\x5C\x24\x2A\x48\x89\x54\x24\x2A\x48\x89\x4C\x24\x2A\x55\x56\x57\x41\x54\x41\x55\x41\x56\x41\x57\x48\x8D\xAC\x24\x2A\x2A\x2A\x2A
 458 | 
459 |
460 |
 461 | 48 89 5C 24 ? 48 89 54 24 ? 48 89 4C 24 ? 55 56 57 41 54 41 55 41 56 41 57 48 8D AC 24 ? ? ? ?
 462 | 
463 |
Linuxserver 464 |
 465 | \x55\x48\x89\xE5\x41\x57\x49\x89\xFF\x41\x56\x48\x8D\x3D\x2A\x2A\x2A\x2A\x41\x89\xCE
 466 | 
467 |
468 |
 469 | 55 48 89 E5 41 57 49 89 FF 41 56 48 8D 3D ? ? ? ? 41 89 CE
 470 | 
471 |
472 | 473 | ### CBaseModelEntity_SetModel 474 | 475 | 476 |
StatusPlatformLibraryCODE-StyleIDA-Style
Windowsserver 477 |
 478 | \x48\x89\x5C\x24\x2A\x48\x89\x7C\x24\x2A\x55\x48\x8B\xEC\x48\x83\xEC\x50\x48\x8B\xF9\x4C\x8B\xC2
 479 | 
480 |
481 |
 482 | 48 89 5C 24 ? 48 89 7C 24 ? 55 48 8B EC 48 83 EC 50 48 8B F9 4C 8B C2
 483 | 
484 |
Linuxserver 485 |
 486 | \x55\x48\x89\xF2\x48\x89\xE5\x41\x54\x49\x89\xFC\x48\x8D\x7D\xE0\x48\x83\xEC\x18\x48\x8D\x05\x2A\x2A\x2A\x2A\x48\x8B\x30\x48\x8B\x06
 487 | 
488 |
489 |
 490 | 55 48 89 F2 48 89 E5 41 54 49 89 FC 48 8D 7D E0 48 83 EC 18 48 8D 05 ? ? ? ? 48 8B 30 48 8B 06
 491 | 
492 |
493 | 494 | ### CGameRules_TerminateRound 495 | 496 | 497 |
StatusPlatformLibraryCODE-StyleIDA-Style
Windowsserver 498 |
 499 | \x48\x8B\xC4\x4C\x89\x48\x2A\x48\x89\x48\x2A\x55\x41\x55
 500 | 
501 |
502 |
 503 | 48 8B C4 4C 89 48 ? 48 89 48 ? 55 41 55
 504 | 
505 |
Linuxserver 506 |
 507 | \x55\x48\x89\xE5\x41\x57\x41\x56\x41\x55\x41\x54\x49\x89\xFC\x53\x48\x81\xEC\x88\x00\x00\x00\x48\x8D\x05\x2A\x2A\x2A\x2A
 508 | 
509 |
510 |
 511 | 55 48 89 E5 41 57 41 56 41 55 41 54 49 89 FC 53 48 81 EC 88 00 00 00 48 8D 05 ? ? ? ?
 512 | 
513 |
514 | 515 | ### CCSPlayer_WeaponServices_CanUse 516 | 517 | 518 |
StatusPlatformLibraryCODE-StyleIDA-Style
Windowsserver 519 |
 520 | \x48\x89\x5C\x24\x2A\x48\x89\x6C\x24\x2A\x48\x89\x74\x24\x2A\x57\x48\x83\xEC\x2A\x48\x8B\x01\x48\x8B\xF2
 521 | 
522 |
523 |
 524 | 48 89 5C 24 ? 48 89 6C 24 ? 48 89 74 24 ? 57 48 83 EC ? 48 8B 01 48 8B F2
 525 | 
526 |
Linuxserver 527 |
 528 | \x55\x48\x8D\x15\x2A\x2A\x2A\x2A\x48\x89\xE5\x41\x55\x49\x89\xF5\x41\x54\x49\x89\xFC\x53\x48\x83\xEC\x2A\x48\x8B\x07\x48\x8B\x80\x2A\x2A\x2A\x2A\x48\x39\xD0\x0F\x85\x2A\x2A\x2A\x2A\x80\xBF
 529 | 
530 |
531 |
 532 | 55 48 8D 15 ? ? ? ? 48 89 E5 41 55 49 89 F5 41 54 49 89 FC 53 48 83 EC ? 48 8B 07 48 8B 80 ? ? ? ? 48 39 D0 0F 85 ? ? ? ? 80 BF
 533 | 
534 |
535 | 536 | ### CCSPlayer_WeaponServices_EquipWeapon 537 | 538 | 539 |
StatusPlatformLibraryCODE-StyleIDA-Style
Windowsserver 540 |
 541 | \x48\x89\x5C\x24\x2A\x57\x48\x83\xEC\x2A\x48\x8B\xDA\x48\x8B\xF9\x48\x8B\x51
 542 | 
543 |
544 |
 545 | 48 89 5C 24 ? 57 48 83 EC ? 48 8B DA 48 8B F9 48 8B 51
 546 | 
547 |
Linuxserver 548 |
 549 | \x55\x48\x89\xE5\x41\x55\x41\x54\x49\x89\xF4\x53\x48\x89\xFB\x48\x83\xEC\x2A\x48\x8B\x77
 550 | 
551 |
552 |
 553 | 55 48 89 E5 41 55 41 54 49 89 F4 53 48 89 FB 48 83 EC ? 48 8B 77
 554 | 
555 |
556 | 557 | ### CreateEntityByName 558 | 559 | 560 |
StatusPlatformLibraryCODE-StyleIDA-Style
Windowsserver 561 |
 562 | \x48\x83\xEC\x48\xC6\x44\x24\x30\x00
 563 | 
564 |
565 |
 566 | 48 83 EC 48 C6 44 24 30 00
 567 | 
568 |
Linuxserver 569 |
 570 | \x48\x8D\x05\x2A\x2A\x2A\x2A\x55\x48\x89\xFA
 571 | 
572 |
573 |
 574 | 48 8D 05 ? ? ? ? 55 48 89 FA
 575 | 
576 |
577 | 578 | ### DispatchSpawn 579 | 580 | 581 |
StatusPlatformLibraryCODE-StyleIDA-Style
Windowsserver 582 |
 583 | \x48\x89\x5C\x24\x10\x57\x48\x83\xEC\x30\x48\x8B\xDA\x48\x8B\xF9\x48\x85\xC9
 584 | 
585 |
586 |
 587 | 48 89 5C 24 10 57 48 83 EC 30 48 8B DA 48 8B F9 48 85 C9
 588 | 
589 |
Linuxserver 590 |
 591 | \x48\x85\xFF\x74\x2A\x55\x48\x89\xE5\x41\x56
 592 | 
593 |
594 |
 595 | 48 85 FF 74 ? 55 48 89 E5 41 56
 596 | 
597 |
598 | 599 | ### CEntityIdentity_SetEntityName 600 | 601 | 602 |
StatusPlatformLibraryCODE-StyleIDA-Style
Windowsserver 603 |
 604 | \x48\x89\x5C\x24\x10\x57\x48\x83\xEC\x20\x48\x8B\xD9\x4C\x8B\xC2
 605 | 
606 |
607 |
 608 | 48 89 5C 24 10 57 48 83 EC 20 48 8B D9 4C 8B C2
 609 | 
610 |
Linuxserver 611 |
 612 | \x55\x48\x89\xF2\x48\x89\xE5\x41\x54\x49\x89\xFC\x48\x8D\x7D\xE0\x48\x83\xEC\x18\x48\x8D\x05\x2A\x2A\x2A\x2A\x48\x8B\x30\xE8\x2A\x2A\x2A\x2A\x48\x8B\x45\xE0
 613 | 
614 |
615 |
 616 | 55 48 89 F2 48 89 E5 41 54 49 89 FC 48 8D 7D E0 48 83 EC 18 48 8D 05 ? ? ? ? 48 8B 30 E8 ? ? ? ? 48 8B 45 E0
 617 | 
618 |
619 | 620 | ### BotNavIgnore 621 | 622 | 623 |
StatusPlatformLibraryCODE-StyleIDA-Style
Windowsserver 624 |
 625 | \x0F\x84\x2A\x2A\x2A\x2A\x80\xB8\x2A\x2A\x2A\x2A\x00\x0F\x84\x2A\x2A\x2A\x2A\x80\x3D\x2A\x2A\x2A\x2A\x00\x74\x15
 626 | 
627 |
628 |
 629 | 0F 84 ? ? ? ? 80 B8 ? ? ? ? 00 0F 84 ? ? ? ? 80 3D ? ? ? ? 00 74 15
 630 | 
631 |
Linuxserver 632 |
 633 | \x48\x85\xC0\x74\x2E\x80\xB8\x2A\x2A\x2A\x2A\x00\x74\x25
 634 | 
635 |
636 |
 637 | 48 85 C0 74 2E 80 B8 ? ? ? ? 00 74 25
 638 | 
639 |
640 | 641 | ### CBaseEntity_EmitSoundParams 642 | 643 | 644 |
StatusPlatformLibraryCODE-StyleIDA-Style
Windowsserver 645 |
 646 | \x48\x8B\xC4\x48\x89\x58\x10\x48\x89\x70\x18\x55\x57\x41\x56\x48\x8D\xA8\x08\xFF\xFF\xFF
 647 | 
648 |
649 |
 650 | 48 8B C4 48 89 58 10 48 89 70 18 55 57 41 56 48 8D A8 08 FF FF FF
 651 | 
652 |
Linuxserver 653 |
 654 | \x48\xB8\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x55\x48\x89\xE5\x41\x55\x41\x54\x49\x89\xFC\x53\x48\x89\xF3
 655 | 
656 |
657 |
 658 | 48 B8 ? ? ? ? ? ? ? ? 55 48 89 E5 41 55 41 54 49 89 FC 53 48 89 F3
 659 | 
660 |
661 | 662 | ### CBaseEntity_SetParent 663 | 664 | 665 |
StatusPlatformLibraryCODE-StyleIDA-Style
Windowsserver 666 |
 667 | \x4D\x8B\xD9\x48\x85\xD2\x74\x2A
 668 | 
669 |
670 |
 671 | 4D 8B D9 48 85 D2 74 ?
 672 | 
673 |
Linuxserver 674 |
 675 | \x48\x85\xF6\x74\x2A\x48\x8B\x47\x10\xF6\x40\x31\x02\x75\x2A\x48\x8B\x46\x10\xF6\x40\x31\x02\x75\x2A\xB8\x2A\x2A\x2A\x2A
 676 | 
677 |
678 |
 679 | 48 85 F6 74 ? 48 8B 47 10 F6 40 31 02 75 ? 48 8B 46 10 F6 40 31 02 75 ? B8 ? ? ? ?
 680 | 
681 |
682 | 683 | ### GetParticleSystemIndex 684 | 685 | 686 |
StatusPlatformLibraryCODE-StyleIDA-Style
Windowsserver 687 |
 688 | \x48\x89\x5C\x24\x2A\x48\x89\x74\x24\x2A\x57\x48\x81\xEC\x2A\x2A\x2A\x2A\x48\x8B\xDA\x48\x8B\xF1\x48\x85\xD2
 689 | 
690 |
691 |
 692 | 48 89 5C 24 ? 48 89 74 24 ? 57 48 81 EC ? ? ? ? 48 8B DA 48 8B F1 48 85 D2
 693 | 
694 |
Linuxserver 695 |
 696 | \x55\x48\x89\xE5\x41\x57\x41\x56\x41\x55\x49\x89\xFD\x41\x54\x48\x81\xEC\xE0\x00\x00\x00
 697 | 
698 |
699 |
 700 | 55 48 89 E5 41 57 41 56 41 55 49 89 FD 41 54 48 81 EC E0 00 00 00
 701 | 
702 |
703 | 704 | ### DispatchParticleEffect 705 | 706 | 707 |
StatusPlatformLibraryCODE-StyleIDA-Style
Windowsserver 708 |
 709 | \x48\x89\x5C\x24\x08\x48\x89\x74\x24\x10\x48\x89\x7C\x24\x18\x4C\x89\x74\x24\x20\x55\x48\x8D\x6C\x24\xD1
 710 | 
711 |
712 |
 713 | 48 89 5C 24 08 48 89 74 24 10 48 89 7C 24 18 4C 89 74 24 20 55 48 8D 6C 24 D1
 714 | 
715 |
Linuxserver 716 |
 717 | \x55\x48\x89\xE5\x41\x57\x41\x56\x49\x89\xFE\x41\x55\x45\x89\xCD\x41\x54\x49\x89\xD4\x53\x89\xCB\x48\x81\xEC\x2A\x2A\x2A\x2A
 718 | 
719 |
720 |
 721 | 55 48 89 E5 41 57 41 56 49 89 FE 41 55 45 89 CD 41 54 49 89 D4 53 89 CB 48 81 EC ? ? ? ?
 722 | 
723 |
724 | 725 | ### CBaseEntity_EmitSoundFilter 726 | 727 | 728 |
StatusPlatformLibraryCODE-StyleIDA-Style
Windowsserver 729 |
 730 | \x48\x89\x5C\x24\x08\x48\x89\x6C\x24\x10\x48\x89\x74\x24\x18\x48\x89\x7C\x24\x20\x41\x56\x48\x83\xEC\x30\x48\x8B\xEA
 731 | 
732 |
733 |
 734 | 48 89 5C 24 08 48 89 6C 24 10 48 89 74 24 18 48 89 7C 24 20 41 56 48 83 EC 30 48 8B EA
 735 | 
736 |
Linuxserver 737 |
 738 | \x55\x48\x89\xE5\x41\x56\x49\x89\xD6\x41\x55\x41\x89\xF5\x41\x54\x48\x8D\x35\x2A\x2A\x2A\x2A
 739 | 
740 |
741 |
 742 | 55 48 89 E5 41 56 49 89 D6 41 55 41 89 F5 41 54 48 8D 35 ? ? ? ?
 743 | 
744 |
745 | 746 | ### CNetworkStringTable_DeleteAllStrings 747 | 748 | 749 |
StatusPlatformLibraryCODE-StyleIDA-Style
Windowsengine 750 |
 751 | \x40\x53\x57\x41\x57\x48\x83\xEC\x2A\x45\x33\xFF
 752 | 
753 |
754 |
 755 | 40 53 57 41 57 48 83 EC ? 45 33 FF
 756 | 
757 |
Linuxengine 758 |
 759 | \x55\x48\x89\xE5\x41\x57\x41\x56\x41\x55\x41\x54\x53\x48\x89\xFB\x48\x83\xEC\x28\x48\x8B\x87\x2A\x2A\x2A\x2A
 760 | 
761 |
762 |
 763 | 55 48 89 E5 41 57 41 56 41 55 41 54 53 48 89 FB 48 83 EC 28 48 8B 87 ? ? ? ?
 764 | 
765 |
766 | 767 | ### ProcessMovement 768 | 769 | 770 |
StatusPlatformLibraryCODE-StyleIDA-Style
Windowsserver 771 |
 772 | \x40\x56\x57\x48\x81\xEC\x2A\x2A\x2A\x2A\x4C\x8B\x49
 773 | 
774 |
775 |
 776 | 40 56 57 48 81 EC ? ? ? ? 4C 8B 49
 777 | 
778 |
Linuxserver 779 |
 780 | \x55\x48\x89\xE5\x41\x57\x41\x56\x41\x55\x41\x54\x49\x89\xFC\x53\x48\x83\xEC\x38\x48\x8B\x7F\x30
 781 | 
782 |
783 |
 784 | 55 48 89 E5 41 57 41 56 41 55 41 54 49 89 FC 53 48 83 EC 38 48 8B 7F 30
 785 | 
786 |
787 | 788 | ### CBaseEntity_SetMoveType 789 | 790 | 791 |
StatusPlatformLibraryCODE-StyleIDA-Style
Windowsserver 792 |
 793 | \x48\x89\x5C\x24\x2A\x48\x89\x6C\x24\x2A\x48\x89\x74\x24\x2A\x57\x48\x83\xEC\x2A\x41\x0F\xB6\xF0
 794 | 
795 |
796 |
 797 | 48 89 5C 24 ? 48 89 6C 24 ? 48 89 74 24 ? 57 48 83 EC ? 41 0F B6 F0
 798 | 
799 |
Linuxserver 800 |
 801 | \x55\x48\x89\xE5\x41\x57\x41\x56\x41\x55\x41\x89\xD5\x41\x54\x49\x89\xFC\x53\x48\x83\xEC
 802 | 
803 |
804 |
 805 | 55 48 89 E5 41 57 41 56 41 55 41 89 D5 41 54 49 89 FC 53 48 83 EC
 806 | 
807 |
808 | 809 | ### CPhysBox_Use 810 | 811 | 812 |
StatusPlatformLibraryCODE-StyleIDA-Style
Windowsserver 813 |
 814 | \x4C\x8B\x43\x2A\x48\x8D\x8F\x2A\x2A\x2A\x2A\x48\x8B\x13\xE8\x2A\x2A\x2A\x2A\x48\x8B\x5C\x24\x2A\x48\x83\xC4\x2A\x5F\xC3\xCC\xCC\xCC\xCC\x40\x53
 815 | 
816 |
817 |
 818 | 4C 8B 43 ? 48 8D 8F ? ? ? ? 48 8B 13 E8 ? ? ? ? 48 8B 5C 24 ? 48 83 C4 ? 5F C3 CC CC CC CC 40 53
 819 | 
820 |
Linuxserver 821 |
 822 | \x49\x8B\x54\x24\x08\x48\x8D\x4D\xE0\x48\xC7\x45\x2A\x2A\x2A\x2A\x2A
 823 | 
824 |
825 |
 826 | 49 8B 54 24 08 48 8D 4D E0 48 C7 45 ? ? ? ? ?
 827 | 
828 |
829 | 830 | ### CTakeDamageInfo 831 | 832 | 833 |
StatusPlatformLibraryCODE-StyleIDA-Style
Windowsserver 834 |
 835 | \x40\x53\x48\x83\xEC\x60\x48\xC7\x41\x38\xFF\xFF\xFF\xFF
 836 | 
837 |
838 |
 839 | 40 53 48 83 EC 60 48 C7 41 38 FF FF FF FF
 840 | 
841 |
Linuxserver 842 |
 843 | \x55\x48\x89\xE5\x48\x83\xEC\x10\x4C\x8D\x15\x2A\x2A\x2A\x2A
 844 | 
845 |
846 |
 847 | 55 48 89 E5 48 83 EC 10 4C 8D 15 ? ? ? ?
 848 | 
849 |
850 | 851 | ### ProcessUsercmds 852 | 853 | 854 |
StatusPlatformLibraryCODE-StyleIDA-Style
Windowsserver 855 |
 856 | \x48\x8B\xC4\x44\x88\x48\x20\x44\x89\x40\x18\x48\x89\x50\x10\x53
 857 | 
858 |
859 |
 860 | 48 8B C4 44 88 48 20 44 89 40 18 48 89 50 10 53
 861 | 
862 |
Linuxserver 863 |
 864 | \x55\x48\x89\xE5\x41\x57\x41\x56\x41\x89\xD6\x41\x55\x41\x54\x49\x89\xFC\x53\x48\x83\xEC\x38
 865 | 
866 |
867 |
 868 | 55 48 89 E5 41 57 41 56 41 89 D6 41 55 41 54 49 89 FC 53 48 83 EC 38
 869 | 
870 |
871 | 872 | ### CGamePlayerEquip_InputTriggerForAllPlayers 873 | 874 | 875 |
StatusPlatformLibraryCODE-StyleIDA-Style
Windowsserver 876 |
 877 | \x40\x55\x53\x57\x41\x56\x41\x57\x48\x8B\xEC\x48\x83\xEC
 878 | 
879 |
880 |
 881 | 40 55 53 57 41 56 41 57 48 8B EC 48 83 EC
 882 | 
883 |
Linuxserver 884 |
 885 | \x55\x48\x89\xE5\x41\x56\x41\x55\x41\x54\x49\x89\xFC\x53\x48\x83\xEC\x2A\xE8\x2A\x2A\x2A\x2A\xC7\x45\x2A\x00\x00\x00\x00\x89\xC7\x66\x89\x45\x2A\x66\x83\xF8\x2A\x0F\x84\x2A\x2A\x2A\x2A\xE8\x2A\x2A\x2A\x2A\x48\x89\xC3\x48\x85\xC0\x0F\x84\x2A\x2A\x2A\x2A\x48\x89\xC7\xE8\x2A\x2A\x2A\x2A\x48\x8D\x7D\x2A\x48\x89\xC6\xE8\x2A\x2A\x2A\x2A\x84\xC0\x0F\x84\x2A\x2A\x2A\x2A\x0F\xB7\x7D\x2A\x48\x89\x5D\x2A\x4C\x8B\x75\x2A\x4C\x8D\x6D
 886 | 
887 |
888 |
 889 | 55 48 89 E5 41 56 41 55 41 54 49 89 FC 53 48 83 EC ? E8 ? ? ? ? C7 45 ? 00 00 00 00 89 C7 66 89 45 ? 66 83 F8 ? 0F 84 ? ? ? ? E8 ? ? ? ? 48 89 C3 48 85 C0 0F 84 ? ? ? ? 48 89 C7 E8 ? ? ? ? 48 8D 7D ? 48 89 C6 E8 ? ? ? ? 84 C0 0F 84 ? ? ? ? 0F B7 7D ? 48 89 5D ? 4C 8B 75 ? 4C 8D 6D
 890 | 
891 |
892 | 893 | ### CGamePlayerEquip_InputTriggerForActivatedPlayer 894 | 895 | 896 |
StatusPlatformLibraryCODE-StyleIDA-Style
Windowsserver 897 |
 898 | \x48\x89\x5C\x24\x18\x56\x48\x83\xEC\x20\x48\x8B\x1A
 899 | 
900 |
901 |
 902 | 48 89 5C 24 18 56 48 83 EC 20 48 8B 1A
 903 | 
904 |
Linuxserver 905 |
 906 | \x55\x48\x89\xE5\x41\x55\x41\x54\x48\x83\xEC\x10\x4C\x8B\x26\x4D\x85\xE4\x74\x2A
 907 | 
908 |
909 |
 910 | 55 48 89 E5 41 55 41 54 48 83 EC 10 4C 8B 26 4D 85 E4 74 ?
 911 | 
912 |
913 | 914 | ### GetFreeClient 915 | 916 | 917 |
StatusPlatformLibraryCODE-StyleIDA-Style
Windowsengine 918 |
 919 | \x40\x53\x57\x41\x55\x41\x56
 920 | 
921 |
922 |
 923 | 40 53 57 41 55 41 56
 924 | 
925 |
Linuxengine 926 |
 927 | \x55\x48\x89\xE5\x41\x57\x49\x89\xCF\x41\x56\x41\x89\xD6\x41\x55\x4D\x89\xCD
 928 | 
929 |
930 |
 931 | 55 48 89 E5 41 57 49 89 CF 41 56 41 89 D6 41 55 4D 89 CD
 932 | 
933 |
934 | 935 | ### CCSPlayerPawn_GetMaxSpeed 936 | 937 | 938 |
StatusPlatformLibraryCODE-StyleIDA-Style
Windowsserver 939 |
 940 | \x40\x53\x48\x83\xEC\x2A\x48\x8B\xD9\xE8\x2A\x2A\x2A\x2A\x84\xC0\x0F\x84\x2A\x2A\x2A\x2A\x48\x8B\x0D
 941 | 
942 |
943 |
 944 | 40 53 48 83 EC ? 48 8B D9 E8 ? ? ? ? 84 C0 0F 84 ? ? ? ? 48 8B 0D
 945 | 
946 |
Linuxserver 947 |
 948 | \x55\x48\x89\xE5\x41\x55\x41\x54\x53\x48\x89\xFB\x48\x83\xEC\x2A\xE8\x2A\x2A\x2A\x2A\x84\xC0\x75
 949 | 
950 |
951 |
 952 | 55 48 89 E5 41 55 41 54 53 48 89 FB 48 83 EC ? E8 ? ? ? ? 84 C0 75
 953 | 
954 |
955 | 956 | ### FindUseEntity 957 | 958 | 959 |
StatusPlatformLibraryCODE-StyleIDA-Style
Windowsserver 960 |
 961 | \x4C\x89\x44\x24\x2A\xF3\x0F\x11\x4C\x24\x2A\x55\x53\x56
 962 | 
963 |
964 |
 965 | 4C 89 44 24 ? F3 0F 11 4C 24 ? 55 53 56
 966 | 
967 |
Linuxserver 968 |
 969 | \x55\x48\x89\xE5\x41\x57\x41\x56\x41\x55\x49\x89\xFD\x41\x54\x48\x8D\x3D\x2A\x2A\x2A\x2A\x53\x48\x81\xEC\x2A\x2A\x2A\x2A\x48\x89\xB5
 970 | 
971 |
972 |
 973 | 55 48 89 E5 41 57 41 56 41 55 49 89 FD 41 54 48 8D 3D ? ? ? ? 53 48 81 EC ? ? ? ? 48 89 B5
 974 | 
975 |
976 | 977 | ### TraceFunc 978 | 979 | 980 |
StatusPlatformLibraryCODE-StyleIDA-Style
Windowsserver 981 |
 982 | \x48\x89\x5C\x24\x08\x48\x89\x6C\x24\x10\x48\x89\x74\x24\x18\x48\x89\x7C\x24\x20\x41\x54\x41\x56\x41\x57\x48\x81\xEC\x80\x00\x00\x00\x45\x33\xE4
 983 | 
984 |
985 |
 986 | 48 89 5C 24 08 48 89 6C 24 10 48 89 74 24 18 48 89 7C 24 20 41 54 41 56 41 57 48 81 EC 80 00 00 00 45 33 E4
 987 | 
988 |
Linuxserver 989 |
 990 | \x55\x4C\x8D\x4F\x08
 991 | 
992 |
993 |
 994 | 55 4C 8D 4F 08
 995 | 
996 |
997 | 998 | ### TraceShape 999 | 1000 | 1001 |
StatusPlatformLibraryCODE-StyleIDA-Style
Windowsserver 1002 |
1003 | \x48\x89\x5C\x24\x20\x48\x89\x4C\x24\x08\x55\x56\x41\x55
1004 | 
1005 |
1006 |
1007 | 48 89 5C 24 20 48 89 4C 24 08 55 56 41 55
1008 | 
1009 |
Linuxserver 1010 |
1011 | \x55\x48\x89\xE5\x41\x57\x41\x56\x49\x89\xCE\x41\x55\x4D\x89\xC5\x41\x54\x49\x89\xD4\x53\x4C\x89\xCB
1012 | 
1013 |
1014 |
1015 | 55 48 89 E5 41 57 41 56 49 89 CE 41 55 4D 89 C5 41 54 49 89 D4 53 4C 89 CB
1016 | 
1017 |
1018 | 1019 | ### CBasePlayerPawn_GetEyePosition 1020 | 1021 | 1022 |
StatusPlatformLibraryCODE-StyleIDA-Style
Windowsserver 1023 |
1024 | \x48\x89\x5C\x24\x2A\x57\x48\x83\xEC\x2A\x48\x8B\xF9\x48\x8B\xDA\x48\x8B\x89\x2A\x2A\x2A\x2A\x48\x85\xC9\x74\x2A\x48\x8B\x01
1025 | 
1026 |
1027 |
1028 | 48 89 5C 24 ? 57 48 83 EC ? 48 8B F9 48 8B DA 48 8B 89 ? ? ? ? 48 85 C9 74 ? 48 8B 01
1029 | 
1030 |
Linuxserver 1031 |
1032 | \x55\x48\x89\xE5\x41\x54\x49\x89\xFC\x48\x83\xEC\x2A\x48\x8B\xBF\x2A\x2A\x2A\x2A\x48\x85\xFF\x74\x2A\x48\x8B\x07\x48\x8D\x15
1033 | 
1034 |
1035 |
1036 | 55 48 89 E5 41 54 49 89 FC 48 83 EC ? 48 8B BF ? ? ? ? 48 85 FF 74 ? 48 8B 07 48 8D 15
1037 | 
1038 |
1039 | 1040 | ### CBasePlayerPawn_GetEyeAngles 1041 | 1042 | 1043 |
StatusPlatformLibraryCODE-StyleIDA-Style
Windowsserver 1044 |
1045 | \x48\x89\x5C\x24\x2A\x57\x48\x81\xEC\x2A\x2A\x2A\x2A\x48\x8B\xF9\x48\x8B\xDA\x48\x8B\x89
1046 | 
1047 |
1048 |
1049 | 48 89 5C 24 ? 57 48 81 EC ? ? ? ? 48 8B F9 48 8B DA 48 8B 89
1050 | 
1051 |
Linuxserver 1052 |
1053 | \x55\x48\x89\xE5\x41\x55\x41\x54\x49\x89\xFC\x48\x83\xEC\x2A\x48\x8B\xBF\x2A\x2A\x2A\x2A\x48\x85\xFF\x0F\x84\x2A\x2A\x2A\x2A\x48\x8B\x07\x48\x8D\x15
1054 | 
1055 |
1056 |
1057 | 55 48 89 E5 41 55 41 54 49 89 FC 48 83 EC ? 48 8B BF ? ? ? ? 48 85 FF 0F 84 ? ? ? ? 48 8B 07 48 8D 15
1058 | 
1059 |
1060 | 1061 | ### CBaseFilter_InputTestActivator 1062 | 1063 | 1064 |
StatusPlatformLibraryCODE-StyleIDA-Style
Windowsserver 1065 |
1066 | \x48\x89\x5C\x24\x2A\x57\x48\x83\xEC\x2A\x4C\x8B\x02
1067 | 
1068 |
1069 |
1070 | 48 89 5C 24 ? 57 48 83 EC ? 4C 8B 02
1071 | 
1072 |
Linuxserver 1073 |
1074 | \x55\x48\x89\xE5\x41\x54\x49\x89\xFC\x53\x48\x89\xF3\x48\x83\xEC\x2A\x48\x8B\x07\x48\x8B\x76
1075 | 
1076 |
1077 |
1078 | 55 48 89 E5 41 54 49 89 FC 53 48 89 F3 48 83 EC ? 48 8B 07 48 8B 76
1079 | 
1080 |
1081 | 1082 | ### GameSystem_Think_CheckSteamBan 1083 | 1084 | 1085 |
StatusPlatformLibraryCODE-StyleIDA-Style
Windowsserver 1086 |
1087 | \x41\x54\x48\x81\xEC\x2A\x2A\x2A\x2A\xBA\x2A\x2A\x2A\x2A\x48\x8D\x0D\x2A\x2A\x2A\x2A\xE8\x2A\x2A\x2A\x2A\x48\x85\xC0
1088 | 
1089 |
1090 |
1091 | 41 54 48 81 EC ? ? ? ? BA ? ? ? ? 48 8D 0D ? ? ? ? E8 ? ? ? ? 48 85 C0
1092 | 
1093 |
Linuxserver 1094 |
1095 | \x55\x48\x8D\x3D\x2A\x2A\x2A\x2A\xBE\x2A\x2A\x2A\x2A\x48\x89\xE5\x41\x57\x41\x56\x41\x55\x41\x54\x53\x48\x83\xEC
1096 | 
1097 |
1098 |
1099 | 55 48 8D 3D ? ? ? ? BE ? ? ? ? 48 89 E5 41 57 41 56 41 55 41 54 53 48 83 EC
1100 | 
1101 |
1102 | 1103 | ### CCSGameRules__sm_mapGcBanInformation 1104 | 1105 | 1106 |
StatusPlatformLibraryCODE-StyleIDA-Style
Windowsserver 1107 |
1108 | \x48\x8D\x0D\x2A\x2A\x2A\x2A\xE8\x2A\x2A\x2A\x2A\x48\x63\xD8\x48\x6B\xD3
1109 | 
1110 |
1111 |
1112 | 48 8D 0D ? ? ? ? E8 ? ? ? ? 48 63 D8 48 6B D3
1113 | 
1114 |
Linuxserver 1115 |
1116 | \x48\x8D\x3D\x2A\x2A\x2A\x2A\xE8\x2A\x2A\x2A\x2A\x48\x8B\x05\x2A\x2A\x2A\x2A\x83\x05
1117 | 
1118 |
1119 |
1120 | 48 8D 3D ? ? ? ? E8 ? ? ? ? 48 8B 05 ? ? ? ? 83 05
1121 | 
1122 |
1123 | 1124 | -------------------------------------------------------------------------------- /.github/docs/CounterStrikeSharp.md: -------------------------------------------------------------------------------- 1 | # CounterStrikeSharp 2 | 3 | Last updated: June 10, 2025 at 11:39:09 PM UTC 4 | 5 | * Manifests: [1070059047104919737](https://steamdb.info/depot/2347771/history/?changeid=M:1070059047104919737), [8955753271543459966](https://steamdb.info/depot/2347773/history/?changeid=M:8955753271543459966) 6 | * Repository: https://github.com/roflmuffin/CounterStrikeSharp 7 | * Gamedata: https://github.com/roflmuffin/CounterStrikeSharp/blob/main/configs/addons/counterstrikesharp/gamedata/gamedata.json 8 | 9 | ## Signatures 10 | 11 | ### UTIL_ClientPrintAll 12 | 13 | 14 |
StatusPlatformLibraryCODE-StyleIDA-Style
Windowsserver 15 |
 16 | \x48\x89\x5C\x24\x08\x48\x89\x6C\x24\x10\x48\x89\x74\x24\x18\x57\x48\x81\xEC\x70\x01\x2A\x2A\x8B\xE9
 17 | 
18 |
19 |
 20 | 48 89 5C 24 08 48 89 6C 24 10 48 89 74 24 18 57 48 81 EC 70 01 ? ? 8B E9
 21 | 
22 |
Linuxserver 23 |
 24 | \x55\x48\x89\xE5\x41\x57\x49\x89\xD7\x41\x56\x49\x89\xF6\x41\x55\x41\x89\xFD
 25 | 
26 |
27 |
 28 | 55 48 89 E5 41 57 49 89 D7 41 56 49 89 F6 41 55 41 89 FD
 29 | 
30 |
31 | 32 | ### ClientPrint 33 | 34 | 35 |
StatusPlatformLibraryCODE-StyleIDA-Style
Windowsserver 36 |
 37 | \x48\x85\xC9\x0F\x84\x2A\x2A\x2A\x2A\x48\x89\x5C\x24\x2A\x55
 38 | 
39 |
40 |
 41 | 48 85 C9 0F 84 ? ? ? ? 48 89 5C 24 ? 55
 42 | 
43 |
Linuxserver 44 |
 45 | \x55\x48\x89\xE5\x41\x57\x49\x89\xCF\x41\x56\x49\x89\xD6\x41\x55\x41\x89\xF5\x41\x54\x4C\x8D\xA5\xA0\xFE\xFF\xFF
 46 | 
47 |
48 |
 49 | 55 48 89 E5 41 57 49 89 CF 41 56 49 89 D6 41 55 41 89 F5 41 54 4C 8D A5 A0 FE FF FF
 50 | 
51 |
52 | 53 | ### CCSPlayerController_SwitchTeam 54 | 55 | 56 |
StatusPlatformLibraryCODE-StyleIDA-Style
Windowsserver 57 |
 58 | \x40\x56\x57\x48\x81\xEC\x2A\x2A\x2A\x2A\x48\x8B\xF9\x8B\xF2\x8B\xCA
 59 | 
60 |
61 |
 62 | 40 56 57 48 81 EC ? ? ? ? 48 8B F9 8B F2 8B CA
 63 | 
64 |
Linuxserver 65 |
 66 | \x55\x48\x89\xE5\x41\x55\x49\x89\xFD\x89\xF7
 67 | 
68 |
69 |
 70 | 55 48 89 E5 41 55 49 89 FD 89 F7
 71 | 
72 |
73 | 74 | ### CBasePlayerController_SetPawn 75 | 76 | 77 |
StatusPlatformLibraryCODE-StyleIDA-Style
Windowsserver 78 |
 79 | \x48\x89\x74\x24\x2A\x55\x41\x54\x41\x55\x41\x56\x41\x57\x48\x8D\x6C\x24\x2A\x48\x81\xEC\x2A\x2A\x2A\x2A\x4C\x8B\xF9
 80 | 
81 |
82 |
 83 | 48 89 74 24 ? 55 41 54 41 55 41 56 41 57 48 8D 6C 24 ? 48 81 EC ? ? ? ? 4C 8B F9
 84 | 
85 |
Linuxserver 86 |
 87 | \x55\x48\x89\xE5\x41\x57\x41\x56\x41\x55\x49\x89\xFD\x41\x54\x45\x89\xC4
 88 | 
89 |
90 |
 91 | 55 48 89 E5 41 57 41 56 41 55 49 89 FD 41 54 45 89 C4
 92 | 
93 |
94 | 95 | ### CCSPlayerPawnBase_PostThink 96 | 97 | 98 |
StatusPlatformLibraryCODE-StyleIDA-Style
Windowsserver 99 |
100 | \x48\x2A\x2A\x55\x53\x56\x57\x41\x2A\x48\x2A\x2A\x2A\x48\x2A\x2A\x2A\x2A\x2A\x2A\x4C\x89\x68
101 | 
102 |
103 |
104 | 48 ? ? 55 53 56 57 41 ? 48 ? ? ? 48 ? ? ? ? ? ? 4C 89 68
105 | 
106 |
Linuxserver 107 |
108 | \x55\x48\x89\xE5\x41\x56\x41\x55\x41\x54\x53\x48\x89\xFB\x48\x83\xEC\x40\xE8
109 | 
110 |
111 |
112 | 55 48 89 E5 41 56 41 55 41 54 53 48 89 FB 48 83 EC 40 E8
113 | 
114 |
115 | 116 | ### CGameEventManager_Init 117 | 118 | 119 |
StatusPlatformLibraryCODE-StyleIDA-Style
Windowsserver 120 |
121 | \x40\x53\x48\x83\xEC\x20\x48\x8B\x01\x48\x8B\xD9\xFF\x50\x10
122 | 
123 |
124 |
125 | 40 53 48 83 EC 20 48 8B 01 48 8B D9 FF 50 10
126 | 
127 |
Linuxserver 128 |
129 | \x55\x48\x89\xE5\x41\x54\x49\x89\xFC\x48\x83\xEC\x08\x48\x8B\x07\xFF\x50\x18
130 | 
131 |
132 |
133 | 55 48 89 E5 41 54 49 89 FC 48 83 EC 08 48 8B 07 FF 50 18
134 | 
135 |
136 | 137 | ### GiveNamedItem 138 | 139 | 140 |
StatusPlatformLibraryCODE-StyleIDA-Style
Windowsserver 141 |
142 | \x48\x89\x5C\x24\x2A\x48\x89\x74\x24\x2A\x55\x57\x41\x2A\x41\x2A\x41\x2A\x48\x2A\x2A\x2A\x2A\x48\x2A\x2A\x2A\x2A\x2A\x2A\x4D\x2A\x2A\x48
143 | 
144 |
145 |
146 | 48 89 5C 24 ? 48 89 74 24 ? 55 57 41 ? 41 ? 41 ? 48 ? ? ? ? 48 ? ? ? ? ? ? 4D ? ? 48
147 | 
148 |
Linuxserver 149 |
150 | \x55\x48\x89\xE5\x41\x57\x41\x56\x4D\x89\xC6\x41\x55\x49\x89\xD5\x41\x54\x49\x89\xF4
151 | 
152 |
153 |
154 | 55 48 89 E5 41 57 41 56 4D 89 C6 41 55 49 89 D5 41 54 49 89 F4
155 | 
156 |
157 | 158 | ### UTIL_Remove 159 | 160 | 161 |
StatusPlatformLibraryCODE-StyleIDA-Style
Windowsserver 162 |
163 | \x48\x85\xC9\x74\x2A\x48\x8B\xD1\x48\x8B\x0D\x2A\x2A\x2A\x2A
164 | 
165 |
166 |
167 | 48 85 C9 74 ? 48 8B D1 48 8B 0D ? ? ? ?
168 | 
169 |
Linuxserver 170 |
171 | \x48\x89\xFE\x48\x85\xFF\x74\x2A\x48\x8D\x05\x2A\x2A\x2A\x2A\x48
172 | 
173 |
174 |
175 | 48 89 FE 48 85 FF 74 ? 48 8D 05 ? ? ? ? 48
176 | 
177 |
178 | 179 | ### Host_Say 180 | 181 | 182 |
StatusPlatformLibraryCODE-StyleIDA-Style
Windowsserver 183 |
184 | \x44\x89\x4C\x24\x20\x44\x88\x44\x24\x18
185 | 
186 |
187 |
188 | 44 89 4C 24 20 44 88 44 24 18
189 | 
190 |
Linuxserver 191 |
192 | \x55\x48\x89\xE5\x41\x57\x41\x56\x49\x89\xF6\x41\x55\x4D\x89\xC5
193 | 
194 |
195 |
196 | 55 48 89 E5 41 57 41 56 49 89 F6 41 55 4D 89 C5
197 | 
198 |
199 | 200 | ### CBaseModelEntity_SetModel 201 | 202 | 203 |
StatusPlatformLibraryCODE-StyleIDA-Style
Windowsserver 204 |
205 | \x48\x89\x5C\x24\x2A\x48\x89\x7C\x24\x2A\x55\x48\x8B\xEC\x48\x83\xEC\x50\x48\x8B\xF9\x4C\x8B\xC2
206 | 
207 |
208 |
209 | 48 89 5C 24 ? 48 89 7C 24 ? 55 48 8B EC 48 83 EC 50 48 8B F9 4C 8B C2
210 | 
211 |
Linuxserver 212 |
213 | \x55\x48\x89\xF2\x48\x89\xE5\x41\x54\x49\x89\xFC\x48\x8D\x7D\xE0\x48\x83\xEC\x2A\x48\x8D\x05\x2A\x2A\x2A\x2A\x48\x8B\x30\x48\x8B\x06
214 | 
215 |
216 |
217 | 55 48 89 F2 48 89 E5 41 54 49 89 FC 48 8D 7D E0 48 83 EC ? 48 8D 05 ? ? ? ? 48 8B 30 48 8B 06
218 | 
219 |
220 | 221 | ### CCSPlayer_WeaponServices_CanUse 222 | 223 | 224 |
StatusPlatformLibraryCODE-StyleIDA-Style
Windowsserver 225 |
226 | \x48\x89\x5C\x24\x2A\x48\x89\x6C\x24\x2A\x48\x89\x74\x24\x2A\x57\x48\x83\xEC\x2A\x48\x8B\x01\x48\x8B\xF2
227 | 
228 |
229 |
230 | 48 89 5C 24 ? 48 89 6C 24 ? 48 89 74 24 ? 57 48 83 EC ? 48 8B 01 48 8B F2
231 | 
232 |
Linuxserver 233 |
234 | \x55\x48\x8D\x15\x2A\x2A\x2A\x2A\x48\x89\xE5\x41\x55\x49\x89\xF5\x41\x54\x49\x89\xFC\x53\x48\x83\xEC\x2A\x48\x8B\x07\x48\x8B\x80\x2A\x2A\x2A\x2A\x48\x39\xD0\x0F\x85\x2A\x2A\x2A\x2A\x80\xBF
235 | 
236 |
237 |
238 | 55 48 8D 15 ? ? ? ? 48 89 E5 41 55 49 89 F5 41 54 49 89 FC 53 48 83 EC ? 48 8B 07 48 8B 80 ? ? ? ? 48 39 D0 0F 85 ? ? ? ? 80 BF
239 | 
240 |
241 | 242 | ### CCSPlayer_ItemServices_CanAcquire 243 | 244 | 245 |
StatusPlatformLibraryCODE-StyleIDA-Style
Windowsserver 246 |
247 | \x44\x89\x44\x24\x2A\x48\x89\x54\x24\x2A\x48\x89\x4C\x24\x2A\x55\x56\x57\x41\x54\x41\x55\x41\x56\x41\x57\x48\x8B\xEC
248 | 
249 |
250 |
251 | 44 89 44 24 ? 48 89 54 24 ? 48 89 4C 24 ? 55 56 57 41 54 41 55 41 56 41 57 48 8B EC
252 | 
253 |
Linuxserver 254 |
255 | \x55\x48\x89\xE5\x41\x57\x41\x56\x48\x8D\x45\x2A\x41\x55\x41\x54\x53\x48\x89\xCB
256 | 
257 |
258 |
259 | 55 48 89 E5 41 57 41 56 48 8D 45 ? 41 55 41 54 53 48 89 CB
260 | 
261 |
262 | 263 | ### GetCSWeaponDataFromKey 264 | 265 | 266 |
StatusPlatformLibraryCODE-StyleIDA-Style
Windowsserver 267 |
268 | \x48\x89\x5C\x24\x2A\x48\x89\x74\x24\x2A\x57\x48\x83\xEC\x2A\x48\x8B\xFA\x8B\xF1\x48\x85\xD2\x0F\x84
269 | 
270 |
271 |
272 | 48 89 5C 24 ? 48 89 74 24 ? 57 48 83 EC ? 48 8B FA 8B F1 48 85 D2 0F 84
273 | 
274 |
Linuxserver 275 |
276 | \x55\x48\x89\xE5\x41\x57\x41\x56\x41\x89\xFE\x41\x55\x41\x54\x45
277 | 
278 |
279 |
280 | 55 48 89 E5 41 57 41 56 41 89 FE 41 55 41 54 45
281 | 
282 |
283 | 284 | ### CCSGameRules_TerminateRound 285 | 286 | 287 |
StatusPlatformLibraryCODE-StyleIDA-Style
Windowsserver 288 |
289 | \x48\x8B\xC4\x4C\x89\x48\x2A\x48\x89\x48\x2A\x55\x41\x55
290 | 
291 |
292 |
293 | 48 8B C4 4C 89 48 ? 48 89 48 ? 55 41 55
294 | 
295 |
Linuxserver 296 |
297 | \x55\x48\x89\xE5\x41\x57\x41\x56\x41\x55\x41\x54\x49\x89\xFC\x53\x48\x81\xEC\x88\x00\x00\x00\x48\x8D\x05\x2A\x2A\x2A\x2A
298 | 
299 |
300 |
301 | 55 48 89 E5 41 57 41 56 41 55 41 54 49 89 FC 53 48 81 EC 88 00 00 00 48 8D 05 ? ? ? ?
302 | 
303 |
304 | 305 | ### UTIL_CreateEntityByName 306 | 307 | 308 |
StatusPlatformLibraryCODE-StyleIDA-Style
Windowsserver 309 |
310 | \x48\x83\xEC\x48\xC6\x44\x24\x30\x00
311 | 
312 |
313 |
314 | 48 83 EC 48 C6 44 24 30 00
315 | 
316 |
Linuxserver 317 |
318 | \x48\x8D\x05\x2A\x2A\x2A\x2A\x55\x48\x89\xFA
319 | 
320 |
321 |
322 | 48 8D 05 ? ? ? ? 55 48 89 FA
323 | 
324 |
325 | 326 | ### CBaseEntity_DispatchSpawn 327 | 328 | 329 |
StatusPlatformLibraryCODE-StyleIDA-Style
Windowsserver 330 |
331 | \x48\x89\x5C\x24\x10\x57\x48\x83\xEC\x30\x48\x8B\xDA\x48\x8B\xF9\x48\x85\xC9
332 | 
333 |
334 |
335 | 48 89 5C 24 10 57 48 83 EC 30 48 8B DA 48 8B F9 48 85 C9
336 | 
337 |
Linuxserver 338 |
339 | \x48\x85\xFF\x74\x2A\x55\x48\x89\xE5\x41\x56
340 | 
341 |
342 |
343 | 48 85 FF 74 ? 55 48 89 E5 41 56
344 | 
345 |
346 | 347 | ### CBaseEntity_EmitSoundFilter 348 | 349 | 350 |
StatusPlatformLibraryCODE-StyleIDA-Style
Windowsserver 351 |
352 | \x48\x89\x5C\x24\x08\x48\x89\x6C\x24\x10\x48\x89\x74\x24\x18\x48\x89\x7C\x24\x20\x41\x56\x48\x83\xEC\x30\x48\x8B\xEA
353 | 
354 |
355 |
356 | 48 89 5C 24 08 48 89 6C 24 10 48 89 74 24 18 48 89 7C 24 20 41 56 48 83 EC 30 48 8B EA
357 | 
358 |
Linuxserver 359 |
360 | \x55\x48\x89\xE5\x41\x56\x49\x89\xD6\x41\x55\x41\x89\xF5\x41\x54\x48
361 | 
362 |
363 |
364 | 55 48 89 E5 41 56 49 89 D6 41 55 41 89 F5 41 54 48
365 | 
366 |
367 | 368 | ### CEntityInstance_AcceptInput 369 | 370 | 371 |
StatusPlatformLibraryCODE-StyleIDA-Style
Windowsserver 372 |
373 | \x48\x89\x5C\x24\x10\x48\x89\x74\x24\x18\x57\x48\x83\xEC\x40\x49\x8B\xF0
374 | 
375 |
376 |
377 | 48 89 5C 24 10 48 89 74 24 18 57 48 83 EC 40 49 8B F0
378 | 
379 |
Linuxserver 380 |
381 | \x55\x48\x89\xE5\x41\x57\x49\x89\xFF\x41\x56\x48\x8D\x7D\xC0
382 | 
383 |
384 |
385 | 55 48 89 E5 41 57 49 89 FF 41 56 48 8D 7D C0
386 | 
387 |
388 | 389 | ### CEntitySystem_AddEntityIOEvent 390 | 391 | 392 |
StatusPlatformLibraryCODE-StyleIDA-Style
Windowsserver 393 |
394 | \x48\x89\x5C\x24\x2A\x48\x89\x74\x24\x2A\x57\x48\x2A\x2A\x2A\x49\x2A\x2A\x48\x2A\x2A\x48\x2A\x2A\x74
395 | 
396 |
397 |
398 | 48 89 5C 24 ? 48 89 74 24 ? 57 48 ? ? ? 49 ? ? 48 ? ? 48 ? ? 74
399 | 
400 |
Linuxserver 401 |
402 | \x55\x41\xBA\xFF\xFF\xFF\xFF
403 | 
404 |
405 |
406 | 55 41 BA FF FF FF FF
407 | 
408 |
409 | 410 | ### LegacyGameEventListener 411 | 412 | 413 |
StatusPlatformLibraryCODE-StyleIDA-Style
Windowsserver 414 |
415 | \x48\x8B\x15\x2A\x2A\x2A\x2A\x48\x85\xD2\x74\x2A\x85\xC9\x74
416 | 
417 |
418 |
419 | 48 8B 15 ? ? ? ? 48 85 D2 74 ? 85 C9 74
420 | 
421 |
Linuxserver 422 |
423 | \x48\x8B\x05\x2A\x2A\x2A\x2A\x48\x85\xC0\x74\x2A\x85\xFF
424 | 
425 |
426 |
427 | 48 8B 05 ? ? ? ? 48 85 C0 74 ? 85 FF
428 | 
429 |
430 | 431 | ### CBasePlayerPawn_RemovePlayerItem 432 | 433 | 434 |
StatusPlatformLibraryCODE-StyleIDA-Style
Windowsserver 435 |
436 | \x48\x2A\x2A\x0F\x84\x2A\x2A\x2A\x2A\x48\x89\x5C\x24\x2A\x57\x48\x2A\x2A\x2A\x48\x2A\x2A\x48\x2A\x2A\xE8
437 | 
438 |
439 |
440 | 48 ? ? 0F 84 ? ? ? ? 48 89 5C 24 ? 57 48 ? ? ? 48 ? ? 48 ? ? E8
441 | 
442 |
Linuxserver 443 |
444 | \x55\x48\x89\x2A\x41\x2A\x49\x89\x2A\x41\x2A\x49\x89\x2A\xE8\x2A\x2A\x2A\x2A\x49\x39
445 | 
446 |
447 |
448 | 55 48 89 ? 41 ? 49 89 ? 41 ? 49 89 ? E8 ? ? ? ? 49 39
449 | 
450 |
451 | 452 | ### CBaseEntity_TakeDamageOld 453 | 454 | 455 |
StatusPlatformLibraryCODE-StyleIDA-Style
Windowsserver 456 |
457 | \x48\x89\x74\x24\x2A\x57\x48\x81\xEC\x80\x00\x00\x00\x48\x8B\x41
458 | 
459 |
460 |
461 | 48 89 74 24 ? 57 48 81 EC 80 00 00 00 48 8B 41
462 | 
463 |
Linuxserver 464 |
465 | \x55\x48\x89\xE5\x41\x57\x41\x56\x41\x55\x41\x54\x49\x89\xFC\x53\x48\x83\xEC\x58\x4C\x8D\x3D
466 | 
467 |
468 |
469 | 55 48 89 E5 41 57 41 56 41 55 41 54 49 89 FC 53 48 83 EC 58 4C 8D 3D
470 | 
471 |
472 | 473 | ### CBaseTrigger_StartTouch 474 | 475 | 476 |
StatusPlatformLibraryCODE-StyleIDA-Style
Windowsserver 477 |
478 | \x40\x57\x41\x57\x48\x83\xEC\x28\x48\x8B\x01
479 | 
480 |
481 |
482 | 40 57 41 57 48 83 EC 28 48 8B 01
483 | 
484 |
Linuxserver 485 |
486 | \x55\x48\x89\xE5\x41\x56\x49\x89\xF6\x41\x55\x49\x89\xFD\x41\x54\x53\xBB
487 | 
488 |
489 |
490 | 55 48 89 E5 41 56 49 89 F6 41 55 49 89 FD 41 54 53 BB
491 | 
492 |
493 | 494 | ### CBaseTrigger_EndTouch 495 | 496 | 497 |
StatusPlatformLibraryCODE-StyleIDA-Style
Windowsserver 498 |
499 | \x40\x53\x41\x55\x48\x83\xEC\x28
500 | 
501 |
502 |
503 | 40 53 41 55 48 83 EC 28
504 | 
505 |
Linuxserver 506 |
507 | \x55\xBA\xFF\xFF\xFF\xFF\x48\x89\xE5\x41\x57\x41\x56\x41\x55\x49\x89\xF5\x41
508 | 
509 |
510 |
511 | 55 BA FF FF FF FF 48 89 E5 41 57 41 56 41 55 49 89 F5 41
512 | 
513 |
514 | 515 | ### StateChanged 516 | 517 | 518 |
StatusPlatformLibraryCODE-StyleIDA-Style
Windowsserver 519 |
520 | \x40\x55\x53\x56\x41\x56\x41\x57\x48\x8D\x6C\x24\x2A\x48\x81\xEC\x70\x01\x00\x00
521 | 
522 |
523 |
524 | 40 55 53 56 41 56 41 57 48 8D 6C 24 ? 48 81 EC 70 01 00 00
525 | 
526 |
Linuxserver 527 |
528 | \x55\x48\x89\xE5\x41\x57\x41\x56\x41\x55\x41\x54\x53\x89\xD3
529 | 
530 |
531 |
532 | 55 48 89 E5 41 57 41 56 41 55 41 54 53 89 D3
533 | 
534 |
535 | 536 | ### NetworkStateChanged 537 | 538 | 539 |
StatusPlatformLibraryCODE-StyleIDA-Style
Windowsserver 540 |
541 | \x4C\x8B\xC9\x48\x8B\x09\x48\x85\xC9\x74\x2A\x48\x8B\x41\x10
542 | 
543 |
544 |
545 | 4C 8B C9 48 8B 09 48 85 C9 74 ? 48 8B 41 10
546 | 
547 |
Linuxserver 548 |
549 | \x4C\x8B\x07\x4D\x85\xC0\x74\x2A\x49\x8B\x40\x10
550 | 
551 |
552 |
553 | 4C 8B 07 4D 85 C0 74 ? 49 8B 40 10
554 | 
555 |
556 | 557 | ### CEntityIOOutput_FireOutputInternal 558 | 559 | 560 |
StatusPlatformLibraryCODE-StyleIDA-Style
Windowsserver 561 |
562 | \x4C\x89\x4C\x24\x20\x53\x55\x57\x41\x54\x41\x56\x48\x81\xEC
563 | 
564 |
565 |
566 | 4C 89 4C 24 20 53 55 57 41 54 41 56 48 81 EC
567 | 
568 |
Linuxserver 569 |
570 | \x55\x48\x89\xE5\x41\x57\x41\x56\x41\x55\x41\x54\x49\x89\xD4\x53\x48\x89\xF3\x48\x83\xEC\x58
571 | 
572 |
573 |
574 | 55 48 89 E5 41 57 41 56 41 55 41 54 49 89 D4 53 48 89 F3 48 83 EC 58
575 | 
576 |
577 | 578 | ### IGameSystem_InitAllSystems_pFirst 579 | 580 | 581 |
StatusPlatformLibraryCODE-StyleIDA-Style
Windowsserver 582 |
583 | \x48\x8B\x3D\x2A\x2A\x2A\x2A\x48\x85\xFF\x0F\x84\x2A\x2A\x2A\x2A\xBE
584 | 
585 |
586 |
587 | 48 8B 3D ? ? ? ? 48 85 FF 0F 84 ? ? ? ? BE
588 | 
589 |
Linuxserver 590 |
591 | \x4C\x8B\x35\x2A\x2A\x2A\x2A\x4D\x85\xF6\x75\x2A\xE9
592 | 
593 |
594 |
595 | 4C 8B 35 ? ? ? ? 4D 85 F6 75 ? E9
596 | 
597 |
598 | 599 | -------------------------------------------------------------------------------- /.github/docs/cs2-inventory-simulator-plugin.md: -------------------------------------------------------------------------------- 1 | # cs2-inventory-simulator-plugin 2 | 3 | Last updated: June 10, 2025 at 11:39:09 PM UTC 4 | 5 | * Manifests: [1070059047104919737](https://steamdb.info/depot/2347771/history/?changeid=M:1070059047104919737), [8955753271543459966](https://steamdb.info/depot/2347773/history/?changeid=M:8955753271543459966) 6 | * Repository: https://github.com/ianlucas/cs2-inventory-simulator-plugin 7 | * Gamedata: https://github.com/ianlucas/cs2-inventory-simulator-plugin/blob/main/gamedata/inventory-simulator.json 8 | 9 | ## Signatures 10 | 11 | ### ChangeSubclass 12 | 13 | 14 |
StatusPlatformLibraryCODE-StyleIDA-Style
Windowsserver 15 |
 16 | \x48\x89\x6C\x24\x2A\x56\x48\x83\xEC\x2A\x48\x8B\xEA\x48\x8B\xF1\xE8\x2A\x2A\x2A\x2A\x84\xC0\x0F\x84
 17 | 
18 |
19 |
 20 | 48 89 6C 24 ? 56 48 83 EC ? 48 8B EA 48 8B F1 E8 ? ? ? ? 84 C0 0F 84
 21 | 
22 |
Linuxserver 23 |
 24 | \x55\x48\x89\xE5\x41\x57\x41\x56\x41\x55\x49\x89\xF5\x41\x54\x49\x89\xFC\x53\x48\x81\xEC\x2A\x2A\x2A\x2A\xE8\x2A\x2A\x2A\x2A\x84\xC0\x74\x2A\x48\x8D\x05
 25 | 
26 |
27 |
 28 | 55 48 89 E5 41 57 41 56 41 55 49 89 F5 41 54 49 89 FC 53 48 81 EC ? ? ? ? E8 ? ? ? ? 84 C0 74 ? 48 8D 05
 29 | 
30 |
31 | 32 | ### CAttributeList_SetOrAddAttributeValueByName 33 | 34 | 35 |
StatusPlatformLibraryCODE-StyleIDA-Style
Windowsserver 36 |
 37 | \x40\x53\x41\x56\x41\x57\x48\x81\xEC\x2A\x2A\x2A\x2A\x0F\x29\x74\x24
 38 | 
39 |
40 |
 41 | 40 53 41 56 41 57 48 81 EC ? ? ? ? 0F 29 74 24
 42 | 
43 |
Linuxserver 44 |
 45 | \x55\x48\x89\xE5\x41\x57\x41\x56\x49\x89\xFE\x41\x55\x41\x54\x49\x89\xF4\x53\x48\x83\xEC\x2A\xF3\x0F\x11\x85
 46 | 
47 |
48 |
 49 | 55 48 89 E5 41 57 41 56 49 89 FE 41 55 41 54 49 89 F4 53 48 83 EC ? F3 0F 11 85
 50 | 
51 |
52 | 53 | ### CBaseModelEntity_SetBodygroup 54 | 55 | 56 |
StatusPlatformLibraryCODE-StyleIDA-Style
Windowsserver 57 |
 58 | \x48\x89\x5C\x24\x2A\x48\x89\x74\x24\x2A\x57\x48\x83\xEC\x2A\x41\x8B\xF8\x48\x8B\xF2\x48\x8B\xD9\xE8
 59 | 
60 |
61 |
 62 | 48 89 5C 24 ? 48 89 74 24 ? 57 48 83 EC ? 41 8B F8 48 8B F2 48 8B D9 E8
 63 | 
64 |
Linuxserver 65 |
 66 | \x55\x48\x89\xE5\x41\x56\x49\x89\xF6\x41\x55\x41\x89\xD5\x41\x54\x49\x89\xFC\x48\x83\xEC
 67 | 
68 |
69 |
 70 | 55 48 89 E5 41 56 49 89 F6 41 55 41 89 D5 41 54 49 89 FC 48 83 EC
 71 | 
72 |
73 | 74 | ### CCSPlayerPawn_IsAbleToApplySpray 75 | 76 | 77 |
StatusPlatformLibraryCODE-StyleIDA-Style
Windowsserver 78 |
 79 | \x48\x89\x5C\x24\x2A\x48\x89\x74\x24\x2A\x48\x89\x7C\x24\x2A\x4C\x89\x74\x24\x2A\x55\x48\x8D\xAC\x24\x2A\x2A\x2A\x2A\x48\x81\xEC\x2A\x2A\x2A\x2A\x49\x8B\xF1
 80 | 
81 |
82 |
 83 | 48 89 5C 24 ? 48 89 74 24 ? 48 89 7C 24 ? 4C 89 74 24 ? 55 48 8D AC 24 ? ? ? ? 48 81 EC ? ? ? ? 49 8B F1
 84 | 
85 |
Linuxserver 86 |
 87 | \x55\x48\x89\xE5\x41\x57\x41\x56\x49\x89\xFE\x41\x55\x49\x89\xD5\x41\x54\x48\x8D\x95
 88 | 
89 |
90 |
 91 | 55 48 89 E5 41 57 41 56 49 89 FE 41 55 49 89 D5 41 54 48 8D 95
 92 | 
93 |
94 | 95 | ### CCSPlayerController_ProcessUsercmds 96 | 97 | 98 |
StatusPlatformLibraryCODE-StyleIDA-Style
Windowsserver 99 |
100 | \x48\x8B\xC4\x44\x88\x48\x20\x44\x89\x40\x18\x48\x89\x50\x10\x53
101 | 
102 |
103 |
104 | 48 8B C4 44 88 48 20 44 89 40 18 48 89 50 10 53
105 | 
106 |
Linuxserver 107 |
108 | \x55\x48\x89\xE5\x41\x57\x41\x56\x41\x89\xD6\x41\x55\x41\x54\x49\x89\xFC\x53\x48\x83\xEC\x38
109 | 
110 |
111 |
112 | 55 48 89 E5 41 57 41 56 41 89 D6 41 55 41 54 49 89 FC 53 48 83 EC 38
113 | 
114 |
115 | 116 | ### CCSPlayerController_UpdateSelectTeamPreview 117 | 118 | 119 |
StatusPlatformLibraryCODE-StyleIDA-Style
Windowsserver 120 |
121 | \x89\x54\x24\x2A\x55\x48\x81\xEC
122 | 
123 |
124 |
125 | 89 54 24 ? 55 48 81 EC
126 | 
127 |
Linuxserver 128 |
129 | \x55\x48\x89\xE5\x41\x57\x41\x56\x41\x55\x41\x54\x53\x48\x89\xFB\x48\x83\xEC\x2A\x89\x75
130 | 
131 |
132 |
133 | 55 48 89 E5 41 57 41 56 41 55 41 54 53 48 89 FB 48 83 EC ? 89 75
134 | 
135 |
136 | 137 | ### CServerSideClientBase_SetSignonState 138 | 139 | 140 |
StatusPlatformLibraryCODE-StyleIDA-Style
Windowsengine2 141 |
142 | \x40\x57\x48\x83\xEC\x2A\x48\x8B\xF9\x48\x89\x74\x24
143 | 
144 |
145 |
146 | 40 57 48 83 EC ? 48 8B F9 48 89 74 24
147 | 
148 |
Linuxengine2 149 |
150 | \x55\x89\xF0\x48\x89\xE5\x41\x57\x41\x56
151 | 
152 |
153 |
154 | 55 89 F0 48 89 E5 41 57 41 56
155 | 
156 |
157 | 158 | ### CServerSideClientBase_Connect 159 | 160 | 161 |
StatusPlatformLibraryCODE-StyleIDA-Style
Windowsengine2 162 |
163 | \x48\x89\x5C\x24\x2A\x48\x89\x6C\x24\x2A\x48\x89\x74\x24\x2A\x48\x89\x7C\x24\x2A\x41\x54\x41\x56\x41\x57\x48\x83\xEC\x2A\x4C\x8B\xBC\x24\x2A\x2A\x2A\x2A\x4D\x8B\xE0\x41\x0F\xB7\xF1\x4C\x8B\xF1\x4D\x85\xFF\x74\x2A\x49\x8B\x07\x49\x8B\xCF\xFF\x50\x2A\xBB\x2A\x2A\x2A\x2A\x84\xC0\x74\x2A\xBB\x2A\x2A\x2A\x2A\x8B\x0D\x2A\x2A\x2A\x2A\x8B\xD3\xFF\x15\x2A\x2A\x2A\x2A\x0F\xB6\xAC\x24\x2A\x2A\x2A\x2A\x84\xC0\x74\x2A\x4D\x85\xFF\x74\x2A\x49\x8B\x07\x49\x8B\xCF\xFF\x50\x2A\x48\x8B\xD0\xEB\x2A\x48\x8D\x15\x2A\x2A\x2A\x2A\x8B\x0D\x2A\x2A\x2A\x2A\x4C\x8D\x05\x2A\x2A\x2A\x2A\x48\x89\x54\x24\x2A\x4D\x8B\xCC\x89\x6C\x24\x2A\x8B\xD3\x89\x74\x24\x2A\xFF\x15\x2A\x2A\x2A\x2A\x40\x84\xED\x75\x2A\x45\x33\xC0\x48\x8D\x0D\x2A\x2A\x2A\x2A\x41\x8D\x50\x2A\xE8\x2A\x2A\x2A\x2A\x49\x8B\x06\x49\x8B\xCE\x49\x8B\xBE\x2A\x2A\x2A\x2A\x49\x8B\x9E\x2A\x2A\x2A\x2A\xFF\x50\x2A\xB9\x2A\x2A\x2A\x2A\x49\x89\xBE\x2A\x2A\x2A\x2A\x49\x89\xBE\x2A\x2A\x2A\x2A\x49\x89\x9E\x2A\x2A\x2A\x2A\x66\x41\x89\xB6\x2A\x2A\x2A\x2A\xFF\x15\x2A\x2A\x2A\x2A\x33\xFF
164 | 
165 |
166 |
167 | 48 89 5C 24 ? 48 89 6C 24 ? 48 89 74 24 ? 48 89 7C 24 ? 41 54 41 56 41 57 48 83 EC ? 4C 8B BC 24 ? ? ? ? 4D 8B E0 41 0F B7 F1 4C 8B F1 4D 85 FF 74 ? 49 8B 07 49 8B CF FF 50 ? BB ? ? ? ? 84 C0 74 ? BB ? ? ? ? 8B 0D ? ? ? ? 8B D3 FF 15 ? ? ? ? 0F B6 AC 24 ? ? ? ? 84 C0 74 ? 4D 85 FF 74 ? 49 8B 07 49 8B CF FF 50 ? 48 8B D0 EB ? 48 8D 15 ? ? ? ? 8B 0D ? ? ? ? 4C 8D 05 ? ? ? ? 48 89 54 24 ? 4D 8B CC 89 6C 24 ? 8B D3 89 74 24 ? FF 15 ? ? ? ? 40 84 ED 75 ? 45 33 C0 48 8D 0D ? ? ? ? 41 8D 50 ? E8 ? ? ? ? 49 8B 06 49 8B CE 49 8B BE ? ? ? ? 49 8B 9E ? ? ? ? FF 50 ? B9 ? ? ? ? 49 89 BE ? ? ? ? 49 89 BE ? ? ? ? 49 89 9E ? ? ? ? 66 41 89 B6 ? ? ? ? FF 15 ? ? ? ? 33 FF
168 | 
169 |
Linuxengine2 170 |
171 | \x55\x48\x89\xE5\x41\x57\x49\x89\xFF\x41\x56\x41\x55\x41\x89\xCD
172 | 
173 |
174 |
175 | 55 48 89 E5 41 57 49 89 FF 41 56 41 55 41 89 CD
176 | 
177 |
178 | 179 | -------------------------------------------------------------------------------- /.github/docs/cs2-match-plugin.md: -------------------------------------------------------------------------------- 1 | # cs2-match-plugin 2 | 3 | Last updated: June 10, 2025 at 11:39:09 PM UTC 4 | 5 | * Manifests: [1070059047104919737](https://steamdb.info/depot/2347771/history/?changeid=M:1070059047104919737), [8955753271543459966](https://steamdb.info/depot/2347773/history/?changeid=M:8955753271543459966) 6 | * Repository: https://github.com/ianlucas/cs2-match-plugin 7 | * Gamedata: https://github.com/ianlucas/cs2-match-plugin/blob/master/gamedata/match.json 8 | 9 | ## Signatures 10 | 11 | ### TerminateRound 12 | 13 | 14 |
StatusPlatformLibraryCODE-StyleIDA-Style
Windowsserver 15 |
 16 | \x48\x8B\xC4\x4C\x89\x48\x2A\x48\x89\x48\x2A\x55\x41\x55
 17 | 
18 |
19 |
 20 | 48 8B C4 4C 89 48 ? 48 89 48 ? 55 41 55
 21 | 
22 |
Linuxserver 23 |
 24 | \x55\x48\x89\xE5\x41\x57\x41\x56\x41\x55\x41\x54\x49\x89\xFC\x53\x48\x81\xEC\x2A\x2A\x2A\x2A\x48\x8D\x05\x2A\x2A\x2A\x2A\xF3\x0F\x11\x85
 25 | 
26 |
27 |
 28 | 55 48 89 E5 41 57 41 56 41 55 41 54 49 89 FC 53 48 81 EC ? ? ? ? 48 8D 05 ? ? ? ? F3 0F 11 85
 29 | 
30 |
31 | 32 | ### ChangeTeam 33 | 34 | 35 |
StatusPlatformLibraryCODE-StyleIDA-Style
Windowsserver 36 |
 37 | \x40\x55\x56\x57\x48\x81\xEC\x2A\x2A\x2A\x2A\x0F\xB6\xA9
 38 | 
39 |
40 |
 41 | 40 55 56 57 48 81 EC ? ? ? ? 0F B6 A9
 42 | 
43 |
Linuxserver 44 |
 45 | \x55\x48\x89\xE5\x41\x57\x41\x56\x41\x55\x41\x54\x53\x48\x83\xEC\x2A\x44\x0F\xB6\xB7\x2A\x2A\x2A\x2A\x44\x39\xF6
 46 | 
47 |
48 |
 49 | 55 48 89 E5 41 57 41 56 41 55 41 54 53 48 83 EC ? 44 0F B6 B7 ? ? ? ? 44 39 F6
 50 | 
51 |
52 | 53 | ### IncrementNumMVPs 54 | 55 | 56 |
StatusPlatformLibraryCODE-StyleIDA-Style
Windowsserver 57 |
 58 | \x40\x55\x57\x41\x57\x48\x8B\xEC\x48\x81\xEC
 59 | 
60 |
61 |
 62 | 40 55 57 41 57 48 8B EC 48 81 EC
 63 | 
64 |
Linuxserver 65 |
 66 | \x55\x48\x89\xE5\x41\x57\x41\x56\x41\x55\x41\x54\x49\x89\xFC\x53\x48\x8D\x3D\x2A\x2A\x2A\x2A\x89\xF3
 67 | 
68 |
69 |
 70 | 55 48 89 E5 41 57 41 56 41 55 41 54 49 89 FC 53 48 8D 3D ? ? ? ? 89 F3
 71 | 
72 |
73 | 74 | ### HandleSwapTeams 75 | 76 | 77 |
StatusPlatformLibraryCODE-StyleIDA-Style
Windowsserver 78 |
 79 | \x48\x8B\xC4\x48\x89\x48\x2A\x55\x48\x81\xEC
 80 | 
81 |
82 |
 83 | 48 8B C4 48 89 48 ? 55 48 81 EC
 84 | 
85 |
Linuxserver 86 |
 87 | \x55\x48\x89\xE5\x41\x57\x49\x89\xFF\x41\x56\x41\x55\x41\x54\x53\x31\xDB\x48\x83\xEC
 88 | 
89 |
90 |
 91 | 55 48 89 E5 41 57 49 89 FF 41 56 41 55 41 54 53 31 DB 48 83 EC
 92 | 
93 |
94 | 95 | ### IsLastRoundBeforeHalfTime 96 | 97 | 98 |
StatusPlatformLibraryCODE-StyleIDA-Style
Windowsserver 99 |
100 | \x40\x53\x48\x83\xEC\x2A\x48\x8B\xD9\xBA\x2A\x2A\x2A\x2A\x48\x8D\x0D\x2A\x2A\x2A\x2A\xE8\x2A\x2A\x2A\x2A\x48\x85\xC0\x75\x2A\x48\x8B\x05\x2A\x2A\x2A\x2A\x48\x8B\x40\x2A\x80\x38\x2A\x0F\x84\x2A\x2A\x2A\x2A\x83\xBB
101 | 
102 |
103 |
104 | 40 53 48 83 EC ? 48 8B D9 BA ? ? ? ? 48 8D 0D ? ? ? ? E8 ? ? ? ? 48 85 C0 75 ? 48 8B 05 ? ? ? ? 48 8B 40 ? 80 38 ? 0F 84 ? ? ? ? 83 BB
105 | 
106 |
Linuxserver 107 |
108 | \x55\xBE\x2A\x2A\x2A\x2A\x48\x89\xE5\x41\x55\x41\x54\x53\x48\x89\xFB\x48\x8D\x3D\x2A\x2A\x2A\x2A\x48\x83\xEC\x2A\xE8\x2A\x2A\x2A\x2A\x48\x85\xC0\x74
109 | 
110 |
111 |
112 | 55 BE ? ? ? ? 48 89 E5 41 55 41 54 53 48 89 FB 48 8D 3D ? ? ? ? 48 83 EC ? E8 ? ? ? ? 48 85 C0 74
113 | 
114 |
115 | 116 | ### AreTeamsPlayingSwitchedSides 117 | 118 | 119 |
StatusPlatformLibraryCODE-StyleIDA-Style
Windowsserver 120 |
121 | \x40\x53\x48\x83\xEC\x2A\x8B\x81\x2A\x2A\x2A\x2A\x48\x8B\xD9\x8B\x91
122 | 
123 |
124 |
125 | 40 53 48 83 EC ? 8B 81 ? ? ? ? 48 8B D9 8B 91
126 | 
127 |
Linuxserver 128 |
129 | \x55\x48\x89\xE5\x41\x57\x41\x56\x41\x55\x41\x54\x53\x48\x89\xFB\x48\x83\xEC\x2A\x8B\x87
130 | 
131 |
132 |
133 | 55 48 89 E5 41 57 41 56 41 55 41 54 53 48 89 FB 48 83 EC ? 8B 87
134 | 
135 |
136 | 137 | -------------------------------------------------------------------------------- /.github/docs/cs2-retakes-allocator.md: -------------------------------------------------------------------------------- 1 | # cs2-retakes-allocator 2 | 3 | Last updated: June 10, 2025 at 11:39:09 PM UTC 4 | 5 | * Manifests: [1070059047104919737](https://steamdb.info/depot/2347771/history/?changeid=M:1070059047104919737), [8955753271543459966](https://steamdb.info/depot/2347773/history/?changeid=M:8955753271543459966) 6 | * Repository: https://github.com/yonilerner/cs2-retakes-allocator 7 | * Gamedata: https://github.com/yonilerner/cs2-retakes-allocator/blob/main/Resources/RetakesAllocator_gamedata.json 8 | 9 | ## Signatures 10 | 11 | ### GetCSWeaponDataFromKey 12 | 13 | 14 |
StatusPlatformLibraryCODE-StyleIDA-Style
Windowsserver 15 |
16 | \x48\x89\x5C\x24\x2A\x48\x89\x74\x24\x2A\x57\x48\x83\xEC\x2A\x48\x8B\xFA\x8B\xF1\x48\x85\xD2\x0F\x84
17 | 
18 |
19 |
20 | 48 89 5C 24 ? 48 89 74 24 ? 57 48 83 EC ? 48 8B FA 8B F1 48 85 D2 0F 84
21 | 
22 |
Linuxserver 23 |
24 | \x55\x48\x89\xE5\x41\x57\x41\x56\x41\x89\xFE\x41\x55\x41\x54\x45
25 | 
26 |
27 |
28 | 55 48 89 E5 41 57 41 56 41 89 FE 41 55 41 54 45
29 | 
30 |
31 | 32 | ### CCSPlayer_ItemServices_CanAcquire 33 | 34 | 35 |
StatusPlatformLibraryCODE-StyleIDA-Style
Windowsserver 36 |
37 | \x44\x89\x44\x24\x2A\x48\x89\x54\x24\x2A\x48\x89\x4C\x24\x2A\x55\x56\x57\x41\x54\x41\x55\x41\x56\x41\x57\x48\x8B\xEC
38 | 
39 |
40 |
41 | 44 89 44 24 ? 48 89 54 24 ? 48 89 4C 24 ? 55 56 57 41 54 41 55 41 56 41 57 48 8B EC
42 | 
43 |
Linuxserver 44 |
45 | \x55\x48\x89\xE5\x41\x57\x41\x56\x48\x8D\x45\x2A\x41\x55\x41\x54\x53\x48\x89\xCB
46 | 
47 |
48 |
49 | 55 48 89 E5 41 57 41 56 48 8D 45 ? 41 55 41 54 53 48 89 CB
50 | 
51 |
52 | 53 | ### GiveNamedItem2 54 | 55 | 56 |
StatusPlatformLibraryCODE-StyleIDA-Style
Windowsserver 57 |
58 | \x48\x83\xEC\x2A\x48\xC7\x44\x24\x2A\x2A\x2A\x2A\x2A\x45\x33\xC9\x45\x33\xC0\xC6\x44\x24\x2A\x2A\xE8\x2A\x2A\x2A\x2A\x48\x83\xC4\x2A\xC3\xCC\xCC\xCC\xCC\xCC\xCC\xCC\xCC\xCC\xCC\xCC\xCC\xCC\xCC\x48\x83\xEC
59 | 
60 |
61 |
62 | 48 83 EC ? 48 C7 44 24 ? ? ? ? ? 45 33 C9 45 33 C0 C6 44 24 ? ? E8 ? ? ? ? 48 83 C4 ? C3 CC CC CC CC CC CC CC CC CC CC CC CC CC CC 48 83 EC
63 | 
64 |
Linuxserver 65 |
66 | \x55\x48\x89\xE5\x41\x57\x41\x56\x41\x55\x41\x54\x53\x48\x83\xEC\x2A\x48\x89\x7D\x2A\x44\x89\x45
67 | 
68 |
69 |
70 | 55 48 89 E5 41 57 41 56 41 55 41 54 53 48 83 EC ? 48 89 7D ? 44 89 45
71 | 
72 |
73 | 74 | -------------------------------------------------------------------------------- /.github/docs/cs2kz-metamod.md: -------------------------------------------------------------------------------- 1 | # cs2kz-metamod 2 | 3 | Last updated: June 10, 2025 at 11:39:09 PM UTC 4 | 5 | * Manifests: [1070059047104919737](https://steamdb.info/depot/2347771/history/?changeid=M:1070059047104919737), [8955753271543459966](https://steamdb.info/depot/2347773/history/?changeid=M:8955753271543459966) 6 | * Repository: https://github.com/KZGlobalTeam/cs2kz-metamod 7 | * Gamedata: https://github.com/KZGlobalTeam/cs2kz-metamod/blob/dev/gamedata/cs2kz-core.games.txt 8 | 9 | ## Signatures 10 | 11 | ### CCSPlayerController_SwitchTeam 12 | 13 | 14 |
StatusPlatformLibraryCODE-StyleIDA-Style
Windowsserver 15 |
 16 | \x40\x56\x57\x48\x81\xEC\x2A\x2A\x2A\x2A\x48\x8B\xF9\x8B\xF2\x8B\xCA
 17 | 
18 |
19 |
 20 | 40 56 57 48 81 EC ? ? ? ? 48 8B F9 8B F2 8B CA
 21 | 
22 |
Linuxserver 23 |
 24 | \x55\x48\x89\xE5\x41\x55\x49\x89\xFD\x89\xF7
 25 | 
26 |
27 |
 28 | 55 48 89 E5 41 55 49 89 FD 89 F7
 29 | 
30 |
31 | 32 | ### CBasePlayerController_SetPawn 33 | 34 | 35 |
StatusPlatformLibraryCODE-StyleIDA-Style
Windowsserver 36 |
 37 | \x48\x89\x74\x24\x2A\x55\x41\x54\x41\x55\x41\x56\x41\x57\x48\x8D\x6C\x24\x2A\x48\x81\xEC\x2A\x2A\x2A\x2A\x4C\x8B\xF9
 38 | 
39 |
40 |
 41 | 48 89 74 24 ? 55 41 54 41 55 41 56 41 57 48 8D 6C 24 ? 48 81 EC ? ? ? ? 4C 8B F9
 42 | 
43 |
Linuxserver 44 |
 45 | \x55\x48\x89\xE5\x41\x57\x41\x56\x41\x55\x49\x89\xFD\x41\x54\x45\x89\xC4
 46 | 
47 |
48 |
 49 | 55 48 89 E5 41 57 41 56 41 55 49 89 FD 41 54 45 89 C4
 50 | 
51 |
52 | 53 | ### GetLegacyGameEventListener 54 | 55 | 56 |
StatusPlatformLibraryCODE-StyleIDA-Style
Windowsserver 57 |
 58 | \x48\x8B\x15\x2A\x2A\x2A\x2A\x48\x85\xD2\x74\x2A\x85\xC9\x74
 59 | 
60 |
61 |
 62 | 48 8B 15 ? ? ? ? 48 85 D2 74 ? 85 C9 74
 63 | 
64 |
Linuxserver 65 |
 66 | \x48\x8B\x05\x2A\x2A\x2A\x2A\x48\x85\xC0\x74\x2A\x85\xFF
 67 | 
68 |
69 |
 70 | 48 8B 05 ? ? ? ? 48 85 C0 74 ? 85 FF
 71 | 
72 |
73 | 74 | ### RecvServerBrowserPacket 75 | 76 | 77 |
StatusPlatformLibraryCODE-StyleIDA-Style
Windowssteamnetworkingsockets 78 |
 79 | \x48\x89\x6C\x24\x18\x56\x48\x83\xEC\x20\x48\x8B\xF1\x48\x8B\xEA
 80 | 
81 |
82 |
 83 | 48 89 6C 24 18 56 48 83 EC 20 48 8B F1 48 8B EA
 84 | 
85 |
Linuxsteamnetworkingsockets 86 |
 87 | \x41\x54\x55\x48\x89\xF5\x53\x48\x89\xFB\x48\x63\x47\x08
 88 | 
89 |
90 |
 91 | 41 54 55 48 89 F5 53 48 89 FB 48 63 47 08
 92 | 
93 |
94 | 95 | ### SnapViewAngles 96 | 97 | 98 |
StatusPlatformLibraryCODE-StyleIDA-Style
Windowsserver 99 |
100 | \x48\x89\x5C\x24\x2A\x48\x89\x7C\x24\x2A\x55\x48\x8D\x6C\x24\x2A\x48\x81\xEC\x2A\x2A\x2A\x2A\x41\xB9\x2A\x2A\x2A\x2A\x48\x8B\xDA\x48\x8B\xF9\x48\x8D\x55\x2A\x48\x8D\x4D\x2A\x45\x8D\x41\x2A\xE8\x2A\x2A\x2A\x2A\x48\x8B\xD3\x48\x8D\x4D\x2A\xE8\x2A\x2A\x2A\x2A\x41\xB9\x2A\x2A\x2A\x2A\x48\x8D\x55\x2A\x48\x8D\x4D\x2A\x45\x8D\x41\x2A\xE8\x2A\x2A\x2A\x2A\x48\x8D\x55\x2A\x48\x8D\x4D\x2A\xE8\x2A\x2A\x2A\x2A\xF2\x0F\x10\x87
101 | 
102 |
103 |
104 | 48 89 5C 24 ? 48 89 7C 24 ? 55 48 8D 6C 24 ? 48 81 EC ? ? ? ? 41 B9 ? ? ? ? 48 8B DA 48 8B F9 48 8D 55 ? 48 8D 4D ? 45 8D 41 ? E8 ? ? ? ? 48 8B D3 48 8D 4D ? E8 ? ? ? ? 41 B9 ? ? ? ? 48 8D 55 ? 48 8D 4D ? 45 8D 41 ? E8 ? ? ? ? 48 8D 55 ? 48 8D 4D ? E8 ? ? ? ? F2 0F 10 87
105 | 
106 |
Linuxserver 107 |
108 | \x55\x48\x89\xE5\x41\x56\x41\x55\x41\x54\x49\x89\xFC\x48\x89\xF7\x53\x48\x83\xEC\x60\xE8\x2A\x2A\x2A\x2A\x49\x8B\x94\x24
109 | 
110 |
111 |
112 | 55 48 89 E5 41 56 41 55 41 54 49 89 FC 48 89 F7 53 48 83 EC 60 E8 ? ? ? ? 49 8B 94 24
113 | 
114 |
115 | 116 | ### InitPlayerMovementTraceFilter 117 | 118 | 119 |
StatusPlatformLibraryCODE-StyleIDA-Style
Windowsserver 120 |
121 | \x48\x89\x5C\x24\x08\x48\x89\x74\x24\x10\x57\x48\x83\xEC\x20\x0F\xB6\x41\x37\x48
122 | 
123 |
124 |
125 | 48 89 5C 24 08 48 89 74 24 10 57 48 83 EC 20 0F B6 41 37 48
126 | 
127 |
Linuxserver 128 |
129 | \x55\xB8\x2A\x2A\x2A\x2A\x48\x89\xE5\x41\x55\x41\x54\x49\x89\xF4\x53\x48\x89\xFB\x48\x83\xEC\x2A\x66\x89\x47\x2A\x48\x8D\x05\x2A\x2A\x2A\x2A\x88\x4F\x2A\x48\x89\x07\x0F\xB7\x47\x2A\x48\x89\x57\x2A\x48\xC7\x47\x2A\x2A\x2A\x2A\x2A\x48\xC7\x47\x2A\x2A\x2A\x2A\x2A\x66\x25\x2A\x2A\x48\xC7\x47\x2A\x2A\x2A\x2A\x2A\x83\xC8\x2A\x48\xC7\x47\x2A\x2A\x2A\x2A\x2A\xC7\x47\x2A\x2A\x2A\x2A\x2A\x66\x89\x47\x2A\x48\x89\xF7\xE8\x2A\x2A\x2A\x2A\x31
130 | 
131 |
132 |
133 | 55 B8 ? ? ? ? 48 89 E5 41 55 41 54 49 89 F4 53 48 89 FB 48 83 EC ? 66 89 47 ? 48 8D 05 ? ? ? ? 88 4F ? 48 89 07 0F B7 47 ? 48 89 57 ? 48 C7 47 ? ? ? ? ? 48 C7 47 ? ? ? ? ? 66 25 ? ? 48 C7 47 ? ? ? ? ? 83 C8 ? 48 C7 47 ? ? ? ? ? C7 47 ? ? ? ? ? 66 89 47 ? 48 89 F7 E8 ? ? ? ? 31
134 | 
135 |
136 | 137 | ### InitGameTrace 138 | 139 | 140 |
StatusPlatformLibraryCODE-StyleIDA-Style
Windowsserver 141 |
142 | \x48\x89\x5C\x24\x08\x57\x48\x83\xEC\x20\x48\x8B\xD9\x33\xFF\x48\x8B\x0D\x2A\x2A\x2A\x2A\x48\x85\xC9
143 | 
144 |
145 |
146 | 48 89 5C 24 08 57 48 83 EC 20 48 8B D9 33 FF 48 8B 0D ? ? ? ? 48 85 C9
147 | 
148 |
Linuxserver 149 |
150 | \x55\x48\x89\xE5\x41\x57\x41\x56\x41\x55\x41\x54\x53\x48\x89\xFB\x48\x81\xEC\xA8\x00\x00\x00\x4C\x8B\x25\x2A\x2A\x2A\x2A\x4D\x85\xE4
151 | 
152 |
153 |
154 | 55 48 89 E5 41 57 41 56 41 55 41 54 53 48 89 FB 48 81 EC A8 00 00 00 4C 8B 25 ? ? ? ? 4D 85 E4
155 | 
156 |
157 | 158 | ### TracePlayerBBox 159 | 160 | 161 |
StatusPlatformLibraryCODE-StyleIDA-Style
Windowsserver 162 |
163 | \x48\x8B\xC4\x4C\x89\x40\x18\x55\x53\x57\x41\x55\x41\x56
164 | 
165 |
166 |
167 | 48 8B C4 4C 89 40 18 55 53 57 41 55 41 56
168 | 
169 |
Linuxserver 170 |
171 | \x55\x48\x89\xE5\x41\x57\x49\x89\xFF\x41\x56\x49\x89\xF6\x41\x55\x49\x89\xCD
172 | 
173 |
174 |
175 | 55 48 89 E5 41 57 49 89 FF 41 56 49 89 F6 41 55 49 89 CD
176 | 
177 |
178 | 179 | ### TraceShape 180 | 181 | 182 |
StatusPlatformLibraryCODE-StyleIDA-Style
Windowsserver 183 |
184 | \x48\x89\x5C\x24\x20\x48\x89\x4C\x24\x08\x55\x56\x41\x55
185 | 
186 |
187 |
188 | 48 89 5C 24 20 48 89 4C 24 08 55 56 41 55
189 | 
190 |
Linuxserver 191 |
192 | \x55\x48\x89\xE5\x41\x57\x41\x56\x49\x89\xCE\x41\x55\x4D\x89\xC5\x41\x54\x49\x89\xD4\x53\x4C\x89\xCB
193 | 
194 |
195 |
196 | 55 48 89 E5 41 57 41 56 49 89 CE 41 55 4D 89 C5 41 54 49 89 D4 53 4C 89 CB
197 | 
198 |
199 | 200 | ### GetMaxSpeed 201 | 202 | 203 |
StatusPlatformLibraryCODE-StyleIDA-Style
Windowsserver 204 |
205 | \x40\x53\x48\x83\xEC\x2A\x48\x8B\xD9\xE8\x2A\x2A\x2A\x2A\x84\xC0\x0F\x84\x2A\x2A\x2A\x2A\x48\x8B\x0D
206 | 
207 |
208 |
209 | 40 53 48 83 EC ? 48 8B D9 E8 ? ? ? ? 84 C0 0F 84 ? ? ? ? 48 8B 0D
210 | 
211 |
Linuxserver 212 |
213 | \x55\x48\x89\xE5\x41\x55\x41\x54\x53\x48\x89\xFB\x48\x83\xEC\x18\xE8\x2A\x2A\x2A\x2A\x84\xC0
214 | 
215 |
216 |
217 | 55 48 89 E5 41 55 41 54 53 48 89 FB 48 83 EC 18 E8 ? ? ? ? 84 C0
218 | 
219 |
220 | 221 | ### SetupMove 222 | 223 | 224 |
StatusPlatformLibraryCODE-StyleIDA-Style
Windowsserver 225 |
226 | \x48\x89\x5C\x24\x10\x48\x89\x6C\x24\x18\x48\x89\x74\x24\x20\x57\x48\x83\xEC\x30\x49\x8B\xF8
227 | 
228 |
229 |
230 | 48 89 5C 24 10 48 89 6C 24 18 48 89 74 24 20 57 48 83 EC 30 49 8B F8
231 | 
232 |
Linuxserver 233 |
234 | \x55\x48\x89\xE5\x41\x56\x41\x55\x49\x89\xF5\x41\x54\x49\x89\xD4\x53\x48\x89\xFB\x48\x83\xEC\x10
235 | 
236 |
237 |
238 | 55 48 89 E5 41 56 41 55 49 89 F5 41 54 49 89 D4 53 48 89 FB 48 83 EC 10
239 | 
240 |
241 | 242 | ### ProcessMovement 243 | 244 | 245 |
StatusPlatformLibraryCODE-StyleIDA-Style
Windowsserver 246 |
247 | \x40\x56\x57\x48\x81\xEC\x2A\x2A\x2A\x2A\x4C\x8B\x49
248 | 
249 |
250 |
251 | 40 56 57 48 81 EC ? ? ? ? 4C 8B 49
252 | 
253 |
Linuxserver 254 |
255 | \x55\x48\x89\xE5\x41\x57\x41\x56\x41\x55\x41\x54\x49\x89\xFC\x53\x48\x83\xEC\x38\x48\x8B\x7F\x30
256 | 
257 |
258 |
259 | 55 48 89 E5 41 57 41 56 41 55 41 54 49 89 FC 53 48 83 EC 38 48 8B 7F 30
260 | 
261 |
262 | 263 | ### PlayerMove 264 | 265 | 266 |
StatusPlatformLibraryCODE-StyleIDA-Style
Windowsserver 267 |
268 | \x48\x89\x74\x24\x18\x57\x48\x83\xEC\x40\x48\x8B\xF9\x48\x8B\xF2
269 | 
270 |
271 |
272 | 48 89 74 24 18 57 48 83 EC 40 48 8B F9 48 8B F2
273 | 
274 |
Linuxserver 275 |
276 | \x55\x48\x89\xE5\x41\x55\x49\x89\xF5\x41\x54\x49\x89\xFC\x48\x8B\x7F\x30\x48\x8B\x07
277 | 
278 |
279 |
280 | 55 48 89 E5 41 55 49 89 F5 41 54 49 89 FC 48 8B 7F 30 48 8B 07
281 | 
282 |
283 | 284 | ### CheckParameters 285 | 286 | 287 |
StatusPlatformLibraryCODE-StyleIDA-Style
Windowsserver 288 |
289 | \x48\x8B\xC4\x48\x89\x58\x20\x55\x56\x57\x41\x56\x41\x57\x48\x8D\x68\xA1
290 | 
291 |
292 |
293 | 48 8B C4 48 89 58 20 55 56 57 41 56 41 57 48 8D 68 A1
294 | 
295 |
Linuxserver 296 |
297 | \x55\x48\x89\xE5\x41\x56\x41\x55\x41\x54\x49\x89\xFC\x53\x48\x89\xF3\x48\x83\xEC\x30\xE8\x2A\x2A\x2A\x2A\x49\x8B
298 | 
299 |
300 |
301 | 55 48 89 E5 41 56 41 55 41 54 49 89 FC 53 48 89 F3 48 83 EC 30 E8 ? ? ? ? 49 8B
302 | 
303 |
304 | 305 | ### CanMove 306 | 307 | 308 |
StatusPlatformLibraryCODE-StyleIDA-Style
Windowsserver 309 |
310 | \x40\x53\x48\x83\xEC\x30\x48\x8B\xD9\xBA\xFF\xFF\xFF\xFF\x48\x8D\x0D\x2A\x2A\x2A\x2A\xE8\x2A\x2A\x2A\x2A\x48\x85\xC0\x75\x2A\x48\x8B\x05\x2A\x2A\x2A\x2A\x48\x8B\x40\x08\x80\x38\x00\x0F\x85
311 | 
312 |
313 |
314 | 40 53 48 83 EC 30 48 8B D9 BA FF FF FF FF 48 8D 0D ? ? ? ? E8 ? ? ? ? 48 85 C0 75 ? 48 8B 05 ? ? ? ? 48 8B 40 08 80 38 00 0F 85
315 | 
316 |
Linuxserver 317 |
318 | \x55\xBE\xFF\xFF\xFF\xFF\x48\x89\xE5\x41\x55\x41\x54\x53\x48\x89\xFB\x48\x8D\x3D\x2A\x2A\x2A\x2A\x48\x83\xEC\x2A\xE8\x2A\x2A\x2A\x2A\x48\x85\xC0\x0F\x84\xCE
319 | 
320 |
321 |
322 | 55 BE FF FF FF FF 48 89 E5 41 55 41 54 53 48 89 FB 48 8D 3D ? ? ? ? 48 83 EC ? E8 ? ? ? ? 48 85 C0 0F 84 CE
323 | 
324 |
325 | 326 | ### FullWalkMove 327 | 328 | 329 |
StatusPlatformLibraryCODE-StyleIDA-Style
Windowsserver 330 |
331 | \x40\x56\x57\x48\x83\xEC\x38\x48\x8B\xF2
332 | 
333 |
334 |
335 | 40 56 57 48 83 EC 38 48 8B F2
336 | 
337 |
Linuxserver 338 |
339 | \x55\x48\x89\xE5\x41\x56\x41\x55\x49\x89\xF5\x41\x54\x49\x89\xFC\x53\x48\x83\xEC\x20\x84\xD2
340 | 
341 |
342 |
343 | 55 48 89 E5 41 56 41 55 49 89 F5 41 54 49 89 FC 53 48 83 EC 20 84 D2
344 | 
345 |
346 | 347 | ### MoveInit 348 | 349 | 350 |
StatusPlatformLibraryCODE-StyleIDA-Style
Windowsserver 351 |
352 | \x48\x89\x5C\x24\x10\x57\x48\x83\xEC\x40\x48\x8B\xFA\x48\x8B\xD9\xE8\x2A\x2A\x2A\x2A\x48\x8B\xCB
353 | 
354 |
355 |
356 | 48 89 5C 24 10 57 48 83 EC 40 48 8B FA 48 8B D9 E8 ? ? ? ? 48 8B CB
357 | 
358 |
Linuxserver 359 |
360 | \x55\x48\x89\xE5\x41\x55\x41\x54\x49\x89\xF4\x53\x48\x89\xFB\x48\x89\xF7\x48\x83\xEC\x18\x48\xC7\x86\xD4\x00\x00\x00\x00\x00\x00\x00
361 | 
362 |
363 |
364 | 55 48 89 E5 41 55 41 54 49 89 F4 53 48 89 FB 48 89 F7 48 83 EC 18 48 C7 86 D4 00 00 00 00 00 00 00
365 | 
366 |
367 | 368 | ### CheckWater 369 | 370 | 371 |
StatusPlatformLibraryCODE-StyleIDA-Style
Windowsserver 372 |
373 | \x48\x8B\xC4\x48\x89\x58\x08\x48\x89\x78\x10\x55\x48\x8D\x68\x98
374 | 
375 |
376 |
377 | 48 8B C4 48 89 58 08 48 89 78 10 55 48 8D 68 98
378 | 
379 |
Linuxserver 380 |
381 | \x55\x48\x89\xE5\x41\x54\x49\x89\xF4\x53\x48\x89\xFB\x48\x81\xEC\x2A\x2A\x2A\x2A\x48
382 | 
383 |
384 |
385 | 55 48 89 E5 41 54 49 89 F4 53 48 89 FB 48 81 EC ? ? ? ? 48
386 | 
387 |
388 | 389 | ### WaterMove 390 | 391 | 392 |
StatusPlatformLibraryCODE-StyleIDA-Style
Windowsserver 393 |
394 | \x48\x8B\xC4\x48\x89\x58\x08\x48\x89\x70\x10\x48\x89\x78\x18\x55\x41\x56\x41\x57\x48\x8D\xA8\xC8\xFE\xFF\xFF
395 | 
396 |
397 |
398 | 48 8B C4 48 89 58 08 48 89 70 10 48 89 78 18 55 41 56 41 57 48 8D A8 C8 FE FF FF
399 | 
400 |
Linuxserver 401 |
402 | \x48\xB8\x00\x00\x00\x00\xFF\xFF\xFF\xFF\x55\x48\x89\xE5\x41\x57\x41\x56\x41\x55\x4C\x8D\xAD\x10\xFF\xFF\xFF\x41\x54\x49\x89\xFC\x4C\x89\xEF\x53\x48\x89\xF3\x48\x81\xEC\xD8\x01\x00\x00
403 | 
404 |
405 |
406 | 48 B8 00 00 00 00 FF FF FF FF 55 48 89 E5 41 57 41 56 41 55 4C 8D AD 10 FF FF FF 41 54 49 89 FC 4C 89 EF 53 48 89 F3 48 81 EC D8 01 00 00
407 | 
408 |
409 | 410 | ### CheckVelocity 411 | 412 | 413 |
StatusPlatformLibraryCODE-StyleIDA-Style
Windowsserver 414 |
415 | \x48\x8B\xC4\x4C\x89\x40\x18\x48\x89\x50\x10\x55\x53\x56
416 | 
417 |
418 |
419 | 48 8B C4 4C 89 40 18 48 89 50 10 55 53 56
420 | 
421 |
Linuxserver 422 |
423 | \x55\x48\x89\xE5\x41\x57\x41\x56\x49\x89\xFE\x41\x55\x41\x54\x49\x89\xF4\x53\x48\x83\xEC\x58
424 | 
425 |
426 |
427 | 55 48 89 E5 41 57 41 56 49 89 FE 41 55 41 54 49 89 F4 53 48 83 EC 58
428 | 
429 |
430 | 431 | ### Duck 432 | 433 | 434 |
StatusPlatformLibraryCODE-StyleIDA-Style
Windowsserver 435 |
436 | \x48\x8B\xC4\x55\x53\x56\x57\x41\x56\x41\x57\x48\x8D\xA8\xC8\xFE\xFF\xFF
437 | 
438 |
439 |
440 | 48 8B C4 55 53 56 57 41 56 41 57 48 8D A8 C8 FE FF FF
441 | 
442 |
Linuxserver 443 |
444 | \x55\x48\x89\xE5\x41\x57\x41\x56\x49\x89\xFE\x41\x55\x45\x31\xED\x41\x54\x49\x89\xF4\x53\x48\x81\xEC\x78\x01\x00\x00
445 | 
446 |
447 |
448 | 55 48 89 E5 41 57 41 56 49 89 FE 41 55 45 31 ED 41 54 49 89 F4 53 48 81 EC 78 01 00 00
449 | 
450 |
451 | 452 | ### CanUnduck 453 | 454 | 455 |
StatusPlatformLibraryCODE-StyleIDA-Style
Windowsserver 456 |
457 | \x40\x55\x41\x54\x41\x56\x48\x8D\xAC\x24\x30\xFF\xFF\xFF
458 | 
459 |
460 |
461 | 40 55 41 54 41 56 48 8D AC 24 30 FF FF FF
462 | 
463 |
Linuxserver 464 |
465 | \x55\x48\x89\xE5\x41\x57\x41\x56\x41\x55\x4C\x8D\xAD\x10\xFF\xFF\xFF\x41\x54\x49\x89\xFC\x4C\x89\xEF\x53\x48\x89\xF3\x48\x81\xEC\x58\x01\x00\x00
466 | 
467 |
468 |
469 | 55 48 89 E5 41 57 41 56 41 55 4C 8D AD 10 FF FF FF 41 54 49 89 FC 4C 89 EF 53 48 89 F3 48 81 EC 58 01 00 00
470 | 
471 |
472 | 473 | ### LadderMove 474 | 475 | 476 |
StatusPlatformLibraryCODE-StyleIDA-Style
Windowsserver 477 |
478 | \x40\x55\x56\x57\x41\x56\x48\x8D\xAC\x24\xD8\xFC\xFF\xFF
479 | 
480 |
481 |
482 | 40 55 56 57 41 56 48 8D AC 24 D8 FC FF FF
483 | 
484 |
Linuxserver 485 |
486 | \x48\xB8\x00\x00\x00\x00\xFF\xFF\xFF\xFF\x55\x48\x89\xE5\x41\x57\x41\x56\x41\x55\x4C\x8D\xAD\x90
487 | 
488 |
489 |
490 | 48 B8 00 00 00 00 FF FF FF FF 55 48 89 E5 41 57 41 56 41 55 4C 8D AD 90
491 | 
492 |
493 | 494 | ### CheckJumpButton 495 | 496 | 497 |
StatusPlatformLibraryCODE-StyleIDA-Style
Windowsserver 498 |
499 | \x48\x89\x5C\x24\x10\x56\x48\x83\xEC\x40\x48\x8B\xF2
500 | 
501 |
502 |
503 | 48 89 5C 24 10 56 48 83 EC 40 48 8B F2
504 | 
505 |
Linuxserver 506 |
507 | \x55\x48\x89\xE5\x41\x56\x41\x55\x41\x54\x49\x89\xF4\xBE\x2A\x2A\x2A\x2A\x53\x48\x89\xFB\x48\x83\xEC\x2A\xE8
508 | 
509 |
510 |
511 | 55 48 89 E5 41 56 41 55 41 54 49 89 F4 BE ? ? ? ? 53 48 89 FB 48 83 EC ? E8
512 | 
513 |
514 | 515 | ### OnJump 516 | 517 | 518 |
StatusPlatformLibraryCODE-StyleIDA-Style
Windowsserver 519 |
520 | \x40\x53\x57\x48\x81\xEC\xC8\x00\x00\x00\x48\x8B\xD9\x48\x8B\xFA\x48\x8B\x49\x30
521 | 
522 |
523 |
524 | 40 53 57 48 81 EC C8 00 00 00 48 8B D9 48 8B FA 48 8B 49 30
525 | 
526 |
Linuxserver 527 |
528 | \x55\x48\x89\xE5\x41\x57\x41\x56\x41\x55\x49\x89\xF5\x41\x54\x49\x89\xFC\x53\x48\x83\xEC\x18\x48\x8B\x7F\x30
529 | 
530 |
531 |
532 | 55 48 89 E5 41 57 41 56 41 55 49 89 F5 41 54 49 89 FC 53 48 83 EC 18 48 8B 7F 30
533 | 
534 |
535 | 536 | ### AirMove 537 | 538 | 539 |
StatusPlatformLibraryCODE-StyleIDA-Style
Windowsserver 540 |
541 | \x48\x8B\xC4\x48\x89\x58\x18\x48\x89\x70\x20\x55\x57\x41\x56\x48\x8D\x68\xA1\x48\x81\xEC\xC0\x00\x00\x00
542 | 
543 |
544 |
545 | 48 8B C4 48 89 58 18 48 89 70 20 55 57 41 56 48 8D 68 A1 48 81 EC C0 00 00 00
546 | 
547 |
Linuxserver 548 |
549 | \x55\x48\x89\xE5\x41\x57\x49\x89\xF7\x41\x56\x48\x8D\x4D\xAC
550 | 
551 |
552 |
553 | 55 48 89 E5 41 57 49 89 F7 41 56 48 8D 4D AC
554 | 
555 |
556 | 557 | ### Friction 558 | 559 | 560 |
StatusPlatformLibraryCODE-StyleIDA-Style
Windowsserver 561 |
562 | \x48\x89\x5C\x24\x10\x56\x48\x83\xEC\x60\x48\x8B\x41\x30
563 | 
564 |
565 |
566 | 48 89 5C 24 10 56 48 83 EC 60 48 8B 41 30
567 | 
568 |
Linuxserver 569 |
570 | \x55\x48\x89\xE5\x41\x56\x41\x55\x41\x54\x49\x89\xFC\x53\x48\x89\xF3\x48\x83\xEC\x10\x48\x8B\x47\x30
571 | 
572 |
573 |
574 | 55 48 89 E5 41 56 41 55 41 54 49 89 FC 53 48 89 F3 48 83 EC 10 48 8B 47 30
575 | 
576 |
577 | 578 | ### WalkMove 579 | 580 | 581 |
StatusPlatformLibraryCODE-StyleIDA-Style
Windowsserver 582 |
583 | \x48\x8B\xC4\x48\x89\x58\x18\x48\x89\x70\x20\x55\x57\x41\x54\x48\x8D
584 | 
585 |
586 |
587 | 48 8B C4 48 89 58 18 48 89 70 20 55 57 41 54 48 8D
588 | 
589 |
Linuxserver 590 |
591 | \x55\x48\x89\xE5\x41\x57\x41\x56\x4C\x8D\xBD\xAC\xFD\xFF\xFF
592 | 
593 |
594 |
595 | 55 48 89 E5 41 57 41 56 4C 8D BD AC FD FF FF
596 | 
597 |
598 | 599 | ### TryPlayerMove 600 | 601 | 602 |
StatusPlatformLibraryCODE-StyleIDA-Style
Windowsserver 603 |
604 | \x48\x8B\xC4\x4C\x89\x48\x20\x4C\x89\x40\x18\x48\x89\x50\x10\x48\x89\x48\x08\x55\x53\x56\x57\x41\x54\x41\x55\x41\x56\x41\x57\x48\x8D\xA8\xE8\xFD\xFF\xFF\x48\x81\xEC\xD8\x02\x00\x00\x0F\x29\x70\xA8\x45\x33\xE4
605 | 
606 |
607 |
608 | 48 8B C4 4C 89 48 20 4C 89 40 18 48 89 50 10 48 89 48 08 55 53 56 57 41 54 41 55 41 56 41 57 48 8D A8 E8 FD FF FF 48 81 EC D8 02 00 00 0F 29 70 A8 45 33 E4
609 | 
610 |
Linuxserver 611 |
612 | \x48\xB8\x00\x00\x00\x00\xFF\xFF\xFF\xFF\x55\x66\x0F\xEF\xC0
613 | 
614 |
615 |
616 | 48 B8 00 00 00 00 FF FF FF FF 55 66 0F EF C0
617 | 
618 |
619 | 620 | ### CategorizePosition 621 | 622 | 623 |
StatusPlatformLibraryCODE-StyleIDA-Style
Windowsserver 624 |
625 | \x40\x55\x56\x57\x41\x54\x48\x8D\xAC\x24\x28\xFE\xFF\xFF
626 | 
627 |
628 |
629 | 40 55 56 57 41 54 48 8D AC 24 28 FE FF FF
630 | 
631 |
Linuxserver 632 |
633 | \x48\xB8\x00\x00\x00\x00\xFF\xFF\xFF\xFF\x55\x48\x89\xE5\x41\x57\x41\x89\xD7\x41\x56\x4C\x8D\xB5\x50\xFE\xFF\xFF
634 | 
635 |
636 |
637 | 48 B8 00 00 00 00 FF FF FF FF 55 48 89 E5 41 57 41 89 D7 41 56 4C 8D B5 50 FE FF FF
638 | 
639 |
640 | 641 | ### CheckFalling 642 | 643 | 644 |
StatusPlatformLibraryCODE-StyleIDA-Style
Windowsserver 645 |
646 | \x48\x89\x5C\x24\x10\x57\x48\x81\xEC\x80\x00\x00\x00\x48\x8B\xD9
647 | 
648 |
649 |
650 | 48 89 5C 24 10 57 48 81 EC 80 00 00 00 48 8B D9
651 | 
652 |
Linuxserver 653 |
654 | \x55\x48\x89\xE5\x41\x57\x41\x56\x41\x55\x41\x54\x49\x89\xF4\x53\x48\x89\xFB\x48\x83\xEC\x38\x48\x8B\x7F\x30
655 | 
656 |
657 |
658 | 55 48 89 E5 41 57 41 56 41 55 41 54 49 89 F4 53 48 89 FB 48 83 EC 38 48 8B 7F 30
659 | 
660 |
661 | 662 | ### PostPlayerMove 663 | 664 | 665 |
StatusPlatformLibraryCODE-StyleIDA-Style
Windowsserver 666 |
667 | \x4C\x8B\xDC\x53\x55\x48\x83\xEC\x68
668 | 
669 |
670 |
671 | 4C 8B DC 53 55 48 83 EC 68
672 | 
673 |
Linuxserver 674 |
675 | \x55\x48\x89\xE5\x41\x56\x49\x89\xF6\x41\x55\x41\x54\x53\x48\x89\xFB\x48\x83\xEC\x10
676 | 
677 |
678 |
679 | 55 48 89 E5 41 56 49 89 F6 41 55 41 54 53 48 89 FB 48 83 EC 10
680 | 
681 |
682 | 683 | ### PostThink 684 | 685 | 686 |
StatusPlatformLibraryCODE-StyleIDA-Style
Windowsserver 687 |
688 | \x48\x8B\xC4\x55\x53\x56\x57\x41\x54\x48\x8D\x68\xC8
689 | 
690 |
691 |
692 | 48 8B C4 55 53 56 57 41 54 48 8D 68 C8
693 | 
694 |
Linuxserver 695 |
696 | \x55\x48\x89\xE5\x41\x56\x41\x55\x41\x54\x53\x48\x89\xFB\x48\x83\xEC\x40\xE8\x2A\x2A\x2A\x2A
697 | 
698 |
699 |
700 | 55 48 89 E5 41 56 41 55 41 54 53 48 89 FB 48 83 EC 40 E8 ? ? ? ?
701 | 
702 |
703 | 704 | ### EmitSound 705 | 706 | 707 |
StatusPlatformLibraryCODE-StyleIDA-Style
Windowsserver 708 |
709 | \x48\x89\x5C\x24\x08\x48\x89\x6C\x24\x10\x48\x89\x74\x24\x18\x48\x89\x7C\x24\x20\x41\x56\x48\x83\xEC\x30\x48\x8B\xEA
710 | 
711 |
712 |
713 | 48 89 5C 24 08 48 89 6C 24 10 48 89 74 24 18 48 89 7C 24 20 41 56 48 83 EC 30 48 8B EA
714 | 
715 |
Linuxserver 716 |
717 | \x55\x48\x89\xE5\x41\x56\x49\x89\xD6\x41\x55\x41\x89\xF5\x41\x54\x48\x8D\x35\x2A\x2A\x2A\x2A
718 | 
719 |
720 |
721 | 55 48 89 E5 41 56 49 89 D6 41 55 41 89 F5 41 54 48 8D 35 ? ? ? ?
722 | 
723 |
724 | 725 | ### ProcessUsercmds 726 | 727 | 728 |
StatusPlatformLibraryCODE-StyleIDA-Style
Windowsserver 729 |
730 | \x48\x8B\xC4\x44\x88\x48\x20\x44\x89\x40\x18\x48\x89\x50\x10\x53
731 | 
732 |
733 |
734 | 48 8B C4 44 88 48 20 44 89 40 18 48 89 50 10 53
735 | 
736 |
Linuxserver 737 |
738 | \x55\x48\x89\xE5\x41\x57\x41\x56\x41\x89\xD6\x41\x55\x41\x54\x49\x89\xFC\x53\x48\x83\xEC\x38
739 | 
740 |
741 |
742 | 55 48 89 E5 41 57 41 56 41 89 D6 41 55 41 54 49 89 FC 53 48 83 EC 38
743 | 
744 |
745 | 746 | ### PhysicsSimulate 747 | 748 | 749 |
StatusPlatformLibraryCODE-StyleIDA-Style
Windowsserver 750 |
751 | \x40\x53\x48\x81\xEC\xC0\x00\x00\x00\x48\x8B\xD9\xE8\x2A\x2A\x2A\x2A
752 | 
753 |
754 |
755 | 40 53 48 81 EC C0 00 00 00 48 8B D9 E8 ? ? ? ?
756 | 
757 |
Linuxserver 758 |
759 | \x55\x48\x89\xE5\x41\x57\x41\x56\x41\x55\x41\x54\x49\x89\xFC\x53\x48\x81\xEC\xB8\x00\x00\x00\xE8\x2A\x2A\x2A\x2A
760 | 
761 |
762 |
763 | 55 48 89 E5 41 57 41 56 41 55 41 54 49 89 FC 53 48 81 EC B8 00 00 00 E8 ? ? ? ?
764 | 
765 |
766 | 767 | ### GameEventManager 768 | 769 | 770 |
StatusPlatformLibraryCODE-StyleIDA-Style
Windowsserver 771 |
772 | \x48\x8D\x0D\x2A\x2A\x2A\x2A\x48\x0F\x45\xD0\x48\x8B\x05
773 | 
774 |
775 |
776 | 48 8D 0D ? ? ? ? 48 0F 45 D0 48 8B 05
777 | 
778 |
Linuxserver 779 |
780 | \x48\x8D\x3D\x2A\x2A\x2A\x2A\x4C\x89\xE0
781 | 
782 |
783 |
784 | 48 8D 3D ? ? ? ? 4C 89 E0
785 | 
786 |
787 | 788 | ### CreateEntityByName 789 | 790 | 791 |
StatusPlatformLibraryCODE-StyleIDA-Style
Windowsserver 792 |
793 | \x48\x83\xEC\x48\xC6\x44\x24\x30\x00
794 | 
795 |
796 |
797 | 48 83 EC 48 C6 44 24 30 00
798 | 
799 |
Linuxserver 800 |
801 | \x48\x8D\x05\x2A\x2A\x2A\x2A\x55\x48\x89\xFA
802 | 
803 |
804 |
805 | 48 8D 05 ? ? ? ? 55 48 89 FA
806 | 
807 |
808 | 809 | ### DispatchSpawn 810 | 811 | 812 |
StatusPlatformLibraryCODE-StyleIDA-Style
Windowsserver 813 |
814 | \x48\x89\x5C\x24\x10\x57\x48\x83\xEC\x30\x48\x8B\xDA\x48\x8B\xF9\x48\x85\xC9
815 | 
816 |
817 |
818 | 48 89 5C 24 10 57 48 83 EC 30 48 8B DA 48 8B F9 48 85 C9
819 | 
820 |
Linuxserver 821 |
822 | \x48\x85\xFF\x74\x2A\x55\x48\x89\xE5\x41\x56
823 | 
824 |
825 |
826 | 48 85 FF 74 ? 55 48 89 E5 41 56
827 | 
828 |
829 | 830 | ### RemoveEntity 831 | 832 | 833 |
StatusPlatformLibraryCODE-StyleIDA-Style
Windowsserver 834 |
835 | \x48\x85\xC9\x74\x2A\x48\x8B\xD1\x48\x8B\x0D\x2A\x2A\x2A\x2A
836 | 
837 |
838 |
839 | 48 85 C9 74 ? 48 8B D1 48 8B 0D ? ? ? ?
840 | 
841 |
Linuxserver 842 |
843 | \x48\x89\xFE\x48\x85\xFF\x74\x2A\x48\x8D\x05\x2A\x2A\x2A\x2A\x48
844 | 
845 |
846 |
847 | 48 89 FE 48 85 FF 74 ? 48 8D 05 ? ? ? ? 48
848 | 
849 |
850 | 851 | -------------------------------------------------------------------------------- /.github/docs/plugify.md: -------------------------------------------------------------------------------- 1 | # plugify 2 | 3 | Last updated: June 10, 2025 at 11:39:09 PM UTC 4 | 5 | * Manifests: [1070059047104919737](https://steamdb.info/depot/2347771/history/?changeid=M:1070059047104919737), [8955753271543459966](https://steamdb.info/depot/2347773/history/?changeid=M:8955753271543459966) 6 | * Repository: https://github.com/untrustedmodders/plugify-source-2 7 | * Gamedata: https://github.com/untrustedmodders/plugify-source-2/blob/main/assets/gamedata.jsonc 8 | 9 | ## Signatures 10 | 11 | ### PreloadLibrary 12 | 13 | 14 |
StatusPlatformLibraryCODE-StyleIDA-Style
Windowsengine2 15 |
 16 | \x48\x89\x4C\x24\x08\x53\x56\x57\x48\x83\xEC\x60
 17 | 
18 |
19 |
 20 | 48 89 4C 24 08 53 56 57 48 83 EC 60
 21 | 
22 |
23 | 24 | ### AppSystemCreateInterfaceFn 25 | 26 | 27 |
StatusPlatformLibraryCODE-StyleIDA-Style
Windowsengine2 28 |
 29 | \x40\x53\x48\x83\xEC\x2A\x48\x8B\xDA\x48\x8B\xD1\x48\x8B\x0D
 30 | 
31 |
32 |
 33 | 40 53 48 83 EC ? 48 8B DA 48 8B D1 48 8B 0D
 34 | 
35 |
Linuxengine2 36 |
 37 | \x55\x48\x89\xE5\x41\x55\x41\x54\x49\x89\xFC\x53\x48\x8D\x7D\xDE
 38 | 
39 |
40 |
 41 | 55 48 89 E5 41 55 41 54 49 89 FC 53 48 8D 7D DE
 42 | 
43 |
44 | 45 | ### CCSPlayerController_SwitchTeam 46 | 47 | 48 |
StatusPlatformLibraryCODE-StyleIDA-Style
Windowsserver 49 |
 50 | \x40\x56\x57\x48\x81\xEC\x2A\x2A\x2A\x2A\x48\x8B\xF9\x8B\xF2\x8B\xCA
 51 | 
52 |
53 |
 54 | 40 56 57 48 81 EC ? ? ? ? 48 8B F9 8B F2 8B CA
 55 | 
56 |
Linuxserver 57 |
 58 | \x55\x48\x89\xE5\x41\x55\x49\x89\xFD\x89\xF7
 59 | 
60 |
61 |
 62 | 55 48 89 E5 41 55 49 89 FD 89 F7
 63 | 
64 |
65 | 66 | ### LogDirect 67 | 68 | 69 |
StatusPlatformLibraryCODE-StyleIDA-Style
Windowstier0 70 |
 71 | \x4C\x89\x4C\x24\x20\x44\x89\x44\x24\x18\x89\x54\x24\x10\x55
 72 | 
73 |
74 |
 75 | 4C 89 4C 24 20 44 89 44 24 18 89 54 24 10 55
 76 | 
77 |
Linuxtier0 78 |
 79 | \x55\x89\xD0\x48\x89\xE5\x41\x57\x41\x56\x41\x55
 80 | 
81 |
82 |
 83 | 55 89 D0 48 89 E5 41 57 41 56 41 55
 84 | 
85 |
86 | 87 | ### HostStateRequest 88 | 89 | 90 |
StatusPlatformLibraryCODE-StyleIDA-Style
Windowsengine2 91 |
 92 | \x48\x89\x74\x24\x10\x57\x48\x83\xEC\x30\x33\xF6\x48\x8B\xFA
 93 | 
94 |
95 |
 96 | 48 89 74 24 10 57 48 83 EC 30 33 F6 48 8B FA
 97 | 
98 |
Linuxengine2 99 |
100 | \x55\x48\x89\xE5\x41\x56\x41\x55\x41\x54\x49\x89\xF4\x53\x48\x83\x7F
101 | 
102 |
103 |
104 | 55 48 89 E5 41 56 41 55 41 54 49 89 F4 53 48 83 7F
105 | 
106 |
107 | 108 | ### ReplyConnection 109 | 110 | 111 |
StatusPlatformLibraryCODE-StyleIDA-Style
Windowsengine2 112 |
113 | \x48\x8B\xC4\x55\x41\x54\x41\x55\x41\x57
114 | 
115 |
116 |
117 | 48 8B C4 55 41 54 41 55 41 57
118 | 
119 |
Linuxengine2 120 |
121 | \x55\xB9\x00\x01\x00\x00
122 | 
123 |
124 |
125 | 55 B9 00 01 00 00
126 | 
127 |
128 | 129 | ### CBasePlayerController_SetPawn 130 | 131 | 132 |
StatusPlatformLibraryCODE-StyleIDA-Style
Windowsserver 133 |
134 | \x48\x89\x74\x24\x2A\x55\x41\x54\x41\x55\x41\x56\x41\x57\x48\x8D\x6C\x24\x2A\x48\x81\xEC\x2A\x2A\x2A\x2A\x4C\x8B\xF9
135 | 
136 |
137 |
138 | 48 89 74 24 ? 55 41 54 41 55 41 56 41 57 48 8D 6C 24 ? 48 81 EC ? ? ? ? 4C 8B F9
139 | 
140 |
Linuxserver 141 |
142 | \x55\x48\x89\xE5\x41\x57\x41\x56\x41\x55\x49\x89\xFD\x41\x54\x45\x89\xC4
143 | 
144 |
145 |
146 | 55 48 89 E5 41 57 41 56 41 55 49 89 FD 41 54 45 89 C4
147 | 
148 |
149 | 150 | ### LegacyGameEventListener 151 | 152 | 153 |
StatusPlatformLibraryCODE-StyleIDA-Style
Windowsserver 154 |
155 | \x48\x8B\x15\x2A\x2A\x2A\x2A\x48\x85\xD2\x74\x2A\x85\xC9\x74
156 | 
157 |
158 |
159 | 48 8B 15 ? ? ? ? 48 85 D2 74 ? 85 C9 74
160 | 
161 |
Linuxserver 162 |
163 | \x48\x8B\x05\x2A\x2A\x2A\x2A\x48\x85\xC0\x74\x2A\x85\xFF
164 | 
165 |
166 |
167 | 48 8B 05 ? ? ? ? 48 85 C0 74 ? 85 FF
168 | 
169 |
170 | 171 | ### CSource2Server::Init 172 | 173 | 174 |
StatusPlatformLibraryCODE-StyleIDA-Style
Windowsserver 175 |
176 | \x40\x57\x48\x83\xEC\x20\x48\x83\x3D\xBA\x5A\xEC\x00\x00
177 | 
178 |
179 |
180 | 40 57 48 83 EC 20 48 83 3D BA 5A EC 00 00
181 | 
182 |
Linuxserver 183 |
184 | \x55\x48\x89\xE5\x41\x55\x41\x54\x53\x48\x83\xEC\x2A\x48\x8D\x05\x2A\x2A\x2A\x2A\x48\x83\x38
185 | 
186 |
187 |
188 | 55 48 89 E5 41 55 41 54 53 48 83 EC ? 48 8D 05 ? ? ? ? 48 83 38
189 | 
190 |
191 | 192 | ### UTIL_Remove 193 | 194 | 195 |
StatusPlatformLibraryCODE-StyleIDA-Style
Windowsserver 196 |
197 | \x48\x85\xC9\x74\x2A\x48\x8B\xD1\x48\x8B\x0D\x2A\x2A\x2A\x2A
198 | 
199 |
200 |
201 | 48 85 C9 74 ? 48 8B D1 48 8B 0D ? ? ? ?
202 | 
203 |
Linuxserver 204 |
205 | \x48\x89\xFE\x48\x85\xFF\x74\x2A\x48\x8D\x05\x2A\x2A\x2A\x2A\x48
206 | 
207 |
208 |
209 | 48 89 FE 48 85 FF 74 ? 48 8D 05 ? ? ? ? 48
210 | 
211 |
212 | 213 | ### CEntityInstance_AcceptInput 214 | 215 | 216 |
StatusPlatformLibraryCODE-StyleIDA-Style
Windowsserver 217 |
218 | \x48\x89\x5C\x24\x10\x48\x89\x74\x24\x18\x57\x48\x83\xEC\x40\x49\x8B\xF0
219 | 
220 |
221 |
222 | 48 89 5C 24 10 48 89 74 24 18 57 48 83 EC 40 49 8B F0
223 | 
224 |
Linuxserver 225 |
226 | \x55\x48\x89\xE5\x41\x57\x49\x89\xFF\x41\x56\x48\x8D\x7D\xC0
227 | 
228 |
229 |
230 | 55 48 89 E5 41 57 49 89 FF 41 56 48 8D 7D C0
231 | 
232 |
233 | 234 | ### CEntityIOOutput_FireOutputInternal 235 | 236 | 237 |
StatusPlatformLibraryCODE-StyleIDA-Style
Windowsserver 238 |
239 | \x4C\x89\x4C\x24\x20\x53\x55\x57\x41\x54\x41\x56\x48\x81\xEC
240 | 
241 |
242 |
243 | 4C 89 4C 24 20 53 55 57 41 54 41 56 48 81 EC
244 | 
245 |
Linuxserver 246 |
247 | \x55\x48\x89\xE5\x41\x57\x41\x56\x41\x55\x41\x54\x49\x89\xD4\x53\x48\x89\xF3\x48\x83\xEC\x58
248 | 
249 |
250 |
251 | 55 48 89 E5 41 57 41 56 41 55 41 54 49 89 D4 53 48 89 F3 48 83 EC 58
252 | 
253 |
254 | 255 | ### CBaseModelEntity_SetModel 256 | 257 | 258 |
StatusPlatformLibraryCODE-StyleIDA-Style
Windowsserver 259 |
260 | \x48\x89\x5C\x24\x2A\x48\x89\x7C\x24\x2A\x55\x48\x8B\xEC\x48\x83\xEC\x50\x48\x8B\xF9\x4C\x8B\xC2
261 | 
262 |
263 |
264 | 48 89 5C 24 ? 48 89 7C 24 ? 55 48 8B EC 48 83 EC 50 48 8B F9 4C 8B C2
265 | 
266 |
Linuxserver 267 |
268 | \x55\x48\x89\xF2\x48\x89\xE5\x41\x54\x49\x89\xFC\x48\x8D\x7D\xE0\x48\x83\xEC\x2A\x48\x8D\x05\x2A\x2A\x2A\x2A\x48\x8B\x30\x48\x8B\x06
269 | 
270 |
271 |
272 | 55 48 89 F2 48 89 E5 41 54 49 89 FC 48 8D 7D E0 48 83 EC ? 48 8D 05 ? ? ? ? 48 8B 30 48 8B 06
273 | 
274 |
275 | 276 | ### CGameRules_TerminateRound 277 | 278 | 279 |
StatusPlatformLibraryCODE-StyleIDA-Style
Windowsserver 280 |
281 | \x48\x8B\xC4\x4C\x89\x48\x2A\x48\x89\x48\x2A\x55\x41\x55
282 | 
283 |
284 |
285 | 48 8B C4 4C 89 48 ? 48 89 48 ? 55 41 55
286 | 
287 |
Linuxserver 288 |
289 | \x55\x48\x89\xE5\x41\x57\x41\x56\x41\x55\x41\x54\x49\x89\xFC\x53\x48\x81\xEC\x88\x00\x00\x00\x48\x8D\x05\x2A\x2A\x2A\x2A
290 | 
291 |
292 |
293 | 55 48 89 E5 41 57 41 56 41 55 41 54 49 89 FC 53 48 81 EC 88 00 00 00 48 8D 05 ? ? ? ?
294 | 
295 |
296 | 297 | ### CreateEntityByName 298 | 299 | 300 |
StatusPlatformLibraryCODE-StyleIDA-Style
Windowsserver 301 |
302 | \x48\x83\xEC\x48\xC6\x44\x24\x30\x00
303 | 
304 |
305 |
306 | 48 83 EC 48 C6 44 24 30 00
307 | 
308 |
Linuxserver 309 |
310 | \x48\x8D\x05\x2A\x2A\x2A\x2A\x55\x48\x89\xFA
311 | 
312 |
313 |
314 | 48 8D 05 ? ? ? ? 55 48 89 FA
315 | 
316 |
317 | 318 | ### CGameEntitySystem_FindEntityByClassName 319 | 320 | 321 |
StatusPlatformLibraryCODE-StyleIDA-Style
Windowsserver 322 |
323 | \x48\x83\xEC\x68\x45\x33\xC9
324 | 
325 |
326 |
327 | 48 83 EC 68 45 33 C9
328 | 
329 |
Linuxserver 330 |
331 | \x55\x45\x31\xC0\x31\xC9\x48\x89\xE5\x41\x54
332 | 
333 |
334 |
335 | 55 45 31 C0 31 C9 48 89 E5 41 54
336 | 
337 |
338 | 339 | ### CGameEntitySystem_FindEntityByName 340 | 341 | 342 |
StatusPlatformLibraryCODE-StyleIDA-Style
Windowsserver 343 |
344 | \x48\x81\xEC\x88\x2A\x2A\x2A\x4D\x85\xC0
345 | 
346 |
347 |
348 | 48 81 EC 88 ? ? ? 4D 85 C0
349 | 
350 |
Linuxserver 351 |
352 | \x48\x85\xD2\x74\x2A\x55\x48\x89\xE5\x41\x54
353 | 
354 |
355 |
356 | 48 85 D2 74 ? 55 48 89 E5 41 54
357 | 
358 |
359 | 360 | ### DispatchSpawn 361 | 362 | 363 |
StatusPlatformLibraryCODE-StyleIDA-Style
Windowsserver 364 |
365 | \x48\x89\x5C\x24\x10\x57\x48\x83\xEC\x30\x48\x8B\xDA\x48\x8B\xF9\x48\x85\xC9
366 | 
367 |
368 |
369 | 48 89 5C 24 10 57 48 83 EC 30 48 8B DA 48 8B F9 48 85 C9
370 | 
371 |
Linuxserver 372 |
373 | \x48\x85\xFF\x74\x2A\x55\x48\x89\xE5\x41\x56
374 | 
375 |
376 |
377 | 48 85 FF 74 ? 55 48 89 E5 41 56
378 | 
379 |
380 | 381 | ### CEntityIdentity_SetEntityName 382 | 383 | 384 |
StatusPlatformLibraryCODE-StyleIDA-Style
Windowsserver 385 |
386 | \x48\x89\x5C\x24\x10\x57\x48\x83\xEC\x20\x48\x8B\xD9\x4C\x8B\xC2
387 | 
388 |
389 |
390 | 48 89 5C 24 10 57 48 83 EC 20 48 8B D9 4C 8B C2
391 | 
392 |
Linuxserver 393 |
394 | \x55\x48\x89\xF2\x48\x89\xE5\x41\x54\x49\x89\xFC\x48\x8D\x7D\xE0\x48\x83\xEC\x18\x48\x8D\x05\x2A\x2A\x2A\x2A\x48\x8B\x30\xE8\x2A\x2A\x2A\x2A\x48\x8B\x45\xE0
395 | 
396 |
397 |
398 | 55 48 89 F2 48 89 E5 41 54 49 89 FC 48 8D 7D E0 48 83 EC 18 48 8D 05 ? ? ? ? 48 8B 30 E8 ? ? ? ? 48 8B 45 E0
399 | 
400 |
401 | 402 | ### CBaseEntity_EmitSoundParams 403 | 404 | 405 |
StatusPlatformLibraryCODE-StyleIDA-Style
Windowsserver 406 |
407 | \x48\x8B\xC4\x48\x89\x58\x10\x48\x89\x70\x18\x55\x57\x41\x56\x48\x8D\xA8\x08\xFF\xFF\xFF
408 | 
409 |
410 |
411 | 48 8B C4 48 89 58 10 48 89 70 18 55 57 41 56 48 8D A8 08 FF FF FF
412 | 
413 |
Linuxserver 414 |
415 | \x48\xB8\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x55\x48\x89\xE5\x41\x55\x41\x54\x49\x89\xFC\x53\x48\x89\xF3
416 | 
417 |
418 |
419 | 48 B8 ? ? ? ? ? ? ? ? 55 48 89 E5 41 55 41 54 49 89 FC 53 48 89 F3
420 | 
421 |
422 | 423 | ### CBaseEntity_SetParent 424 | 425 | 426 |
StatusPlatformLibraryCODE-StyleIDA-Style
Windowsserver 427 |
428 | \x4D\x8B\xD9\x48\x85\xD2\x74\x2A
429 | 
430 |
431 |
432 | 4D 8B D9 48 85 D2 74 ?
433 | 
434 |
Linuxserver 435 |
436 | \x48\x85\xF6\x74\x2A\x48\x8B\x47\x10\xF6\x40\x31\x02\x75\x2A\x48\x8B\x46\x10\xF6\x40\x31\x02\x75\x2A\xB8\x2A\x2A\x2A\x2A
437 | 
438 |
439 |
440 | 48 85 F6 74 ? 48 8B 47 10 F6 40 31 02 75 ? 48 8B 46 10 F6 40 31 02 75 ? B8 ? ? ? ?
441 | 
442 |
443 | 444 | ### CBaseEntity_EmitSoundFilter 445 | 446 | 447 |
StatusPlatformLibraryCODE-StyleIDA-Style
Windowsserver 448 |
449 | \x48\x89\x5C\x24\x08\x48\x89\x6C\x24\x10\x48\x89\x74\x24\x18\x48\x89\x7C\x24\x20\x41\x56\x48\x83\xEC\x30\x48\x8B\xEA
450 | 
451 |
452 |
453 | 48 89 5C 24 08 48 89 6C 24 10 48 89 74 24 18 48 89 7C 24 20 41 56 48 83 EC 30 48 8B EA
454 | 
455 |
Linuxserver 456 |
457 | \x55\x48\x89\xE5\x41\x56\x49\x89\xD6\x41\x55\x41\x89\xF5\x41\x54\x48\x8D\x35\x2A\x2A\x2A\x2A
458 | 
459 |
460 |
461 | 55 48 89 E5 41 56 49 89 D6 41 55 41 89 F5 41 54 48 8D 35 ? ? ? ?
462 | 
463 |
464 | 465 | ### CBaseEntity_SetMoveType 466 | 467 | 468 |
StatusPlatformLibraryCODE-StyleIDA-Style
Windowsserver 469 |
470 | \x48\x89\x5C\x24\x2A\x48\x89\x6C\x24\x2A\x48\x89\x74\x24\x2A\x57\x48\x83\xEC\x2A\x41\x0F\xB6\xF0
471 | 
472 |
473 |
474 | 48 89 5C 24 ? 48 89 6C 24 ? 48 89 74 24 ? 57 48 83 EC ? 41 0F B6 F0
475 | 
476 |
Linuxserver 477 |
478 | \x55\x48\x89\xE5\x41\x57\x41\x56\x41\x55\x41\x89\xD5\x41\x54\x49\x89\xFC\x53\x48\x83\xEC
479 | 
480 |
481 |
482 | 55 48 89 E5 41 57 41 56 41 55 41 89 D5 41 54 49 89 FC 53 48 83 EC
483 | 
484 |
485 | 486 | ### CCSPlayer_WeaponServices_RemoveItem 487 | 488 | 489 |
StatusPlatformLibraryCODE-StyleIDA-Style
Windowsserver 490 |
491 | \x48\x2A\x2A\x0F\x84\x2A\x2A\x2A\x2A\x48\x89\x5C\x24\x2A\x57\x48\x2A\x2A\x2A\x48\x2A\x2A\x48\x2A\x2A\xE8
492 | 
493 |
494 |
495 | 48 ? ? 0F 84 ? ? ? ? 48 89 5C 24 ? 57 48 ? ? ? 48 ? ? 48 ? ? E8
496 | 
497 |
Linuxserver 498 |
499 | \x55\x48\x89\x2A\x41\x2A\x49\x89\x2A\x41\x2A\x49\x89\x2A\xE8\x2A\x2A\x2A\x2A\x49\x39
500 | 
501 |
502 |
503 | 55 48 89 ? 41 ? 49 89 ? 41 ? 49 89 ? E8 ? ? ? ? 49 39
504 | 
505 |
506 | 507 | ### GetCSWeaponDataFromKey 508 | 509 | 510 |
StatusPlatformLibraryCODE-StyleIDA-Style
Windowsserver 511 |
512 | \x48\x89\x5C\x24\x2A\x48\x89\x74\x24\x2A\x57\x48\x83\xEC\x2A\x48\x8B\xFA\x8B\xF1\x48\x85\xD2\x0F\x84
513 | 
514 |
515 |
516 | 48 89 5C 24 ? 48 89 74 24 ? 57 48 83 EC ? 48 8B FA 8B F1 48 85 D2 0F 84
517 | 
518 |
Linuxserver 519 |
520 | \x55\x48\x89\xE5\x41\x57\x41\x56\x41\x89\xFE\x41\x55\x41\x54\x45
521 | 
522 |
523 |
524 | 55 48 89 E5 41 57 41 56 41 89 FE 41 55 41 54 45
525 | 
526 |
527 | 528 | -------------------------------------------------------------------------------- /.github/docs/swiftly.md: -------------------------------------------------------------------------------- 1 | # swiftly 2 | 3 | Last updated: June 10, 2025 at 11:39:09 PM UTC 4 | 5 | * Manifests: [1070059047104919737](https://steamdb.info/depot/2347771/history/?changeid=M:1070059047104919737), [8955753271543459966](https://steamdb.info/depot/2347773/history/?changeid=M:8955753271543459966) 6 | * Repository: https://github.com/swiftly-solution/swiftly 7 | * Gamedata: https://github.com/swiftly-solution/swiftly/blob/master/plugin_files/gamedata/cs2/core/signatures.json 8 | 9 | ## Signatures 10 | 11 | ### ServerMovementUnlock 12 | 13 | 14 |
StatusPlatformLibraryCODE-StyleIDA-Style
Windowsserver 15 |
 16 | \x76\x2A\xF2\x0F\x10\x4F\x2A\x41\x0F\x28\xC1\x0F\x28\xD1\xF3\x0F\x59\xC0
 17 | 
18 |
19 |
 20 | 76 ? F2 0F 10 4F ? 41 0F 28 C1 0F 28 D1 F3 0F 59 C0
 21 | 
22 |
Linuxserver 23 |
 24 | \x0F\x87\x2A\x2A\x2A\x2A\x49\x8B\x7C\x24\x2A\xE8\x2A\x2A\x2A\x2A\x66\x0F\xEF\xED\x66\x0F\xD6\x85
 25 | 
26 |
27 |
 28 | 0F 87 ? ? ? ? 49 8B 7C 24 ? E8 ? ? ? ? 66 0F EF ED 66 0F D6 85
 29 | 
30 |
31 | 32 | ### CEntityInstance_AcceptInput 33 | 34 | 35 |
StatusPlatformLibraryCODE-StyleIDA-Style
Windowsserver 36 |
 37 | \x48\x89\x5C\x24\x10\x48\x89\x74\x24\x18\x57\x48\x83\xEC\x40\x49\x8B\xF0
 38 | 
39 |
40 |
 41 | 48 89 5C 24 10 48 89 74 24 18 57 48 83 EC 40 49 8B F0
 42 | 
43 |
Linuxserver 44 |
 45 | \x55\x48\x89\xE5\x41\x57\x49\x89\xFF\x41\x56\x48\x8D\x7D\xC0
 46 | 
47 |
48 |
 49 | 55 48 89 E5 41 57 49 89 FF 41 56 48 8D 7D C0
 50 | 
51 |
52 | 53 | ### CEntityIdentity_AcceptInput 54 | 55 | 56 |
StatusPlatformLibraryCODE-StyleIDA-Style
Windowsserver 57 |
 58 | \x48\x89\x54\x24\x2A\x48\x89\x4C\x24\x2A\x55\x53\x56\x57\x41\x55\x41\x56\x41\x57\x48\x8D\x6C\x24
 59 | 
60 |
61 |
 62 | 48 89 54 24 ? 48 89 4C 24 ? 55 53 56 57 41 55 41 56 41 57 48 8D 6C 24
 63 | 
64 |
Linuxserver 65 |
 66 | \x55\x48\x89\xE5\x41\x57\x41\x56\x4C\x8D\xBD\xD0\xFE\xFF\xFF\x49\x89\xD6\x41\x55\x49\x89\xF5\x41\x54\x49\x89\xCC
 67 | 
68 |
69 |
 70 | 55 48 89 E5 41 57 41 56 4C 8D BD D0 FE FF FF 49 89 D6 41 55 49 89 F5 41 54 49 89 CC
 71 | 
72 |
73 | 74 | ### CCSPlayerController_SwitchTeam 75 | 76 | 77 |
StatusPlatformLibraryCODE-StyleIDA-Style
Windowsserver 78 |
 79 | \x40\x56\x57\x48\x81\xEC\x2A\x2A\x2A\x2A\x48\x8B\xF9\x8B\xF2\x8B\xCA
 80 | 
81 |
82 |
 83 | 40 56 57 48 81 EC ? ? ? ? 48 8B F9 8B F2 8B CA
 84 | 
85 |
Linuxserver 86 |
 87 | \x55\x48\x89\xE5\x41\x55\x49\x89\xFD\x89\xF7
 88 | 
89 |
90 |
 91 | 55 48 89 E5 41 55 49 89 FD 89 F7
 92 | 
93 |
94 | 95 | ### UTIL_CreateEntityByName 96 | 97 | 98 |
StatusPlatformLibraryCODE-StyleIDA-Style
Windowsserver 99 |
100 | \x48\x83\xEC\x48\xC6\x44\x24\x30\x00
101 | 
102 |
103 |
104 | 48 83 EC 48 C6 44 24 30 00
105 | 
106 |
Linuxserver 107 |
108 | \x48\x8D\x05\x2A\x2A\x2A\x2A\x55\x48\x89\xFA
109 | 
110 |
111 |
112 | 48 8D 05 ? ? ? ? 55 48 89 FA
113 | 
114 |
115 | 116 | ### CBaseModelEntity_SetModel 117 | 118 | 119 |
StatusPlatformLibraryCODE-StyleIDA-Style
Windowsserver 120 |
121 | \x48\x89\x5C\x24\x2A\x48\x89\x7C\x24\x2A\x55\x48\x8B\xEC\x48\x83\xEC\x50\x48\x8B\xF9\x4C\x8B\xC2
122 | 
123 |
124 |
125 | 48 89 5C 24 ? 48 89 7C 24 ? 55 48 8B EC 48 83 EC 50 48 8B F9 4C 8B C2
126 | 
127 |
Linuxserver 128 |
129 | \x55\x48\x89\xF2\x48\x89\xE5\x41\x54\x49\x89\xFC\x48\x8D\x7D\xE0\x48\x83\xEC\x2A\x48\x8D\x05\x2A\x2A\x2A\x2A\x48\x8B\x30\x48\x8B\x06
130 | 
131 |
132 |
133 | 55 48 89 F2 48 89 E5 41 54 49 89 FC 48 8D 7D E0 48 83 EC ? 48 8D 05 ? ? ? ? 48 8B 30 48 8B 06
134 | 
135 |
136 | 137 | ### CBaseEntity_DispatchSpawn 138 | 139 | 140 |
StatusPlatformLibraryCODE-StyleIDA-Style
Windowsserver 141 |
142 | \x48\x89\x5C\x24\x10\x57\x48\x83\xEC\x30\x48\x8B\xDA\x48\x8B\xF9\x48\x85\xC9
143 | 
144 |
145 |
146 | 48 89 5C 24 10 57 48 83 EC 30 48 8B DA 48 8B F9 48 85 C9
147 | 
148 |
Linuxserver 149 |
150 | \x48\x85\xFF\x74\x2A\x55\x48\x89\xE5\x41\x56
151 | 
152 |
153 |
154 | 48 85 FF 74 ? 55 48 89 E5 41 56
155 | 
156 |
157 | 158 | ### UTIL_Remove 159 | 160 | 161 |
StatusPlatformLibraryCODE-StyleIDA-Style
Windowsserver 162 |
163 | \x48\x85\xC9\x74\x2A\x48\x8B\xD1\x48\x8B\x0D\x2A\x2A\x2A\x2A
164 | 
165 |
166 |
167 | 48 85 C9 74 ? 48 8B D1 48 8B 0D ? ? ? ?
168 | 
169 |
Linuxserver 170 |
171 | \x48\x89\xFE\x48\x85\xFF\x74\x2A\x48\x8D\x05\x2A\x2A\x2A\x2A\x48
172 | 
173 |
174 |
175 | 48 89 FE 48 85 FF 74 ? 48 8D 05 ? ? ? ? 48
176 | 
177 |
178 | 179 | ### LegacyGameEventListener 180 | 181 | 182 |
StatusPlatformLibraryCODE-StyleIDA-Style
Windowsserver 183 |
184 | \x48\x8B\x15\x2A\x2A\x2A\x2A\x48\x85\xD2\x74\x2A\x85\xC9\x74
185 | 
186 |
187 |
188 | 48 8B 15 ? ? ? ? 48 85 D2 74 ? 85 C9 74
189 | 
190 |
Linuxserver 191 |
192 | \x48\x8B\x05\x2A\x2A\x2A\x2A\x48\x85\xC0\x74\x2A\x85\xFF
193 | 
194 |
195 |
196 | 48 8B 05 ? ? ? ? 48 85 C0 74 ? 85 FF
197 | 
198 |
199 | 200 | ### CAttributeList_SetOrAddAttributeValueByName 201 | 202 | 203 |
StatusPlatformLibraryCODE-StyleIDA-Style
Windowsserver 204 |
205 | \x40\x53\x41\x56\x41\x57\x48\x81\xEC\x90\x00\x00\x00\x0F\x29\x74\x24\x70
206 | 
207 |
208 |
209 | 40 53 41 56 41 57 48 81 EC 90 00 00 00 0F 29 74 24 70
210 | 
211 |
Linuxserver 212 |
213 | \x55\x48\x89\xE5\x41\x57\x41\x56\x49\x89\xFE\x41\x55\x41\x54\x49\x89\xF4\x53\x48\x83\xEC\x78
214 | 
215 |
216 |
217 | 55 48 89 E5 41 57 41 56 49 89 FE 41 55 41 54 49 89 F4 53 48 83 EC 78
218 | 
219 |
220 | 221 | ### CBaseModelEntity_SetBodygroup 222 | 223 | 224 |
StatusPlatformLibraryCODE-StyleIDA-Style
Windowsserver 225 |
226 | \x48\x89\x5C\x24\x08\x48\x89\x74\x24\x10\x57\x48\x83\xEC\x20\x41\x8B\xF8\x48\x8B\xF2\x48\x8B\xD9\xE8\x2A\x2A\x2A\x2A
227 | 
228 |
229 |
230 | 48 89 5C 24 08 48 89 74 24 10 57 48 83 EC 20 41 8B F8 48 8B F2 48 8B D9 E8 ? ? ? ?
231 | 
232 |
Linuxserver 233 |
234 | \x55\x48\x89\xE5\x41\x56\x49\x89\xF6\x41\x55\x41\x89\xD5\x41\x54\x49\x89\xFC\x48\x83\xEC\x08
235 | 
236 |
237 |
238 | 55 48 89 E5 41 56 49 89 F6 41 55 41 89 D5 41 54 49 89 FC 48 83 EC 08
239 | 
240 |
241 | 242 | ### GiveNamedItem 243 | 244 | 245 |
StatusPlatformLibraryCODE-StyleIDA-Style
Windowsserver 246 |
247 | \x48\x89\x5C\x24\x2A\x48\x89\x74\x24\x2A\x55\x57\x41\x55\x41\x56\x41\x57\x48\x8D\x6C\x24\xE0
248 | 
249 |
250 |
251 | 48 89 5C 24 ? 48 89 74 24 ? 55 57 41 55 41 56 41 57 48 8D 6C 24 E0
252 | 
253 |
Linuxserver 254 |
255 | \x55\x48\x89\xE5\x41\x57\x41\x56\x4D\x89\xC6\x41\x55\x49\x89\xD5\x41\x54\x49\x89\xF4
256 | 
257 |
258 |
259 | 55 48 89 E5 41 57 41 56 4D 89 C6 41 55 49 89 D5 41 54 49 89 F4
260 | 
261 |
262 | 263 | ### CTakeDamageInfo_Constructor 264 | 265 | 266 |
StatusPlatformLibraryCODE-StyleIDA-Style
Windowsserver 267 |
268 | \x40\x53\x48\x83\xEC\x60\x48\xC7\x41\x38\xFF\xFF\xFF\xFF
269 | 
270 |
271 |
272 | 40 53 48 83 EC 60 48 C7 41 38 FF FF FF FF
273 | 
274 |
Linuxserver 275 |
276 | \x55\x48\x89\xE5\x48\x83\xEC\x10\x4C\x8D\x15\x2A\x2A\x2A\x2A
277 | 
278 |
279 |
280 | 55 48 89 E5 48 83 EC 10 4C 8D 15 ? ? ? ?
281 | 
282 |
283 | 284 | ### FireOutputInternal 285 | 286 | 287 |
StatusPlatformLibraryCODE-StyleIDA-Style
Windowsserver 288 |
289 | \x4C\x89\x4C\x24\x20\x53\x55\x57\x41\x54\x41\x56\x48\x81\xEC
290 | 
291 |
292 |
293 | 4C 89 4C 24 20 53 55 57 41 54 41 56 48 81 EC
294 | 
295 |
Linuxserver 296 |
297 | \x55\x48\x89\xE5\x41\x57\x41\x56\x41\x55\x41\x54\x49\x89\xD4\x53\x48\x89\xF3\x48\x83\xEC\x58
298 | 
299 |
300 |
301 | 55 48 89 E5 41 57 41 56 41 55 41 54 49 89 D4 53 48 89 F3 48 83 EC 58
302 | 
303 |
304 | 305 | ### CBasePlayerController_SetPawn 306 | 307 | 308 |
StatusPlatformLibraryCODE-StyleIDA-Style
Windowsserver 309 |
310 | \x48\x89\x74\x24\x18\x55\x41\x54\x41\x55\x41\x56\x41\x57\x48\x8D\x6C\x24\xD1
311 | 
312 |
313 |
314 | 48 89 74 24 18 55 41 54 41 55 41 56 41 57 48 8D 6C 24 D1
315 | 
316 |
Linuxserver 317 |
318 | \x55\x48\x89\xE5\x41\x57\x41\x56\x41\x55\x49\x89\xFD\x41\x54\x45\x89\xC4
319 | 
320 |
321 |
322 | 55 48 89 E5 41 57 41 56 41 55 49 89 FD 41 54 45 89 C4
323 | 
324 |
325 | 326 | ### CCSPlayerPawnBase_PostThink 327 | 328 | 329 |
StatusPlatformLibraryCODE-StyleIDA-Style
Windowsserver 330 |
331 | \x48\x2A\x2A\x55\x53\x56\x57\x41\x2A\x48\x2A\x2A\x2A\x48\x2A\x2A\x2A\x2A\x2A\x2A\x4C\x89\x68
332 | 
333 |
334 |
335 | 48 ? ? 55 53 56 57 41 ? 48 ? ? ? 48 ? ? ? ? ? ? 4C 89 68
336 | 
337 |
Linuxserver 338 |
339 | \x55\x48\x89\xE5\x41\x56\x41\x55\x41\x54\x53\x48\x89\xFB\x48\x83\xEC\x40\xE8
340 | 
341 |
342 |
343 | 55 48 89 E5 41 56 41 55 41 54 53 48 89 FB 48 83 EC 40 E8
344 | 
345 |
346 | 347 | ### CBaseEntity_EmitSoundFilter 348 | 349 | 350 |
StatusPlatformLibraryCODE-StyleIDA-Style
Windowsserver 351 |
352 | \x48\x89\x5C\x24\x08\x48\x89\x6C\x24\x10\x48\x89\x74\x24\x18\x48\x89\x7C\x24\x20\x41\x56\x48\x83\xEC\x30\x48\x8B\xEA
353 | 
354 |
355 |
356 | 48 89 5C 24 08 48 89 6C 24 10 48 89 74 24 18 48 89 7C 24 20 41 56 48 83 EC 30 48 8B EA
357 | 
358 |
Linuxserver 359 |
360 | \x55\x48\x89\xE5\x41\x56\x49\x89\xD6\x41\x55\x41\x89\xF5\x41\x54\x48\x8D\x35\x2A\x2A\x2A\x2A
361 | 
362 |
363 |
364 | 55 48 89 E5 41 56 49 89 D6 41 55 41 89 F5 41 54 48 8D 35 ? ? ? ?
365 | 
366 |
367 | 368 | ### CBaseEntity_EmitSoundParams 369 | 370 | 371 |
StatusPlatformLibraryCODE-StyleIDA-Style
Windowsserver 372 |
373 | \x48\x8B\xC4\x48\x89\x58\x10\x48\x89\x70\x18\x55\x57\x41\x56\x48\x8D\xA8\x08\xFF\xFF\xFF
374 | 
375 |
376 |
377 | 48 8B C4 48 89 58 10 48 89 70 18 55 57 41 56 48 8D A8 08 FF FF FF
378 | 
379 |
Linuxserver 380 |
381 | \x48\xB8\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x55\x48\x89\xE5\x41\x55\x41\x54\x49\x89\xFC\x53\x48\x89\xF3
382 | 
383 |
384 |
385 | 48 B8 ? ? ? ? ? ? ? ? 55 48 89 E5 41 55 41 54 49 89 FC 53 48 89 F3
386 | 
387 |
388 | 389 | ### CGameRules_TerminateRound 390 | 391 | 392 |
StatusPlatformLibraryCODE-StyleIDA-Style
Windowsserver 393 |
394 | \x48\x8B\xC4\x4C\x89\x48\x2A\x48\x89\x48\x2A\x55\x41\x55
395 | 
396 |
397 |
398 | 48 8B C4 4C 89 48 ? 48 89 48 ? 55 41 55
399 | 
400 |
Linuxserver 401 |
402 | \x55\x48\x89\xE5\x41\x57\x41\x56\x41\x55\x41\x54\x49\x89\xFC\x53\x48\x81\xEC\x88\x00\x00\x00\x48\x8D\x05\x2A\x2A\x2A\x2A
403 | 
404 |
405 |
406 | 55 48 89 E5 41 57 41 56 41 55 41 54 49 89 FC 53 48 81 EC 88 00 00 00 48 8D 05 ? ? ? ?
407 | 
408 |
409 | 410 | ### CBaseEntity_TakeDamage 411 | 412 | 413 |
StatusPlatformLibraryCODE-StyleIDA-Style
Windowsserver 414 |
415 | \x48\x89\x74\x24\x2A\x57\x48\x81\xEC\x2A\x2A\x2A\x2A\x48\x8B\x41\x2A\x48\x8B\xFA
416 | 
417 |
418 |
419 | 48 89 74 24 ? 57 48 81 EC ? ? ? ? 48 8B 41 ? 48 8B FA
420 | 
421 |
Linuxserver 422 |
423 | \x55\x48\x89\xE5\x41\x57\x41\x56\x41\x55\x41\x54\x49\x89\xFC\x53\x48\x83\xEC\x2A\x4C\x8D\x3D\x2A\x2A\x2A\x2A\x49\x8B\x3F
424 | 
425 |
426 |
427 | 55 48 89 E5 41 57 41 56 41 55 41 54 49 89 FC 53 48 83 EC ? 4C 8D 3D ? ? ? ? 49 8B 3F
428 | 
429 |
430 | 431 | ### BotNavIgnore1 432 | 433 | 434 |
StatusPlatformLibraryCODE-StyleIDA-Style
Windowsserver 435 |
436 | \x0F\x84\x2A\x2A\x2A\x2A\x80\xB8\x2A\x2A\x2A\x2A\x00\x0F\x84\x2A\x2A\x2A\x2A\x80\x3D\x2A\x2A\x2A\x2A\x00\x74\x15
437 | 
438 |
439 |
440 | 0F 84 ? ? ? ? 80 B8 ? ? ? ? 00 0F 84 ? ? ? ? 80 3D ? ? ? ? 00 74 15
441 | 
442 |
Linuxserver 443 |
444 | \x48\x85\xC0\x74\x2A\x80\xB8\x2A\x2A\x2A\x2A\x00\x74\x2A\x48\x8D\x05\x2A\x2A\x2A\x2A\x80\x38\x00\x75\x2A\x44\x8B\x85\x2A\x2A\x2A\x2A\x31\xF6\xBF\x03\x00\x00\x00
445 | 
446 |
447 |
448 | 48 85 C0 74 ? 80 B8 ? ? ? ? 00 74 ? 48 8D 05 ? ? ? ? 80 38 00 75 ? 44 8B 85 ? ? ? ? 31 F6 BF 03 00 00 00
449 | 
450 |
451 | 452 | ### BotNavIgnore2 453 | 454 | 455 |
StatusPlatformLibraryCODE-StyleIDA-Style
Windowsserver 456 |
457 | \x0F\x84\x2A\x2A\x2A\x2A\x80\xB8\x2A\x2A\x2A\x2A\x00\x0F\x84\x2A\x2A\x2A\x2A\x80\x3D\x2A\x2A\x2A\x2A\x00\x74\x15
458 | 
459 |
460 |
461 | 0F 84 ? ? ? ? 80 B8 ? ? ? ? 00 0F 84 ? ? ? ? 80 3D ? ? ? ? 00 74 15
462 | 
463 |
Linuxserver 464 |
465 | \x48\x85\xC0\x74\x2A\x80\xB8\x2A\x2A\x2A\x2A\x00\x74\x2A\x48\x8D\x05\x2A\x2A\x2A\x2A\x80\x38\x00\x75\x2A\x44\x8B\x85\x2A\x2A\x2A\x2A\x31\xF6\xBF\x02\x00\x00\x00
466 | 
467 |
468 |
469 | 48 85 C0 74 ? 80 B8 ? ? ? ? 00 74 ? 48 8D 05 ? ? ? ? 80 38 00 75 ? 44 8B 85 ? ? ? ? 31 F6 BF 02 00 00 00
470 | 
471 |
472 | 473 | ### BotNavIgnore3 474 | 475 | 476 |
StatusPlatformLibraryCODE-StyleIDA-Style
Windowsserver 477 |
478 | \x0F\x84\x2A\x2A\x2A\x2A\x80\xB8\x2A\x2A\x2A\x2A\x00\x0F\x84\x2A\x2A\x2A\x2A\x80\x3D\x2A\x2A\x2A\x2A\x00\x74\x15
479 | 
480 |
481 |
482 | 0F 84 ? ? ? ? 80 B8 ? ? ? ? 00 0F 84 ? ? ? ? 80 3D ? ? ? ? 00 74 15
483 | 
484 |
Linuxserver 485 |
486 | \x48\x85\xC0\x74\x2A\x80\xB8\x2A\x2A\x2A\x2A\x00\x74\x2A\x48\x8D\x05\x2A\x2A\x2A\x2A\x80\x38\x00\x75\x2A\x41\xB8\x04\x00\x00\x00
487 | 
488 |
489 |
490 | 48 85 C0 74 ? 80 B8 ? ? ? ? 00 74 ? 48 8D 05 ? ? ? ? 80 38 00 75 ? 41 B8 04 00 00 00
491 | 
492 |
493 | 494 | ### IGameSystem_InitAllSystems_pFirst 495 | 496 | 497 |
StatusPlatformLibraryCODE-StyleIDA-Style
Windowsserver 498 |
499 | \x48\x8B\x3D\x2A\x2A\x2A\x2A\x48\x85\xFF\x0F\x84\x2A\x2A\x2A\x2A\xBE
500 | 
501 |
502 |
503 | 48 8B 3D ? ? ? ? 48 85 FF 0F 84 ? ? ? ? BE
504 | 
505 |
Linuxserver 506 |
507 | \x4C\x8B\x35\x2A\x2A\x2A\x2A\x4D\x85\xF6\x75\x2A\xE9
508 | 
509 |
510 |
511 | 4C 8B 35 ? ? ? ? 4D 85 F6 75 ? E9
512 | 
513 |
514 | 515 | ### CCSPlayerController_ProcessUsercmds 516 | 517 | 518 |
StatusPlatformLibraryCODE-StyleIDA-Style
Windowsserver 519 |
520 | \x48\x8B\xC4\x44\x88\x48\x20\x44\x89\x40\x18\x48\x89\x50\x10\x53
521 | 
522 |
523 |
524 | 48 8B C4 44 88 48 20 44 89 40 18 48 89 50 10 53
525 | 
526 |
Linuxserver 527 |
528 | \x55\x48\x89\xE5\x41\x57\x41\x56\x41\x89\xD6\x41\x55\x41\x54\x49\x89\xFC\x53\x48\x83\xEC\x38
529 | 
530 |
531 |
532 | 55 48 89 E5 41 57 41 56 41 89 D6 41 55 41 54 49 89 FC 53 48 83 EC 38
533 | 
534 |
535 | 536 | ### CSoundOpGameSystem_SetSoundEventParam 537 | 538 | 539 |
StatusPlatformLibraryCODE-StyleIDA-Style
Windowsserver 540 |
541 | \x48\x89\x5C\x24\x08\x48\x89\x6C\x24\x10\x56\x57\x41\x56\x48\x83\xEC\x40\x48\x8B\xB4\x24\x80\x00\x00\x00
542 | 
543 |
544 |
545 | 48 89 5C 24 08 48 89 6C 24 10 56 57 41 56 48 83 EC 40 48 8B B4 24 80 00 00 00
546 | 
547 |
Linuxserver 548 |
549 | \x55\x48\x89\xE5\x41\x57\x41\x56\x49\x89\xF6\x48\x89\xD6\x41\x55\x41\x89\xCD
550 | 
551 |
552 |
553 | 55 48 89 E5 41 57 41 56 49 89 F6 48 89 D6 41 55 41 89 CD
554 | 
555 |
556 | 557 | -------------------------------------------------------------------------------- /.github/source/.gitignore: -------------------------------------------------------------------------------- 1 | workdir 2 | depots 3 | node_modules -------------------------------------------------------------------------------- /.github/source/.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "printWidth": 120, 3 | "proseWrap": "never", 4 | "semi": true, 5 | "singleQuote": false, 6 | "tabWidth": 4, 7 | "trailingComma": "none" 8 | } 9 | -------------------------------------------------------------------------------- /.github/source/License.txt: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2024 - present Ian Lucas 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. -------------------------------------------------------------------------------- /.github/source/binary.ts: -------------------------------------------------------------------------------- 1 | /*--------------------------------------------------------------------------------------------- 2 | * Copyright (c) Ian Lucas. All rights reserved. 3 | * Licensed under the MIT License. See License.txt in the project root for license information. 4 | *--------------------------------------------------------------------------------------------*/ 5 | 6 | import { join } from "path"; 7 | import { workdir } from "./filesystem.js"; 8 | 9 | export const osLabels: Record = { 10 | linux: "Linux", 11 | windows: "Windows" 12 | }; 13 | 14 | export class Binary { 15 | public path: string; 16 | 17 | constructor( 18 | public filename: string, 19 | public library: string, 20 | public os: string 21 | ) { 22 | this.path = join(workdir, filename); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /.github/source/config/2347771.depot: -------------------------------------------------------------------------------- 1 | game/csgo/bin/win64/server.dll 2 | game/bin/win64/engine2.dll -------------------------------------------------------------------------------- /.github/source/config/2347773.depot: -------------------------------------------------------------------------------- 1 | game/csgo/bin/linuxsteamrt64/libserver.so 2 | game/bin/linuxsteamrt64/libengine2.so -------------------------------------------------------------------------------- /.github/source/config/binaries.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "os": "linux", 4 | "library": "server", 5 | "filename": "libserver.so" 6 | }, 7 | { 8 | "os": "linux", 9 | "library": "engine2", 10 | "filename": "libengine2.so" 11 | }, 12 | { 13 | "os": "windows", 14 | "library": "server", 15 | "filename": "server.dll" 16 | }, 17 | { 18 | "os": "windows", 19 | "library": "engine2", 20 | "filename": "engine2.dll" 21 | } 22 | ] 23 | -------------------------------------------------------------------------------- /.github/source/config/sources.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "id": "CounterStrikeSharp", 4 | "repo": "roflmuffin/CounterStrikeSharp", 5 | "framework": "counterstrikesharp", 6 | "branch": "main", 7 | "filepath": "/configs/addons/counterstrikesharp/gamedata/gamedata.json" 8 | }, 9 | { 10 | "id": "CS2Fixes", 11 | "repo": "Source2ZE/CS2Fixes", 12 | "framework": "sourcemod", 13 | "branch": "main", 14 | "filepath": "/gamedata/cs2fixes.games.txt" 15 | }, 16 | { 17 | "id": "swiftly", 18 | "repo": "swiftly-solution/swiftly", 19 | "framework": "swiftly", 20 | "branch": "master", 21 | "filepath": "/plugin_files/gamedata/cs2/core/signatures.json" 22 | }, 23 | { 24 | "id": "plugify", 25 | "repo": "untrustedmodders/plugify-source-2", 26 | "framework": "plugify", 27 | "branch": "main", 28 | "filepath": "/assets/gamedata.jsonc" 29 | }, 30 | { 31 | "id": "cs2kz-metamod", 32 | "repo": "KZGlobalTeam/cs2kz-metamod", 33 | "framework": "sourcemod", 34 | "branch": "dev", 35 | "filepath": "/gamedata/cs2kz-core.games.txt" 36 | }, 37 | { 38 | "id": "cs2-retakes-allocator", 39 | "repo": "yonilerner/cs2-retakes-allocator", 40 | "framework": "counterstrikesharp", 41 | "branch": "main", 42 | "filepath": "/Resources/RetakesAllocator_gamedata.json" 43 | }, 44 | { 45 | "id": "cs2-match-plugin", 46 | "repo": "ianlucas/cs2-match-plugin", 47 | "framework": "counterstrikesharp", 48 | "branch": "master", 49 | "filepath": "/gamedata/match.json" 50 | }, 51 | { 52 | "id": "cs2-inventory-simulator-plugin", 53 | "repo": "ianlucas/cs2-inventory-simulator-plugin", 54 | "framework": "counterstrikesharp", 55 | "branch": "main", 56 | "filepath": "/gamedata/inventory-simulator.json" 57 | } 58 | ] 59 | -------------------------------------------------------------------------------- /.github/source/counterstrikesharp.ts: -------------------------------------------------------------------------------- 1 | /*--------------------------------------------------------------------------------------------- 2 | * Copyright (c) Ian Lucas. All rights reserved. 3 | * Licensed under the MIT License. See License.txt in the project root for license information. 4 | *--------------------------------------------------------------------------------------------*/ 5 | 6 | import { GitHubSource } from "./github.js"; 7 | import { Signature, Subroutine } from "./subroutine.js"; 8 | 9 | export class CounterStrikeSharp { 10 | static parseGamedata(data: string, source: GitHubSource) { 11 | try { 12 | const subroutines: Subroutine[] = []; 13 | for (const [name, value] of Object.entries( 14 | JSON.parse(data) as { 15 | [name: string]: { signatures?: { library: string; windows?: string; linux?: string } }; 16 | } 17 | )) { 18 | if (value.signatures === undefined) { 19 | continue; 20 | } 21 | const subroutine = new Subroutine(name, value.signatures.library, source); 22 | for (let [os, signature] of Object.entries(value.signatures).filter(([os]) => os !== "library")) { 23 | signature = signature.trim(); 24 | if (signature.length === 0) { 25 | continue; 26 | } 27 | subroutine.signatures[os] = new Signature(signature, os); 28 | } 29 | subroutines.push(subroutine); 30 | } 31 | return subroutines; 32 | } catch (error) { 33 | console.log(error); 34 | return undefined; 35 | } 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /.github/source/depot.ts: -------------------------------------------------------------------------------- 1 | /*--------------------------------------------------------------------------------------------- 2 | * Copyright (c) Ian Lucas. All rights reserved. 3 | * Licensed under the MIT License. See License.txt in the project root for license information. 4 | *--------------------------------------------------------------------------------------------*/ 5 | 6 | import { assert, fail } from "@ianlucas/cs2-lib"; 7 | import { depotDownloader } from "@ianlucas/depot-downloader"; 8 | import { readFile, rename, writeFile } from "fs/promises"; 9 | import { basename, join } from "path"; 10 | import { configdir, cwd, tryReadFile, workdir } from "./filesystem.js"; 11 | import { readProcess } from "./misc.js"; 12 | 13 | const CS2_APP = 730; 14 | 15 | export class Depot { 16 | public filelistPath: string; 17 | public manifestPath: string; 18 | 19 | constructor(public depotId: number) { 20 | this.filelistPath = join(configdir, `${this.depotId}.depot`); 21 | this.manifestPath = join(workdir, `${this.depotId}.manifest`); 22 | } 23 | 24 | async fetchLatestManifestId() { 25 | try { 26 | const output = await readProcess( 27 | depotDownloader({ 28 | app: CS2_APP, 29 | depot: this.depotId, 30 | manifestOnly: true 31 | }) 32 | ); 33 | const matches = output.match(/Manifest\s(\d+)/); 34 | if (matches !== null) { 35 | return matches[1]; 36 | } 37 | return undefined; 38 | } catch (error) { 39 | console.error(error); 40 | return undefined; 41 | } 42 | } 43 | 44 | async fetchFiles() { 45 | try { 46 | const output = await readProcess( 47 | depotDownloader({ 48 | app: CS2_APP, 49 | depot: this.depotId, 50 | filelist: this.filelistPath 51 | }) 52 | ); 53 | return Array.from(output.matchAll(/% (.*)/g)) 54 | .map((matches) => matches[1]) 55 | .filter((value) => value !== undefined); 56 | } catch (error) { 57 | console.error(error); 58 | return undefined; 59 | } 60 | } 61 | 62 | async validate(): Promise<{ manifestId: string; hasUpdate: boolean }> { 63 | console.log(`Checking depot ${this.depotId}...`); 64 | const existingManifestId = (await tryReadFile(this.manifestPath)) ?? ""; 65 | const latestManifestId = await this.fetchLatestManifestId(); 66 | assert(latestManifestId !== undefined, `Failed to get latest manifest for depot ${this.depotId}!`); 67 | if (existingManifestId === latestManifestId) { 68 | console.log(`Depot ${this.depotId} is up to date.`); 69 | return { manifestId: latestManifestId, hasUpdate: false }; 70 | } 71 | const filelist = (await readFile(this.filelistPath, "utf-8")).split("\n"); 72 | const paths = await this.fetchFiles(); 73 | if (paths?.length !== filelist.length) { 74 | console.log(filelist, paths); 75 | fail(`Failed to download depot ${this.depotId}!`); 76 | } 77 | for (const path of paths) { 78 | const filename = basename(path); 79 | await rename(join(cwd, path), join(workdir, filename)); 80 | await writeFile(this.manifestPath, latestManifestId, "utf-8"); 81 | console.log(`Downloaded ${filename}.`); 82 | } 83 | return { 84 | manifestId: latestManifestId, 85 | hasUpdate: true 86 | }; 87 | } 88 | } 89 | -------------------------------------------------------------------------------- /.github/source/filesystem.ts: -------------------------------------------------------------------------------- 1 | /*--------------------------------------------------------------------------------------------- 2 | * Copyright (c) Ian Lucas. All rights reserved. 3 | * Licensed under the MIT License. See License.txt in the project root for license information. 4 | *--------------------------------------------------------------------------------------------*/ 5 | 6 | import { access, readFile } from "fs/promises"; 7 | import { join, resolve } from "path"; 8 | 9 | export const cwd = process.cwd(); 10 | export const githubdir = resolve(cwd, ".."); 11 | export const docsdir = resolve(githubdir, "docs"); 12 | export const rootdir = resolve(githubdir, ".."); 13 | export const workdir = join(cwd, "workdir"); 14 | export const configdir = join(cwd, "config"); 15 | 16 | export async function exists(path: string) { 17 | try { 18 | await access(path); 19 | return true; 20 | } catch { 21 | return false; 22 | } 23 | } 24 | 25 | export async function tryReadFile(path: string) { 26 | if (!(await exists(path))) { 27 | return undefined; 28 | } 29 | return await readFile(path, "utf-8"); 30 | } 31 | -------------------------------------------------------------------------------- /.github/source/gamedata.ts: -------------------------------------------------------------------------------- 1 | /*--------------------------------------------------------------------------------------------- 2 | * Copyright (c) Ian Lucas. All rights reserved. 3 | * Licensed under the MIT License. See License.txt in the project root for license information. 4 | *--------------------------------------------------------------------------------------------*/ 5 | 6 | import { CounterStrikeSharp } from "./counterstrikesharp.js"; 7 | import { GitHubSource } from "./github.js"; 8 | import { Plugify } from "./plugify.js"; 9 | import { SourceMod } from "./sourcemod.js"; 10 | import { Swiftly } from "./swiftly.js"; 11 | 12 | export class Gamedata { 13 | static async parseFrom(source: GitHubSource) { 14 | const data = await source.readGamedata(); 15 | if (data === undefined) { 16 | return []; 17 | } 18 | switch (source.framework) { 19 | case "counterstrikesharp": 20 | return CounterStrikeSharp.parseGamedata(data, source); 21 | 22 | case "sourcemod": 23 | return SourceMod.parseGamedata(data, source); 24 | 25 | case "swiftly": 26 | return Swiftly.parseGamedata(data, source); 27 | 28 | case "plugify": 29 | return Plugify.parseGamedata(data, source); 30 | } 31 | throw new Error(`Unknown framework ${source.framework}`); 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /.github/source/github.ts: -------------------------------------------------------------------------------- 1 | /*--------------------------------------------------------------------------------------------- 2 | * Copyright (c) Ian Lucas. All rights reserved. 3 | * Licensed under the MIT License. See License.txt in the project root for license information. 4 | *--------------------------------------------------------------------------------------------*/ 5 | 6 | import { assert } from "@ianlucas/cs2-lib"; 7 | import { readFile, writeFile } from "fs/promises"; 8 | import { join } from "path"; 9 | import { tryReadFile, workdir } from "./filesystem.js"; 10 | 11 | export class GitHubSource { 12 | public id: string; 13 | public repo: string; 14 | public framework: string; 15 | public branch: string; 16 | public filepath: string; 17 | public commitPath: string; 18 | public gamedataPath: string; 19 | 20 | constructor({ 21 | id, 22 | repo, 23 | framework, 24 | branch, 25 | filepath 26 | }: { 27 | id: string; 28 | repo: string; 29 | framework: string; 30 | branch: string; 31 | filepath: string; 32 | }) { 33 | this.id = id; 34 | this.repo = repo; 35 | this.framework = framework; 36 | this.branch = branch; 37 | this.filepath = filepath; 38 | this.commitPath = join(workdir, `${id}.commit`); 39 | this.gamedataPath = join(workdir, `${id}.gamedata`); 40 | } 41 | 42 | async fetchLatestCommitSha() { 43 | try { 44 | const url = new URL("https://api.github.com"); 45 | url.pathname = `/repos/${this.repo}/commits`; 46 | url.searchParams.append("path", this.filepath); 47 | url.searchParams.append("per_page", "1"); 48 | const response = (await fetch(url).then((response) => response.json())) as { 49 | sha?: string; 50 | }[]; 51 | if (response.length > 0) { 52 | return response[0]?.sha; 53 | } 54 | } catch (error) { 55 | console.error(error); 56 | } 57 | return undefined; 58 | } 59 | 60 | async fetchGamedata() { 61 | try { 62 | const url = new URL("https://raw.githubusercontent.com"); 63 | url.pathname = `/${this.repo}/${this.branch}/${this.filepath}`; 64 | const response = await fetch(url); 65 | if (response.ok) { 66 | return await response.text(); 67 | } 68 | } catch (error) { 69 | console.error(error); 70 | } 71 | return undefined; 72 | } 73 | 74 | async readGamedata() { 75 | return await readFile(this.gamedataPath, "utf-8"); 76 | } 77 | 78 | async validate(): Promise<{ hasUpdate: boolean }> { 79 | const existingCommitSha = (await tryReadFile(this.commitPath)) ?? ""; 80 | const latestCommitSha = await this.fetchLatestCommitSha(); 81 | assert(latestCommitSha !== undefined, `Failed to get latest commit for ${this.repo}!`); 82 | if (existingCommitSha === latestCommitSha) { 83 | console.log(`${this.repo} is up to date.`); 84 | return { hasUpdate: false }; 85 | } 86 | const data = await this.fetchGamedata(); 87 | assert(data !== undefined, `Failed to download gamedata from ${this.repo}!`); 88 | await writeFile(this.commitPath, latestCommitSha, "utf-8"); 89 | await writeFile(this.gamedataPath, data, "utf-8"); 90 | console.log(`Downloaded gamedata from ${this.repo} (commit: ${latestCommitSha.slice(0, 7)})`); 91 | return { hasUpdate: true }; 92 | } 93 | } 94 | -------------------------------------------------------------------------------- /.github/source/misc.ts: -------------------------------------------------------------------------------- 1 | /*--------------------------------------------------------------------------------------------- 2 | * Copyright (c) Ian Lucas. All rights reserved. 3 | * Licensed under the MIT License. See License.txt in the project root for license information. 4 | *--------------------------------------------------------------------------------------------*/ 5 | 6 | import { type ChildProcessWithoutNullStreams } from "child_process"; 7 | 8 | export function formatDate(date: Date): string { 9 | return date.toLocaleString("en-US", { timeZone: "GMT", dateStyle: "long", timeStyle: "long" }); 10 | } 11 | 12 | export function readProcess(ps: ChildProcessWithoutNullStreams) { 13 | return new Promise((resolve, reject) => { 14 | let data = ""; 15 | ps.stdout.on("data", (chunk) => (data += chunk)); 16 | ps.stderr.on("data", (chunk) => (data += chunk)); 17 | ps.on("close", (code) => { 18 | if (code === 0) { 19 | resolve(data); 20 | } else { 21 | reject(data); 22 | } 23 | }); 24 | }); 25 | } 26 | -------------------------------------------------------------------------------- /.github/source/package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "cs2-signatures", 3 | "version": "1.0.0", 4 | "lockfileVersion": 3, 5 | "requires": true, 6 | "packages": { 7 | "": { 8 | "name": "cs2-signatures", 9 | "version": "1.0.0", 10 | "dependencies": { 11 | "@ianlucas/cs2-lib": "^5.11.0", 12 | "@ianlucas/depot-downloader": "^2.7.3", 13 | "jsonc-parser": "^3.3.1", 14 | "tsx": "^4.19.3" 15 | }, 16 | "devDependencies": { 17 | "@total-typescript/tsconfig": "^1.0.4", 18 | "@types/node": "^22.13.14", 19 | "prettier": "^3.5.3" 20 | } 21 | }, 22 | "node_modules/@esbuild/aix-ppc64": { 23 | "version": "0.25.1", 24 | "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.1.tgz", 25 | "integrity": "sha512-kfYGy8IdzTGy+z0vFGvExZtxkFlA4zAxgKEahG9KE1ScBjpQnFsNOX8KTU5ojNru5ed5CVoJYXFtoxaq5nFbjQ==", 26 | "cpu": [ 27 | "ppc64" 28 | ], 29 | "license": "MIT", 30 | "optional": true, 31 | "os": [ 32 | "aix" 33 | ], 34 | "engines": { 35 | "node": ">=18" 36 | } 37 | }, 38 | "node_modules/@esbuild/android-arm": { 39 | "version": "0.25.1", 40 | "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.1.tgz", 41 | "integrity": "sha512-dp+MshLYux6j/JjdqVLnMglQlFu+MuVeNrmT5nk6q07wNhCdSnB7QZj+7G8VMUGh1q+vj2Bq8kRsuyA00I/k+Q==", 42 | "cpu": [ 43 | "arm" 44 | ], 45 | "license": "MIT", 46 | "optional": true, 47 | "os": [ 48 | "android" 49 | ], 50 | "engines": { 51 | "node": ">=18" 52 | } 53 | }, 54 | "node_modules/@esbuild/android-arm64": { 55 | "version": "0.25.1", 56 | "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.1.tgz", 57 | "integrity": "sha512-50tM0zCJW5kGqgG7fQ7IHvQOcAn9TKiVRuQ/lN0xR+T2lzEFvAi1ZcS8DiksFcEpf1t/GYOeOfCAgDHFpkiSmA==", 58 | "cpu": [ 59 | "arm64" 60 | ], 61 | "license": "MIT", 62 | "optional": true, 63 | "os": [ 64 | "android" 65 | ], 66 | "engines": { 67 | "node": ">=18" 68 | } 69 | }, 70 | "node_modules/@esbuild/android-x64": { 71 | "version": "0.25.1", 72 | "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.1.tgz", 73 | "integrity": "sha512-GCj6WfUtNldqUzYkN/ITtlhwQqGWu9S45vUXs7EIYf+7rCiiqH9bCloatO9VhxsL0Pji+PF4Lz2XXCES+Q8hDw==", 74 | "cpu": [ 75 | "x64" 76 | ], 77 | "license": "MIT", 78 | "optional": true, 79 | "os": [ 80 | "android" 81 | ], 82 | "engines": { 83 | "node": ">=18" 84 | } 85 | }, 86 | "node_modules/@esbuild/darwin-arm64": { 87 | "version": "0.25.1", 88 | "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.1.tgz", 89 | "integrity": "sha512-5hEZKPf+nQjYoSr/elb62U19/l1mZDdqidGfmFutVUjjUZrOazAtwK+Kr+3y0C/oeJfLlxo9fXb1w7L+P7E4FQ==", 90 | "cpu": [ 91 | "arm64" 92 | ], 93 | "license": "MIT", 94 | "optional": true, 95 | "os": [ 96 | "darwin" 97 | ], 98 | "engines": { 99 | "node": ">=18" 100 | } 101 | }, 102 | "node_modules/@esbuild/darwin-x64": { 103 | "version": "0.25.1", 104 | "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.1.tgz", 105 | "integrity": "sha512-hxVnwL2Dqs3fM1IWq8Iezh0cX7ZGdVhbTfnOy5uURtao5OIVCEyj9xIzemDi7sRvKsuSdtCAhMKarxqtlyVyfA==", 106 | "cpu": [ 107 | "x64" 108 | ], 109 | "license": "MIT", 110 | "optional": true, 111 | "os": [ 112 | "darwin" 113 | ], 114 | "engines": { 115 | "node": ">=18" 116 | } 117 | }, 118 | "node_modules/@esbuild/freebsd-arm64": { 119 | "version": "0.25.1", 120 | "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.1.tgz", 121 | "integrity": "sha512-1MrCZs0fZa2g8E+FUo2ipw6jw5qqQiH+tERoS5fAfKnRx6NXH31tXBKI3VpmLijLH6yriMZsxJtaXUyFt/8Y4A==", 122 | "cpu": [ 123 | "arm64" 124 | ], 125 | "license": "MIT", 126 | "optional": true, 127 | "os": [ 128 | "freebsd" 129 | ], 130 | "engines": { 131 | "node": ">=18" 132 | } 133 | }, 134 | "node_modules/@esbuild/freebsd-x64": { 135 | "version": "0.25.1", 136 | "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.1.tgz", 137 | "integrity": "sha512-0IZWLiTyz7nm0xuIs0q1Y3QWJC52R8aSXxe40VUxm6BB1RNmkODtW6LHvWRrGiICulcX7ZvyH6h5fqdLu4gkww==", 138 | "cpu": [ 139 | "x64" 140 | ], 141 | "license": "MIT", 142 | "optional": true, 143 | "os": [ 144 | "freebsd" 145 | ], 146 | "engines": { 147 | "node": ">=18" 148 | } 149 | }, 150 | "node_modules/@esbuild/linux-arm": { 151 | "version": "0.25.1", 152 | "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.1.tgz", 153 | "integrity": "sha512-NdKOhS4u7JhDKw9G3cY6sWqFcnLITn6SqivVArbzIaf3cemShqfLGHYMx8Xlm/lBit3/5d7kXvriTUGa5YViuQ==", 154 | "cpu": [ 155 | "arm" 156 | ], 157 | "license": "MIT", 158 | "optional": true, 159 | "os": [ 160 | "linux" 161 | ], 162 | "engines": { 163 | "node": ">=18" 164 | } 165 | }, 166 | "node_modules/@esbuild/linux-arm64": { 167 | "version": "0.25.1", 168 | "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.1.tgz", 169 | "integrity": "sha512-jaN3dHi0/DDPelk0nLcXRm1q7DNJpjXy7yWaWvbfkPvI+7XNSc/lDOnCLN7gzsyzgu6qSAmgSvP9oXAhP973uQ==", 170 | "cpu": [ 171 | "arm64" 172 | ], 173 | "license": "MIT", 174 | "optional": true, 175 | "os": [ 176 | "linux" 177 | ], 178 | "engines": { 179 | "node": ">=18" 180 | } 181 | }, 182 | "node_modules/@esbuild/linux-ia32": { 183 | "version": "0.25.1", 184 | "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.1.tgz", 185 | "integrity": "sha512-OJykPaF4v8JidKNGz8c/q1lBO44sQNUQtq1KktJXdBLn1hPod5rE/Hko5ugKKZd+D2+o1a9MFGUEIUwO2YfgkQ==", 186 | "cpu": [ 187 | "ia32" 188 | ], 189 | "license": "MIT", 190 | "optional": true, 191 | "os": [ 192 | "linux" 193 | ], 194 | "engines": { 195 | "node": ">=18" 196 | } 197 | }, 198 | "node_modules/@esbuild/linux-loong64": { 199 | "version": "0.25.1", 200 | "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.1.tgz", 201 | "integrity": "sha512-nGfornQj4dzcq5Vp835oM/o21UMlXzn79KobKlcs3Wz9smwiifknLy4xDCLUU0BWp7b/houtdrgUz7nOGnfIYg==", 202 | "cpu": [ 203 | "loong64" 204 | ], 205 | "license": "MIT", 206 | "optional": true, 207 | "os": [ 208 | "linux" 209 | ], 210 | "engines": { 211 | "node": ">=18" 212 | } 213 | }, 214 | "node_modules/@esbuild/linux-mips64el": { 215 | "version": "0.25.1", 216 | "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.1.tgz", 217 | "integrity": "sha512-1osBbPEFYwIE5IVB/0g2X6i1qInZa1aIoj1TdL4AaAb55xIIgbg8Doq6a5BzYWgr+tEcDzYH67XVnTmUzL+nXg==", 218 | "cpu": [ 219 | "mips64el" 220 | ], 221 | "license": "MIT", 222 | "optional": true, 223 | "os": [ 224 | "linux" 225 | ], 226 | "engines": { 227 | "node": ">=18" 228 | } 229 | }, 230 | "node_modules/@esbuild/linux-ppc64": { 231 | "version": "0.25.1", 232 | "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.1.tgz", 233 | "integrity": "sha512-/6VBJOwUf3TdTvJZ82qF3tbLuWsscd7/1w+D9LH0W/SqUgM5/JJD0lrJ1fVIfZsqB6RFmLCe0Xz3fmZc3WtyVg==", 234 | "cpu": [ 235 | "ppc64" 236 | ], 237 | "license": "MIT", 238 | "optional": true, 239 | "os": [ 240 | "linux" 241 | ], 242 | "engines": { 243 | "node": ">=18" 244 | } 245 | }, 246 | "node_modules/@esbuild/linux-riscv64": { 247 | "version": "0.25.1", 248 | "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.1.tgz", 249 | "integrity": "sha512-nSut/Mx5gnilhcq2yIMLMe3Wl4FK5wx/o0QuuCLMtmJn+WeWYoEGDN1ipcN72g1WHsnIbxGXd4i/MF0gTcuAjQ==", 250 | "cpu": [ 251 | "riscv64" 252 | ], 253 | "license": "MIT", 254 | "optional": true, 255 | "os": [ 256 | "linux" 257 | ], 258 | "engines": { 259 | "node": ">=18" 260 | } 261 | }, 262 | "node_modules/@esbuild/linux-s390x": { 263 | "version": "0.25.1", 264 | "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.1.tgz", 265 | "integrity": "sha512-cEECeLlJNfT8kZHqLarDBQso9a27o2Zd2AQ8USAEoGtejOrCYHNtKP8XQhMDJMtthdF4GBmjR2au3x1udADQQQ==", 266 | "cpu": [ 267 | "s390x" 268 | ], 269 | "license": "MIT", 270 | "optional": true, 271 | "os": [ 272 | "linux" 273 | ], 274 | "engines": { 275 | "node": ">=18" 276 | } 277 | }, 278 | "node_modules/@esbuild/linux-x64": { 279 | "version": "0.25.1", 280 | "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.1.tgz", 281 | "integrity": "sha512-xbfUhu/gnvSEg+EGovRc+kjBAkrvtk38RlerAzQxvMzlB4fXpCFCeUAYzJvrnhFtdeyVCDANSjJvOvGYoeKzFA==", 282 | "cpu": [ 283 | "x64" 284 | ], 285 | "license": "MIT", 286 | "optional": true, 287 | "os": [ 288 | "linux" 289 | ], 290 | "engines": { 291 | "node": ">=18" 292 | } 293 | }, 294 | "node_modules/@esbuild/netbsd-arm64": { 295 | "version": "0.25.1", 296 | "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.1.tgz", 297 | "integrity": "sha512-O96poM2XGhLtpTh+s4+nP7YCCAfb4tJNRVZHfIE7dgmax+yMP2WgMd2OecBuaATHKTHsLWHQeuaxMRnCsH8+5g==", 298 | "cpu": [ 299 | "arm64" 300 | ], 301 | "license": "MIT", 302 | "optional": true, 303 | "os": [ 304 | "netbsd" 305 | ], 306 | "engines": { 307 | "node": ">=18" 308 | } 309 | }, 310 | "node_modules/@esbuild/netbsd-x64": { 311 | "version": "0.25.1", 312 | "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.1.tgz", 313 | "integrity": "sha512-X53z6uXip6KFXBQ+Krbx25XHV/NCbzryM6ehOAeAil7X7oa4XIq+394PWGnwaSQ2WRA0KI6PUO6hTO5zeF5ijA==", 314 | "cpu": [ 315 | "x64" 316 | ], 317 | "license": "MIT", 318 | "optional": true, 319 | "os": [ 320 | "netbsd" 321 | ], 322 | "engines": { 323 | "node": ">=18" 324 | } 325 | }, 326 | "node_modules/@esbuild/openbsd-arm64": { 327 | "version": "0.25.1", 328 | "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.1.tgz", 329 | "integrity": "sha512-Na9T3szbXezdzM/Kfs3GcRQNjHzM6GzFBeU1/6IV/npKP5ORtp9zbQjvkDJ47s6BCgaAZnnnu/cY1x342+MvZg==", 330 | "cpu": [ 331 | "arm64" 332 | ], 333 | "license": "MIT", 334 | "optional": true, 335 | "os": [ 336 | "openbsd" 337 | ], 338 | "engines": { 339 | "node": ">=18" 340 | } 341 | }, 342 | "node_modules/@esbuild/openbsd-x64": { 343 | "version": "0.25.1", 344 | "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.1.tgz", 345 | "integrity": "sha512-T3H78X2h1tszfRSf+txbt5aOp/e7TAz3ptVKu9Oyir3IAOFPGV6O9c2naym5TOriy1l0nNf6a4X5UXRZSGX/dw==", 346 | "cpu": [ 347 | "x64" 348 | ], 349 | "license": "MIT", 350 | "optional": true, 351 | "os": [ 352 | "openbsd" 353 | ], 354 | "engines": { 355 | "node": ">=18" 356 | } 357 | }, 358 | "node_modules/@esbuild/sunos-x64": { 359 | "version": "0.25.1", 360 | "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.1.tgz", 361 | "integrity": "sha512-2H3RUvcmULO7dIE5EWJH8eubZAI4xw54H1ilJnRNZdeo8dTADEZ21w6J22XBkXqGJbe0+wnNJtw3UXRoLJnFEg==", 362 | "cpu": [ 363 | "x64" 364 | ], 365 | "license": "MIT", 366 | "optional": true, 367 | "os": [ 368 | "sunos" 369 | ], 370 | "engines": { 371 | "node": ">=18" 372 | } 373 | }, 374 | "node_modules/@esbuild/win32-arm64": { 375 | "version": "0.25.1", 376 | "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.1.tgz", 377 | "integrity": "sha512-GE7XvrdOzrb+yVKB9KsRMq+7a2U/K5Cf/8grVFRAGJmfADr/e/ODQ134RK2/eeHqYV5eQRFxb1hY7Nr15fv1NQ==", 378 | "cpu": [ 379 | "arm64" 380 | ], 381 | "license": "MIT", 382 | "optional": true, 383 | "os": [ 384 | "win32" 385 | ], 386 | "engines": { 387 | "node": ">=18" 388 | } 389 | }, 390 | "node_modules/@esbuild/win32-ia32": { 391 | "version": "0.25.1", 392 | "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.1.tgz", 393 | "integrity": "sha512-uOxSJCIcavSiT6UnBhBzE8wy3n0hOkJsBOzy7HDAuTDE++1DJMRRVCPGisULScHL+a/ZwdXPpXD3IyFKjA7K8A==", 394 | "cpu": [ 395 | "ia32" 396 | ], 397 | "license": "MIT", 398 | "optional": true, 399 | "os": [ 400 | "win32" 401 | ], 402 | "engines": { 403 | "node": ">=18" 404 | } 405 | }, 406 | "node_modules/@esbuild/win32-x64": { 407 | "version": "0.25.1", 408 | "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.1.tgz", 409 | "integrity": "sha512-Y1EQdcfwMSeQN/ujR5VayLOJ1BHaK+ssyk0AEzPjC+t1lITgsnccPqFjb6V+LsTp/9Iov4ysfjxLaGJ9RPtkVg==", 410 | "cpu": [ 411 | "x64" 412 | ], 413 | "license": "MIT", 414 | "optional": true, 415 | "os": [ 416 | "win32" 417 | ], 418 | "engines": { 419 | "node": ">=18" 420 | } 421 | }, 422 | "node_modules/@ianlucas/cs2-lib": { 423 | "version": "5.11.0", 424 | "resolved": "https://registry.npmjs.org/@ianlucas/cs2-lib/-/cs2-lib-5.11.0.tgz", 425 | "integrity": "sha512-sGMupdCht0cSxtVZoW/tT5TrEgPyts9AtqgHPAmvXvyaPnE9ZOBPbu88iIIABawksOuZFyVLHBBKHYGptrdK5A==", 426 | "license": "MIT" 427 | }, 428 | "node_modules/@ianlucas/depot-downloader": { 429 | "version": "2.7.3", 430 | "resolved": "https://registry.npmjs.org/@ianlucas/depot-downloader/-/depot-downloader-2.7.3.tgz", 431 | "integrity": "sha512-/J4tKhnG1afjj2Fsbb5BabK1WqUImr7DfY7GRIPmL7TpU5PZnW54uJ6NIkMCczt2pi5W4Lipx16qu44xfAwBZg==", 432 | "hasInstallScript": true, 433 | "license": "MIT", 434 | "dependencies": { 435 | "follow-redirects": "^1.15.9", 436 | "unzipper": "^0.12.3" 437 | } 438 | }, 439 | "node_modules/@total-typescript/tsconfig": { 440 | "version": "1.0.4", 441 | "resolved": "https://registry.npmjs.org/@total-typescript/tsconfig/-/tsconfig-1.0.4.tgz", 442 | "integrity": "sha512-fO4ctMPGz1kOFOQ4RCPBRBfMy3gDn+pegUfrGyUFRMv/Rd0ZM3/SHH3hFCYG4u6bPLG8OlmOGcBLDexvyr3A5w==", 443 | "dev": true, 444 | "license": "MIT" 445 | }, 446 | "node_modules/@types/node": { 447 | "version": "22.13.14", 448 | "resolved": "https://registry.npmjs.org/@types/node/-/node-22.13.14.tgz", 449 | "integrity": "sha512-Zs/Ollc1SJ8nKUAgc7ivOEdIBM8JAKgrqqUYi2J997JuKO7/tpQC+WCetQ1sypiKCQWHdvdg9wBNpUPEWZae7w==", 450 | "dev": true, 451 | "license": "MIT", 452 | "dependencies": { 453 | "undici-types": "~6.20.0" 454 | } 455 | }, 456 | "node_modules/bluebird": { 457 | "version": "3.7.2", 458 | "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", 459 | "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", 460 | "license": "MIT" 461 | }, 462 | "node_modules/core-util-is": { 463 | "version": "1.0.3", 464 | "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", 465 | "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", 466 | "license": "MIT" 467 | }, 468 | "node_modules/duplexer2": { 469 | "version": "0.1.4", 470 | "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", 471 | "integrity": "sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA==", 472 | "license": "BSD-3-Clause", 473 | "dependencies": { 474 | "readable-stream": "^2.0.2" 475 | } 476 | }, 477 | "node_modules/esbuild": { 478 | "version": "0.25.1", 479 | "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.1.tgz", 480 | "integrity": "sha512-BGO5LtrGC7vxnqucAe/rmvKdJllfGaYWdyABvyMoXQlfYMb2bbRuReWR5tEGE//4LcNJj9XrkovTqNYRFZHAMQ==", 481 | "hasInstallScript": true, 482 | "license": "MIT", 483 | "bin": { 484 | "esbuild": "bin/esbuild" 485 | }, 486 | "engines": { 487 | "node": ">=18" 488 | }, 489 | "optionalDependencies": { 490 | "@esbuild/aix-ppc64": "0.25.1", 491 | "@esbuild/android-arm": "0.25.1", 492 | "@esbuild/android-arm64": "0.25.1", 493 | "@esbuild/android-x64": "0.25.1", 494 | "@esbuild/darwin-arm64": "0.25.1", 495 | "@esbuild/darwin-x64": "0.25.1", 496 | "@esbuild/freebsd-arm64": "0.25.1", 497 | "@esbuild/freebsd-x64": "0.25.1", 498 | "@esbuild/linux-arm": "0.25.1", 499 | "@esbuild/linux-arm64": "0.25.1", 500 | "@esbuild/linux-ia32": "0.25.1", 501 | "@esbuild/linux-loong64": "0.25.1", 502 | "@esbuild/linux-mips64el": "0.25.1", 503 | "@esbuild/linux-ppc64": "0.25.1", 504 | "@esbuild/linux-riscv64": "0.25.1", 505 | "@esbuild/linux-s390x": "0.25.1", 506 | "@esbuild/linux-x64": "0.25.1", 507 | "@esbuild/netbsd-arm64": "0.25.1", 508 | "@esbuild/netbsd-x64": "0.25.1", 509 | "@esbuild/openbsd-arm64": "0.25.1", 510 | "@esbuild/openbsd-x64": "0.25.1", 511 | "@esbuild/sunos-x64": "0.25.1", 512 | "@esbuild/win32-arm64": "0.25.1", 513 | "@esbuild/win32-ia32": "0.25.1", 514 | "@esbuild/win32-x64": "0.25.1" 515 | } 516 | }, 517 | "node_modules/follow-redirects": { 518 | "version": "1.15.9", 519 | "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz", 520 | "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==", 521 | "funding": [ 522 | { 523 | "type": "individual", 524 | "url": "https://github.com/sponsors/RubenVerborgh" 525 | } 526 | ], 527 | "license": "MIT", 528 | "engines": { 529 | "node": ">=4.0" 530 | }, 531 | "peerDependenciesMeta": { 532 | "debug": { 533 | "optional": true 534 | } 535 | } 536 | }, 537 | "node_modules/fs-extra": { 538 | "version": "11.2.0", 539 | "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", 540 | "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", 541 | "license": "MIT", 542 | "dependencies": { 543 | "graceful-fs": "^4.2.0", 544 | "jsonfile": "^6.0.1", 545 | "universalify": "^2.0.0" 546 | }, 547 | "engines": { 548 | "node": ">=14.14" 549 | } 550 | }, 551 | "node_modules/fsevents": { 552 | "version": "2.3.3", 553 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", 554 | "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", 555 | "hasInstallScript": true, 556 | "license": "MIT", 557 | "optional": true, 558 | "os": [ 559 | "darwin" 560 | ], 561 | "engines": { 562 | "node": "^8.16.0 || ^10.6.0 || >=11.0.0" 563 | } 564 | }, 565 | "node_modules/get-tsconfig": { 566 | "version": "4.8.1", 567 | "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.8.1.tgz", 568 | "integrity": "sha512-k9PN+cFBmaLWtVz29SkUoqU5O0slLuHJXt/2P+tMVFT+phsSGXGkp9t3rQIqdz0e+06EHNGs3oM6ZX1s2zHxRg==", 569 | "license": "MIT", 570 | "dependencies": { 571 | "resolve-pkg-maps": "^1.0.0" 572 | }, 573 | "funding": { 574 | "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" 575 | } 576 | }, 577 | "node_modules/graceful-fs": { 578 | "version": "4.2.11", 579 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", 580 | "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", 581 | "license": "ISC" 582 | }, 583 | "node_modules/inherits": { 584 | "version": "2.0.4", 585 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 586 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", 587 | "license": "ISC" 588 | }, 589 | "node_modules/isarray": { 590 | "version": "1.0.0", 591 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", 592 | "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", 593 | "license": "MIT" 594 | }, 595 | "node_modules/jsonc-parser": { 596 | "version": "3.3.1", 597 | "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.3.1.tgz", 598 | "integrity": "sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==", 599 | "license": "MIT" 600 | }, 601 | "node_modules/jsonfile": { 602 | "version": "6.1.0", 603 | "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", 604 | "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", 605 | "license": "MIT", 606 | "dependencies": { 607 | "universalify": "^2.0.0" 608 | }, 609 | "optionalDependencies": { 610 | "graceful-fs": "^4.1.6" 611 | } 612 | }, 613 | "node_modules/node-int64": { 614 | "version": "0.4.0", 615 | "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", 616 | "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", 617 | "license": "MIT" 618 | }, 619 | "node_modules/prettier": { 620 | "version": "3.5.3", 621 | "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.5.3.tgz", 622 | "integrity": "sha512-QQtaxnoDJeAkDvDKWCLiwIXkTgRhwYDEQCghU9Z6q03iyek/rxRh/2lC3HB7P8sWT2xC/y5JDctPLBIGzHKbhw==", 623 | "dev": true, 624 | "license": "MIT", 625 | "bin": { 626 | "prettier": "bin/prettier.cjs" 627 | }, 628 | "engines": { 629 | "node": ">=14" 630 | }, 631 | "funding": { 632 | "url": "https://github.com/prettier/prettier?sponsor=1" 633 | } 634 | }, 635 | "node_modules/process-nextick-args": { 636 | "version": "2.0.1", 637 | "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", 638 | "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", 639 | "license": "MIT" 640 | }, 641 | "node_modules/readable-stream": { 642 | "version": "2.3.8", 643 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", 644 | "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", 645 | "license": "MIT", 646 | "dependencies": { 647 | "core-util-is": "~1.0.0", 648 | "inherits": "~2.0.3", 649 | "isarray": "~1.0.0", 650 | "process-nextick-args": "~2.0.0", 651 | "safe-buffer": "~5.1.1", 652 | "string_decoder": "~1.1.1", 653 | "util-deprecate": "~1.0.1" 654 | } 655 | }, 656 | "node_modules/resolve-pkg-maps": { 657 | "version": "1.0.0", 658 | "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", 659 | "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", 660 | "license": "MIT", 661 | "funding": { 662 | "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" 663 | } 664 | }, 665 | "node_modules/safe-buffer": { 666 | "version": "5.1.2", 667 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", 668 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", 669 | "license": "MIT" 670 | }, 671 | "node_modules/string_decoder": { 672 | "version": "1.1.1", 673 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", 674 | "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", 675 | "license": "MIT", 676 | "dependencies": { 677 | "safe-buffer": "~5.1.0" 678 | } 679 | }, 680 | "node_modules/tsx": { 681 | "version": "4.19.3", 682 | "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.19.3.tgz", 683 | "integrity": "sha512-4H8vUNGNjQ4V2EOoGw005+c+dGuPSnhpPBPHBtsZdGZBk/iJb4kguGlPWaZTZ3q5nMtFOEsY0nRDlh9PJyd6SQ==", 684 | "license": "MIT", 685 | "dependencies": { 686 | "esbuild": "~0.25.0", 687 | "get-tsconfig": "^4.7.5" 688 | }, 689 | "bin": { 690 | "tsx": "dist/cli.mjs" 691 | }, 692 | "engines": { 693 | "node": ">=18.0.0" 694 | }, 695 | "optionalDependencies": { 696 | "fsevents": "~2.3.3" 697 | } 698 | }, 699 | "node_modules/undici-types": { 700 | "version": "6.20.0", 701 | "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz", 702 | "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==", 703 | "dev": true, 704 | "license": "MIT" 705 | }, 706 | "node_modules/universalify": { 707 | "version": "2.0.1", 708 | "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", 709 | "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", 710 | "license": "MIT", 711 | "engines": { 712 | "node": ">= 10.0.0" 713 | } 714 | }, 715 | "node_modules/unzipper": { 716 | "version": "0.12.3", 717 | "resolved": "https://registry.npmjs.org/unzipper/-/unzipper-0.12.3.tgz", 718 | "integrity": "sha512-PZ8hTS+AqcGxsaQntl3IRBw65QrBI6lxzqDEL7IAo/XCEqRTKGfOX56Vea5TH9SZczRVxuzk1re04z/YjuYCJA==", 719 | "license": "MIT", 720 | "dependencies": { 721 | "bluebird": "~3.7.2", 722 | "duplexer2": "~0.1.4", 723 | "fs-extra": "^11.2.0", 724 | "graceful-fs": "^4.2.2", 725 | "node-int64": "^0.4.0" 726 | } 727 | }, 728 | "node_modules/util-deprecate": { 729 | "version": "1.0.2", 730 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", 731 | "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", 732 | "license": "MIT" 733 | } 734 | } 735 | } 736 | -------------------------------------------------------------------------------- /.github/source/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "cs2-signatures", 3 | "version": "1.0.0", 4 | "type": "module", 5 | "scripts": { 6 | "format": "prettier . --write", 7 | "update": "tsx update.ts" 8 | }, 9 | "dependencies": { 10 | "@ianlucas/cs2-lib": "^5.11.0", 11 | "@ianlucas/depot-downloader": "^2.7.3", 12 | "jsonc-parser": "^3.3.1", 13 | "tsx": "^4.19.3" 14 | }, 15 | "devDependencies": { 16 | "@total-typescript/tsconfig": "^1.0.4", 17 | "@types/node": "^22.13.14", 18 | "prettier": "^3.5.3" 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /.github/source/plugify.ts: -------------------------------------------------------------------------------- 1 | /*--------------------------------------------------------------------------------------------- 2 | * Copyright (c) Ian Lucas. All rights reserved. 3 | * Licensed under the MIT License. See License.txt in the project root for license information. 4 | *--------------------------------------------------------------------------------------------*/ 5 | 6 | import * as JSONC from "jsonc-parser"; 7 | import { GitHubSource } from "./github.js"; 8 | import { Signature, Subroutine } from "./subroutine.js"; 9 | 10 | const PLUGIFY_OS_MAP: Record = { 11 | win64: "windows", 12 | linuxsteamrt64: "linux" 13 | }; 14 | 15 | export class Plugify { 16 | static parseGamedata(data: string, source: GitHubSource) { 17 | try { 18 | const subroutines: Subroutine[] = []; 19 | for (const [name, value] of Object.entries( 20 | ( 21 | JSONC.parse(data) as { 22 | csgo: { 23 | Signatures: { 24 | [name: string]: { library: string; win64?: string; linuxsteamrt64?: string }; 25 | }; 26 | }; 27 | } 28 | ).csgo.Signatures 29 | )) { 30 | const subroutine = new Subroutine(name, value.library, source); 31 | for (let [os, signature] of Object.entries(value).filter(([os]) => os !== "library")) { 32 | os = PLUGIFY_OS_MAP[os] ?? os; 33 | signature = signature.trim(); 34 | if (signature.length === 0) { 35 | continue; 36 | } 37 | subroutine.signatures[os] = new Signature(signature, os); 38 | } 39 | subroutines.push(subroutine); 40 | } 41 | return subroutines; 42 | } catch (error) { 43 | console.log(error); 44 | return undefined; 45 | } 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /.github/source/sigscan.ts: -------------------------------------------------------------------------------- 1 | /*--------------------------------------------------------------------------------------------- 2 | * Copyright (c) Ian Lucas. All rights reserved. 3 | * Licensed under the MIT License. See License.txt in the project root for license information. 4 | *--------------------------------------------------------------------------------------------*/ 5 | 6 | import { ensure } from "@ianlucas/cs2-lib"; 7 | import { createReadStream } from "fs"; 8 | import type { Binary } from "./binary.js"; 9 | import type { Subroutine } from "./subroutine.js"; 10 | 11 | export class Sigscan { 12 | static matchesAtPosition(buffer: Buffer, start: number, signature: number[]): boolean { 13 | for (let i = 0; i < signature.length; i++) { 14 | const sigByte = signature[i]; 15 | const fileByte = buffer[start + i]; 16 | 17 | // Wildcards: 0x2A or 0x00 match anything 18 | if (sigByte !== 0x2a && sigByte !== 0x00 && sigByte !== fileByte) { 19 | return false; 20 | } 21 | } 22 | return true; 23 | } 24 | 25 | static async findSignatures(binary: Binary, subroutines: Subroutine[], chunkSize = 64 * 1024): Promise { 26 | // Keep track of whether each signature was found 27 | const foundSignatures = Array(subroutines.length).fill(false); 28 | 29 | // Pre-calculate the maximum signature length (used for leftover) 30 | const maxSigLen = Math.max(...subroutines.map((sub) => ensure(sub.signatures[binary.os]).value.length)); 31 | 32 | let leftover = Buffer.alloc(0); 33 | 34 | return new Promise((resolve, reject) => { 35 | const readStream = createReadStream(binary.path, { highWaterMark: chunkSize }); 36 | 37 | readStream.on("error", (err) => reject(err)); 38 | 39 | readStream.on("data", (chunk: Buffer) => { 40 | // Combine leftover + current chunk for searching 41 | const combined = Buffer.concat([leftover, chunk]); 42 | 43 | // Search for each signature 44 | for (let sIdx = 0; sIdx < subroutines.length; sIdx++) { 45 | // If already found, skip 46 | if (foundSignatures[sIdx]) continue; 47 | 48 | const signature = ensure(subroutines[sIdx]?.signatures[binary.os]); 49 | signature.isSupported = true; 50 | const sigLen = signature.value.length; 51 | 52 | // We'll scan up to combined.length - sigLen 53 | for (let i = 0; i <= combined.length - sigLen; i++) { 54 | if (Sigscan.matchesAtPosition(combined, i, signature.value)) { 55 | foundSignatures[sIdx] = true; 56 | signature.isFound = true; 57 | break; 58 | } 59 | } 60 | } 61 | 62 | // If all signatures are found, we can stop reading (early optimization) 63 | if (foundSignatures.every(Boolean)) { 64 | readStream.close(); 65 | return; 66 | } 67 | 68 | // Save the tail for leftover: up to (maxSigLen - 1) bytes 69 | if (combined.length >= maxSigLen - 1) { 70 | leftover = combined.slice(combined.length - (maxSigLen - 1)); 71 | } else { 72 | leftover = combined; 73 | } 74 | }); 75 | 76 | readStream.on("close", () => { 77 | // End of file reached or stream closed 78 | resolve(foundSignatures); 79 | }); 80 | }); 81 | } 82 | } 83 | -------------------------------------------------------------------------------- /.github/source/sourcemod.ts: -------------------------------------------------------------------------------- 1 | /*--------------------------------------------------------------------------------------------- 2 | * Copyright (c) Ian Lucas. All rights reserved. 3 | * Licensed under the MIT License. See License.txt in the project root for license information. 4 | *--------------------------------------------------------------------------------------------*/ 5 | 6 | import { CS2KeyValues } from "@ianlucas/cs2-lib"; 7 | import { GitHubSource } from "./github.js"; 8 | import { Signature, Subroutine } from "./subroutine.js"; 9 | 10 | export class SourceMod { 11 | static parseGamedata(data: string, source: GitHubSource) { 12 | try { 13 | const subroutines: Subroutine[] = []; 14 | const keyValues = CS2KeyValues.parse<{ 15 | Games: { 16 | [game: string]: { 17 | Signatures: { 18 | [name: string]: { 19 | library: string; 20 | windows?: string; 21 | linux?: string; 22 | }; 23 | }; 24 | }; 25 | }; 26 | }>(data); 27 | 28 | for (const game of Object.values(keyValues.Games)) { 29 | for (const [name, value] of Object.entries(game.Signatures)) { 30 | const subroutine = new Subroutine(name, value.library, source); 31 | for (let [os, signature] of Object.entries(value).filter(([os]) => os !== "library")) { 32 | signature = signature.trim(); 33 | if (signature.length === 0) { 34 | continue; 35 | } 36 | subroutine.signatures[os] = new Signature(signature, os); 37 | } 38 | subroutines.push(subroutine); 39 | } 40 | } 41 | 42 | return subroutines; 43 | } catch (error) { 44 | console.log(error); 45 | return undefined; 46 | } 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /.github/source/subroutine.ts: -------------------------------------------------------------------------------- 1 | /*--------------------------------------------------------------------------------------------- 2 | * Copyright (c) Ian Lucas. All rights reserved. 3 | * Licensed under the MIT License. See License.txt in the project root for license information. 4 | *--------------------------------------------------------------------------------------------*/ 5 | 6 | import { GitHubSource } from "./github.js"; 7 | 8 | export class Subroutine { 9 | constructor( 10 | public name: string, 11 | public library: string, 12 | public source: GitHubSource 13 | ) {} 14 | 15 | signatures: Record = {}; 16 | } 17 | 18 | export class Signature { 19 | value: number[] = []; 20 | idaStyle: string; 21 | codeStyle: string; 22 | isFound = false; 23 | isSupported = false; 24 | 25 | constructor( 26 | value: string, 27 | public os: string 28 | ) { 29 | value = value.trim(); 30 | let codeStyle = value; 31 | if (value.startsWith("x")) { 32 | codeStyle = codeStyle.replace(/x/g, "\\x"); 33 | value = value.replace(/x/g, " ").replace(/2A/g, "?").trim(); 34 | } else { 35 | codeStyle = this.toCodeStyle(value); 36 | } 37 | const bytes = value.split(" "); 38 | for (const byte of bytes) { 39 | this.value.push(byte === "?" ? 0x00 : parseInt(byte, 16)); 40 | } 41 | this.idaStyle = value; 42 | this.codeStyle = codeStyle; 43 | } 44 | 45 | private toCodeStyle(value: string) { 46 | return value 47 | .split(" ") 48 | .map((byte) => (byte === "?" ? "\\x2A" : `\\x${byte}`)) 49 | .join(""); 50 | } 51 | } 52 | -------------------------------------------------------------------------------- /.github/source/swiftly.ts: -------------------------------------------------------------------------------- 1 | /*--------------------------------------------------------------------------------------------- 2 | * Copyright (c) Ian Lucas. All rights reserved. 3 | * Licensed under the MIT License. See License.txt in the project root for license information. 4 | *--------------------------------------------------------------------------------------------*/ 5 | 6 | import { GitHubSource } from "./github.js"; 7 | import { Signature, Subroutine } from "./subroutine.js"; 8 | 9 | export class Swiftly { 10 | static parseGamedata(data: string, source: GitHubSource) { 11 | try { 12 | const subroutines: Subroutine[] = []; 13 | for (const [name, value] of Object.entries( 14 | JSON.parse(data) as { 15 | [name: string]: 16 | | { 17 | lib: string; 18 | windows?: string; 19 | linux?: string; 20 | } 21 | | undefined; 22 | } 23 | )) { 24 | if (value === undefined) { 25 | continue; 26 | } 27 | const subroutine = new Subroutine(name, value.lib, source); 28 | for (let [os, signature] of Object.entries(value).filter(([os]) => os !== "lib")) { 29 | signature = signature.trim(); 30 | if (signature.length === 0) { 31 | continue; 32 | } 33 | subroutine.signatures[os] = new Signature(signature, os); 34 | } 35 | subroutines.push(subroutine); 36 | } 37 | return subroutines; 38 | } catch (error) { 39 | console.log(error); 40 | return undefined; 41 | } 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /.github/source/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "@total-typescript/tsconfig/tsc/no-dom/app", 3 | "compilerOptions": { 4 | "lib": ["es2024"] 5 | }, 6 | "include": ["update.ts"] 7 | } 8 | -------------------------------------------------------------------------------- /.github/source/update.ts: -------------------------------------------------------------------------------- 1 | /*--------------------------------------------------------------------------------------------- 2 | * Copyright (c) Ian Lucas. All rights reserved. 3 | * Licensed under the MIT License. See License.txt in the project root for license information. 4 | *--------------------------------------------------------------------------------------------*/ 5 | 6 | import { ensure } from "@ianlucas/cs2-lib"; 7 | import { mkdir, readdir } from "fs/promises"; 8 | import { Binary } from "./binary.js"; 9 | import binaries from "./config/binaries.json" assert { type: "json" }; 10 | import sources from "./config/sources.json" assert { type: "json" }; 11 | import { Depot } from "./depot.js"; 12 | import { configdir, docsdir, exists, workdir } from "./filesystem.js"; 13 | import { Gamedata } from "./gamedata.js"; 14 | import { GitHubSource } from "./github.js"; 15 | import { Sigscan } from "./sigscan.js"; 16 | import { Subroutine } from "./subroutine.js"; 17 | import { Writer } from "./writer.js"; 18 | 19 | const manifestUrls: string[] = []; 20 | const changes: string[] = []; 21 | const subroutines: Subroutine[] = []; 22 | 23 | if (!(await exists(workdir))) { 24 | await mkdir(workdir); 25 | } 26 | 27 | if (!(await exists(docsdir))) { 28 | await mkdir(docsdir); 29 | } 30 | 31 | for await (const filename of await readdir(configdir)) { 32 | if (filename.endsWith(".depot")) { 33 | const depot = new Depot(parseInt(ensure(filename.split(".")[0]))); 34 | const { manifestId, hasUpdate } = await depot.validate(); 35 | if (hasUpdate) { 36 | changes.push(`depot(${depot.depotId})`); 37 | } 38 | manifestUrls.push( 39 | `[${manifestId}](https://steamdb.info/depot/${depot.depotId}/history/?changeid=M:${manifestId})` 40 | ); 41 | } 42 | } 43 | 44 | for await (const data of sources) { 45 | const source = new GitHubSource(data); 46 | const { hasUpdate } = await source.validate(); 47 | if (hasUpdate) { 48 | changes.push(`repo(${source.repo})`); 49 | } 50 | for (const subroutine of ensure(await Gamedata.parseFrom(source))) { 51 | subroutines.push(subroutine); 52 | } 53 | } 54 | 55 | if (changes.length === 0) { 56 | console.log("No changes detected, skipping signature search."); 57 | process.exit(0); 58 | } 59 | 60 | await Promise.all( 61 | binaries.map(async ({ filename, library, os }) => { 62 | const signatures = await Sigscan.findSignatures( 63 | new Binary(filename, library, os), 64 | subroutines.filter( 65 | (subroutine) => subroutine.library === library && subroutine.signatures[os] !== undefined 66 | ) 67 | ); 68 | const found = signatures.filter((isFound) => isFound).length; 69 | console.log(`Found ${found} of ${signatures.length} signatures in ${filename}.`); 70 | }) 71 | ); 72 | 73 | await Writer.writeReadme(manifestUrls, subroutines); 74 | 75 | console.log(changes.join(", ")); 76 | -------------------------------------------------------------------------------- /.github/source/writer.ts: -------------------------------------------------------------------------------- 1 | /*--------------------------------------------------------------------------------------------- 2 | * Copyright (c) Ian Lucas. All rights reserved. 3 | * Licensed under the MIT License. See License.txt in the project root for license information. 4 | *--------------------------------------------------------------------------------------------*/ 5 | 6 | import { assert, ensure } from "@ianlucas/cs2-lib"; 7 | import { writeFile } from "fs/promises"; 8 | import { join } from "path"; 9 | import { osLabels } from "./binary.js"; 10 | import sources from "./config/sources.json" assert { type: "json" }; 11 | import { docsdir, rootdir } from "./filesystem.js"; 12 | import type { GitHubSource } from "./github.js"; 13 | import { formatDate } from "./misc.js"; 14 | import type { Subroutine } from "./subroutine.js"; 15 | 16 | export class Writer { 17 | static async writeSource(manifestUrls: string[], source: GitHubSource, subroutines: Subroutine[]) { 18 | let text = `# ${source.id} \n\nLast updated: ${formatDate(new Date())}\n\n`; 19 | text += `* Manifests: ${manifestUrls.join(", ")}\n`; 20 | text += `* Repository: https://github.com/${source.repo}\n`; 21 | text += `* Gamedata: https://github.com/${source.repo}/blob/${source.branch}${source.filepath}\n\n`; 22 | text += `## Signatures\n\n`; 23 | for (const { name, library, signatures } of subroutines) { 24 | text += `### ${name}\n\n`; 25 | text += ` 26 | `; 27 | for (const [os, signature] of Object.entries(signatures)) { 28 | assert(signature !== undefined); 29 | text += ``; 30 | text += ``; 31 | text += ``; 32 | text += ``; 33 | text += ``; 34 | } 35 | text += `
StatusPlatformLibraryCODE-StyleIDA-Style
${!signature.isSupported ? "❓" : signature.isFound ? "✅" : "❌"}${osLabels[os]}${library}\n
\n${signature.codeStyle}\n
\n
\n
\n${signature.idaStyle}\n
\n
\n\n`; 36 | } 37 | await writeFile(join(docsdir, `${source.id}.md`), text, "utf-8"); 38 | } 39 | 40 | static async writeReadme(manifestUrls: string[], subroutines: Subroutine[]) { 41 | const subroutinesBySource = Object.groupBy(subroutines, (subroutine) => subroutine.source.id); 42 | let text = `# CS2 Server Signatures Tracker\n\n* **Last updated:** ${formatDate(new Date())}\n* **Manifests:** ${manifestUrls.join(", ")}\n\n`; 43 | text += ` 44 | `; 45 | const brokenSubroutinesDetails: string[] = []; 46 | for (const subroutines of sources.map(({ id }) => subroutinesBySource[id])) { 47 | assert(subroutines !== undefined); 48 | assert(subroutines.length > 0); 49 | const { source } = ensure(subroutines[0]); 50 | await Writer.writeSource(manifestUrls, source, subroutines); 51 | const foundAll: Record = { linux: true, windows: true }; 52 | const brokenSubroutines = subroutines.filter((subroutine) => { 53 | let hasBrokenSubroutines = false; 54 | for (const [os, signature] of Object.entries(subroutine.signatures)) { 55 | if (signature?.isSupported && !signature.isFound) { 56 | foundAll[os] = false; 57 | hasBrokenSubroutines = true; 58 | } 59 | } 60 | return hasBrokenSubroutines; 61 | }); 62 | if (brokenSubroutines.length > 0) { 63 | let details = `
\n ${source.id} broken signatures\n\n`; 64 | for (const { signatures, name } of brokenSubroutines) { 65 | const win = signatures.windows?.isFound ? "✅" : "❌"; 66 | const lin = signatures.linux?.isFound ? "✅" : "❌"; 67 | details += `* ${lin}Linux ${win}Windows ${name}\n`; 68 | } 69 | details += `\n
`; 70 | brokenSubroutinesDetails.push(details); 71 | } 72 | text += `
`; 73 | text += ``; 74 | text += ``; 75 | text += ``; 76 | } 77 | text += `
LinuxWindowsProject
${foundAll.linux ? "✅" : "❌"}${foundAll.windows ? "✅" : "❌"}${source.id}View signatures →
\n\n`; 78 | text += brokenSubroutinesDetails.join("\n\n"); 79 | await writeFile(join(rootdir, "README.md"), text, "utf-8"); 80 | } 81 | } 82 | -------------------------------------------------------------------------------- /.github/workflows/update.yml: -------------------------------------------------------------------------------- 1 | name: update 2 | 3 | on: 4 | schedule: 5 | - cron: "*/5 * * * *" 6 | workflow_dispatch: 7 | 8 | jobs: 9 | update: 10 | runs-on: ubuntu-latest 11 | steps: 12 | - name: Checkout 13 | uses: actions/checkout@v4 14 | 15 | - name: Restore workdir 16 | id: workdir-restore 17 | uses: actions/cache/restore@v4 18 | with: 19 | path: ./.github/source/workdir 20 | key: workdir-cache 21 | 22 | - name: Setup Node.js 23 | uses: actions/setup-node@v4 24 | with: 25 | node-version: 22.x 26 | registry-url: "https://registry.npmjs.org" 27 | cache: "npm" 28 | cache-dependency-path: ./.github/source/package-lock.json 29 | 30 | - name: Install & Update 31 | run: | 32 | cd .github/source 33 | npm ci 34 | 35 | OUTPUT="$(npm run update)" 36 | echo "$OUTPUT" 37 | 38 | cd ../.. 39 | git add . 40 | 41 | if ! git diff-index --quiet HEAD; then 42 | COMMIT_MESSAGE="$(echo "$OUTPUT" | tail -n 1)" 43 | 44 | git -c user.name='github-actions[bot]' \ 45 | -c user.email='41898282+github-actions[bot]@users.noreply.github.com' \ 46 | -c commit.gpgSign='false' \ 47 | commit -m "$COMMIT_MESSAGE" 48 | 49 | git push 50 | 51 | if gh cache list --limit 8 | grep -q 'workdir-cache'; then 52 | echo "Cache with key 'workdir-cache' found. Deleting..." 53 | gh cache delete workdir-cache 54 | else 55 | echo "No cache with key 'workdir-cache' found." 56 | fi 57 | 58 | echo "changes=true" >> $GITHUB_ENV 59 | fi 60 | env: 61 | GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} 62 | 63 | - name: Save workdir 64 | id: workdir-save 65 | uses: actions/cache/save@v4 66 | if: env.changes == 'true' 67 | with: 68 | path: ./.github/source/workdir 69 | key: workdir-cache 70 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # CS2 Server Signatures Tracker 2 | 3 | * **Last updated:** June 10, 2025 at 11:39:09 PM UTC 4 | * **Manifests:** [1070059047104919737](https://steamdb.info/depot/2347771/history/?changeid=M:1070059047104919737), [8955753271543459966](https://steamdb.info/depot/2347773/history/?changeid=M:8955753271543459966) 5 | 6 | 7 |
LinuxWindowsProject
CounterStrikeSharpView signatures →
CS2FixesView signatures →
swiftlyView signatures →
plugifyView signatures →
cs2kz-metamodView signatures →
cs2-retakes-allocatorView signatures →
cs2-match-pluginView signatures →
cs2-inventory-simulator-pluginView signatures →
8 | 9 | --------------------------------------------------------------------------------