Credit TheDarkRX
note all fixed
enum MethodOffset{
WeaponOnHand = 0x11de070,
StartWholeBodyFiring = 0x15b9f80,
CurrentLocalPlayer = 0x1b14408,
HeadPosition = 0x1260ac8,
PositionInjected = 0x663b6ac,
TakeDamage = 0x1241e54
};
void* PlayerWeaponOnHand(void* Player){
void*(*WeaponOnHand)(void*) = (void*(*)
(void*))getRealOffset(MethodOffset::WeaponOnHand);
return WeaponOnHand(Player);
}
Vector3 CameraPosition(void*Player){
Vector3 Position = Vector3::Zero();
void(*PositionInjected)(void*,Vector3*) = (void(*)
(void*,Vector3*))getRealOffset(MethodOffset::PositionInjected);
PositionInjected(*(void**)((uintptr_t) Player + 0x150),&Position);
return Position;
}
void* PlayerTakeDamage(void* Player,void* DamageInfo,void*
DamagerWeaponDynamicInfo,void* CheckParams,uint DamagerVehicleID){
void*(*TakeDamage)(void*,void*,void*,void*,uint) = (void*(*)
(void*,void*,void*,void*,uint))getRealOffset(MethodOffset::TakeDamage);
return
TakeDamage(Player,DamageInfo,DamagerWeaponDynamicInfo,CheckParams,DamagerVehicleID)
;
}
void PlayerNetworkStartWholeBodyFiring(void* Player,void* WeaponOnHand){
void(*StartWholeBodyFiring)(void*,void*) = (void(*)
(void*,void*))getRealOffset(MethodOffset::StartWholeBodyFiring);
return StartWholeBodyFiring(Player,WeaponOnHand);
}
void* GameFacadeCurrentLocalPlayer(){
void*(*CurrentLocalPlayer) (void*) = (void*(*)
(void*))getRealOffset(MethodOffset::CurrentLocalPlayer);
return CurrentLocalPlayer(NULL);
}
Vector3 PlayerHeadPosition(void* Player){
void*(*HeadPosition)(void*) = (void*(*)
(void*))getRealOffset(MethodOffset::HeadPosition);
Vector3 Position = Vector3::Zero();
void(*PositionInjected)(void*,Vector3*) = (void(*)
(void*,Vector3*))getRealOffset(MethodOffset::PositionInjected);
PositionInjected(HeadPosition(Player),&Position);
return Position;
}
namespace Save{
void* DamageInfo;
clock_t AimDelay;
}
void (*DamageInfo2)(void*);
void DamageInfoHook2(void* Player){
return DamageInfo2(Save::DamageInfo=Player);
}
Credit TheDarkRX
void PlayerTakeDamages(void* ClosestEnemy){
void* Match = Curent_Match();
if ((ActivateAll) && Match) {
if(isVisible(ClosestEnemy)){
if(AimKill && Save::DamageInfo != NULL && clock() > Save::AimDelay){
void* LocalPlayer = GameFacadeCurrentLocalPlayer();
void* WeaponOnHand = PlayerWeaponOnHand(LocalPlayer);
*(void**)((uintptr_t) Save::DamageInfo + 0x2c) = *(void**)((uintptr_t)
LocalPlayer + 0x170);
*(void**)((uintptr_t) Save::DamageInfo + 0x30) = WeaponOnHand;
*(Vector3*)((uintptr_t) Save::DamageInfo + 0x38) =
CameraPosition(LocalPlayer);
*(Vector3*)((uintptr_t) Save::DamageInfo + 0x44) =
PlayerHeadPosition(ClosestEnemy);
*(int*) ((uintptr_t) Save::DamageInfo + 0xC) = 1;
PlayerNetworkStartWholeBodyFiring(LocalPlayer,WeaponOnHand);
PlayerTakeDamage(ClosestEnemy,Save::DamageInfo,NULL,*(void**)
((uintptr_t) ClosestEnemy + 0x998),0);
}
}
}
}
Credit TheDarkRX
put in update or late update
PlayerTakeDamages(closestEnemy);
bool (*orig_RemoteKill)(void *);
bool hook_RemoteKill(void *_this)
{
if (_this != NULL && AimKill) {
return false;
}
return orig_RemoteKill(_this);
}
HOOK(0x188c664, DamageInfoHook2, DamageInfo2);
MSHookFunction((void *)getRealOffset(0x1624b20), (void *)&hook_RemoteKill, (void
**)&orig_RemoteKill);
Credit TheDarkRX