#pragma once
#define IGameFramework_Address 0x1B6E264
#define V_GetCurrentGameRules 0x618
#define V_Shutter 0x8A
#define V_SetRecoilMult 752
#define V_OffRecoil 756
#define V_SetRecoil 748
#define V_CameraSway 4
typedef unsigned int EntityId;
class IRenderer;
class SSystemGlobalEnvironment;
class I3DEngine;
class IGame;
class IActorSystem;
class ICVar;
class IEntitySystem;
class IEntity;
class IEntityClassRegistry;
class IPhysicalWorld;
class ITimer;
class ISystem;
class IPhysicalEntity;
struct HitInfo;
template< typename cData >
cData vFun_Call(PVOID BaseClass, DWORD vOFFSET)
{
PDWORD* vPointer = (PDWORD*)BaseClass;
PDWORD vFunction = *vPointer;
DWORD dwAddress = vFunction[vOFFSET];
return (cData)(dwAddress);
}
enum GameData : DWORD
{
SystemGlobalAdress = 0x1937640,
IRendererI = 0x30,
D3DXCreateTextureI = 0x7E70,
pIPhysicalWorld = 0x44, /// Поиск: RayWorldIntersection(Game) +
pIGame = 0x70, /// Поиск: IsPlayer +
GetI3DEngine = 0x88, /// Поиск: Dof_Active +
GetITimer = 0x2C, /// Поиск: GetFrameTime (this + 96 at the top) +
GetIEntitySystem = 0x78,
};
struct CPlayer
{
Quat GetViewRotation()
{
return m_viewQuatFinal;
}
void SetViewRotation(Quat& rotation)
{
m_viewQuat = m_viewQuatFinal = m_BaseQuat = rotation;
}
void SetZRotation(Quat& Rotation)
{
m_viewQuat.v.z = m_viewQuatFinal.v.z = m_BaseQuat.v.z = Rotation.v.z;
m_viewQuat.w = m_viewQuatFinal.w = m_BaseQuat.w = Rotation.w;
}
void SetScale(FLOAT Value) { *(FLOAT*)((DWORD)this + 0x8) = Value; }
char pad_0x0000[0x80]; //0x0000
Quat m_viewQuat; //0x0080
Quat m_viewQuatFinal; //0x0090
Quat m_BaseQuat; //0x00A0
char pad_0x00B0[0x1]; //0x00B0
bool m_ignoreRecoil; //0x00B1 (работае,)?я хз есть 2 варианта
/*void SetIgnoreRecoil(bool fValue)
{
*(bool*)((DWORD)this + 0xB1) = fValue; // sp_difficulty пока без этой
}*/
};
enum EStance {
STANCE_NULL = -1,
STANCE_STAND = 0,
STANCE_CROUCH,
STANCE_PRONE,
STANCE_RELAXED,
STANCE_STEALTH,
STANCE_LOW_COVER,
STANCE_ALERTED,
STANCE_HIGH_COVER,
STANCE_SWIM,
STANCE_ZEROG,
STANCE_LAST
};
struct SStanceState {
Vec3 pos;///0-8
Vec3 entityDirection;//c-14
Vec3 animationBodyDirection;//18-20
Vec3 upDirection;//24-2C
Vec3 weaponPosition;//30-38
Vec3 aimDirection;//3C-44
Vec3 fireDirection;//48-50
Vec3 eyePosition;//54-5C
Vec3 eyeDirection;//60-68
float lean;//6C
float peekOver;//70
AABB m_StanceSize;//74-88
AABB m_ColliderSize;//8C-94,98-A0
};
struct SMovementState : public SStanceState {
DWORD Unk;//Vec3 fireTarget;//A4
EStance stance;//A8
Vec3 animationEyeDirection;//AC-B4
Vec3 movementDirection, lastMovementDirection;//B8-C0,C4-CC
float desiredSpeed;//D0
float minSpeed;
float normalSpeed;
float maxSpeed;
float slopeAngle;
bool atMoveTarget;
bool isAlive;
bool isAiming;
bool isFiring;
bool isVisible;
bool isMoving;
};
class CMovementRequest {};
class IMovementController {
public:
virtual virtual ~IMovementController() {}; //0x0
virtual bool RequestMovement(CMovementRequest& request) = 0;
virtual void GetMovementState(SMovementState& state) = 0;
virtual bool GetStanceState( /*const SStanceStateQuery& query, SStanceState& state*/) = 0;
};
enum GameModes
{
Mode_Unknown = 0,
Mode_TeamDeathmatch,
Mode_Capture,
Mode_CoopSurvival,
Mode_PlantTheBomb,
Mode_Storm,
Mode_FreeForAll,
Mode_Destruction,
Mode_Domination
};
template <typename T>
T cClassValue(VOID* Base, INT index) { return (*(T * *)Base)[index / 4]; }
class IWeaponExtraOne
{
public:
void Damage(int iValue) { *(__int32*)((DWORD)this + 0x8) = iValue; }
};
enum IWeaponSystemId : DWORD {
eWS_NoiseLevel = 4,//Уровень шума
eWS_MaxAmmoClip = 5,//кол-во патронов в обойме
eWS_Zatvor = 17,//скорость затвора
eWS_MaxDamage = 27,//максимальный урон
eWS_Distance1 = 28,//Дальность оружия
eWS_MinDamage = 30,//минимальный урон
eWS_SpeedPricel = 43,//скорость входа в прицел
eWS_MeleeWeaponDamage = 55,//Урон в ближнем бою
eWS_KnifeLKM = 56,//скорость удара ножом лкм
eWS_Distance2 = 58,//дальность удара ножом лкм
eWS_Distance3 = 63,//дальность удара ножом пкм
eWS_MinRecoil = 66,//Минимальная Отдача
eWS_MaxRecoil = 67,//Максимальная Отдача
eWS_SpeedReload = 72,//Скорость перезарядки
eWS_FireRate = 80,//Темп стрельбы
eWS_KnifePKM = 83,//скорость удара ножов пкм
eWS_MaxTo4nost = 95,//Минимальная точность
eWS_MinTo4nost = 95,//Максимальная точность
eWS_Zoom = 108,//дальность зума
};
class IWeaponExtraTwo
{
public:
void SetCameraSway(float fValue)
{
*(float*)((DWORD)this) = fValue;
*(float*)((DWORD)this + V_CameraSway) = fValue;
}
bool FindValue(DWORD actId, float fValue = 0.0f)
{
auto v3 = *(DWORD*)((DWORD)this + 0x6C);
auto v5 = *(DWORD*)(v3 + 4);
while (!*(BYTE*)(v5 + 13))
{
auto itemActId = *(DWORD*)(v5 + 16);
if (itemActId == actId)
{
*(__int32*)(v5 + 20) = *(__int32*)(v5 + 24) ^ *(__int32*)& fValue;
return true;
}
else if (itemActId > actId)
v5 = *(DWORD*)v5;
else
v5 = *(DWORD*)(v5 + 8);
}
return false;
}
};
class IWeaponExtraThree
{
public:
bool UnlimitedAmmo2; //0x0000
char pad_0x0001[0x3]; //0x0001
__int32 Ammo; //0x0004
void SetAmmoCount(__int32 iValue) { *(__int32*)((DWORD)this + 0x4) = iValue; }
VOID UnlimitedAmmo(INT Value) { *(INT*)((DWORD)this + 0x0000) = Value; }
__int32 GetAmmoCount() { return *(__int32*)((DWORD)this + 0x4); }
};
class IWeaponSpecific
{
public:
auto m_pWeaponExtraOne() { return *(IWeaponExtraOne * *)((DWORD)this + 0x24); }
auto m_pWeaponExtraTwo() { return *(IWeaponExtraTwo * *)((DWORD)this + 0x30); }
auto m_pWeaponExtraThree() { return *(IWeaponExtraThree * *)((DWORD)this + 0x34); }
VOID SetRecoilMult(INT8 iValue) { *(INT8*)((DWORD)this + V_SetRecoilMult) = iValue; }
VOID Shutter(INT8 iValue) { *(INT8*)((DWORD)this + V_Shutter) = iValue; }
};
class IFireMode
{
public:
bool IsFiring()
{
using oIsFiring = bool(__thiscall*)(PVOID);
return cClassValue<oIsFiring>(this, 144)(this);
}
};
class IWeaponAmmoCount
{
public:
VOID UnlimitedAmmo(INT Value) { *(INT*)((DWORD)this + 0x0000) = Value; }
VOID SetAmmoCount(INT iValue) { *(INT*)((DWORD)this + 0x4) = iValue; }
INT CounterAmmo(VOID)
{
return (INT) * (DWORD*)((DWORD)this + 0x0004);
}
};
class IWeaponPTR
{
public:
// char _0x0000[36];
// IWeaponParamsOne* WeaponParamsOne; //0x0024
char _0x0028[8];
// IWeaponParamsTwo* WeaponParamsTwo; //0x0030
IWeaponExtraThree* WeaponParamsThree; //0x0034
IWeaponAmmoCount* GetAmmoCount() { return (IWeaponAmmoCount*) * (DWORD*)((DWORD)this + 0x0034); }
void UnlimAmmo(bool status) { WeaponParamsThree->UnlimitedAmmo2 = status; }
bool IsUnlimAmmo() { return WeaponParamsThree->UnlimitedAmmo2; }
bool IsFiring()
{
DWORD v12 = *(DWORD*)((DWORD)this + 0x70);
return (v12 == 3 || v12 == 6 || v12 == 12 || v12 == 13 || v12 == 14 || v12 == 15 || v12 == 16 || v12 == 48 || v12 == 49);
}
};
class IWeapon
{
public:
void StartFire()
{
using oStartFire = void(__thiscall*)(PVOID);
return cClassValue<oStartFire>(this, 44)(this);
}
void StopFire()
{
using oStopFire = void(__thiscall*)(PVOID);
return cClassValue<oStopFire>(this, 48)(this);
}
VOID F1RE() { // это простой
StartFire();
StopFire();
}
VOID F1RE2() { //это задержка 1 мс
StartFire();
//Sleep(1);
StopFire();
}
VOID F1RE3() {
StartFire(); // это и есть аля зажим
}
VOID F1REOFF() { // это офф ну на всякий w
}
IFireMode* GetFireMode(int FireModeId)
{
using oGetFireMode = IFireMode * (__thiscall*)(PVOID, int);
return cClassValue<oGetFireMode>(this, 116)(this, FireModeId);
}
LPCSTR GetCurrentWeapon()
{
DWORD Base;
DWORD Level1;
DWORD Level2;
DWORD Level3;
DWORD Level4;
DWORD Level5;
Base = ((DWORD)this + 0x0C);
Level1 = *(DWORD*)(*(DWORD*)(Base + 0x0) + 0x8);
Level2 = *(DWORD*)(Level1 + 0x8);
Level3 = *(DWORD*)(Level2 + 0x28);
Level4 = *(DWORD*)(Level3 + 0x8);
Level5 = ((DWORD)(Level4 + 0x0));
return (LPCSTR)Level5;
}
auto m_pWeaponSpecific() { return *(IWeaponSpecific * *)((DWORD)this + 0x4); }
IWeaponPTR* WeaponPTR() { return (IWeaponPTR*) * (DWORD*)((DWORD)this + 0x0004); }
};
class IItem
{
public:
IWeapon* GetIWeapon() { return((IWeapon*)this + 0x14); } //+
VOID SetFiringPos(Vec3 vPos) { *(Vec3*)((DWORD) * (DWORD*)((DWORD)GetIWeapon() + 0xC) + 0x10) = vPos; }
Vec3 GetFiringPos(Vec3 pos) { return *(Vec3*)((DWORD) * (DWORD*)((DWORD)GetIWeapon() + 0xC) + 0x10); }
};
class SSystemGlobalEnvironment
{
public:
char pad_0x0000[0x30]; //0x0000
IRenderer* pRenderer; //0x0030
char pad_0x0034[0x10]; //0x0034
IPhysicalWorld* pPhysicalWorld; //0x0044
char pad_0x0048[0x28]; //0x0048
IGame* pIGame; //0x0070
char pad_0x0074[0x4]; //0x0074
IEntitySystem* pEntitySystem; //0x0078
char pad_0x007C[0xC]; //0x007C
I3DEngine* p3DEngine; //0x0088
char pad_0x008C[0x34]; //0x008C
ISystem* pSystem; //0x0080
char _0x0084[4];
static SSystemGlobalEnvironment* GetInstance() { return *(SSystemGlobalEnvironment * *)0x1937640; }
static SSystemGlobalEnvironment* Singleton() { return *(SSystemGlobalEnvironment**)0x1937640; }
auto m_IRenderer() { return (IRenderer*) * (DWORD*)((DWORD)this + IRendererI); }
IGame* GIGame() { return (IGame*) * (DWORD*)((DWORD)this + 112); }
};
class I3DEngine
{
public:
virtual void Function0(); //
virtual void Function1(); //
virtual void Function2(); //
virtual void Function3(); //
virtual void Function4(); //
virtual void Function5(); //
virtual void Function6(); //
virtual void Function7(); //
virtual void Function8(); //
virtual void Function9(); //
virtual void Function10(); //
virtual void Function11(); //
virtual void Function12(); //
virtual void Function13(); //
virtual void Function14(); //
virtual void Function15(); //
virtual void Function16(); //
virtual void Function17(); //
virtual void Function18(); //
virtual void Function19(); //
virtual void Function20(); //
virtual void Function21(); //
virtual void Function22(); //
virtual void Function23(); //
virtual void Function24(); //
virtual void Function25(); //
virtual void Function26(); //
virtual void Function27(); //
virtual void Function28(); //
virtual void Function29(); //
virtual void Function30(); //
virtual void Function31(); //
virtual void Function32(); //
virtual void Function33(); //
virtual void Function34(); //
virtual void Function35(); //
virtual void Function36(); //
virtual void Function37(); //
virtual void Function38(); //
virtual void Function39(); //
virtual void Function40(); //
virtual void Function41(); //
virtual void Function42(); //
virtual void Function43(); //
virtual void Function44(); //
virtual void Function45(); //
virtual void Function46(); //
virtual void Function47(); //
virtual void Function48(); //
virtual void Function49(); //
virtual void Function50(); //
virtual void Function51(); //
virtual void Function52(); //
virtual void Function53(); //
virtual void Function54(); //
virtual void Function55(); //
virtual void Function56(); //
virtual void Function57(); //
virtual void Function58(); //
virtual void Function59(); //
virtual void Function60(); //
virtual void Function61(); //
virtual void Function62(); //
virtual void Function63(); //
virtual void Function64(); //
virtual void Function65(); //
virtual void Function66(); //
virtual void Function67(); //
virtual void Function68(); //
virtual void Function69(); //
virtual void Function70(); //
virtual void Function71(); //
virtual void Function72(); //
virtual void Function73(); //
virtual void Function74(); //
virtual void Function75(); //
virtual void Function76(); //
virtual void Function77(); //
virtual void Function78(); //
virtual void Function79(); //
virtual void Function80(); //
virtual void Function81(); //
virtual void Function82(); //
virtual void Function83(); //
virtual void Function84(); //
virtual void Function85(); //
virtual void Function86(); //
virtual void Function87(); //
virtual void Function88(); //
virtual void Function89(); //
virtual void Function90(); //
virtual void Function91(); //
virtual void Function92(); //
virtual void Function93(); //
virtual void Function94(); //
virtual void Function95(); //
virtual void Function96(); //
virtual void Function97(); //
virtual void Function98(); //
virtual void Function99(); //
virtual void Function100(); //
virtual void Function101(); //
virtual void Function102(); //
virtual void Function103(); //
virtual void Function104(); //
virtual void Function105(); //
virtual void Function106(); //
virtual void Function107(); //
virtual void Function108(); //
virtual void Function109(); //
virtual void Function110(); //
virtual void Function111(); //
virtual void Function112(); //
virtual void Function113(); //
virtual void Function114(); //
virtual void Function115(); //
virtual void Function116(); //
virtual void Function117(); //
virtual void Function118(); //
virtual void Function119(); //
virtual void Function120(); //
virtual void Function121(); //
virtual void Function122(); //
virtual void Function123(); //
virtual void Function124(); //
virtual void Function125(); //
virtual void Function126(); //
virtual void Function127(); //
virtual void Function128(); //
virtual void Function129(); //
virtual void Function130(); //
virtual void Function131(); //
virtual void Function132(); //
virtual void Function133(); //
virtual void Function134(); //
virtual void Function135(); //
virtual void Function136(); //
virtual void Function137(); //
virtual void Function138(); //
virtual void Function139(); //
virtual void Function140(); //
virtual void Function141(); //
virtual void Function142(); //
virtual void SetPostEffectParam(const char* pParam, float fValue, bool bForceValue = false); //virtual void Function143(); //
}; //Size=0xC84
//мой класс
struct IGameObjectExtension
{
IEntity* GetEntity() const { return m_pEntity; }
char unk[4];
public:
IEntity* m_pEntity;
char unk2[4];
};
class IActor : public IGameObjectExtension {
public:
virtual void Function0(); //
virtual void Function1(); //
virtual void Function2(); //
virtual void Function3(); //
virtual void Function4(); //
virtual void Function5(); //
virtual void Function6(); //
virtual void Function7(); //
virtual void Function8(); //
virtual void Function9(); //
virtual void Function10(); //
virtual void Function11(); //
virtual void Function12(); //
virtual void Function13(); //
virtual void Function14(); //
virtual void Function15(); //
virtual void Function16(); //
virtual void Function17(); //
virtual void Function18(); //
virtual void Function19(); //
virtual void Function20(); //
virtual void Function21(); //
virtual void Function22(); //
virtual void Function23(); //
virtual bool IsDead(); //
virtual void Function25(); //
virtual void Function26(); //
virtual int GetHealth(); //
virtual void Function28(); //
virtual void Function29(); //
virtual void Function30(); //
virtual void Function31(); //
virtual int GetArmor();
virtual void Function33(); //
virtual void Function34(); //
virtual void Function35(); //
virtual void Function36(); //
virtual void Function37(); //
virtual void Function38(); //
virtual void Function39(); //
virtual void Function40(); //
virtual void Function41(); //
virtual void Function42(); //
virtual void Function43(); //
virtual void Function44(); //
virtual void Function45(); //
virtual void Function46(); //
virtual void Function47(); //
virtual void SetCurrentItem(EntityId itemid); //
virtual void Function49(); //
virtual void Function50(); //
virtual void SetViewRotation(const Quat& pRotation); //
virtual Quat GetViewRotation(); //
virtual void Function53(); //
virtual void Function54(); //
virtual void Function55(); //
virtual IItem* GetCurrentItem(bool includeVehicle = false) const = 0; //
virtual void Function57(); //
virtual void Function58(); //
virtual void Function59(); //
virtual IMovementController* GetMovementController(); //
IEntity* LinkedEntity() { return (IEntity*) * (DWORD*)((DWORD)this + 0x0008); }
int getEntityId() { return *(int*)((DWORD)this + 0x10); }; // 0x10 (хз) не факт (У себя чекну) пробуй пока
//8 192 44
IEntity* getIEntity() { return (IEntity*) * (DWORD*)((DWORD)this + 0x08); }; //0x18
CPlayer* GetPlayer() { return (CPlayer*) * (DWORD*)((DWORD)this + 0x9B8); };
auto IsTriggerID()
{
auto u = *(int*)((DWORD)this + 0xC);
u = *(int*)((DWORD)u + 0x40);
u = *(int*)((DWORD)u + 0x18);
return (int) * (DWORD*)((DWORD)u + 0x110);
}
VOID slideDistanceMult(FLOAT Value) { *(FLOAT*)((DWORD)this + 0x0C3C) = Value; }
VOID claymore_detector_radius(FLOAT Value) { *(FLOAT*)((DWORD)this + 0xB00) = Value; }
VOID minStaminaToStartHaste(FLOAT Value) { *(FLOAT*)((DWORD)this + 0xC40) = Value; } // не факт
};
struct IGame
{
public:
ICVar* GetICvar()
{
return (ICVar*) * (DWORD*)((DWORD)this + 0x98);
}
static IGame* GetIGame() {
return *(IGame * *)0x1B64A14; // atimeout ds:d___ upper ssge or Libs/UI/HUDHitIndicatorHor.tif between ssge and aLibsUiHudhitin ds:d
}
};
class ICVar
{
public:
void SetIPelletsDisp(float iValue)//accuracy
{
*(float*)((DWORD)this + 0x118) = iValue;//i_pelletsDisp
}
void CrosshairSpreadTuning(float pValue)
{
*(float*)((DWORD)this + 0x550) = pValue;
}
void g_parametric_spread_attack_enabled(float pValue)
{
*(FLOAT*)((DWORD)this + 0x240) = pValue;
}
void ACPatternScan(int OFF) {
*(int*)((DWORD)this + 0xA24) = OFF;
}
void ACMemScan(int OFF) {
*(int*)((DWORD)this + 0xA1C) = OFF;
}
void ACMemLog(int OFF) {
*(int*)((DWORD)this + 0xA20) = OFF;
}
void silencer_shoot_spotting(int xValue)
{
*(int*)((DWORD)this + 0xB98) = xValue; // 0x0B98
}
void SetPickupDist(float fValue)
{
*(float*)((DWORD)this + 0x748) = fValue; //+
}
void g_kickvote_pve_max_checkpoints(int num)
{
*(int*)((DWORD)this + 0x458) = num; //+
}
void g_enable_ingame_kickvote_in_zombiemission(int fValue)
{
*(int*)((DWORD)this + 0x44C) = fValue; //No update
}
void i_soundeffects(int fValue)
{
*(int*)((DWORD)this + 0xD0) = fValue; //No update
}
void g_enableIdleCheck(int fValue)
{
*(int*)((DWORD)this + 0x158) = fValue; //No update
}
int g_victoryCondition()
{
return *(int*)((DWORD)this + 0x57C);
}
static ICVar* Singleton()
{
return *(ICVar * *)(0x1B64A14); //IGame
}
void God(float fValue)
{
*(float*)((DWORD)this + 0x5A0) = fValue; //+
}
};
struct ray_hit {
float dist;
IPhysicalEntity* pCollider;
int ipart;
int partid;
short surface_idx;
short idmatOrg; // original material index, not mapped with material mapping
int foreignIdx;
int iNode; // BV tree node that had the intersection; can be used for "warm start" next time
Vec3 pt;
Vec3 n; // surface normal
int bTerrain; // global terrain hit
int iPrim; // hit triangle index
ray_hit* next; // reserved for internal use, do not change
};
class IGameRules {
public:
virtual void Function0(); //
virtual void Function1(); //
virtual void Function2(); //
virtual void Function3(); //
virtual void Function4(); //
virtual void Function5(); //
virtual void Function6(); //
virtual void Function7(); //
virtual void Function8(); //
virtual void Function9(); //
virtual void Function10(); //
virtual void Function11(); //
virtual void Function12(); //
virtual void Function13(); //
virtual void Function14(); //
virtual void Function15(); //
virtual void Function16(); //
virtual void Function17(); //
virtual void Function18(); //
virtual void Function19(); //
virtual void Function20(); //
virtual void Function21(); //
virtual void Function22(); //
virtual void Function23(); //
virtual void Function24(); //
virtual void Function25(); //
virtual void Function26(); //
virtual void Function27(); //
virtual void Function28(); //
virtual void Function29(); //
virtual void Function30(); //
virtual void Function31(); //
virtual void Function32(); //
virtual void Function33(); //
virtual void Function34(); //
virtual void Function35(); //
virtual void Function36(); //
virtual void Function37(); //
virtual void Function38(); //
virtual void Function39(); //
virtual void Function40(); //
virtual void Function41(); //
virtual void Function42(); //
virtual void Function43(); //
virtual void Function44(); //
virtual void Function45(); //
virtual void Function46(); //
virtual void Function47(); //
virtual void Function48(); //
virtual void Function49(); //
virtual void Function50(); //
virtual void Function51(); //
virtual void Function52(); //
virtual void Function53(); //
virtual void Function54(); //
virtual void Function55(); //
virtual void Function56(); //
virtual void Function57(); //
virtual void Function58(); //
virtual void Function59(); //
virtual void Function60(); //
virtual void Function61(); //
virtual void Function62(); //
virtual void Function63(); //
virtual void Function64(); //
virtual void Function65(); //
virtual void Function66(); //
virtual void Function67(); //
virtual void Function68(); //
virtual void Function69(); //
virtual void Function70(); //
virtual void Function71(); //
virtual void Function72(); //
virtual void Function73(); //
virtual void Function74(); //
virtual void Function75(); //
virtual void Function76(); //
virtual void Function77(); //
virtual void Function78(); //
virtual void Function79(); //
virtual void Function80(); //
virtual void Function81(); //
virtual void Function82(); //
virtual void Function83(); //
virtual void Function84(); //
virtual void Function85(); //
virtual void Function86(); //
virtual void Function87(); //
virtual void Function88(); //
virtual void Function89(); //
virtual void Function90(); //
virtual void Function91(); //
virtual void Function92(); //
virtual void Function93(); //
virtual void Function94(); //
virtual void Function95(); //
virtual void Function96(); //
virtual void Function97(); //
virtual void Function98(); //
virtual void Function99(); //
virtual void Function100(); //
virtual void Function101(); //
virtual void Function102(); //
virtual void Function103(); //
virtual void Function104(); //
virtual void Function105(); //
virtual void Function106(); //
virtual void Function107(); //
virtual int GetTeam(int entityId); //
};
class IGameFramework
{
public:
virtual void Function0(); //
virtual void Function1(); //
virtual void Function2(); //
virtual void Function3(); //
virtual void Function4(); //
virtual void Function5(); //
virtual void Function6(); //
virtual void Function7(); //
virtual void Function8(); //
virtual void Function9(); //
virtual void Function10(); //
virtual void Function11(); //
virtual void Function12(); //
virtual void Function13(); //
virtual void Function14(); //
virtual void Function15(); //
virtual void Function16(); //
virtual void Function17(); //
virtual void Function18(); //
virtual void Function19(); //
virtual void Function20(); //
virtual void Function21(); //
virtual void Function22(); //
virtual void Function23(); //
virtual void Function24(); //
virtual IActorSystem* GetIActorSystem();
virtual void Function26(); //
virtual void Function27(); //
virtual void Function28(); //
virtual void Function29(); //
virtual void Function30(); //
virtual void Function31(); //
virtual void Function32(); //
virtual void Function33(); //
virtual void Function34(); //
virtual void Function35(); //
virtual void Function36(); //
virtual void Function37(); //
virtual void Function38(); //
virtual void Function39(); //
virtual void Function40(); //
virtual void Function41(); //
virtual void Function42(); //
virtual void Function43(); //
virtual void Function44(); //
virtual void Function45(); //
virtual void Function46(); //
virtual void Function47(); //
virtual void Function48(); //
virtual void Function49(); //
virtual void Function50(); //
virtual void Function51(); //
virtual void Function52(); //
virtual void Function53(); //
virtual void Function54(); //
virtual void Function55(); //
virtual void Function56(); //
virtual void Function57(); //
virtual void Function58(); //
virtual void Function59(); //
virtual void Function60(); //
virtual void Function61(); //
virtual void Function62(); //
virtual void Function63(); //
virtual void Function64(); //
virtual void Function65(); //
virtual void Function66(); //
virtual void Function67(); //
virtual void Function68(); //
virtual void Function69(); //
virtual void Function70(); //
virtual void Function71(); //
virtual void Function72(); //
virtual void Function73(); //
virtual void Function74(); //
virtual void Function75(); //
virtual void Function76(); //
virtual void Function77(); //
virtual void Function78(); //
virtual void Function79(); //
virtual void Function80(); //
virtual void Function81(); //
virtual void Function82(); //
virtual void Function83(); //
virtual void Function84(); //
virtual void Function85(); //
virtual void Function86(); //
virtual void Function87(); //
virtual void Function88(); //
virtual void Function89(); //
virtual void Function90(); //
virtual void Function91(); //
virtual void Function92(); //
virtual void Function93(); //
virtual void Function94(); //
virtual void Function95(); //
virtual void Function96(); //
virtual void Function97(); //
virtual void Function98(); //
virtual void Function99(); //
virtual void Function100(); //
virtual void Function101(); //
virtual void Function102(); //
virtual void Function103(); //
virtual void Function104(); //
virtual void Function105(); //
virtual void Function106(); //
virtual void Function107(); //
virtual void Function108(); //
virtual void Function109(); //
virtual void Function110(); //
virtual void Function111(); //
virtual void Function112(); //
virtual void Function113(); //
virtual void Function114(); //
virtual void Function115(); //
virtual void Function116(); //
virtual void Function117(); //
virtual void Function118(); //
virtual void Function119(); //
virtual void Function120(); //
virtual void Function121(); //
virtual void Function122(); //
virtual void Function123(); //
virtual void Function124(); //
virtual void Function125(); //
virtual void Function126(); //
virtual void Function127(); //
virtual void Function128(); //
virtual void Function129(); //
virtual void Function130(); //
virtual void Function131(); //
virtual void Function132(); //
virtual void Function133(); //
virtual void Function134(); //
virtual void Function135(); //
virtual void Function136(); //
virtual void Function137(); //
virtual void Function138(); //
virtual void Function139(); //
virtual void Function140(); //
virtual void Function141(); //
virtual bool GetClientActor(IActor** pAct); //0x23c
static IGameFramework* GetGameFramework() {//The highlited dword_... is the IGameFramework address.
return *(IGameFramework * *)IGameFramework_Address; //search Failed to create the GameFramework Interface!
}
IGameRules* GetIGameRules() { return *(IGameRules * *)((DWORD)this + V_GetCurrentGameRules); }
};
struct IActorIterator
{
public:
virtual void Function0(); //
virtual IActor* Next(); //
virtual void IncreaseIndex(); //
virtual int Count(); //
};//Size=0x0004
struct IActorSystem
{
virtual void Function0(); //
virtual void Function1(); //
virtual void Function2(); //
virtual void Function3(); //
virtual void Function4(); //
virtual void Function5(); //
virtual void Function6(); //
virtual void Function7(); //
virtual void Function8(); //
virtual void Function9(); //
virtual void Function10(); //
virtual void CreateActorIterator(IActorIterator** ActorIterator);
virtual void Function12(); //
virtual int GetCount(); //0x0034
virtual IActor* GetActorByChannelId(int ChannelId); //0x0038
virtual IActor* GetActor(int entityId); //0x003C
};
class IRenderer
{
public:
struct w2s_info
{
float Posx;
float Posy;
float Posz;
float* Scrnx;
float* Scrny;
float* Scrnz;
};
bool ProjectToScreen(w2s_info* info)
{
using ProjectToScreen = bool(__thiscall*)(PVOID, w2s_info*);
return cClassValue<ProjectToScreen>(this, 400)(this, info); //396
}
DWORD* GetDirectDevice()
{
return (DWORD*) * (DWORD*)((DWORD)this + D3DXCreateTextureI);
}
};
struct IEntityIt
{
virtual void Function0(); //
virtual void Function1(); //
virtual void Function2(); //
virtual void Function3(); //
virtual void Function4(); //
virtual void Function5();
virtual IEntity* Next(); //
};
struct IEntitySystem
{
virtual void Function0(); //
virtual IEntityClassRegistry* GetClassRegistry() = 0;//
virtual void Function2(); //
virtual void Function3(); //
virtual void Function4(); //
virtual void Function5(); //
virtual void Function6(); //
virtual void Function7(); //
virtual void Function8(); //
virtual void Function9(); //
virtual void Function10(); //
virtual void GetEntity(); //
virtual void Function12(); //
virtual void Function13(); //
virtual void Function14(); //
virtual void Function15(); //
virtual void Function16(); //
virtual void Function17(); //
virtual void Function18(); //
virtual void Function19(); //
virtual IEntityIt* GetEntityIterator();
virtual void Function21(); //
virtual void Function22(); //
virtual void Function23(); //
virtual void Function24(); //
virtual void Function25(); //
virtual void Function26(); //
virtual void Function27(); //
virtual void Function28(); //
virtual void Function29(); //
virtual void Function30(); //
virtual void Function31(); //
virtual void Function32(); //
virtual void Function33(); //
virtual void Function34(); //
virtual void Function35(); //
virtual void Function36(); //
virtual void Function37(); //
virtual void Function38(); //
virtual void Function39(); //
virtual void Function40(); //
virtual void Function41(); //
virtual void Function42(); //
virtual void Function43(); //
virtual void Function44(); //
virtual void Function45(); //
virtual void Function46(); //
virtual void Function47(); //
virtual void Function48(); //
virtual void Function49(); //
virtual void Function50(); //
virtual void Function51(); //
virtual IEntity* FindEntityByName(const char* EntityName); //0x00D0
};
class IEntityProxy {
virtual VOID function0();
virtual VOID function1();
virtual VOID function2();
virtual VOID function3();
};
enum EEntityProxy
{
ENTITY_PROXY_RENDER,
ENTITY_PROXY_PHYSICS,
ENTITY_PROXY_SCRIPT,
ENTITY_PROXY_SOUND,
ENTITY_PROXY_AI,
ENTITY_PROXY_AREA,
ENTITY_PROXY_BOIDS,
ENTITY_PROXY_BOID_OBJECT,
ENTITY_PROXY_CAMERA,
ENTITY_PROXY_FLOWGRAPH,
ENTITY_PROXY_SUBSTITUTION,
ENTITY_PROXY_TRIGGER,
ENTITY_PROXY_ROPE,
ENTITY_PROXY_ENTITYNODE,
ENTITY_PROXY_USER,
// Always the last entry of the enum.
ENTITY_PROXY_LAST
};
enum ESilhouettesParams {
eAllMap = 524312,
eLimitDistance = 524296
};
class IRenderNode
{
public:
virtual void Function0(); //
virtual void Function1(); //
virtual void Function2(); //
virtual void Function3(); //
virtual void Function4(); //
virtual void Function5(); //
virtual void Function6(); //
virtual void Function7(); //
virtual void Function8(); //
virtual void Function9(); //
void SetRndFlags(unsigned int dwFlags) { m_dwRndFlags = dwFlags; }
void SetRndFlags(unsigned int dwFlags, BOOLEAN bEnable)
{
if (bEnable)
{
SetRndFlags(m_dwRndFlags | dwFlags);
}
else { SetRndFlags(m_dwRndFlags & (~dwFlags)); }
}
char _0x0004[12];
DWORD m_dwRndFlags; //0x0010
};
struct IEntityRenderProxy
{
virtual void Function0(); //
virtual void Function1(); //
virtual void Function2(); //
virtual void Function3(); //
virtual void Function4(); //
virtual void Function5(); //
virtual void Function6(); //
virtual void Function7(); //
virtual void Function8(); //
virtual void Function9(); //
virtual void Function10(); //
virtual void Function11(); //
virtual void Function12(); //
virtual void Function13(); //
virtual void Function14(); //
virtual void Function15(); //
virtual void Function16(); //
virtual void Function17(); //
virtual void Function18(); //
virtual void Function19(); //
virtual void Function20(); //
virtual void Function21(); //
virtual void Function22(); //
virtual void Function23(); //
virtual void Function24(); //
virtual void Function25(); //
virtual void Function26(); //
virtual void Function27(); //
virtual void Function28(); //
virtual void Function29(); //
virtual void Function30(); //
virtual void Function31(); //
virtual void Function32(); //
virtual void Function33(); //
virtual void Function34(); //
virtual void Function35(); //
virtual void Function36(); //
virtual void Function37(); //
virtual void Function38(); //
virtual void Function39(); //
virtual void Function40(); //
virtual void Function41(); //
virtual void Function42(); //
virtual void Function43(); //
virtual void SetHUDSilhouettesParams(float a, float r, float g, float b);
void SetRndFlags(int Flag) { *(int*)((DWORD)this + 0x6C) = Flag; }
IRenderNode* GetRenderNode() { return (IRenderNode*)((DWORD)this + 0x0004); }
};
struct ISkeletonPose
{
public:
virtual void Function0(); //
virtual void Function1(); //
virtual void Function2(); //
virtual void Function3(); //
virtual void Function4(); //
virtual void Function5(); //
virtual void Function6(); //
virtual QuatT& GetBoneByID(int nJointID); //
};
struct ICharacterInstance
{
virtual void Function0(); //
virtual void Function1(); //
virtual void Function2(); //
virtual void Function3(); //
virtual void Function4(); //
virtual ISkeletonPose* GetISkeletonPose(); //0x14 //virtual void Function5(); //
};
struct IEntity
{
virtual void Function0(); //
virtual void Function1(); //
virtual void Function2(); //
virtual void Function3(); //
virtual void Function4(); //
virtual void Function5(); //
virtual int GetFlags(); //
virtual void Function7(); //
virtual void Function8(); //
virtual void Function9(); //
virtual void Function10();// virtual const Matrix34& GetWorldTM();; //virtual void Function10(); //
virtual void SetName(const char* NewName); //
virtual const char* GetName() const; //
virtual void Function13(); //
virtual void Function14(); //
virtual void Function15();//
virtual void Function16(); //
virtual void Function17(); //
virtual void Function18(); //
virtual void Function19(); //
virtual void Function20(); //
virtual void Function21(); //
virtual void Function22(); //
virtual const Matrix34& GetWorldTM(); //
virtual void Function24(); //
virtual void GetWorldBounds(AABB& bbox) = 0;
virtual void Function26(); //
virtual void SetLocalPos(const Vec3& vPos, int nWhyFlags = 0);; //virtual void Function27(); //
virtual void Function28(); //
virtual void Function29(); //
virtual void Function30(); //
virtual void SetScale(const Vec3& vScale, int nWhyFlags = 0) = 0;
virtual const Matrix34& GetSlotLocalTM(int nSlot, bool bRelativeToParent) const;; //0x0080
virtual void Function33(); //
virtual void Function34(); //
virtual void Function35(); //
virtual void Function36(); //
virtual void Function37(); //
virtual void Function38(); //
virtual void Function39(); //
virtual void Function40(); ////virtual void SetPos(const Vec3 &vPos, int nWhyFlags = 0);; //0x00A0
virtual void Function41(); //
virtual void Function42(); //
virtual void Function43(); //
virtual void Function44(); //
virtual void Function45(); //
virtual void Function46(); //
virtual void Function47(); //
virtual void Function48(); //
virtual void Function49(); //
virtual void Function50(); //
virtual void Function51(); //
virtual void Function52(); //
virtual void Function53(); //
virtual void Function54(); //
virtual int LoadCharacter(int nSlot, const char* sFilename, int nLoadFlags = 0);; //0x00DC
virtual EntityId GetId() const;; //0x00E0
virtual void Function57(); //
virtual void Function58(); //
virtual IEntityProxy* GetProxy(EEntityProxy proxy) const;; //virtual void Function59(); //
virtual void Function60();//
virtual void Function61(); //
virtual void Function62(); //
virtual void FreeAllSlots(); //
virtual void Function64(); //
virtual void Function65(); //
virtual void Function66(); //
virtual void Function67(); //
virtual void Function68(); //
virtual void Function69(); ////;; //0x0114
virtual void Function70(); //
virtual void Function71(); //
virtual void Function72(); //
virtual void Function73(); //
virtual void Function74();//
virtual void SetFlags(int iFlags);; //0x012C
virtual void Function76(); //
virtual void Function77(); //
virtual void Function78(); //
virtual void Function79(); //
virtual void Function80(); //
virtual void Function81(); //
virtual ICharacterInstance* GetCharacter(int nSlot);//0x148
int GetID() { return *(int*)((DWORD)this + 0x14); }
Vec3 GetWorldPos() {
Matrix34 m = this->GetWorldTM();
return m.GetTranslation();
}
VOID SetPos(Vec3& Position, INT Flags = 0)
{
using SetPos = VOID(__thiscall*)(PVOID, Vec3&, INT);
return CallFunction<SetPos>(this, 108)(this, Position, Flags);
}
char _0x0004[16];
DWORD EntityID; //0x0014
char _0x0018[24];
Matrix34 EntityWorldTM; //0x0030
char _0x0070[8];
Quat EntityAngle; //0x0078
char _0x0088[48];
// DWORD NamePtr; //0x00B8
};
class IEntityLink;
struct ray_hit_cached { // used in conjunction with rwi_reuse_last_hit
ray_hit_cached() { pCollider = 0; ipart = 0; }
ray_hit_cached(const ray_hit& hit) { pCollider = hit.pCollider; ipart = hit.ipart; iNode = hit.iNode; }
ray_hit_cached& operator=(const ray_hit& hit) { pCollider = hit.pCollider; ipart = hit.ipart; iNode = hit.iNode; return *this; }
IPhysicalEntity* pCollider;
int ipart;
int iNode;
};
class SRWIParams
{
public:
void* pForeignData; //0x0000
__int32 iForeignData; //0x0004
char pad_0x0008[0x4]; //0x0008
Vec3 org; //0x000C
Vec3 dir; //0x0018
__int32 objTypes; //0x0024
unsigned int flags; //0x0028
ray_hit* hits; //0x002C
__int32 nMaxHits; //0x0030
ray_hit_cached* phitLast; //0x0034
__int32 nSkipEnts; //0x0038
IPhysicalEntity** pSkipEnts; //0x003C
}; //Size=0x0040
struct pe_explosion
{
Vec3 epicenter;
Vec3 epicenterImp;
float rmin, rmax, r;
float impulsivePressureAtR;
int nOccRes;
int nGrow;
float rminOcc;
float holeSize;
Vec3 explDir;
int iholeType;
bool forceDeformEntities;
IPhysicalEntity** pAffectedEnts;
float* pAffectedEntsExposure;
int nAffectedEnts;
};
class IPhysicalWorld
{
public:
int RayWorldIntersection(const Vec3& org, const Vec3& dir, int objtypes, unsigned int flags, ray_hit* hits, int nMaxHits, IPhysicalEntity* pSkipEnt, IPhysicalEntity* pSkipEntAux = 0, void* pForeignData = 0, int iForeignData = 0)
{
IPhysicalEntity* pSkipEnts[2];
int nSkipEnts = 0;
if (pSkipEnt) pSkipEnts[nSkipEnts++] = pSkipEnt;
if (pSkipEntAux) pSkipEnts[nSkipEnts++] = pSkipEntAux;
return RayWorldIntersection(org, dir, objtypes, flags, hits, nMaxHits, pSkipEnts, nSkipEnts, pForeignData, iForeignData);
}
int RayWorldIntersection(SRWIParams& rp, const char* pNameTag, int iCaller)
{
return CallFunction<int(__thiscall*)(PVOID, SRWIParams&, const char*, int)>(this, 140)(this, rp, pNameTag, iCaller); //136
}
int RayWorldIntersection(const Vec3& org, const Vec3& dir, int objtypes, unsigned int flags, ray_hit* hits, int nmaxhits, IPhysicalEntity** pSkipEnts = 0, int nSkipEnts = 0, void* pForeignData = 0, int iForeignData = 0, const char* pNameTag = "", ray_hit_cached * phitLast = 0, int iCaller = 4)
{
SRWIParams rp;
rp.org = org;
rp.dir = dir;
rp.objTypes = objtypes;
rp.flags = flags;
rp.hits = hits;
rp.nMaxHits = nmaxhits;
rp.pForeignData = pForeignData;
rp.iForeignData = iForeignData;
rp.phitLast = phitLast;
rp.pSkipEnts = pSkipEnts;
rp.nSkipEnts = nSkipEnts;
return RayWorldIntersection(rp, pNameTag, iCaller);
}
};