Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- [J]ulian (c) 2013 - Julián Agüero.
- sa-mp
- Sistema básico de anti cheat.
- */
- #include <a_samp>
- #define CHEAT_HEALTH 0
- #define ACTIVE_HEALTH true
- #define CHEAT_ARMOUR 1
- #define ACTIVE_ARMOUR true
- #define CHEAT_CASH 2
- #define ACTIVE_CASH true
- #define CHEAT_FAKE_KILL 3
- #define ACTIVE_FAKE_KILL true
- #define CHEAT_INTERIOR 4
- #define ACTIVE_INTERIOR true
- #define CHEAT_VIRTUAL_WORLD 5
- #define ACTIVE_VIRTUAL_WORLD true
- #define CHEAT_WEAPON 6
- #define CHEAT_AMMO 7
- #define ACTIVE_WEAPON true
- #define PLAYER_FLOOD_TEXT 8
- #define FLOOD_TYPE 3
- #define FLOOD_TIME 3000
- #define ACTIVE_FLOOD_TEXT true
- enum PLAYER_CHEAT
- {
- bool:SPAWNED,
- NAME[MAX_PLAYER_NAME + 1],
- Float:HEALTH[2],
- Float:ARMOUR[2],
- CASH,
- FAKE_KILL[3],
- INTERIOR,
- VIRTUAL_WORLD,
- WEAPONS[13],
- WEAPONS_[13],
- AMMO[13],
- AMMO_[13],
- FLOOD[2],
- FLOOD_TEXT[128]
- };
- new
- PlayerCheat[MAX_PLAYERS][PLAYER_CHEAT],
- gString[256];
- new tAntiCheat;
- forward gOnGameModeInit();
- forward gOnGameModeExit();
- forward gOnPlayerConnect(playerid);
- forward gOnPlayerDisconnect(playerid, reason);
- forward gOnPlayerSpawn(playerid);
- forward gOnPlayerDeath(playerid, killerid, reason);
- forward gOnPlayerText(playerid, text[]);
- forward gAntiCheat();
- forward gOnPlayerCheat(playerid, cheatid);
- public OnGameModeInit()
- {
- tAntiCheat = SetTimer("gAntiCheat", 1000, true);
- return CallLocalFunction("gOnGameModeInit", "");
- }
- public OnGameModeExit()
- {
- KillTimer(tAntiCheat);
- return CallLocalFunction("gOnGameModeExit", "");
- }
- public OnPlayerConnect(playerid)
- {
- PlayerCheat[playerid][SPAWNED] = false;
- GetPlayerName(playerid, PlayerCheat[playerid][NAME], MAX_PLAYER_NAME);
- PlayerCheat[playerid][HEALTH][0] = -1;
- PlayerCheat[playerid][ARMOUR][0] = -1;
- PlayerCheat[playerid][CASH] = -1;
- PlayerCheat[playerid][INTERIOR] = -1;
- PlayerCheat[playerid][VIRTUAL_WORLD] = -1;
- return CallLocalFunction("gOnPlayerConnect", "i", playerid);
- }
- public OnPlayerDisconnect(playerid, reason)
- {
- PlayerCheat[playerid][SPAWNED] = false;
- for(new slot5 = 0; slot5 < 13; slot5++)
- {
- PlayerCheat[playerid][WEAPONS][slot5] = 0;
- PlayerCheat[playerid][AMMO][slot5] = 0;
- }
- return CallLocalFunction("gOnPlayerDisconnect", "ii", playerid, reason);
- }
- public OnPlayerSpawn(playerid)
- {
- SetPlayerHealth(playerid, 100);
- CallLocalFunction("gOnPlayerSpawn", "i", playerid);
- return PlayerCheat[playerid][SPAWNED] = true;
- }
- public OnPlayerDeath(playerid, killerid, reason)
- {
- PlayerCheat[playerid][SPAWNED] = false;
- new tick = gettime() - PlayerCheat[playerid][FAKE_KILL][0];
- switch(tick)
- {
- case 0 .. 3:
- {
- PlayerCheat[playerid][FAKE_KILL][1]++;
- if(PlayerCheat[playerid][FAKE_KILL][1] >= 3) return PlayerCheat[playerid][FAKE_KILL][2]++;
- }
- default: PlayerCheat[playerid][FAKE_KILL][1] = 0;
- }
- PlayerCheat[playerid][FAKE_KILL][0] = gettime();
- return CallLocalFunction("gOnPlayerDeath", "iii", playerid, killerid, reason);
- }
- public OnPlayerText(playerid, text[])
- {
- #if FLOOD_TYPE == 1
- if(PlayerCheat[playerid][FLOOD][0] >= gettime() || (strlen(PlayerCheat[playerid][FLOOD_TEXT]) > 0 && !strcmp(text, PlayerCheat[playerid][FLOOD_TEXT], true)))
- #elseif FLOOD_TYPE == 2
- if(PlayerCheat[playerid][FLOOD][0] >= gettime())
- #elseif FLOOD_TYPE == 3
- if(strlen(PlayerCheat[playerid][FLOOD_TEXT]) > 0 && !strcmp(text, PlayerCheat[playerid][FLOOD_TEXT], true))
- #endif
- {
- PlayerCheat[playerid][FLOOD][1] = 1;
- }
- else
- {
- CallLocalFunction("gOnPlayerText", "is", playerid, text);
- PlayerCheat[playerid][FLOOD][0] = gettime() + FLOOD_TIME;
- format(PlayerCheat[playerid][FLOOD_TEXT], 128, "%s", text);
- }
- return 0;
- }
- stock gGetPlayerHealth(playerid, &Float:health)
- {
- health = PlayerCheat[playerid][HEALTH][0];
- }
- stock gSetPlayerHealth(playerid, Float:health)
- {
- PlayerCheat[playerid][HEALTH][0] = health;
- return SetPlayerHealth(playerid, health);
- }
- stock gGetPlayerArmour(playerid, &Float:armour)
- {
- armour = PlayerCheat[playerid][ARMOUR][0];
- }
- stock gSetPlayerArmour(playerid, Float:armour)
- {
- PlayerCheat[playerid][ARMOUR][0] = armour;
- return SetPlayerArmour(playerid, armour);
- }
- stock gGivePlayerMoney(playerid, money)
- {
- PlayerCheat[playerid][CASH] += money;
- return PlayerCheat[playerid][CASH];
- }
- stock gResetPlayerMoney(playerid)
- {
- PlayerCheat[playerid][CASH] = 0;
- return GivePlayerMoney(playerid, -GetPlayerMoney(playerid));
- }
- stock gGetPlayerMoney(playerid)
- {
- return PlayerCheat[playerid][CASH];
- }
- stock gSetPlayerInterior(playerid, interiorid)
- {
- PlayerCheat[playerid][INTERIOR] = interiorid;
- return SetPlayerInterior(playerid, PlayerCheat[playerid][INTERIOR]);
- }
- stock gGetPlayerInterior(playerid)
- {
- return PlayerCheat[playerid][INTERIOR];
- }
- stock gSetPlayerVirtualWorld(playerid, interiorid)
- {
- PlayerCheat[playerid][VIRTUAL_WORLD] = interiorid;
- return SetPlayerVirtualWorld(playerid, PlayerCheat[playerid][VIRTUAL_WORLD]);
- }
- stock gGetPlayerVirtualWorld(playerid)
- {
- return PlayerCheat[playerid][VIRTUAL_WORLD];
- }
- stock gGivePlayerWeapon(playerid, weaponid, ammo)
- {
- new slot = gGetWeaponSlot(weaponid);
- if(PlayerCheat[playerid][WEAPONS][slot] == weaponid) PlayerCheat[playerid][AMMO][slot] += ammo;
- else PlayerCheat[playerid][AMMO][slot] = ammo;
- PlayerCheat[playerid][WEAPONS][slot] = weaponid;
- return GivePlayerWeapon(playerid, weaponid, ammo);
- }
- stock gGetWeaponSlot(wid)
- {
- switch(wid)
- {
- case 0, 1: return 0;
- case 2..9: return 1;
- case 22..24: return 2;
- case 25..27: return 3;
- case 28, 29, 32: return 4;
- case 30, 31: return 5;
- case 33, 34: return 6;
- case 35..38: return 7;
- case 16..19, 39: return 8;
- case 41..43: return 9;
- case 10..15: return 10;
- case 44..46: return 11;
- case 40: return 12;
- default: return -1;
- }
- return -1;
- }
- public gAntiCheat()
- {
- // new tick = GetTickCount();
- for(new playerid = 0, cantidad = GetMaxPlayers(); playerid != cantidad; playerid++)
- {
- if(PlayerCheat[playerid][SPAWNED] == true)
- {
- #if ACTIVE_HEALTH == true
- GetPlayerHealth(playerid, PlayerCheat[playerid][HEALTH][1]);
- if(PlayerCheat[playerid][HEALTH][1] > PlayerCheat[playerid][HEALTH][0] && PlayerCheat[playerid][HEALTH][0] != -1)
- {
- SetPlayerHealth(playerid, PlayerCheat[playerid][HEALTH][0]);
- CallLocalFunction("gOnPlayerCheat", "ii", playerid, CHEAT_HEALTH);
- }
- else
- {
- PlayerCheat[playerid][HEALTH][0] = PlayerCheat[playerid][HEALTH][1];
- }
- #endif
- #if ACTIVE_ARMOUR == true
- GetPlayerArmour(playerid, PlayerCheat[playerid][ARMOUR][1]);
- if(PlayerCheat[playerid][ARMOUR][1] > PlayerCheat[playerid][ARMOUR][0] && PlayerCheat[playerid][ARMOUR][0] != -1)
- {
- SetPlayerArmour(playerid, PlayerCheat[playerid][ARMOUR][0]);
- CallLocalFunction("gOnPlayerCheat", "ii", playerid, CHEAT_ARMOUR);
- }
- else
- {
- PlayerCheat[playerid][ARMOUR][0] = PlayerCheat[playerid][ARMOUR][1];
- }
- #endif
- #if ACTIVE_CASH == true
- if(GetPlayerMoney(playerid) != PlayerCheat[playerid][CASH] && PlayerCheat[playerid][CASH] != -1)
- {
- ResetPlayerMoney(playerid);
- GivePlayerMoney(playerid, PlayerCheat[playerid][CASH]);
- CallLocalFunction("gOnPlayerCheat", "ii", playerid, CHEAT_CASH);
- }
- #endif
- #if ACTIVE_FAKE_KILL == true
- if(PlayerCheat[playerid][FAKE_KILL][2])
- {
- PlayerCheat[playerid][FAKE_KILL][2] = 0;
- CallLocalFunction("gOnPlayerCheat", "ii", playerid, CHEAT_FAKE_KILL);
- }
- #endif
- #if ACTIVE_INTERIOR == true
- if(GetPlayerInterior(playerid) != PlayerCheat[playerid][INTERIOR] && PlayerCheat[playerid][INTERIOR] != -1)
- {
- SetPlayerInterior(playerid, PlayerCheat[playerid][INTERIOR]);
- CallLocalFunction("gOnPlayerCheat", "ii", playerid, CHEAT_INTERIOR);
- }
- #endif
- #if ACTIVE_VIRTUAL_WORLD == true
- if(GetPlayerVirtualWorld(playerid) != PlayerCheat[playerid][VIRTUAL_WORLD] && PlayerCheat[playerid][VIRTUAL_WORLD] != -1)
- {
- SetPlayerVirtualWorld(playerid, PlayerCheat[playerid][VIRTUAL_WORLD]);
- CallLocalFunction("gOnPlayerCheat", "ii", playerid, CHEAT_VIRTUAL_WORLD);
- }
- #endif
- #if ACTIVE_WEAPON == true
- new detected[2] = {0, 0};
- for(new slot = 0; slot < 13; slot++)
- {
- GetPlayerWeaponData(playerid, slot, PlayerCheat[playerid][WEAPONS_][slot], PlayerCheat[playerid][AMMO_][slot]);
- if(PlayerCheat[playerid][WEAPONS_][slot] != PlayerCheat[playerid][WEAPONS][slot])
- {
- ResetPlayerWeapons(playerid);
- for(new slot2 = 0; slot2 < 13; slot2++)
- {
- if(PlayerCheat[playerid][WEAPONS][slot2] != 0)
- {
- GivePlayerWeapon(playerid, PlayerCheat[playerid][WEAPONS][slot2], PlayerCheat[playerid][AMMO][slot2]);
- }
- }
- detected[0]++;
- }
- if(PlayerCheat[playerid][AMMO_][slot] > PlayerCheat[playerid][AMMO][slot])
- {
- ResetPlayerWeapons(playerid);
- for(new slot2 = 0; slot2 < 13; slot2++)
- {
- if(PlayerCheat[playerid][WEAPONS][slot2] != 0)
- {
- GivePlayerWeapon(playerid, PlayerCheat[playerid][WEAPONS][slot2], PlayerCheat[playerid][AMMO][slot2]);
- }
- }
- detected[1]++;
- }
- }
- if(detected[0]) CallLocalFunction("gOnPlayerCheat", "ii", playerid, CHEAT_WEAPON), detected[0] = 0;
- if(detected[1]) CallLocalFunction("gOnPlayerCheat", "ii", playerid, CHEAT_AMMO), detected[1] = 0;
- #endif
- #if ACTIVE_FLOOD_TEXT == true
- if(PlayerCheat[playerid][FLOOD][1])
- {
- CallLocalFunction("gOnPlayerCheat", "ii", playerid, PLAYER_FLOOD_TEXT);
- PlayerCheat[playerid][FLOOD][0] = 0;
- PlayerCheat[playerid][FLOOD][1] = 0;
- }
- #endif
- }
- }
- // printf("[CHEAT tick]: %i", GetTickCount()-tick);
- return 1;
- }
- #if defined _ALS_OnGameModeInit
- #undef OnGameModeInit
- #endif
- #if defined _ALS_OnGameModeExit
- #undef OnGameModeExit
- #endif
- #if defined _ALS_OnPlayerSpawn
- #undef OnPlayerSpawn
- #endif
- #if defined _ALS_OnPlayerConnect
- #undef OnPlayerConnect
- #endif
- #if defined _ALS_OnPlayerDisconnect
- #undef OnPlayerDisconnect
- #endif
- #if defined _ALS_OnPlayerDeath
- #undef OnPlayerDeath
- #endif
- #if defined _ALS_OnPlayerText
- #undef OnPlayerText
- #endif
- #define SetPlayerHealth gSetPlayerHealth
- #define GetPlayerHealth gGetPlayerHealth
- #define SetPlayerArmour gSetPlayerArmour
- #define GetPlayerArmour gGetPlayerArmour
- #define GivePlayerMoney gGivePlayerMoney
- #define ResetPlayerMoney gResetPlayerMoney
- #define GetPlayerMoney gGetPlayerMoney
- #define SetPlayerInterior gSetPlayerInterior
- #define GetPlayerInterior gGetPlayerInterior
- #define SetPlayerVirtualWorld gSetPlayerVirtualWorld
- #define GetPlayerVirtualWorld gGetPlayerVirtualWorld
- #define GivePlayerWeapon gGivePlayerWeapon
- #define OnGameModeInit gOnGameModeInit
- #define OnGameModeExit gOnGameModeExit
- #define OnPlayerSpawn gOnPlayerSpawn
- #define OnPlayerConnect gOnPlayerConnect
- #define OnPlayerDisconnect gOnPlayerDisconnect
- #define OnPlayerDeath gOnPlayerDeath
- #define OnPlayerText gOnPlayerText
- #define OnPlayerCheat gOnPlayerCheat
- #pragma unused gString
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement