Start of C_Player reversing

This commit is contained in:
Kawe Mazidjatari 2022-07-24 12:59:40 +02:00
parent 65cbdb5465
commit f314b9b4e7
22 changed files with 316 additions and 4 deletions

View File

@ -30,6 +30,7 @@ class HVEngineClient : public IDetour
virtual void GetAdr(void) const
{
spdlog::debug("| FUN: IVEngineClient::CommandExecute : {:#18x} |\n", p_CEngineClient_CommandExecute.GetPtr());
spdlog::debug("| FUN: IVEngineClient::GetLocalPlayer : {:#18x} |\n", p_CEngineClient_GetLocalPlayer.GetPtr());
spdlog::debug("| VAR: m_bRestrictServerCommands : {:#18x} |\n", reinterpret_cast<uintptr_t>(m_bRestrictServerCommands));
spdlog::debug("| VAR: m_bRestrictClientCommands : {:#18x} |\n", reinterpret_cast<uintptr_t>(m_bRestrictClientCommands));
spdlog::debug("| CON: g_ppEngineClient : {:#18x} |\n", reinterpret_cast<uintptr_t>(g_ppEngineClient));

View File

View File

View File

View File

@ -0,0 +1,11 @@
//====== Copyright 1996-2005, Valve Corporation, All rights reserved. =======//
//
// Purpose:
//
// $NoKeywords: $
//===========================================================================//
#include "core/stdafx.h"
#include "game/client/c_baseentity.h"
#include "game/client/c_baseplayer.h"

View File

@ -0,0 +1,51 @@
#ifndef C_BASEPLAYER_H
#define C_BASEPLAYER_H
#include "public/include/icliententity.h"
#include "public/include/icliententitylist.h"
#include "public/include/iclientnetworkable.h"
#include "public/include/iclientrenderable.h"
#include "public/include/iclientthinkable.h"
#include "public/include/iclientunknown.h"
#include "public/include/ihandleentity.h"
#include "public/include/ivscript.h"
class C_BaseCombatCharacter
{
int m_nPredictionData; // Unk
//int unk; // Padding?
};
class C_BaseEntity : public IClientEntity
{
const char* m_pszModelName;
int unk0;
char pad[4]; // unk;
HSCRIPT m_hScriptInstance;
const char* m_iszScriptId;
};
class C_BaseAnimating : public C_BaseEntity
{
};
class C_BaseAnimatingOverlay : public C_BaseAnimating
{
};
class C_Player : public C_BaseCombatCharacter, public C_BaseAnimatingOverlay
{
};
void F()
{
sizeof(C_Player);
}
#endif // C_BASEPLAYER_H

View File

@ -1,6 +1,5 @@
#pragma once
class IClientNetworkable;
#include "public/include/iclientnetworkable.h"
typedef IClientNetworkable* (*CreateClientClassFn)(int entNum, int serialNum);
typedef IClientNetworkable* (*CreateEventFn)();

View File

@ -0,0 +1,15 @@
#ifndef ICLIENTENTITY_H
#define ICLIENTENTITY_H
#include "iclientunknown.h"
#include "iclientrenderable.h"
#include "iclientnetworkable.h"
#include "iclientthinkable.h"
class IClientEntity : public IClientUnknown, public IClientRenderable, public IClientNetworkable, public IClientThinkable
{
void* __vftable /*VFT*/;
};
#endif // ICLIENTENTITY_H

View File

@ -1,8 +1,8 @@
#pragma once
#include "iclientnetworkable.h"
#include "icliententity.h"
using CBaseHandle = unsigned long;
class IClientNetworkable;
class IClientEntity;
class IClientEntityList // Fully reversed beside index 0 which is probably a destructor.
{

View File

@ -0,0 +1,9 @@
#ifndef ICLIENTNETWORKABLE_H
#define ICLIENTNETWORKABLE_H
class IClientNetworkable
{
void* __vftable /*VFT*/;
};
#endif // ICLIENTNETWORKABLE_H

View File

@ -0,0 +1,25 @@
#ifndef ICLIENTRENDERABLE_H
#define ICLIENTRENDERABLE_H
//-----------------------------------------------------------------------------
// Handle to an renderable in the client leaf system
//-----------------------------------------------------------------------------
typedef unsigned short ClientRenderHandle_t;
enum
{
INVALID_CLIENT_RENDER_HANDLE = (ClientRenderHandle_t)0xffff,
};
class IClientRenderable
{
void* __vftable /*VFT*/;
};
class IClientModelRenderable
{
void* __vftable /*VFT*/;
};
#endif // ICLIENTRENDERABLE_H

View File

@ -0,0 +1,9 @@
#ifndef ICLIENTTHINKABLE_H
#define ICLIENTTHINKABLE_H
class IClientThinkable
{
void* __vftable /*VFT*/;
};
#endif // ICLIENTTHINKABLE_H

View File

@ -0,0 +1,10 @@
#ifndef ICLIENTUNKNOWN_H
#define ICLIENTUNKNOWN_H
class IClientUnknown
{
void* __vftable /*VFT*/;
};
#endif // ICLIENTUNKNOWN_H

View File

@ -0,0 +1,9 @@
#ifndef IHANDLEENTITY_H
#define IHANDLEENTITY_H
class IHandleEntity
{
void* __vftable /*VFT*/;
};
#endif // IHANDLEENTITY_H

View File

@ -0,0 +1,22 @@
#ifndef IVSCRIPT_H
#define IVSCRIPT_H
enum ScriptLanguage_t
{
SL_NONE,
SL_GAMEMONKEY,
SL_SQUIRREL,
SL_LUA,
SL_PYTHON,
SL_DEFAULT = SL_SQUIRREL
};
//-----------------------------------------------------------------------------
//
//-----------------------------------------------------------------------------
DECLARE_POINTER_HANDLE(HSCRIPT);
#define INVALID_HSCRIPT ((HSCRIPT)-1)
#endif // IVSCRIPT_H

View File

@ -268,3 +268,78 @@ struct vrect_t
constexpr int MAX_NETCONSOLE_INPUT_LEN = 4096;
constexpr int MSG_NOSIGNAL = 0;
//-----------------------------------------------------------------------------
// Declares a type-safe handle type; you can't assign one handle to the next
//-----------------------------------------------------------------------------
// 32-bit pointer handles.
// Typesafe 8-bit and 16-bit handles.
template< class HandleType >
class CBaseIntHandle
{
public:
inline bool operator==(const CBaseIntHandle& other) { return m_Handle == other.m_Handle; }
inline bool operator!=(const CBaseIntHandle& other) { return m_Handle != other.m_Handle; }
// Only the code that doles out these handles should use these functions.
// Everyone else should treat them as a transparent type.
inline HandleType GetHandleValue() { return m_Handle; }
inline void SetHandleValue(HandleType val) { m_Handle = val; }
typedef HandleType HANDLE_TYPE;
protected:
HandleType m_Handle;
};
template< class DummyType >
class CIntHandle16 : public CBaseIntHandle< unsigned short >
{
public:
inline CIntHandle16() {}
static inline CIntHandle16<DummyType> MakeHandle(HANDLE_TYPE val)
{
return CIntHandle16<DummyType>(val);
}
protected:
inline CIntHandle16(HANDLE_TYPE val)
{
m_Handle = val;
}
};
template< class DummyType >
class CIntHandle32 : public CBaseIntHandle< uint32 >
{
public:
inline CIntHandle32() {}
static inline CIntHandle32<DummyType> MakeHandle(HANDLE_TYPE val)
{
return CIntHandle32<DummyType>(val);
}
protected:
inline CIntHandle32(HANDLE_TYPE val)
{
m_Handle = val;
}
};
// NOTE: This macro is the same as windows uses; so don't change the guts of it
#define DECLARE_HANDLE_16BIT(name) typedef CIntHandle16< struct name##__handle * > name;
#define DECLARE_HANDLE_32BIT(name) typedef CIntHandle32< struct name##__handle * > name;
#define DECLARE_POINTER_HANDLE(name) struct name##__ { int unused; }; typedef struct name##__ *name
#define FORWARD_DECLARE_HANDLE(name) typedef struct name##__ *name
#define DECLARE_DERIVED_POINTER_HANDLE( _name, _basehandle ) struct _name##__ : public _basehandle##__ {}; typedef struct _name##__ *_name
#define DECLARE_ALIASED_POINTER_HANDLE( _name, _alias ) typedef struct _alias##__ *name

View File

@ -51,6 +51,7 @@
<ClCompile Include="..\filesystem\filesystem.cpp" />
<ClCompile Include="..\gameui\IConsole.cpp" />
<ClCompile Include="..\gameui\IBrowser.cpp" />
<ClCompile Include="..\game\client\c_baseentity.cpp" />
<ClCompile Include="..\game\client\spritemodel.cpp" />
<ClCompile Include="..\game\shared\animation.cpp" />
<ClCompile Include="..\inputsystem\inputsystem.cpp" />
@ -190,6 +191,7 @@
<ClInclude Include="..\gameui\IConsole.h" />
<ClInclude Include="..\gameui\IBrowser.h" />
<ClInclude Include="..\game\client\c_baseentity.h" />
<ClInclude Include="..\game\client\c_baseplayer.h" />
<ClInclude Include="..\game\client\enginesprite.h" />
<ClInclude Include="..\game\client\hud.h" />
<ClInclude Include="..\game\shared\animation.h" />
@ -233,11 +235,18 @@
<ClInclude Include="..\public\include\const.h" />
<ClInclude Include="..\public\include\edict.h" />
<ClInclude Include="..\public\include\globalvars_base.h" />
<ClInclude Include="..\public\include\icliententity.h" />
<ClInclude Include="..\public\include\iclientnetworkable.h" />
<ClInclude Include="..\public\include\iclientrenderable.h" />
<ClInclude Include="..\public\include\iclientthinkable.h" />
<ClInclude Include="..\public\include\iclientunknown.h" />
<ClInclude Include="..\public\include\icommandline.h" />
<ClInclude Include="..\public\include\idebugoverlay.h" />
<ClInclude Include="..\public\include\ihandleentity.h" />
<ClInclude Include="..\public\include\inetchannel.h" />
<ClInclude Include="..\public\include\inetmsghandler.h" />
<ClInclude Include="..\public\include\ivrenderview.h" />
<ClInclude Include="..\public\include\ivscript.h" />
<ClInclude Include="..\public\include\memaddr.h" />
<ClInclude Include="..\public\include\binstream.h" />
<ClInclude Include="..\public\include\httplib.h" />

View File

@ -555,6 +555,9 @@
<ClCompile Include="..\tier0\threadtools.cpp">
<Filter>sdk\tier0</Filter>
</ClCompile>
<ClCompile Include="..\game\client\c_baseentity.cpp">
<Filter>sdk\game\client</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\client\cdll_engine_int.h">
@ -1613,6 +1616,30 @@
<ClInclude Include="..\tier0\memstd.h">
<Filter>sdk\tier0</Filter>
</ClInclude>
<ClInclude Include="..\game\client\c_baseplayer.h">
<Filter>sdk\game\client</Filter>
</ClInclude>
<ClInclude Include="..\public\include\iclientrenderable.h">
<Filter>sdk\public\include</Filter>
</ClInclude>
<ClInclude Include="..\public\include\iclientthinkable.h">
<Filter>sdk\public\include</Filter>
</ClInclude>
<ClInclude Include="..\public\include\iclientunknown.h">
<Filter>sdk\public\include</Filter>
</ClInclude>
<ClInclude Include="..\public\include\ihandleentity.h">
<Filter>sdk\public\include</Filter>
</ClInclude>
<ClInclude Include="..\public\include\iclientnetworkable.h">
<Filter>sdk\public\include</Filter>
</ClInclude>
<ClInclude Include="..\public\include\icliententity.h">
<Filter>sdk\public\include</Filter>
</ClInclude>
<ClInclude Include="..\public\include\ivscript.h">
<Filter>sdk\public\include</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<Image Include="..\shared\resource\lockedserver.png">

View File

@ -219,6 +219,7 @@
<ClInclude Include="..\public\include\inetchannel.h" />
<ClInclude Include="..\public\include\inetmsghandler.h" />
<ClInclude Include="..\public\include\iserver.h" />
<ClInclude Include="..\public\include\ivscript.h" />
<ClInclude Include="..\public\include\memaddr.h" />
<ClInclude Include="..\public\include\bansystem.h" />
<ClInclude Include="..\public\include\binstream.h" />

View File

@ -1173,6 +1173,9 @@
<ClInclude Include="..\tier0\memstd.h">
<Filter>sdk\tier0</Filter>
</ClInclude>
<ClInclude Include="..\public\include\ivscript.h">
<Filter>sdk\public\include</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\common\opcodes.cpp">

View File

@ -53,6 +53,7 @@
<ClCompile Include="..\filesystem\filesystem.cpp" />
<ClCompile Include="..\gameui\IConsole.cpp" />
<ClCompile Include="..\gameui\IBrowser.cpp" />
<ClCompile Include="..\game\client\c_baseentity.cpp" />
<ClCompile Include="..\game\client\spritemodel.cpp" />
<ClCompile Include="..\game\server\ai_network.cpp" />
<ClCompile Include="..\game\server\ai_networkmanager.cpp" />
@ -201,6 +202,7 @@
<ClInclude Include="..\gameui\IConsole.h" />
<ClInclude Include="..\gameui\IBrowser.h" />
<ClInclude Include="..\game\client\c_baseentity.h" />
<ClInclude Include="..\game\client\c_baseplayer.h" />
<ClInclude Include="..\game\client\enginesprite.h" />
<ClInclude Include="..\game\client\hud.h" />
<ClInclude Include="..\game\server\ai_network.h" />
@ -254,13 +256,20 @@
<ClInclude Include="..\public\include\const.h" />
<ClInclude Include="..\public\include\edict.h" />
<ClInclude Include="..\public\include\globalvars_base.h" />
<ClInclude Include="..\public\include\icliententity.h" />
<ClInclude Include="..\public\include\icliententitylist.h" />
<ClInclude Include="..\public\include\iclientnetworkable.h" />
<ClInclude Include="..\public\include\iclientrenderable.h" />
<ClInclude Include="..\public\include\iclientthinkable.h" />
<ClInclude Include="..\public\include\iclientunknown.h" />
<ClInclude Include="..\public\include\icommandline.h" />
<ClInclude Include="..\public\include\idebugoverlay.h" />
<ClInclude Include="..\public\include\ihandleentity.h" />
<ClInclude Include="..\public\include\inetchannel.h" />
<ClInclude Include="..\public\include\inetmsghandler.h" />
<ClInclude Include="..\public\include\iserver.h" />
<ClInclude Include="..\public\include\ivrenderview.h" />
<ClInclude Include="..\public\include\ivscript.h" />
<ClInclude Include="..\public\include\memaddr.h" />
<ClInclude Include="..\public\include\bansystem.h" />
<ClInclude Include="..\public\include\binstream.h" />

View File

@ -591,6 +591,9 @@
<ClCompile Include="..\server\persistence.cpp">
<Filter>sdk\server</Filter>
</ClCompile>
<ClCompile Include="..\game\client\c_baseentity.cpp">
<Filter>sdk\game\client</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\client\cdll_engine_int.h">
@ -1697,6 +1700,30 @@
<ClInclude Include="..\tier0\memstd.h">
<Filter>sdk\tier0</Filter>
</ClInclude>
<ClInclude Include="..\game\client\c_baseplayer.h">
<Filter>sdk\game\client</Filter>
</ClInclude>
<ClInclude Include="..\public\include\icliententity.h">
<Filter>sdk\public\include</Filter>
</ClInclude>
<ClInclude Include="..\public\include\iclientthinkable.h">
<Filter>sdk\public\include</Filter>
</ClInclude>
<ClInclude Include="..\public\include\iclientunknown.h">
<Filter>sdk\public\include</Filter>
</ClInclude>
<ClInclude Include="..\public\include\ihandleentity.h">
<Filter>sdk\public\include</Filter>
</ClInclude>
<ClInclude Include="..\public\include\iclientnetworkable.h">
<Filter>sdk\public\include</Filter>
</ClInclude>
<ClInclude Include="..\public\include\iclientrenderable.h">
<Filter>sdk\public\include</Filter>
</ClInclude>
<ClInclude Include="..\public\include\ivscript.h">
<Filter>sdk\public\include</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<Image Include="..\shared\resource\lockedserver.png">