Download latest release (v1.9.52)
Nex Anticheat (Nex-AC) - is a comprehensive protection which combines powerful anticheat and protection against various attacks (flood, DoS).
Anticheat detects popular cheats instantly punishing cheaters.
Anti-DoS combines customizable anti-flood, anti-DoS at network level and a lot of protection tools against hacking, crashers etc.
- Anti-AirBreak (onfoot/in vehicle)
- Anti-teleport hack (onfoot/into/in/between vehicles)
- Anti-teleport (pickups)
- Anti-FlyHack (onfoot/in vehicle)
- Anti-SpeedHack (onfoot/in vehicle)
- Anti-Health hack (onfoot/in vehicle) and armour hack
- Anti-Weapon hack and (add/infinite) ammo hack
- Anti-Special actions hack (including jetpack)
- Anti-GodMode from bullets (onfoot/in vehicle)
- Anti-Invisible hack
- Anti-Money hack
- Anti-Tuning hack
- Anti-lagcomp-spoof
- Anti-Parkour mod
- Anti-Quick turn
- Anti-Rapid fire
- Anti-FakeSpawn
- Anti-FakeKill
- Anti-Pro Aim
- Anti-CJ run
- Anti-CarShot
- Anti-CarJack
- Anti-UnFreeze
- Anti-AFK Ghost
- Anti-Reconnect
- Anti-High ping
- Anti-Fake NPC
- Anti-Dialog hack
- Protection from sandbox
- Protection from invalid version
- Protection from flood by seat changing
- Protection from connection flood in one slot
- Anti-Rcon hack (brute/brute-force)
- Anti-callback functions flood (complete list below)
- Anti-crashers (complete list below)
- Anti-NOPs (complete list below)
- Anti-DoS
The settings is located in a separate file (scriptfiles\nex-ac_settings.cfg)
Ability to view statistics of the anticheat for all the time of server work since its launch Displayed automatically when the server turns off. Stored in a server log (server_log.txt)
Optionally, you can enable debug-mode for logging all actions
Ability to set any of the available languages.
It also simplifies the process of translation of anticheat into other languages
- OnDialogResponse
- OnEnterExitModShop
- OnPlayerClickMap
- OnPlayerClickPlayer
- OnPlayerClickTextDraw
- OnPlayerCommandText
- OnPlayerEnterVehicle
- OnPlayerExitVehicle
- OnPlayerPickUpPickup
- OnPlayerRequestClass
- OnPlayerSelectedMenuRow
- OnPlayerStateChange
- OnVehicleMod
- OnVehiclePaintjob
- OnVehicleRespray
- OnVehicleDeath
- OnPlayerText
- OnPlayerEnterCheckpoint
- OnPlayerLeaveCheckpoint
- OnPlayerRequestSpawn
- OnPlayerExitedMenu
- OnPlayerEnterRaceCheckpoint
- OnPlayerLeaveRaceCheckpoint
- OnPlayerClickPlayerTextDraw
- OnVehicleDamageStatusUpdate
- OnPlayerSelectObject
- SpawnPlayer
- SetPlayerPos
- SetVehiclePos
- SetPlayerAmmo
- SetPlayerHealth
- SetPlayerArmour
- SetVehicleHealth
- GivePlayerWeapon
- SetPlayerPosFindZ
- SetPlayerInterior
- PutPlayerInVehicle
- ResetPlayerWeapons
- SetPlayerSpecialAction
- TogglePlayerSpectating
- RemovePlayerFromVehicle
- Invalid tuning
- Invalid vehicle seat
- Illegal characters in the dialogs (deleting)
- Invalid attached objects
- Weapon Crasher
Called when triggers one of the anti-cheats
playerid
- The ID of the cheaterip_address[]
- IP-address of the cheatertype
- Type of cheating (when0
it returns the ID, when1
- IP)code
- The code (ID) of the anti-cheat- This callback does not handle returns
Use to enable/disable one of the anti-cheats
code
- The ID of the anti-cheatenable
-1
to enable/0
to disable- Returns
1 (true)
if the function executed successfully or0 (false)
if thecode
parameter contains an invalid ID of the anti-cheat
Use to enable/disable one of the anti-cheats for a specific player
playerid
- The ID of the player to enable/disable the anti-cheat forcode
- The ID of the anti-cheatenable
-1
to enable/0
to disable- Returns
1
if the function executed successfully,0
if the player is not connected or-1
if thecode
parameter contains an invalid ID of the anti-cheat
Added in v1.3:
Use to check whether one of the anti-cheats is enabled/disabled
code
- The ID of the anti-cheat to check- Return
1 (true)
if enabled or0 (false)
if disabled
Use to check whether one of the anti-cheats is enabled/disabled for a specific player
playerid
- The ID of the player to be checked whether the anti-cheat enabled/disabled for himcode
- The ID of the anti-cheat to check- Return
1 (true)
if enabled or0 (false)
if disabled
Added in v1.8.8:
Use to get the amount of the player's health
playerid
- The ID of the player to get the health of&Float:health
- A variable to store the health in, passed by reference- Returns
1 (true)
if the function executed successfully or0 (false)
if the player is not connected
Use to get the amount of the player's armour
playerid
- The ID of the player to get the armour of&Float:armour
- A variable to store the armour in, passed by reference- Returns
1 (true)
if the function executed successfully or0 (false)
if the player is not connected
Use to get the amount of the vehicle's health
vehicleid
- The ID of the vehicle to get the health of&Float:health
- A variable to store the health in, passed by reference- Returns
1 (true)
if the function executed successfully or0 (false)
if the vehicle does not exist
Use to get the weapon and ammo in a specific player's weapon slot
playerid
- The ID of the player whose weapon data to retrieveslot
- The slot to get the weapon and ammo for&weapons
- A variable to store the weapon ID in, passed by reference&ammo
- A variable to store the ammo in, passed by reference- Returns
1
if the function executed successfully,0
if the player is not connected or-1
if the slot specified is invalid
AntiCheatGetSpawnWeapon(playerid, &weapon1, &weapon1_ammo, &weapon2, &weapon2_ammo, &weapon3, &weapon3_ammo)
Use to get spawn weapons and ammo of a player
playerid
- The ID of the player whose spawn weapons and ammo to retrieve&weapon1
- A variable in which to store the weapon 1, passed by reference&weapon1_ammo
- A variable in which to store the amount of ammo for the weapon 1, passed by reference&weapon2
- A variable in which to store the weapon 2, passed by reference&weapon2_ammo
- A variable in which to store the amount of ammo for the weapon 2, passed by reference&weapon3
- A variable in which to store the weapon 3, passed by reference&weapon3_ammo
- A variable in which to store the amount of ammo for the weapon 3, passed by reference- Returns
1 (true)
if the function executed successfully or0 (false)
if the player is not connected
Use to get the position of a player
playerid
- The ID of the player to get the position of&Float:x
- A variable to store the x coordinate in, passed by reference&Float:y
- A variable to store the y coordinate in, passed by reference&Float:z
- A variable to store the z coordinate in, passed by reference- Returns
1 (true)
if the function executed successfully or0 (false)
if the player is not connected
Use to get the velocity of a vehicle
vehicleid
- The ID of the vehicle to get the velocity of&Float:x
- A variable to store the x velocity in, passed by reference&Float:y
- A variable to store the y velocity in, passed by reference&Float:z
- A variable to store the z velocity in, passed by reference- Returns
1 (true)
if the function executed successfully or0 (false)
if the vehicle does not exist
Use to get the speed of a player
playerid
- The ID of the player to get the speed of- Returns the player's speed or
0
if the player is not connected
Use to get the index (ID) of a player's current animation
playerid
- The ID of the player to get the animation index of- Returns the ID of the animation or
0
if the player is not connected
Use to get the ID of the opened dialog of a player
playerid
- The ID of the player to get the active dialog ID of- Returns the ID of the dialog or
-1
if the player is not connected
Use to get the ID of the vehicle the player attempted to enter last time
playerid
- The ID of the player to get the last entered vehicle ID of- Returns the ID of the entered vehicle or
0
if the player is not connected
Use to get the ID of the vehicle the player is currently in
playerid
- The ID of the player in the vehicle to get the ID of- Returns the ID of the vehicle or
0
if the player is not connected
Use to get the current weapon ID of a player
playerid
- The ID of the player to get the currently held weapon of- Returns the ID of the weapon or
-1
if the player is not connected
Use to get the seat of the vehicle the player is currently in
playerid
- The ID of the player to get the seat of- Returns the ID of the seat or
-1
if the player is not connected
Use to get the ID of the special action of a player
playerid
- The ID of the player to get the special action of- Returns the ID of the special action or
0
if the player is not connected
Use to get the ID of the previous special action of a player
playerid
- The ID of the player to get the previous special action of- Returns the ID of the previous special action or
0
if the player is not connected
Use to get the ID of the last weapon the player shot from
playerid
- The ID of the player to get the last shot weapon ID of- Returns the ID of the last shot weapon or
-1
if the player is not connected
Use to get the ID of the last pickup which the player picked up
playerid
- The ID of the player to get the last picked up pickup ID of- Returns the ID of the last picked up pickup or
-1
if the player is not connected
Use to get a player's last update tick
playerid
- The ID of the player to get the last update tick of- Returns the tick of the last update or
0
if the player is not connected
Use to get a player's last weapon reload tick
playerid
- The ID of the player to get the last reload tick of- Returns the tick of the last reload or
0
if the player is not connected
Use to get a player's last entering vehicle attempt tick
playerid
- The ID of the player to get the last entering vehicle attempt tick of- Returns the tick of the last entering attempt or
0
if the player is not connected
Use to get a player's last weapon shot tick
playerid
- The ID of the player to get the last shot tick of- Returns the tick of the last shot or
0
if the player is not connected
Use to get a player's last spawn tick
playerid
- The ID of the player to get the last spawn tick of- Returns the tick of the last spawn or
0
if the player is not connected
Use to check whether the enter/exit markers in interiors are enabled/disabled for a player
playerid
- The ID of the player to check- Returns
1 (true)
if enabled or0 (false)
if disabled
Use to check whether stunt bonus is enabled/disabled for a player
playerid
- The ID of the player to check- Returns
1 (true)
if enabled or0 (false)
if disabled
Use to check whether a player is in ModShop or not
playerid
- The ID of the player to check- Returns
1 (true)
if it is or0 (false)
if it is not
Use to check whether a player is frozen or not
playerid
- The ID of the player to check- Returns
1 (true)
if frozen or0 (false)
if not frozen
Use to check whether a player is dead or not
playerid
- The ID of the player to check- Returns
1 (true)
if dead or0 (false)
if not dead
Use to check whether a player is on the server or not
playerid
- The ID of the player to check- Returns
1 (true)
if it is or0 (false)
if it is not
Added in v1.9.37:
Called when triggers any warnings of one of the anti-cheats
playerid
- The ID of the suspected cheaterip_address[]
- IP-address of the suspected cheatertype
- Type of cheating (when0
it returns the ID, when1
- IP)code
- The code (ID) of the anti-cheatcode2
- The subcode (ID) of the anti-cheat checkcount
- Count of warnings triggered on suspected cheater- This callback does not handle returns
Called when triggers any anti-flood warnings on one of the protected publics
playerid
- The ID of the suspected flooderpublicid
- The ID of the public that was called too quicklycount
- Count of warnings triggered on suspected flooder- This callback does not handle returns
Called when triggers any NOP warnings on one of the protected functions
playerid
- The ID of the suspected cheaternopid
- The ID of the NOP checkcount
- Count of warnings triggered on suspected cheater- This callback does not handle returns
Use to kick with desync a specific player by the anticheat
playerid
- The ID of the player who will be kicked with desync for the delay timecode
- The ID of the anti-cheat (with some codes the player's vehicle will be resynced after his disconnection)- Returns
1
if the function executed successfully,0
if the player is not connected or-1
if the player has already been kicked
Use to check whether a player is (being) kicked or not
playerid
- The ID of the player to check- Returns
1
for kick onfoot,2
for kick in a vehicle (driver),3
if player is already disconnected or0
if he isn't kicked
Added in v1.9.40:
Use to get the spawn position of a player
playerid
- The ID of the player to get the spawn position of&Float:x
- A variable to store the x coordinate in, passed by reference&Float:y
- A variable to store the y coordinate in, passed by reference&Float:z
- A variable to store the z coordinate in, passed by reference- Returns
1 (true)
if the function executed successfully or0 (false)
if the player is not connected
Added in v1.9.41:
Use to enable/disable one of the anti-NOPs
nopcode
- The ID of the anti-NOPenable
-1
to enable/0
to disable- Returns
1 (true)
if the function executed successfully or0 (false)
if thenopcode
parameter contains an invalid ID of the anti-NOP
Use to enable/disable one of the anti-NOPs for a specific player
playerid
- The ID of the player to enable/disable the anti-NOP fornopcode
- The ID of the anti-NOPenable
-1
to enable/0
to disable- Returns
1
if the function executed successfully,0
if the player is not connected or-1
if thenopcode
parameter contains an invalid ID of the anti-NOP
Use to check whether one of the anti-NOPs is enabled/disabled
nopcode
- The ID of the anti-NOP to check- Return
1 (true)
if enabled or0 (false)
if disabled
Use to check whether one of the anti-NOPs is enabled/disabled for a specific player
playerid
- The ID of the player to be checked whether the anti-NOP enabled/disabled for himnopcode
- The ID of the anti-NOP to check- Return
1 (true)
if enabled or0 (false)
if disabled
Added in v1.9.42:
Use to get the ID of the driver ID of the vehicle
vehicleid
- The ID of the vehicle to get the driver ID of- Returns the ID of the driver or
INVALID_PLAYER_ID
if the vehicle does not exist
Use to get the ID of the current interior ID of the vehicle
vehicleid
- The ID of the vehicle to get the interior ID of- Returns the ID of the interior or
0
if the vehicle does not exist
Use to get the ID of the paintjob ID of the vehicle
vehicleid
- The ID of the vehicle to get the paintjob ID of- Returns the ID of the paintjob or
3
if the vehicle does not exist
Added in v1.9.43:
Use to get the position of a vehicle
vehicleid
- The ID of the vehicle to get the position of&Float:x
- A variable to store the x coordinate in, passed by reference&Float:y
- A variable to store the y coordinate in, passed by reference&Float:z
- A variable to store the z coordinate in, passed by reference- Returns
1 (true)
if the function executed successfully or0 (false)
if the vehicle does not exist
Use to get the z rotation of a vehicle
vehicleid
- The ID of the vehicle to get the z rotation of&Float:z_angle
- A variable to store the z rotation in, passed by reference- Returns
1 (true)
if the function executed successfully or0 (false)
if the vehicle does not exist
Use to get the spawn position of a vehicle
vehicleid
- The ID of the vehicle to get the spawn position of&Float:x
- A variable to store the x coordinate in, passed by reference&Float:y
- A variable to store the y coordinate in, passed by reference&Float:z
- A variable to store the z coordinate in, passed by reference- Returns
1 (true)
if the function executed successfully or0 (false)
if the vehicle does not exist
Use to get the spawn z rotation of a vehicle
vehicleid
- The ID of the vehicle to get the spawn z rotation of&Float:z_angle
- A variable to store the z rotation in, passed by reference- Returns
1 (true)
if the function executed successfully or0 (false)
if the vehicle does not exist
Added in v1.9.46:
Use to get the ID of the interior the player is currently in
playerid
- The ID of the player to get the interior ID of- Returns the ID of the interior or
0
if the player is not connected
Added in v1.9.50:
Use to get the seat of the vehicle the player attempted to enter last time
playerid
- The ID of the player to get the last entered seat of- Returns the ID of the entered seat or
-1
if the player is not connected
Use to get the weapon ID in a specific player's weapon slot
playerid
- The ID of the player to get the weapon ID ofslot
- The slot to get the weapon ID for- Returns the ID of weapon in a specific slot,
-1
if the player is not connected or-2
if the slot specified is invalid
Use to get the ammo in a specific player's weapon slot
playerid
- The ID of the player to get the ammo ofslot
- The slot to get the ammo for- Returns the amount of ammo in a specific slot,
-1
if the player is not connected or-2
if the slot specified is invalid
Use to check whether a player is in spectator mode or not
playerid
- The ID of the player to check- Returns
1 (true)
if it is or0 (false)
if it is not
Use to get the speed of a vehicle
vehicleid
- The ID of the vehicle to get the speed of- Returns the vehicle speed or
0
if the vehicle does not exist
Use to check whether a vehicle is spawned or not
vehicleid
- The ID of the vehicle to check- Returns
1 (true)
if it is or0 (false)
if it is not
The script can be configured in any of the available languages. To do it, just download the desired localization, save it in a directory with the main include (nex_ac.inc) and recompile your script.
- .lang files can be opened even in default notepad and easily edited
It is also recommended to check for using any other anticheats in order to avoid conflicts with them.
- Download version of the anticheat which compatible with the version of your server
- Download the language file (.lang) in your preferred language
- Copy both files to a folder "/pawno/include" which is located in a folder with the server
- In gamemode and all filterscripts, after #include "a_samp" write the following: #include "nex-ac"
Warning! If you use Streamer Plugin by Incognito, Pawn.RakNet, foreach, sscanf, YSF or SKY, include it before nex-ac!
Also keep in mind that filterscript must have "#define FILTERSCRIPT" before including the anticheat - Compile the modified scripts
- Magic_York, Roberto_York, TheHero, Nike_33, Vitalik_Gonsor, Mix_Rargard, Unisheld, f0Re3t - testing
- ZiGGi, Urukhay, Yashas, theYiin, RaefaldhiAmartya, PatchwerkQWER, kvann, rt-2 - advices on the code
- Carper - German translation
- Jstylezzz - Dutch translation
- J4Rr3x, Sasino97 - Italian translation
- Alex Westbrook, JustBored - Spanish translation
- lashona, ArthourP, DAKYSKYE - Georgian translation
- wampiros6 - Polish translation
- DeitY, Dragony92 - Serbian translation
- NicK_ - PT/BR translation
- KyleSmith, infin1tyy - Improved English translation
- M4D - Persian (Farsi) Translation
- Valera_Kovshikov - Ukrainian translation
- RaefaldhiAmartya - Indonesian translation
- vannesenn - Croatian translation
- j3rry, vic1997 - French translation
- zaibaslr2 - Lithuanian translation
- UnforgiveNNN - Romanian translation
- Pedro. - Hungarian translation
- Ben_Lovejoy - Finnish translation
- Rengar - Latvian translation
- bgedition - Bulgarian translation
- Jensenn - Turkish translation
- Sanady - Slovak translation
- Grig - Armenian translation
- SooBad - Czech translation
- OldPawn - Estonian translation
- Negativ_Tm - Turkmen translation
- Trung.Tin - Vietnamese translation
- willbedie - Albanian translation
- aktah - Thai translation
- Michael.Richmond - Moldavian translation
- NemanjaMAX - Bosnian translation
This script also contains materials from third-party open source projects.
P.s. I developed this anticheat for about a year and spent on it a lot of effort and time. I really hope that it will be useful to you.
Enjoy!