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; }*/