Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- bool FilterObjs(cObject *object, void *user)
- {
- for (int i = 0; i < 16; i++)
- {
- DWORD pLTClientShell = *(DWORD*)(Engine->GetCShell() + aLTClientShell);
- if (pLTClientShell !=NULL)
- {
- CPlayer* Player = GetPlayerByIndex(pLTClientShell, i);
- if (object == Player->Object)
- return true;
- }
- }
- return false;
- }
- bool IsRemotekill = true;
- bool hkIntersectSegment(RemoteQuery* rQuery, RemoteInfo* rInfo)
- {
- oRemoteKill = (tRemoteKill)(pIntersectSegment);
- DWORD pLTClientShell = *(DWORD*)(Engine->GetCShell() + 0x11E27CC);
- CPlayer* Me = GetPlayerByIndex(pLTClientShell, Engine->GetMyIndex(pLTClientShell));
- if (IsRemotekill)
- {
- for (int i = 0; i < 16; i++)
- {
- CPlayer* pPlayer = GetPlayerByIndex(pLTClientShell, i);
- if (Engine->IsVisible(Engine->GetBonePosition(Me->Object, 6), Engine->GetBonePosition(pPlayer->Object, 6)) && Engine->isValidClient(pPlayer) && Me != pPlayer && Me->Team != pPlayer->Team)
- {
- D3DXVECTOR3 Pos = Engine->GetBonePosition(pPlayer->Object, 6);
- rQuery->rFrom = Pos + D3DXVECTOR3(0.0f, 50.0f, 0.0f);
- rQuery->rTo = Pos - D3DXVECTOR3(0.0f, 50.0f, 0.0f);
- rQuery->rFlags = ::INTERSECT_OBJECTS | ::IGNORE_NONSOLID | ::INTERSECT_HPOLY;
- rQuery->rFilterFn = FilterObjs;
- bool Result = oRemoteKill(*rQuery, rInfo);
- if (Result)
- {
- rInfo->hObjImpact = pPlayer->Object;
- rInfo->vImpactPos = Pos;
- }
- return oRemoteKill(*rQuery, rInfo);
- }
- }
- }
- return oRemoteKill(*rQuery, rInfo);
- }
- void StartRemote()
- {
- if (!Engine->IsGameReadyForHook()) return;
- DWORD crossfire = (DWORD)GetModuleHandleA(eCF);
- if (crossfire == NULL) return;
- if (Engine->GetCShell() !=NULL)
- {
- uint32_t LTClient = *reinterpret_cast<uint32_t*>(Engine->GetCShell() + aILTClient);
- oRemoteKill = (tRemoteKill)*reinterpret_cast<uint32_t*>(LTClient + 0x7C);
- *reinterpret_cast<uint32_t*>(LTClient + 0x7C) = (uint32_t)hkIntersectSegment;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement