Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //////////////////////////////////////////////
- // ** Copyright (c) Cartman# ** //
- // ** All right reserved! ** //
- // ** Please not remove this credits. ** //
- //////////////////////////////////////////////
- // ============> INCLUDES <============ //
- #include <a_samp>
- #define CARTMAN# COPYRITGHT_CREATOR
- #define VERSION Y
- #include <cartman#_protection>
- #include <sscanf>
- // ============> ANTI-CHEAT <============ //
- // SETARI: 1 -> ON; 0 -> OFF !
- #define AC_WEAPONHACK 1
- #define AC_MONEYHACK 1
- #define AC_TELEPORTHACK 1
- #define AC_SPEEDHACK 1
- #define AC_HEALTHHACK 1
- #define AC_ARMOURHACK 1
- #define AC_VEHICLEHEALTHHACK 1
- #define AC_FAKEKILLHACK 1
- #define AC_AIRBREAKHACK 1
- #define AC_CARSPAWNHACK 1
- // ============> MAX_PING <============ //
- new MAX_PING = 300; // Il poti schimba de aici daca este nevoie.
- // ============> NEWS & ENUMS <============ //
- new Same_IP=0,Join_Stamp,ban_s[25],exceed=0;
- new var[MAX_PLAYERS] = {-1,...}, warns[MAX_PLAYERS] = {0,...}, bool:npc[MAX_PLAYERS] = {false,...}, MAX_PLAYERS_ = MAX_PLAYERS;
- enum LIST_ANTIFLOOD
- {
- lastCheck,
- floodRate
- }
- new AntiFlood_Data[MAX_PLAYERS][LIST_ANTIFLOOD];
- // ============> PUBLICS & FUNCTIONS <============ //
- public OnFilterScriptInit()
- {
- for ( new playerid; playerid < MAX_PLAYERS; playerid++ )
- {
- if ( IsPlayerConnected( playerid ) )
- AntiFlood_InitPlayer( playerid );
- }
- SetTimer("PingCheck", 10000, true);
- tmrAntiCheat_01 = SetTimer("DCAntiCheat_Thread01", 100, true);
- tmrAntiCheat_02 = SetTimer("DCAntiCheat_Thread02", 2000, true);
- return 1;
- }
- public OnFilterScriptExit()
- {
- KillTimer(tmrAntiCheat_01);
- KillTimer(tmrAntiCheat_02);
- return 1;
- }
- public OnPlayerRequestClass(playerid, classid)
- {
- if(!PlayerSelecting[playerid])
- PlayerSelecting[playerid] = 1;
- return 1;
- }
- public OnPlayerSpawn(playerid)
- {
- if(PlayerSelecting[playerid])
- PlayerSelecting[playerid] = 0;
- return 1;
- }
- stock Float:GetPlayerSpeedXY(playerid)
- {
- new Float:SpeedX, Float:SpeedY, Float:SpeedZ;
- new Float:Speed;
- if(IsPlayerInAnyVehicle(playerid)) GetVehicleVelocity(GetPlayerVehicleID(playerid), SpeedX, SpeedY, SpeedZ);
- else GetPlayerVelocity(playerid, SpeedX, SpeedY, SpeedZ);
- Speed = floatsqroot(floatadd(floatpower(SpeedX, 2.0), floatpower(SpeedY, 2.0)));
- return floatmul(Speed, 200.0);
- }
- forward PlayerHasMoved(playerid);
- public PlayerHasMoved(playerid)
- {
- if(fCurrentPos[playerid][0] == fOldPos[playerid][0] &&
- fCurrentPos[playerid][1] == fOldPos[playerid][1] &&
- fCurrentPos[playerid][2] == fOldPos[playerid][2])
- return 0;
- return 1;
- }
- HandlePlayer_Message(playerid)
- {
- new Name[MAX_PLAYER_NAME+1];
- new string[256];
- GetPlayerName(playerid, Name, sizeof(Name));
- dini_IntSet(szServerFile, "anticheat_killed", (dini_Int(szServerFile, "anticheat_killed") + 1));
- format(string, sizeof(string), "%s (%d) a fost omorat deoarece folosea coduri. Acum are %s morti cauzate de coduri.", Name, playerid, dini_Get(szServerFile, "anticheat_killed"));
- SendClientMessageToAll(COLOR_DARKRED, string);
- format(string, sizeof(string), "* %s (%d) a parasit servereul. (Kicked)", Name, playerid);
- SendClientMessage(playerid, COLOR_GREY, string);
- }
- HandlePlayer(playerid, reason)
- {
- new Name[MAX_PLAYER_NAME+1];
- new string[128];
- ResetPlayerWeapons(playerid);
- ResetPlayerMoney(playerid);
- SetPlayerInterior(playerid, 6);
- SetPlayerFacingAngle(playerid, 260);
- GetPlayerName(playerid, Name, sizeof(Name));
- SetPlayerPos(playerid , 264.2752, 81.9539, 1001.0391);
- switch(reason) {
- case WEAPON_HACK: {
- format(string, sizeof(string), "SERVER: %s (%d)a primit ban deoarece a fost prins cu coduri! (Weapon Hack)", Name, playerid);
- SendClientMessageToAll(COLOR_PINK, string);
- HandlePlayer_Message(playerid);
- BanEx(playerid, "Weapon Hack");
- }
- case MONEY_HACK: {
- format(string, sizeof(string), "SERVER: %s (%d)a primit ban deoarece a fost prins cu coduri! (Money Hack)", Name, playerid);
- SendClientMessageToAll(COLOR_PINK, string);
- HandlePlayer_Message(playerid);
- BanEx(playerid, "Money Hack");
- }
- case TELEPORT_HACK: {
- format(string, sizeof(string), "SERVER: %s (%d)a primit ban deoarece a fost prins cu coduri! (Teleport Hack)", Name, playerid);
- SendClientMessageToAll(COLOR_PINK, string);
- HandlePlayer_Message(playerid);
- BanEx(playerid, "Teleport Hack");
- }
- case SPEED_HACK: {
- format(string, sizeof(string), "SERVER: %s (%d)a primit ban deoarece a fost prins cu coduri! (Speed Hack)", Name, playerid);
- SendClientMessageToAll(COLOR_PINK, string);
- HandlePlayer_Message(playerid);
- BanEx(playerid, "Speed Hack");
- }
- case HEALTH_HACK: {
- format(string, sizeof(string), "SERVER: %s (%d)a primit ban deoarece a fost prins cu coduri! (Health Hack)", Name, playerid);
- SendClientMessageToAll(COLOR_PINK, string);
- HandlePlayer_Message(playerid);
- BanEx(playerid, "Health Hack");
- }
- case ARMOUR_HACK: {
- format(string, sizeof(string), "SERVER: %s (%d)a primit ban deoarece a fost prins cu coduri! (Armour Hack)", Name, playerid);
- SendClientMessageToAll(COLOR_PINK, string);
- HandlePlayer_Message(playerid);
- BanEx(playerid, "Armour Hack");
- }
- case VEHICLEHEALTH_HACK: {
- format(string, sizeof(string), "SERVER: %s (%d)a primit ban deoarece a fost prins cu coduri! (Vehicle Health Hack)", Name, playerid);
- SendClientMessageToAll(COLOR_PINK, string);
- HandlePlayer_Message(playerid);
- BanEx(playerid, "Vehicle Health Hack");
- }
- case FAKEKILL_HACK: {
- format(string, sizeof(string), "SERVER: %s (%d)a primit ban deoarece a fost prins cu coduri! (Fake-kill Hack)", Name, playerid);
- SendClientMessageToAll(COLOR_PINK, string);
- HandlePlayer_Message(playerid);
- BanEx(playerid, "Fake-kill Hack");
- }
- case AIRBREAK_HACK: {
- format(string, sizeof(string), "SERVER: %s (%d)a primit ban deoarece a fost prins cu coduri! (Airbreak Hack)", Name, playerid);
- SendClientMessageToAll(COLOR_PINK, string);
- HandlePlayer_Message(playerid);
- BanEx(playerid, "Airbreak Hack");
- }
- case CARSPAWN_HACK: {
- format(string, sizeof(string), "SERVER: %s (%d)a primit ban deoarece a fost prins cu coduri! (Car Spawn Hack)", Name, playerid);
- SendClientMessageToAll(COLOR_PINK, string);
- HandlePlayer_Message(playerid);
- BanEx(playerid, "Car Spawn Hack");
- }
- default: {
- format(string, sizeof(string), "SERVER: %s (%d)a primit ban deoarece a fost prins cu coduri!", Name, playerid);
- SendClientMessageToAll(COLOR_PINK, string);
- HandlePlayer_Message(playerid);
- BanEx(playerid, "Unknown Hack");
- }
- }
- }
- public OnPlayerText(playerid, text[])
- {
- assert( AntiFlood_Check( playerid ) );
- if(strfind(text, "samp.", true) != -1 || strfind(text, "gta.", true) != -1 || strfind(text, "samp,", true) != -1 || strfind(text, "gta,", true) != -1 || strfind(text, "s-a-m-p.", true) != -1 || strfind(text, "g-t-a.", true) != -1 ||
- strfind(text, "s-a-m-p,", true) != -1 || strfind(text, "g-t-a,", true) != -1 || strfind(text, "[s][a][m][p].", true) != -1 || strfind(text, "[g][t][a].", true) != -1 || strfind(text, "sampx.", true) != -1 || strfind(text, "gtax", true) != -1 ||
- strfind(text, ".ro", true) != -1 || strfind(text, ".com", true) != -1 || strfind(text, ".net", true) != -1 || strfind(text, ".org", true) != -1 || strfind(text, ".tk", true) != -1 ||
- strfind(text, ",ro", true) != -1 || strfind(text, ",com", true) != -1 || strfind(text, ",net", true) != -1 || strfind(text, ",org", true) != -1 || strfind(text, ",tk", true) != -1 ||
- strfind(text, ".-r-o", true) != -1 || strfind(text, ".-c-o-m", true) != -1 || strfind(text, ".-n-e-t", true) != -1 || strfind(text, ".-o-r-g", true) != -1 || strfind(text, ".-t-k", true) != -1 || strfind(text, ":7777", true) != -1)
- {
- new sendername[MAX_PLAYER_NAME];
- new string[256];
- GetPlayerName(playerid, sendername, 24);
- format(string, sizeof(string), "SERVER: %s a fost deconectat, motiv: Reclama.", sendername);
- SendClientMessageToAll(COLOR_LIGHTRED, string);
- TogglePlayerControllable(playerid, 0);
- Kick(playerid);
- return 0;
- }
- return 1;
- }
- public OnPlayerConnect(playerid)
- {
- new name[MAX_PLAYER_NAME];
- new string[32];
- GetPlayerName(playerid, name, sizeof(name));
- if(!strfind("samp.", name, true) || !strfind("gta.", name, true) || !strfind("samp,", name, true) || !strfind("gta,", name, true) || !strfind("s-a-m-p.", name, true) || !strfind("g-t-a.", name, true) ||
- !strfind("s-a-m-p,", name, true) || !strfind("g-t-a,", name, true) || !strfind("[s][a][m][p].", name, true) || !strfind("[g][t][a].", name, true) || !strfind("sampx.", name, true) || !strfind("gtax", name, true) ||
- !strfind(".ro", name, true) || !strfind(".com", name, true) || !strfind(".net", name, true) || !strfind(".org", name, true) || !strfind(".tk", name, true) ||
- !strfind(",ro", name, true) || !strfind(",com", name, true) || !strfind(",net", name, true) || !strfind(",org", name, true) || !strfind(",tk", name, true) ||
- !strfind(".-r-o", name, true) || !strfind(".-c-o-m", name, true) || !strfind(".-n-e-t", name, true) || !strfind(".-o-r-g", name, true) || !strfind(".-t-k", name, true) || !strfind(":7777", name, true))
- {
- SendClientMessage(playerid, 0xFF0000FF, "* Ai primit ban ip pe acest server.");
- format(string, sizeof(string), "banip %s", name);
- SendRconCommand(string);
- Ban(playerid);
- }
- if(CountIP(GetIP(playerid)) >= 6) return BanAll(playerid), 0;
- MAX_PLAYERS_ = playerid > MAX_PLAYERS_ ? playerid : GetHighestID(),
- npc[playerid] = bool:IsPlayerNPC(playerid),
- var[playerid] = SetTimerEx("BSS",2500,false,"i",playerid),
- warns[playerid] = 0;
- AntiFlood_InitPlayer( playerid );
- new ConnIP[16];
- GetPlayerIp(playerid,ConnIP,16);
- new compare_IP[16];
- new number_IP = 0;
- for(new i=0; i<MAX_PLAYERS; i++) {
- if(IsPlayerConnected(i)) {
- GetPlayerIp(i,compare_IP,16);
- if(!strcmp(compare_IP,ConnIP)) number_IP++;
- }
- }
- if((GetTickCount() - Join_Stamp) < Time_Limit)
- exceed=1;
- else
- exceed=0;
- if(strcmp(ban_s, ConnIP, false) == 0 && exceed == 1 )
- {
- Same_IP++;
- if(Same_IP > SAME_IP_CONNECT)
- {
- Ban(playerid);
- Same_IP=0;
- }
- }
- else
- {
- Same_IP=0;
- }
- if(number_IP > IP_LIMIT)
- Kick(playerid);
- GetStampIP(playerid);
- Warning[playerid] = 0;
- return 1;
- }
- public OnPlayerDisconnect(playerid, reason)
- {
- MAX_PLAYERS_ = GetHighestID(playerid);
- if(npc[playerid]) npc[playerid] = false;
- if(var[playerid] != -1)
- {
- KillTimer(var[playerid]);
- var[playerid] = -1;
- }
- warns[playerid] = 0;
- ServerCash[playerid] = 0;
- ClientCash[playerid] = 0;
- Difference[playerid] = 0;
- PlayerSelecting[playerid] = 0;
- fCurrentPos[playerid][0] = 0;
- fCurrentPos[playerid][1] = 0;
- fCurrentPos[playerid][2] = 0;
- fOldPos[playerid][0] = 0;
- fOldPos[playerid][1] = 0;
- fOldPos[playerid][2] = 0;
- PlayerUsedVehicle[playerid] = 0;
- return 1;
- }
- public OnPlayerCommandText( playerid, cmdtext[] )
- {
- assert( AntiFlood_Check( playerid ) );
- return 0;
- }
- public OnPlayerDeath( playerid, killerid, reason )
- {
- assert( AntiFlood_Check( playerid ) );
- if(!reason)
- return 1;
- #if defined AC_FAKEKILLHACK
- // Anti Fake-Kill
- if(killerid == INVALID_PLAYER_ID)
- return 1;
- if(!IsPlayerStreamedIn(playerid, killerid)) {
- if(GetPlayerWeapon(killerid) != reason) {
- HandlePlayer(killerid, FAKEKILL_HACK);
- return 1;
- }
- }
- #endif
- return 1;
- }
- AntiFlood_Check( playerid, bool:inc=true )
- {
- AntiFlood_Data[playerid][floodRate] += inc ? RATE_INC : 0;
- AntiFlood_Data[playerid][floodRate] = AntiFlood_Data[playerid][floodRate] - ( GetTickCount() - AntiFlood_Data[playerid][lastCheck] );
- AntiFlood_Data[playerid][lastCheck] = GetTickCount();
- AntiFlood_Data[playerid][floodRate] = AntiFlood_Data[playerid][floodRate] < 0 ? 0 : AntiFlood_Data[playerid][floodRate];
- if ( AntiFlood_Data[playerid][floodRate] >= RATE_MAX )
- {
- #if THRESOLD_ACTION == 1
- new msg[64], name[MAX_PLAYER_NAME];
- GetPlayerName( playerid, name, sizeof( name ) );
- format( msg, sizeof( msg ), "SERVER: %s a primit ban pentru tentativa de flood.", name );
- SendClientMessageToAll( 0xEE9911FF, msg );
- Ban( playerid );
- #elseif THRESOLD_ACTION == 2
- new msg[64], name[MAX_PLAYER_NAME];
- GetPlayerName( playerid, name, sizeof( name ) );
- format( msg, sizeof( msg ), "SERVER: %s a primit ban pentru tentativa de flood.", name );
- SendClientMessageToAll( 0xEE9911FF, msg );
- Kick( playerid );
- #else
- SendClientMessage( playerid, 0xC00000FF, "Stop flooding." );
- #endif
- return false;
- }
- return true;
- }
- AntiFlood_InitPlayer( playerid )
- {
- AntiFlood_Data[playerid][lastCheck] = GetTickCount();
- AntiFlood_Data[playerid][floodRate] = 0;
- }
- forward OnPlayerTeamPrivmsg( playerid, text[] );
- public OnPlayerTeamPrivmsg( playerid, text[] )
- {
- assert( AntiFlood_Check( playerid ) );
- return 1;
- }
- stock GetStampIP(playerid){
- new S_IP[16];
- Join_Stamp=GetTickCount();
- GetPlayerIp(playerid,S_IP,16);
- format(ban_s, 16, "%s", S_IP);
- }
- stock CountIP(ip[])
- {
- new c = 0;
- for(new i = 0; i < MAX_PLAYERS; i++) if(IsPlayerConnected(i) && !strcmp(GetIP(i),ip)) c++;
- return c;
- }
- forward BSS(playerid);
- public BSS(playerid)
- {
- new i = GetPlayerPing(playerid);
- if(i <= 0 || i >= 50000)
- {
- if(warns[playerid] >= 1) BanAll(playerid);
- else warns[playerid]++, var[playerid] = SetTimerEx("BSS",1500,false,"i",playerid);
- }
- return 0;
- }
- stock GetIP(playerid)
- {
- new ip[16];
- GetPlayerIp(playerid,ip,sizeof(ip));
- return ip;
- }
- stock BanAll(playerid)
- {
- new ip[32];
- GetPlayerIp(playerid,ip,sizeof(ip));
- for(new i = 0, p = 0; i < MAX_PLAYERS; i++) if(IsPlayerConnected(i) && !npc[i])
- {
- p = GetPlayerPing(i);
- if(i == playerid || !strcmp(ip,GetIP(i)) || p <= 0 || p >= 50000)
- {
- BanEx(i,"Bot");
- if(var[i] != -1)
- {
- KillTimer(var[i]);
- var[i] = -1;
- }
- }
- }
- format(ip,sizeof(ip),"banip %s",ip);
- return SendRconCommand(ip);
- }
- stock GetHighestID(exceptof = INVALID_PLAYER_ID)
- {
- new h = 0;
- for(new i = 0; i < MAX_PLAYERS; i++) if(IsPlayerConnected(i) && i != exceptof && i > h) h = i;
- return h;
- }
- forward PingCheck();
- public PingCheck()
- {
- for(new i=0;i < MAX_PLAYERS;i++)
- {
- if(IsPlayerConnected(i))
- {
- OnPlayerPingUpdate(i);
- }
- }
- return 1;
- }
- OnPlayerPingUpdate(playerid)
- {
- new String[128], PlayerName[MAX_PLAYER_NAME];
- GetPlayerName(playerid, PlayerName, MAX_PLAYER_NAME);
- if(GetPlayerPing(playerid) < MAX_PING - 200)
- {
- return 1;
- }
- if(GetPlayerPing(playerid) < MAX_PING)
- {
- switch(Warning[playerid])
- {
- case 0:
- {
- format(String, sizeof(String), "{FF0000}SERVER:{FFFFFF} Ping-ul tau este: %d.", GetPlayerPing(playerid));
- SendClientMessage(playerid, -1, String);
- SendClientMessage(playerid, -1, "{FF0000}SERVER:{FFFFFF} Te rog redu acest lag, altfel vei fi deconectat. (ai 1/3 avertizari)");
- Warning[playerid] ++;
- }
- case 1:
- {
- format(String, sizeof(String), "{FF0000}SERVER:{FFFFFF} Ping-ul tau este: %d.", GetPlayerPing(playerid));
- SendClientMessage(playerid, -1, String);
- SendClientMessage(playerid, -1, "{FF0000}SERVER:{FFFFFF} Te rog redu acest lag, altfel vei fi deconectat. (ai 2/3 avertizari)");
- Warning[playerid] ++;
- }
- case 2:
- {
- format(String, sizeof(String), "{FF0000}SERVER:{FFFFFF} Ping-ul tau este: %d.", GetPlayerPing(playerid));
- SendClientMessage(playerid, -1, String);
- SendClientMessage(playerid, -1, "{FF0000}SERVER:{FFFFFF} Ai fost deconectat deoarece ai pingul prea mare.");
- format(String, sizeof(String), "{FF0000}SERVER{FFFFFF} %s a fost deconecat. Motiv: Lag. (%d)", PlayerName, MAX_PING);
- SendClientMessageToAll(-1, String);
- Warning[playerid] = 0;
- Kick(playerid);
- }
- }
- }
- return 1;
- }
- forward AntiCheat_Thread01();
- public AntiCheat_Thread01()
- {
- new Weapons[13][2];
- new Name[MAX_PLAYER_NAME+1];
- new szPlayerFile[128];
- for (new i = 0; i < MAX_PLAYERS; i++) {
- if(!IsPlayerConnected(i) || IsPlayerAdmin(i) || PlayerSelecting[i])
- continue;
- #if defined AC_WEAPONHACK
- // Weapon hack
- for (new y = 0; y < 13; y++) {
- GetPlayerWeaponData(i, y, Weapons[y][0], Weapons[y][1]);
- for (new x = 0; x < sizeof(iForbiddenWeapons); x++) {
- if(Weapons[y][0] == iForbiddenWeapons[x]) {
- HandlePlayer(i, WEAPON_HACK);
- break;
- }
- }
- }
- if(GetPlayerSpecialAction(i) == SPECIAL_ACTION_USEJETPACK) {
- HandlePlayer(i, WEAPON_HACK);
- break;
- }
- #endif
- #if defined AC_TELEPORTHACK
- // Teleport hack
- new iPlayerInterior = GetPlayerInterior(i);
- if(iPlayerInterior > 3 && iPlayerInterior != 15) {
- HandlePlayer(i, TELEPORT_HACK);
- break;
- }
- #endif
- #if defined AC_MONEYHACK
- // Money hack
- GetPlayerName(i, Name, sizeof(Name));
- format(szPlayerFile, sizeof(szPlayerFile), "%s.ini", Name);
- ServerCash[i] = dini_Int(szPlayerFile, "money");
- ClientCash[i] = GetPlayerMoney(i);
- Difference[i] = ClientCash[i] - ServerCash[i];
- if(Difference[i] > 5000) {
- HandlePlayer(i, MONEY_HACK);
- break;
- }
- #endif
- // Health and armour hack
- #if defined AC_HEALTHHACK
- new Float:PlayerHealth;
- GetPlayerHealth(i, PlayerHealth);
- if(PlayerHealth > 100) { HandlePlayer(i, HEALTH_HACK); break; }
- #endif
- #if defined AC_ARMOURHACK
- new Float:PlayerArmour;
- GetPlayerArmour(i, PlayerArmour);
- if(PlayerArmour > 100) { HandlePlayer(i, ARMOUR_HACK); break; }
- #endif
- // Speed hack (on foot & vehicle) and vehicle health hack
- new Float:VehicleHealth;
- if(IsPlayerInAnyVehicle(i) && GetPlayerState(i) == PLAYER_STATE_DRIVER) {
- #if defined AC_VEHICLEHEALTHHACK
- GetVehicleHealth(GetPlayerVehicleID(i), VehicleHealth);
- // Vehicle health hack
- if(VehicleHealth > 1000.0) {
- HandlePlayer(i, VEHICLEHEALTH_HACK);
- break;
- }
- #endif
- #if defined AC_SPEEDHACK
- // Speed hack
- if(GetPlayerSpeedXY(i) > 260.0) {
- HandlePlayer(i, SPEED_HACK);
- break;
- }
- #endif
- }
- }
- return 1;
- }
- forward AntiCheat_Thread02();
- public AntiCheat_Thread02()
- {
- #if defined AC_AIRBREAKHACK
- for (new i = 0; i < MAX_PLAYERS; i++) {
- if(!IsPlayerConnected(i) || IsPlayerAdmin(i) || PlayerSelecting[i])
- continue;
- if(!IsPlayerInAnyVehicle(i) && GetPlayerState(i) != PLAYER_STATE_DRIVER) {
- // Airbreak detection
- GetPlayerPos(i, fCurrentPos[i][0], fCurrentPos[i][1], fCurrentPos[i][2]);
- if(!fOldPos[i][0] && !fOldPos[i][1] && !fOldPos[i][2]) {
- GetPlayerPos(i, fOldPos[i][0], fOldPos[i][1], fOldPos[i][2]);
- continue;
- }
- if(!PlayerHasMoved(i))
- continue;
- new Float:fPosDiff_X = fCurrentPos[i][0] - fOldPos[i][0];
- new Float:fPosDiff_Y = fCurrentPos[i][1] - fOldPos[i][1];
- new Float:fPosDiff_Z = fCurrentPos[i][2] - fOldPos[i][2];
- GetPlayerPos(i, fOldPos[i][0], fOldPos[i][1], fOldPos[i][2]);
- if(fPosDiff_X >= MAX_SPEED_INCREASE || fPosDiff_X <= -MAX_SPEED_INCREASE ||
- fPosDiff_Y >= MAX_SPEED_INCREASE || fPosDiff_Y <= -MAX_SPEED_INCREASE ||
- fPosDiff_Z >= MAX_SPEED_INCREASE || fPosDiff_Z <= -MAX_SPEED_INCREASE) {
- HandlePlayer(i, AIRBREAK_HACK);
- break;
- }
- }
- }
- #endif
- return 1;
- }
- public OnPlayerUpdate(playerid)
- {
- if(IsPlayerInAnyVehicle(playerid)) {
- #if defined AC_AIRBREAKHACK
- if(!PlayerUsedVehicle[playerid])
- PlayerUsedVehicle[playerid] = 1;
- #endif
- #if defined AC_CARSPAWNHACK
- if(IsPlayerAdmin(playerid) && !PlayerSelecting[playerid])
- return 1;
- for (new x = 0; x < sizeof(iForbiddenVehicles); x++) {
- if(GetVehicleModel(GetPlayerVehicleID(playerid)) == iForbiddenVehicles[x]) {
- if(GetPlayerSpeedXY(playerid) >= MIN_FORBIDDEN_SPEED) {
- HandlePlayer(playerid, CARSPAWN_HACK);
- break;
- } else {
- GameTextForPlayer(playerid, "~r~Players can not use this vehicle!", 3000, 3);
- break;
- }
- }
- }
- #endif
- } else {
- #if defined AC_AIRBREAKHACK
- if(PlayerUsedVehicle[playerid]) {
- PlayerUsedVehicle[playerid] = 0;
- GetPlayerPos(playerid, fOldPos[playerid][0], fOldPos[playerid][1], fOldPos[playerid][2]);
- }
- GetPlayerPos(playerid, fCurrentPos[playerid][0], fCurrentPos[playerid][1], fCurrentPos[playerid][2]);
- if(!PlayerHasMoved(playerid))
- return 1;
- #endif
- }
- return 1;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement