Beispiel #1
0
void DoCheatEntryChecking() 
{
	if( pNetGame &&
	    pNetGame->GetPlayerPool()->GetLocalPlayer()->IsActive() &&
		bHasSamplesOfPlayerData )
	{
		if(dwSuspectedCheat == 15) {
			bIsACheater = TRUE;
		}

		if(fStoredPlayerHealth != GamePool_FindPlayerPed()->fHealth) {
			dwSuspectedCheat++; return;
		}
		
		if(fStoredPlayerArmour != GamePool_FindPlayerPed()->fArmour) {
			dwSuspectedCheat++; return;
		}

		if(dwStoredPlayerDataSum[1] != GetMemSum((BYTE *)GamePool_FindPlayerPed()+1032,192)) {
			dwSuspectedCheat++; return;
		}
	}
	else {
		dwSuspectedCheat = 0;
	}
}
Beispiel #2
0
void DoCheatExitStoring()
{	
	if(pNetGame) {
		if(pNetGame->GetPlayerPool()->GetLocalPlayer()->IsActive()) {

			dwStoredPlayerDataSum[1] = GetMemSum((BYTE *)GamePool_FindPlayerPed()+1032,192);
			fStoredPlayerHealth = GamePool_FindPlayerPed()->fHealth;
			fStoredPlayerArmour = GamePool_FindPlayerPed()->fArmour;

			bHasSamplesOfPlayerData = TRUE;
		} else {
			bHasSamplesOfPlayerData = FALSE;
		}
	}
}
Beispiel #3
0
BOOL _stdcall IsFriendlyFire(PED_TYPE *pPlayer,DWORD *pdwEnt, int iWeapon, float fUnk, int PedPiece, BYTE byteUnk)
{
	CPlayerPool *pPlayerPool;
	CRemotePlayer *pRemotePlayer;
	CLocalPlayer *pLocalPlayer;
	BYTE byteRemotePlayerID;
	BYTE byteLocalPlayerTeam;

	if(pPlayer == GamePool_FindPlayerPed()) {
		if(pNetGame && pNetGame->m_byteFriendlyFire) {
			
			pPlayerPool = pNetGame->GetPlayerPool();
			pLocalPlayer = pPlayerPool->GetLocalPlayer();
			byteLocalPlayerTeam = pLocalPlayer->GetTeam();

			if(pLocalPlayer->IsWasted() || (byteLocalPlayerTeam == NO_TEAM)) return FALSE;

			byteRemotePlayerID = pPlayerPool->FindRemotePlayerIDFromGtaPtr((PED_TYPE *)pdwEnt);

			if(byteRemotePlayerID != INVALID_PLAYER_ID) {
				pRemotePlayer = pPlayerPool->GetAt(byteRemotePlayerID);
				if(pRemotePlayer->GetTeam() == byteLocalPlayerTeam) {
					return TRUE;
				} else {
					return FALSE;
				}
			}

			// didn't find pdwEnt in the player pool.
			// this is where we could check for a vehicle.
		}
	}

	return FALSE;	
}
Beispiel #4
0
BOOL CVehicle::IsDriverLocalPlayer()
{
	if(m_pVehicle) {
		if((PED_TYPE *)m_pVehicle->pDriver == GamePool_FindPlayerPed())
		{
			return TRUE;
		}
	}
	return FALSE;
}
Beispiel #5
0
NUDE CAutomobile_ProcessControl_Hook()
{
	_asm mov _pVehicle, ecx
	_asm pushad

	byteInternalPlayer = *(BYTE *)0xA10AFB;
	
	if( (_pVehicle->pDriver) &&
		(_pVehicle->pDriver != GamePool_FindPlayerPed()) &&
		(byteInternalPlayer==0) ) // not player's car
	{
		// get the current driver's player number
		byteCurPlayer = FindPlayerNumFromPedPtr((DWORD)_pVehicle->pDriver);
	
		GameStoreLocalPlayerKeys(); // save local player keys
		GameSetRemotePlayerKeys(byteCurPlayer); // set remote player keys.
		*pbyteCurrentPlayer = byteCurPlayer; // set internal ID to this remote player

		// call CAutomobile::ProcessControl(void)
		_asm popad
		_asm mov edi, 0x593030
		_asm call edi
		_asm pushad

		// restore local player keys and internal ID.
		*pbyteCurrentPlayer = 0;
		GameSetLocalPlayerKeys();
	}
	else
	{
		_asm popad
		_asm mov edi, 0x593030
		_asm call edi
		_asm pushad
	}

	_asm popad
	_asm ret
}