Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <a_samp>
- #define Anticheat true
- #define function%1(%2) forward%1(%2);public%1(%2)
- #define ConnectionCheck(%1); if(!IsPlayerConnected(%1)) { return 1; }
- #define ConnectionBreakCheck(%1); if(!IsPlayerConnected(%1)) { break; }
- #define PlayerName(%1,%2); new %2[MAX_PLAYER_NAME]; GetPlayerName(%1, %2, sizeof(%2));
- #define Log(%1,%2); { new _string[128]; format(_string, 128, %1, %2); _ANTICHEAT_Log(_string); }
- #define KickPlayer(%1,%2,%3); { new _string[128]; format(_string, 128, %1, %2); SendClientMessageToAll(0xFFFF00AA, _string); Kick(%3); }
- #define WarnPlayer(%1,%2,%3); { new _string[128]; format(_string, 128, %2, %3); SendClientMessage(%1, 0xFFFF00AA, _string); }
- new timer;
- enum PlayerInfos
- {
- bool: GatMoney,
- pMoney,
- bool: GatHealth,
- Float: pHealth,
- bool: GatArmour,
- Float: pArmour,
- bool: PlayerLooseMoney,
- pDriveBys
- }
- new Player[MAX_PLAYERS][PlayerInfos];
- enum AnticheatInfos
- {
- aName[128],
- aValue // Why not using bool's ? You will see later ;)
- }
- new AnticheatInfo[4][AnticheatInfos] = {
- {"Moneycheat", 1},
- {"Healhack", 1},
- {"Armourhack", 1},
- {"DriveBy", 1}
- };
- enum PickupInfos
- {
- bool: pUsed,
- pID,
- pModel,
- pType,
- Float:pX,
- Float:pY,
- Float:pZ,
- pVirtualworld
- }
- new PickupInfo[MAX_PICKUPS][PickupInfos];
- public OnFilterScriptInit()
- {
- printf("* Anticheat ( Beta ) by Tion loadet");
- timer = SetTimer("_ANTICHEAT_Main", 2000, true);
- return true;
- }
- public OnFilterScriptExit()
- {
- printf("* Anticheat ( Beta ) by Tion unloadet");
- KillTimer(timer);
- return true;
- }
- public OnPlayerDeath(playerid, killerid, reason)
- {
- new vehicleid;
- new vehiclemodel;
- if(GetPlayerState(killerid) == PLAYER_STATE_DRIVER)
- {
- vehicleid = GetPlayerVehicleID(killerid);
- vehiclemodel = GetVehicleModel(vehicleid);
- if(IsPlayerInAnyVehicle(playerid)) { return true; }
- if(vehiclemodel == 425) { return true; } // Hunter
- if(vehiclemodel == 432) { return true; } // Rhino
- if(vehiclemodel == 447) { return true; } // Seasparrow
- if(vehiclemodel == 472) { return true; } // Not shure, I think Coastguard can shoot ?!?
- if(vehiclemodel == 520) { return true; } // Hydra
- if(AnticheatInfo[3][aValue] == 1) // Testing vor DrivyBy - if activatet
- {
- Player[killerid][pDriveBys]++;
- if(Player[killerid][pDriveBys] > 3)
- {
- PlayerName(killerid, Name);
- KickPlayer("Anticheat: %s wurde wegen DrivyBy gekickt", Name, killerid);
- Player[killerid][pDriveBys] = 0;
- }
- else
- {
- WarnPlayer(killerid, "Anticheat: DriveBy ist auf diesem Server verboten, Warnung %d", Player[killerid][pDriveBys]);
- }
- }
- }
- return 1;
- }
- public OnPlayerConnect(playerid)
- {
- Player[playerid][GatMoney] = false;
- Player[playerid][pMoney] = 10000; // I dont know why but while connection on a Server i always have $10.000 on my hand ?!?
- Player[playerid][GatHealth] = false;
- Player[playerid][pHealth] = 100;
- Player[playerid][GatArmour] = false;
- Player[playerid][pArmour] = 0;
- Player[playerid][PlayerLooseMoney] = false;
- Player[playerid][pDriveBys] = 0;
- return true;
- }
- public OnPlayerPickUpPickup(playerid, pickupid)
- {
- for(new i = 0; i < MAX_PICKUPS; i++)
- {
- if((PickupInfo[i][pUsed] == true) && (pickupid == PickupInfo[i][pID]))
- {
- if(PickupInfo[i][pModel] == 1240) { Player[playerid][GatHealth] = true; _ANTICHEAT_SetPlayerHealth(playerid, 100); } // Heal Pickup
- if(PickupInfo[i][pModel] == 1242) { Player[playerid][GatArmour] = true; _ANTICHEAT_SetPlayerArmour(playerid, 100); } // Armour Pickup
- }
- }
- }
- // Das AntiMoney-System | The AntiMoney-System
- function _ANTICHEAT_GivePlayerMoney(playerid, money)
- {
- ConnectionCheck(playerid);
- Player[playerid][GatMoney] = true;
- Player[playerid][pMoney] += money;
- GivePlayerMoney(playerid, money);
- return true;
- }
- function _ANTICHEAT_ResetPlayerMoney(playerid)
- {
- ConnectionCheck(playerid);
- Player[playerid][pMoney] = 0;
- ResetPlayerMoney(playerid);
- return true;
- }
- function _ANTICHEAT_GetPlayerMoney(playerid)
- {
- ConnectionCheck(playerid);
- return Player[playerid][pMoney];
- }
- // Das Anti-Healhack-System | The Antihealhacksystem
- function _ANTICHEAT_SetPlayerHealth(playerid, Float: health)
- {
- Player[playerid][GatHealth] = true;
- Player[playerid][pHealth] = health;
- SetPlayerHealth(playerid, health);
- return true;
- }
- function _ANTICHEAT_GetPlayerHealth(playerid, &Float: health)
- {
- health = Player[playerid][pHealth];
- return true;
- }
- // Das Anti-Armourhack-System | The Anti-Armourhack-System
- function _ANTICHEAT_SetPlayerArmour(playerid, Float: armour)
- {
- Player[playerid][GatArmour] = true;
- Player[playerid][pArmour] = armour;
- SetPlayerArmour(playerid, armour);
- return true;
- }
- function _ANTICHEAT_GetPlayerArmour(playerid, &Float: armour)
- {
- armour = Player[playerid][pArmour];
- return true;
- }
- function _ANTICHEAT_CreatePickup(model, type, Float:X, Float:Y, Float:Z, Virtualworld)
- {
- for(new i = 0; i < MAX_PICKUPS; i++)
- {
- if(PickupInfo[i][pUsed] == false)
- {
- PickupInfo[i][pUsed] = true;
- PickupInfo[i][pType] = type;
- PickupInfo[i][pX] = X;
- PickupInfo[i][pY] = X;
- PickupInfo[i][pZ] = Z;
- PickupInfo[i][pVirtualworld] = Virtualworld;
- PickupInfo[i][pID] = CreatePickup(model, type, X, Y, Z, Virtualworld);
- return PickupInfo[i][pID];
- }
- }
- return -1;
- }
- function _ANTICHEAT_AddStaticPickup(model, type, Float:X, Float:Y, Float:Z, Virtualworld)
- {
- for(new i = 0; i < MAX_PICKUPS; i++)
- {
- if(PickupInfo[i][pUsed] == false)
- {
- PickupInfo[i][pUsed] = true;
- PickupInfo[i][pType] = type;
- PickupInfo[i][pX] = X;
- PickupInfo[i][pY] = X;
- PickupInfo[i][pZ] = Z;
- PickupInfo[i][pVirtualworld] = Virtualworld;
- PickupInfo[i][pID] = CreatePickup(model, type, X, Y, Z, Virtualworld);
- return true;
- }
- }
- return false;
- }
- function _ANTICHEAT_DestroyPickup(pickup)
- {
- for(new i = 0; i < MAX_PICKUPS; i++)
- {
- if(pickup == PickupInfo[i][pID])
- {
- DestroyPickup(PickupInfo[i][pID]);
- PickupInfo[i][pUsed] = false;
- return true;
- }
- }
- return false;
- }
- function _ANTICHEAT_Main()
- {
- new Float: PlayerHealth, Float: PlayerArmour;
- for(new i = 0; i < MAX_PLAYERS; i++)
- {
- // Vorbereitung durch Onlinecheck und herausfinden des Namens | Preparing with Onlinechack and finding out the name
- ConnectionBreakCheck(i);
- PlayerName(i, Name);
- // Antimoneyhack | Antimoneyhack
- if(AnticheatInfo[0][aValue] == 1)
- {
- if(Player[i][GatMoney] == false)
- {
- if(GetPlayerMoney(i) > Player[i][pMoney]) { ResetPlayerMoney(i); GivePlayerMoney(i, Player[i][pMoney]); Log("%s Moneycheat", Name); }
- if(GetPlayerMoney(i) < Player[i][pMoney]) { _ANTICHEAT_GivePlayerMoney(i, -(Player[i][pMoney] - GetPlayerMoney(i))); Player[i][PlayerLooseMoney] = true; }
- }
- Player[i][GatMoney] = false;
- }
- else { _ANTICHEAT_ResetPlayerMoney(i); _ANTICHEAT_GivePlayerMoney(i, GetPlayerMoney(i)); }
- // Anti Healhack | Anti Healhack
- if(AnticheatInfo[1][aValue] == 1)
- {
- if(Player[i][GatHealth] == false)
- {
- GetPlayerHealth(i, PlayerHealth);
- if(PlayerHealth > Player[i][pHealth] && Player[i][PlayerLooseMoney] == false) { Log("%s Healhack", Name); KickPlayer("Anticheat: %s wird wegen Healhacks gekickt", Name, i); }
- if(PlayerHealth > Player[i][pHealth] && Player[i][PlayerLooseMoney] == true) { _ANTICHEAT_SetPlayerHealth(i, PlayerHealth); }
- if(PlayerHealth < Player[i][pHealth]) { _ANTICHEAT_SetPlayerHealth(i, PlayerHealth); }
- }
- Player[i][PlayerLooseMoney] = false;
- Player[i][GatHealth] = false;
- }
- else { GetPlayerHealth(i, PlayerHealth); _ANTICHEAT_SetPlayerHealth(i, PlayerHealth); }
- // Anti Armorhack | Anti Armourhack
- if(AnticheatInfo[2][aValue] == 1)
- {
- if(Player[i][GatArmour] == false)
- {
- GetPlayerArmour(i, PlayerArmour);
- if(PlayerArmour > Player[i][pArmour]) { Log("%s Armorhack", Name); KickPlayer("Anticheat: %s wird wegen Armourhacks gekickt", Name, i); }
- if(PlayerArmour < Player[i][pArmour]) { _ANTICHEAT_SetPlayerArmour(i, PlayerArmour); }
- }
- Player[i][GatArmour] = false;
- }
- else { GetPlayerArmour(i, PlayerArmour); _ANTICHEAT_SetPlayerArmour(i, PlayerArmour); }
- }
- return true;
- }
- // Nur mal so, zum Spaß ;) | Just for Fun ;)
- function _ANTICHEAT_ChangeAnticheatTimer(interval)
- {
- KillTimer(timer);
- timer = SetTimer("_ANTICHEAT_Main", interval * 1000, true);
- return true;
- }
- // Bitte aufrufen mit "Log(string[], params,... );" | Please call with "Log(string[], params,... );"
- function _ANTICHEAT_Log(string[])
- {
- new log[256];
- new _ANTICHEAT_Year, _ANTICHEAT_Month, _ANTICHEAT_Day;
- getdate(_ANTICHEAT_Year, _ANTICHEAT_Month, _ANTICHEAT_Day);
- format(log, sizeof(log), "%d.%d.%d: %s\n", _ANTICHEAT_Day, _ANTICHEAT_Month, _ANTICHEAT_Year, string);
- new File:_ANTICHEAT_file = fopen("Anticheat.log", io_append);
- fwrite(_ANTICHEAT_file, log);
- fclose(_ANTICHEAT_file);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement