alliedmodders / hl2sdk

Half-Life 2 SDK Mirrors
https://github.com/valvesoftware
342 stars 165 forks source link

CS2 support tracker #132

Open GAMMACASE opened 1 year ago

GAMMACASE commented 1 year ago

This issue is a progress/issue tracker for the ongoing development of cs2 hl2sdk branch done by the community and am members.

Completion status:

If you want to contribute to the project, please make sure to pr the changes to cs2 branch as well as discuss them beforehand in the AlliedModders discord in appropriate channels.

This is a collaborative work and a lot of the research and development was done by: vanz, Wend4r, slidybat, poggu_, psychonic9, zer0.k, mooshua, boeing666, komashchenko, 0xe58, number201724 and others from the AM Discord. So huge thanks to them!

dvander commented 1 year ago

This is awesome, and incredible to see so much already figured out! Thank you for writing this up, and thanks to everyone who has already dove in and expanded community knowledge of the engine.

dtugend commented 12 months ago

Hi, thanks for your efforts.

I am currently still trying to figure the KeyValues system (seems like it's different in ways I didn't manage to figure yet), but I can say for sure, that IKeyValuesSystem has a destructor as first class member (it's exposed in tier0.dll):

class IKeyValuesSystem
{
public:
    virtual ~IKeyValuesSystem() = 0;
//...
};

(Currently it's in the SDK without.)

Edit: Apparently the problem is that there's two different KeyValues systems: KeyValues and KeyValues3. For example IGameEvent::GetDataKeys (which the offset is shifted wrongly a bit, so is for HasKey) uses KeyValues3, not KeyValues. It should be possible to reverse engineer KeyValues 3 from tier0.dll's ?DebugPrintKV3@@YAXPEBVKeyValues3@@@Z (void __fastcall DebugPrintKV3(const struct KeyValues3 *)).