it is, but do you know how to implement it into a hack?
Since I was looking for no-spread for cod4 i found this.
Code:struct FViewAngle { float Y; float X; }; float WeaponViewAngleX = 0.0f; float WeaponViewAngleY = 0.0f; void GetWeaponViewAngles ( FViewAngle* pReturnAngle = NULL ) { WeaponViewAngleX = *( float* )0x79E770; WeaponViewAngleY = *( float* )0x79E76C; if ( pReturnAngle ) { pReturnAngle->X = WeaponViewAngleX; pReturnAngle->Y = WeaponViewAngleY; } } void GetPlayerViewPoint ( Vector* pReturnViewPoint ) { DWORD CG_GetPlayerViewPoint = 0x456580; _asm { mov eax, 0x794474; mov edx, dword ptr ds: [ pReturnViewPoint ]; push edx call dword ptr ds: [ CG_GetPlayerViewPoint ]; add esp, 0x4 } } void GetWeaponSpread ( weapon_t* pWeapon, float* WeaponSpread ) { DWORD CalculateWeaponSpread = 0x416C70; float MaxSpread = 0.0f; float BaseSpread = 0.0f; float SpreadMultiplier = 0.0f; _asm { mov ecx, dword ptr ds: [ pWeapon ]; mov edx, 0x794474 lea edi, dword ptr ds: [ BaseSpread ]; lea esi, dword ptr ds: [ MaxSpread ]; call dword ptr ds: [ CalculateWeaponSpread ]; fld dword ptr ds: [ 0x84CAA0 ]; fdiv qword ptr ds: [ 0x70AEE0 ]; fstp dword ptr ds: [ SpreadMultiplier ]; } *WeaponSpread = BaseSpread + ( ( MaxSpread - BaseSpread ) * SpreadMultiplier ); } void TransformAngles ( FViewAngle* pViewAngles, Vector* pReturnVector, Vector* pESIReturnVector, Vector* pEDIReturnVector ) { DWORD TransformByAngles = 0x563460; _asm { mov edi, dword ptr ds: [ pEDIReturnVector ]; mov esi, dword ptr ds: [ pESIReturnVector ]; mov edx, dword ptr ds: [ pViewAngles ]; mov ecx, dword ptr ds: [ pReturnVector ]; push ecx; call dword ptr ds: [ TransformByAngles ]; add esp, 0x4; } } void CalculateBulletLocation ( float* WeaponSpread, Vector* pReturnedVectorByAngle, Vector* pPlayerViewLocation, Vector* pReturnESIVector, Vector* pReturnEDIVector, Vector* pReturnBulletLocation ) { DWORD RepositionBulletLocation = 0x456470; Vector* pCopyOfReturnESIVector = new Vector; pCopyOfReturnESIVector->X = pReturnESIVector->X; pCopyOfReturnESIVector->Y = pReturnESIVector->Y; pCopyOfReturnESIVector->Z = pReturnESIVector->Z; float MaxFloatVector = 8192.0f; _asm { xor ecx, ecx; push ecx; fld dword ptr ds: [ MaxFloatVector ]; fstp dword ptr ds: [ esp ]; mov edx, dword ptr ds: [ pReturnEDIVector ]; push edx; mov eax, dword ptr ds: [ pReturnESIVector ]; push eax; mov ecx, dword ptr ds: [ pCopyOfReturnESIVector ]; push ecx; mov edx, dword ptr ds: [ pPlayerViewLocation ]; push edx; push ecx; mov eax, dword ptr ds: [ WeaponSpread ]; fld dword ptr ds: [ eax ]; fstp dword ptr ds: [ esp ]; mov ecx, dword ptr ds: [ 0x794474 ]; push ecx; mov edi, dword ptr ds: [ pReturnBulletLocation ]; mov eax, dword ptr ds: [ pReturnedVectorByAngle ]; call dword ptr ds: [ RepositionBulletLocation ]; add esp, 0x1C } delete pCopyOfReturnESIVector; } Vector GetHitLocationBySpread ( float WeaponSpread ) { Vector pViewPoint = Vector( 0, 0, 0 ); GetPlayerViewPoint( &pViewPoint ); FViewAngle pWeaponAngles; GetWeaponViewAngles( &pWeaponAngles ); Vector pReturnVector = Vector( 0, 0, 0 ); Vector pReturnESIVector = Vector( 0, 0, 0 ); Vector pReturnEDIVector = Vector( 0, 0, 0 ); TransformAngles( &pWeaponAngles, &pReturnVector, &pReturnESIVector, &pReturnEDIVector ); Vector pBulletLocation = Vector( 0, 0, 0 ); CalculateBulletLocation( &WeaponSpread, &pReturnVector, &pViewPoint, &pReturnESIVector, &pReturnEDIVector, &pBulletLocation ); return pBulletLocation; } void CalculateBulletDisplacement ( Vector* pBulletDisplacement ) { if ( !pLocalEntity || !pLocalClient ) return; if ( pLocalClient->IsZoomed ) return; weapon_t* pWeapon = GetWeapon( pLocalEntity->WeaponID ); if ( !pWeapon ) return; float WeaponSpread = 0.0f; GetWeaponSpread( pWeapon, &WeaponSpread ); *pBulletDisplacement = ( GetHitLocationBySpread( WeaponSpread ) - GetHitLocationBySpread( 0.0f ) ) * -1; }
Last edited by Moto; 06-27-2011 at 06:09 PM.
it is, but do you know how to implement it into a hack?
sig?
I changed it from quote to code.
[highlight="C++"]struct FViewAngle
{
float Y;
float X;
};
float WeaponViewAngleX = 0.0f;
float WeaponViewAngleY = 0.0f;
void GetWeaponViewAngles ( FViewAngle* pReturnAngle = NULL )
{
WeaponViewAngleX = *( float* )0x79E770;
WeaponViewAngleY = *( float* )0x79E76C;
if ( pReturnAngle )
{
pReturnAngle->X = WeaponViewAngleX;
pReturnAngle->Y = WeaponViewAngleY;
}
}
void GetPlayerViewPoint ( Vector* pReturnViewPoint )
{
DWORD CG_GetPlayerViewPoint = 0x456580;
_asm
{
mov eax, 0x794474;
mov edx, dword ptr ds: [ pReturnViewPoint ];
push edx
call dword ptr ds: [ CG_GetPlayerViewPoint ];
add esp, 0x4
}
}
void GetWeaponSpread ( weapon_t* pWeapon, float* WeaponSpread )
{
DWORD CalculateWeaponSpread = 0x416C70;
float MaxSpread = 0.0f;
float BaseSpread = 0.0f;
float SpreadMultiplier = 0.0f;
_asm
{
mov ecx, dword ptr ds: [ pWeapon ];
mov edx, 0x794474
lea edi, dword ptr ds: [ BaseSpread ];
lea esi, dword ptr ds: [ MaxSpread ];
call dword ptr ds: [ CalculateWeaponSpread ];
fld dword ptr ds: [ 0x84CAA0 ];
fdiv qword ptr ds: [ 0x70AEE0 ];
fstp dword ptr ds: [ SpreadMultiplier ];
}
*WeaponSpread = BaseSpread + ( ( MaxSpread - BaseSpread ) * SpreadMultiplier );
}
void TransformAngles ( FViewAngle* pViewAngles, Vector* pReturnVector, Vector* pESIReturnVector, Vector* pEDIReturnVector )
{
DWORD TransformByAngles = 0x563460;
_asm
{
mov edi, dword ptr ds: [ pEDIReturnVector ];
mov esi, dword ptr ds: [ pESIReturnVector ];
mov edx, dword ptr ds: [ pViewAngles ];
mov ecx, dword ptr ds: [ pReturnVector ];
push ecx;
call dword ptr ds: [ TransformByAngles ];
add esp, 0x4;
}
}
void CalculateBulletLocation ( float* WeaponSpread, Vector* pReturnedVectorByAngle, Vector* pPlayerViewLocation, Vector* pReturnESIVector, Vector* pReturnEDIVector, Vector* pReturnBulletLocation )
{
DWORD RepositionBulletLocation = 0x456470;
Vector* pCopyOfReturnESIVector = new Vector;
pCopyOfReturnESIVector->X = pReturnESIVector->X;
pCopyOfReturnESIVector->Y = pReturnESIVector->Y;
pCopyOfReturnESIVector->Z = pReturnESIVector->Z;
float MaxFloatVector = 8192.0f;
_asm
{
xor ecx, ecx;
push ecx;
fld dword ptr ds: [ MaxFloatVector ];
fstp dword ptr ds: [ esp ];
mov edx, dword ptr ds: [ pReturnEDIVector ];
push edx;
mov eax, dword ptr ds: [ pReturnESIVector ];
push eax;
mov ecx, dword ptr ds: [ pCopyOfReturnESIVector ];
push ecx;
mov edx, dword ptr ds: [ pPlayerViewLocation ];
push edx;
push ecx;
mov eax, dword ptr ds: [ WeaponSpread ];
fld dword ptr ds: [ eax ];
fstp dword ptr ds: [ esp ];
mov ecx, dword ptr ds: [ 0x794474 ];
push ecx;
mov edi, dword ptr ds: [ pReturnBulletLocation ];
mov eax, dword ptr ds: [ pReturnedVectorByAngle ];
call dword ptr ds: [ RepositionBulletLocation ];
add esp, 0x1C
}
delete pCopyOfReturnESIVector;
}
Vector GetHitLocationBySpread ( float WeaponSpread )
{
Vector pViewPoint = Vector( 0, 0, 0 );
GetPlayerViewPoint( &pViewPoint );
FViewAngle pWeaponAngles;
GetWeaponViewAngles( &pWeaponAngles );
Vector pReturnVector = Vector( 0, 0, 0 );
Vector pReturnESIVector = Vector( 0, 0, 0 );
Vector pReturnEDIVector = Vector( 0, 0, 0 );
TransformAngles( &pWeaponAngles, &pReturnVector, &pReturnESIVector, &pReturnEDIVector );
Vector pBulletLocation = Vector( 0, 0, 0 );
CalculateBulletLocation( &WeaponSpread, &pReturnVector, &pViewPoint, &pReturnESIVector, &pReturnEDIVector, &pBulletLocation );
return pBulletLocation;
}
void CalculateBulletDisplacement ( Vector* pBulletDisplacement )
{
if ( !pLocalEntity || !pLocalClient )
return;
if ( pLocalClient->IsZoomed )
return;
weapon_t* pWeapon = GetWeapon( pLocalEntity->WeaponID );
if ( !pWeapon )
return;
float WeaponSpread = 0.0f;
GetWeaponSpread( pWeapon, &WeaponSpread );
*pBulletDisplacement = ( GetHitLocationBySpread( WeaponSpread ) - GetHitLocationBySpread( 0.0f ) ) * -1;
}[/highlight]
This you mean?
.
why should i give you credit when i found this years ago on another site?
sig?
Credits for that code goes to an other dude lol.