22.10.2017, 14:02
Anti-CarJack (Anti-Cheat)
Cheat https://www.youtube.com/watch?v=W3lnsY_DNBg
Cheat https://www.youtube.com/watch?v=W3lnsY_DNBg
Код:
#include <a_samp>
#include <Pawn.RakNet>
new GetPlayerVehicleId[MAX_PLAYERS];
const VEHICLE_SYNC = 200;
IPacket:VEHICLE_SYNC(playerid, BitStream:bs)
{
new inCarData[PR_InCarSync];
BS_IgnoreBits(bs, 8);
BS_ReadInCarSync(bs, inCarData);
if(IsPlayerInAnyVehicle(playerid) && GetPlayerVehicleId[playerid] != inCarData[PR_vehicleId]) {//I put it IsPlayerInAnyVehicle(playerid), the packet gets updated faster than PutPlayerInVehicle so we do not get bug
new string[144],name[MAX_PLAYER_NAME];
GetPlayerName(playerid, name, sizeof(name));
format(string,sizeof(string),"{FF0000}[Anti-CarJack]: {FFFF00}%s {999999}(ID:%d) {00FF00}auto-kicked {FF0000}[Reason: CarJack]", name,playerid);
SendClientMessageToAll(-1, string);
string[0] = EOS;
Kick(playerid);
return false;
}
return true;
}
public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger) return GetPlayerVehicleId[playerid] = vehicleid;
public OnPlayerStateChange(playerid, newstate, oldstate){
switch(oldstate){
case PLAYER_STATE_PASSENGER: return GetPlayerVehicleId[playerid] = -1;
case PLAYER_STATE_DRIVER: return GetPlayerVehicleId[playerid] = -1;}
return true;
}
public OnPlayerDisconnect(playerid, reason)
{
GetPlayerVehicleId[playerid] = 0;
return true;
}
/*exemple if you will use it PutPlayerInVehicle
cmd:infernus(playerid)
{
static Float:X,Float:Y,Float:Z,Float:Angle;
GetPlayerPos(playerid,X,Y,Z);
GetPlayerFacingAngle(playerid,Angle);
GetPlayerVehicleId[playerid] = CreateVehicle(411,X,Y,Z+2,Angle,random(255),random(255),-1,-1);
SetVehicleVirtualWorld(GetPlayerVehicleId[playerid],GetPlayerVirtualWorld(playerid));
LinkVehicleToInterior(GetPlayerVehicleId[playerid], GetPlayerInterior(playerid));
PutPlayerInVehicle(playerid,GetPlayerVehicleId[playerid],0);
return true;
}*/
