You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+12-1Lines changed: 12 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -15,4 +15,15 @@ Takes a SourceMod signature input and detects if it's unique or not.
15
15
16
16
Imports netprops and owner classes as structs and struct members into IDA's DB. Only works with the XML file provided by sm_dump_netprops_xml. It's still a WIP and doesn't catch all of them though; really shits the bed when it comes to datatables. You should also use the proper netprop dump for your OS, or else you will be very confused.
17
17
18
-
You also have the option of importing vtables from the found classes into IDA. I plan on separating this into another script, but until then, this will work.
18
+
You also have the option of importing vtables from the found classes into IDA. I plan on separating this into another script, but until then, this will work.
19
+
20
+
21
+
### gamedata_checker.py ###
22
+
23
+
Name says it all, but this verifies SourceMod gamedata files. This requires Valve's VDF library, install it with `pip install vdf`.
24
+
25
+
Has a few quirks with it at the moment:
26
+
- It does not support multi-line comments within gamedata files nor will it support multiple instances of `#default` keys. Parsing core SourceMod gamedata files is essentially verboten.
27
+
- Windows or stripped VTable offsets cannot be verified.
28
+
- Function overloads tends to mess up VTable offset checking; e.g. `GiveNamedItem`.
29
+
- Offset checking is variably difficult depending on naming conventions. If the gamedata key name is either not named exactly the same as the function name, it will not be found; e.g. `OnTakeDamage` -> `CBaseEntity::OnTakeDamage` and `CTFPlayer::OnTakeDamage` -> `CBaseEntity::OnTakeDamage` but `TakeDamage` != `CBaseEntity::OnTakeDamage`.
0 commit comments