Download latest release (v1.9.49)
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
- SetPlayerArmedWeapon
- 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
- ID of the cheaterip_address[]
- IP-address of the cheatertype
- Type of cheating (when0
it returns the ID, when1
- IP)code
- Code (ID) of the anti-cheat- This callback does not handle returns
Use to enable/disable one of the anti-cheats
code
- 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 particular player
playerid
- ID of the player who needs to enable/disable the anti-cheatcode
- 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
- ID of the anti-cheat- Return
1 (true)
if enabled or0 (false)
if disabled
Use to check whether one of the anti-cheats is enabled/disabled for a particular player
playerid
- ID of the player to be checked whether the anti-cheat enabled/disabled for himcode
- ID of the anti-cheat- Return
1 (true)
if enabled or0 (false)
if disabled
Added in v1.8.8:
Use to get the amount of a player's health
playerid
- The ID of the player&Float:health
- Variable for storage health, 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 a player's armour
playerid
- The ID of the player&Float:armour
- Variable for storage armour, 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 health
vehicleid
- The ID of the vehicle&Float:health
- Variable for storage health, passed by reference- Returns
1 (true)
if the function executed successfully or0 (false)
if the vehicle does not exist
Use to get weapons and ammo in a certain slot of a player
playerid
- The ID of the playerslot
- The slot in which need to get the weapons and ammo&weapons
- Variable for storage weapon ID, passed by reference&ammo
- Variable for storage amount of ammo, passed by reference- Returns
1
if the function executed successfully,0
if the player is not connected or-1
if the slot is specified incorrectly
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&weapon1
- Variable for storage the weapon 1, passed by reference&weapon1_ammo
- The variable for storage the amount of ammo for the weapon 1, passed by reference&weapon2
- Variable for storage the weapon 2, passed by reference&weapon2_ammo
- The variable for storage the amount of ammo for the weapon 2, passed by reference&weapon3
- Variable for storage the weapon 3, passed by reference&weapon3_ammo
- The variable for storage 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 a player's position
playerid
- The ID of the player&Float:x
- The variable for storage the x coordinate, passed by reference&Float:y
- The variable for storage the y coordinate, passed by reference&Float:z
- The variable for storage the z coordinate, passed by reference- Returns
1 (true)
if the function executed successfully or0 (false)
if the player is not connected
Use to get the vehicle speed
vehicleid
- The ID of the vehicle&Float:x
- The variable for storage the x speed, passed by reference&Float:y
- The variable for storage the y speed, passed by reference&Float:z
- The variable for storage the z speed, passed by reference- Returns
1 (true)
if the function executed successfully or0 (false)
if the vehicle does not exist
Use to get a player's speed
playerid
- The ID of the player- 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- 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- Returns the ID of the dialog or
-1
if the player is not connected
Use to get the ID of the vehicle which a player try to enter
playerid
- The ID of the player- Returns the ID of the vehicle or
0
if the player is not connected
Use to get the ID of the vehicle in which a player is
playerid
- The ID of the player- Returns the ID of the vehicle or
0
if the player is not connected
Use to get a player's current weapon ID
playerid
- The ID of the player- Returns the ID of weapon or
-1
if the player is not connected
Use to get the seat in the vehicle on which the player is
playerid
- The ID of the player- 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- 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- 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 from which a player shot
playerid
- The ID of the player- Returns the ID of the last weapon or
-1
if the player is not connected
Use to get the ID of the last pickup which a player picked
playerid
- The ID of the player- 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 timestamp
playerid
- The ID of the player- Returns the timestamp of the last update or
0
if the player is not connected
Use to get a player's last (weapon) reload timestamp
playerid
- The ID of the player- Returns the timestamp of the last reload or
0
if the player is not connected
Use to get a player's last entering vehicle attempt timestamp
playerid
- The ID of the player- Returns the timestamp of the last entering attempt or
0
if the player is not connected
Use to get a player's last shot timestamp
playerid
- The ID of the player- Returns the timestamp of the last shot or
0
if the player is not connected
Use to get a player's last spawn timestamp
playerid
- The ID of the player- Returns the timestamp of the last spawn or
0
if the player is not connected
Use to check whether enter/exit markers in interiors are enabled/disabled for a player
playerid
- The ID of the player- 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- 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- 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- 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- Returns
1 (true)
if dead or0 (false)
if not dead
Use to check whether a player is on a server or not
playerid
- The ID of the player- 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
- ID of the suspected cheaterip_address[]
- IP-address of the suspected cheatertype
- Type of cheating (when0
it returns the ID, when1
- IP)code
- Code (ID) of the anti-cheatcode2
- Sub-code (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
- ID of the suspected flooderpublicid
- 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
- ID of the suspected cheaternopid
- ID of the NOP checkcount
- Count of warnings triggered on suspected cheater- This callback does not handle returns
Use to kick with desync a particular player by the anticheat
playerid
- ID of the player who will be kicked with desync for the delay timecode
- 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- 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 a player's spawn position
playerid
- The ID of the player&Float:x
- The variable for storage the x coordinate, passed by reference&Float:y
- The variable for storage the y coordinate, passed by reference&Float:z
- The variable for storage the z coordinate, 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
- 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 particular player
playerid
- ID of the player who needs to enable/disable the anti-NOPnopcode
- 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
- ID of the anti-NOP- Return
1 (true)
if enabled or0 (false)
if disabled
Use to check whether one of the anti-NOPs is enabled/disabled for a particular player
playerid
- ID of the player to be checked whether the anti-NOP enabled/disabled for himnopcode
- ID of the anti-NOP- Return
1 (true)
if enabled or0 (false)
if disabled
Added in v1.9.42:
Use to get the ID of the driver of the vehicle
vehicleid
- The ID of the vehicle- Returns the ID of the driver or
INVALID_PLAYER_ID
if the vehicle does not exist
Use to get the ID of the interior of the vehicle
vehicleid
- The ID of the vehicle- Returns the ID of the interior or
0
if the vehicle does not exist
Use to get the ID of the paintjob of the vehicle
vehicleid
- The ID of the vehicle- Returns the ID of the paintjob or
3
if the vehicle does not exist
Added in v1.9.43:
Use to get a vehicle position
vehicleid
- The ID of the vehicle&Float:x
- The variable for storage the x coordinate, passed by reference&Float:y
- The variable for storage the y coordinate, passed by reference&Float:z
- The variable for storage the z coordinate, passed by reference- Returns
1 (true)
if the function executed successfully or0 (false)
if the vehicle does not exist
Use to get the vehicle z rotation
vehicleid
- The ID of the vehicle&Float:z_angle
- The variable for storage the z rotation, passed by reference- Returns
1 (true)
if the function executed successfully or0 (false)
if the vehicle does not exist
Use to get a vehicle spawn position
vehicleid
- The ID of the vehicle&Float:x
- The variable for storage the x coordinate, passed by reference&Float:y
- The variable for storage the y coordinate, passed by reference&Float:z
- The variable for storage the z coordinate, passed by reference- Returns
1 (true)
if the function executed successfully or0 (false)
if the vehicle does not exist
Use to get the vehicle spawn z rotation
vehicleid
- The ID of the vehicle&Float:z_angle
- The variable for storage the z rotation, 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 in which a player is
playerid
- The ID of the player- Returns the ID of the interior or
0
if the player is not connected
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, foreach, sscanf or Pawn.RakNet, include it before nex-ac!
Also keep in mind that filterscript must have "#define FILTERSCRIPT" before including the anticheat - Compile the modified scripts
Do you get an error when you compiling this anticheat with YSI? Check out some tips
- 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!