Code:
typedef struct{
/*...*/
}RandSpread_t;
typedef struct{
char z_crap0[284];
float SpreadMultiplier;
}playerSnap_t;
typedef struct{
/*...*/
}weapon_t;
playerSnap_t *playerSnap = (playerSnap_t *) 0x7F4838;
WeaponAngleX = *( float* )0x862F50;
WeaponAngleY = *( float* )0x862F4C;
void (__cdecl *R_GetWeaponSpread)(playerSnap_t* playerSnap, weapon_t* cg_Weapon, vec3_t Max, vec3_t Base ) = (void (__cdecl *)( playerSnap_t* ,weapon_t* , vec3_t , vec3_t ))0x476900;
RandSpread_t* (__cdecl *R_GetRandPointer)( ) = (RandSpread_t* (__cdecl *)( ))0x502ED0;
float (__cdecl *R_RandomizedSeed)( RandSpread_t*RandS ) = (float (__cdecl *)( RandSpread_t* ))0x457160;
float (__cdecl *R_RandomizedSpread)( Vector* Vecs ) = (float (__cdecl *)( Vector* ))0x44FF00;
void CG_WeaponSpread ( weapon_t* pWeapon, vec3_t WeaponSpread )
{
float SpreadMultiplier = 0.0f;
SpreadMultiplier = *(float*)0x8F1B3C / 255.0;
vec3_t BaseSpread, MaxSpread;
if(pWeapon)
{
R_GetWeaponSpread( playerSnap, pWeapon, MaxSpread, BaseSpread );
WeaponSpread[0] = BaseSpread[0] + ( ( MaxSpread[0] - BaseSpread[0] ) * -SpreadMultiplier );
WeaponSpread[1] = BaseSpread[1] + ( ( MaxSpread[1] - BaseSpread[1] ) * -SpreadMultiplier );
WeaponSpread[2] = BaseSpread[2] + ( ( MaxSpread[2] - BaseSpread[2] ) * -SpreadMultiplier );
}
}
void R_GetPlayerOrigin(playerSnap_t *_playerSnap, vec3_t Origin )
{
DWORD CG_GetPlayerViewPoint = 0x415220;
_asm push Origin
_asm push _playerSnap
_asm push 0
_asm call [CG_GetPlayerViewPoint]
_asm add esp, 0x8
}
credits : King-OrgY , unreal, chod