1
0

svCheats.inc 101 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992
  1. //-----------------------------------------------------------------------------------|
  2. // [svCheats] |
  3. // |
  4. // |
  5. // - You may not remove these credits |
  6. // - You may not claim this script as yours |
  7. // |
  8. // |
  9. // |
  10. // [VERSION 1.9] Created by SuperViper |
  11. //-----------------------------------------------------------------------------------|
  12. #include <a_samp>
  13. #include <sscanf2>
  14. // ==================================== SETTINGS ================================== //|
  15. // //|
  16. /* Comment if you would like to use regular 'for' loops instead of foreach */ //|
  17. #define USE_FOREACH //|
  18. // //|
  19. /* Comment if you would like to use regular 'ALS' hooks instead of y_hooks */ //|
  20. //#define USE_YHOOKS //|
  21. // //|
  22. /* Comment if you would like to use regular 'strcmp' commands instead of ZCMD */ //|
  23. #define USE_ZCMD //|
  24. // //|
  25. /* Change this amount to set how fast the timer (in ms) to detect cheats runs */ //|
  26. #define TIMER_TIME 1250 //|
  27. // //|
  28. /* Comment this if you would like to disable the /acstats command */ //|
  29. #define ACSTATS_USED //|
  30. // //|
  31. /* Comment this if you would like to disable the /hh command */ //|
  32. #define HH_USED (1) //|
  33. // //|
  34. /* Comment the anticheat(s) that you dont want and change the security level */ //|
  35. #define HIGH_PING (2) //|
  36. #define WEAPON_SPAWN (1) //|
  37. #define SPEED_HACK (1) //|
  38. #define JETPACK_HACK (1) //|
  39. #define DRVBY_RESTRICT (-1) //|
  40. #define DDRIVEBY_OFF (-1) //|
  41. #define SWEARING_OFF (-1) //|
  42. //#define AIRBREAK_HACK (1) //|
  43. #define BUNNYHOP_OFF (1) //|
  44. #define FLY_HACK (1) //|
  45. #define TELEPORT_HACK (1) //|
  46. #define VEHICLE_REPAIR (1) //|
  47. #define CHATSPAM_OFF (-1) //|
  48. #define AFK_DISABLED (2) //|
  49. #define TABBED_DISABLED (2) //|
  50. #define NINJAJACK_CHEAT (-1) //|
  51. #define HEALTH_HACK (1) //|
  52. #define CARRAM_OFF (-1) //|
  53. #define HELIBLADE_OFF (-1) //|
  54. #define VEHMOD_HACK (1) //|
  55. #define SERVERAD_CHEAT (-1) //|
  56. #define FAKEPLAYER_HACK (-1) //|
  57. #define FAKEKLL_HACK (-1) //|
  58. #define REMOTEJACK_HACK (-1) //|
  59. #define INVALIDMOD_HACK (-1) //|
  60. #define GOIN_LOCKED_VEH (-1) //|
  61. #define SPAMKILL_CHEAT (-1) //|
  62. // //|
  63. // //|
  64. // //|
  65. /* Change the anticheat settings to best fit your server ----------------------- */ //|
  66. //----------------------------------------------------------------------------------//|
  67. #define MAX_PING (750) // Maximum server ping //|
  68. //----------------------------------------------------------------------------------//|
  69. #define USED_INTERIORS "1 2" // Used interiors separated by a space //|
  70. //----------------------------------------------------------------------------------//|
  71. #define MAX_SPEED (198) // Maximum vehicle speed //|
  72. //----------------------------------------------------------------------------------//|
  73. #define DRIVEBY_WEAPONS "28 29 32" // Driveby allowed weapons separated by a space //|
  74. //----------------------------------------------------------------------------------//|
  75. #define BUNNYHOP_AMOUNT (6) // Amount of jumps before it's called bunny hopping //|
  76. //----------------------------------------------------------------------------------//|
  77. #define CHATSPAM_LINES (4) // Amount of lines sent before it's called spam //|
  78. //----------------------------------------------------------------------------------//|
  79. #define AFK_MINUTES (10) // Amount of minutes before a person is AFK //|
  80. //----------------------------------------------------------------------------------//|
  81. #define SERVER_IP "127.0.0.1" // IP of your server //|
  82. #define SERVER_DOMAIN "samp.servername.com" // Optional server domain //|
  83. //----------------------------------------------------------------------------------//|
  84. new CurseWords[][] = {"ass", "bitch", "shit", "fuck", "nigger", "cunt", "whore"}; //|
  85. //----------------------------------------------------------------------------------//|
  86. #define DETECT_KILLS (5) // Amount of kills in X seconds for spamkill detection //|
  87. #define DETECT_SECONDS (20) // Amount of seconds in X kills for spamkill detection //|
  88. //----------------------------------------------------------------------------------//|
  89. // ================================================================================ //|
  90. // DO NOT TOUCH ANYTHING BELOW THIS //|
  91. // ================================================================================ //|
  92. #if defined USE_FOREACH
  93. #tryinclude <foreach>
  94. #endif
  95. #if defined USE_YHOOKS
  96. #tryinclude <YSI\y_hooks>
  97. #endif
  98. #if defined USE_ZCMD
  99. #tryinclude <zcmd>
  100. #endif
  101. #if defined AIRBREAK_HACK
  102. #tryinclude <MapAndreas>
  103. #endif
  104. #define SVCS_svCheats
  105. #define CHEAT_HIGH_PING (1)
  106. #define CHEAT_WEAPON_SPAWN (2)
  107. #define CHEAT_SPEED_HACK (3)
  108. #define CHEAT_JETPACK_HACK (4)
  109. #define CHEAT_DRIVEBY (5)
  110. #define CHEAT_DDRIVEBY (6)
  111. #define CHEAT_SWEARING (7)
  112. #define CHEAT_AIRBREAK_HACK (8)
  113. #define CHEAT_BUNNYHOP (9)
  114. #define CHEAT_FLY_HACK (10)
  115. #define CHEAT_TELEPORT_HACK (11)
  116. #define CHEAT_VEHICLE_REPAIR (12)
  117. #define CHEAT_CHATSPAM (13)
  118. #define CHEAT_AFK (14)
  119. #define CHEAT_TABBED (15)
  120. #define CHEAT_GODMODE (16)
  121. #define CHEAT_NINJAJACK (17)
  122. #define CHEAT_HEALTHHACK (18)
  123. #define CHEAT_CARRAM (19)
  124. #define CHEAT_HELIBLADE (20)
  125. #define CHEAT_VEHMOD (21)
  126. #define CHEAT_SERVERAD (22)
  127. #define CHEAT_FAKEPLAYER (23)
  128. #define CHEAT_FAKEKILL (24)
  129. #define CHEAT_REMOTEJACK (25)
  130. #define CHEAT_INVALIDMOD (26)
  131. #define CHEAT_LOCKEDVEH (27)
  132. #define CHEAT_SPAMKILL (28)
  133. forward svCheats_Detector();
  134. forward svCheats_OnPlayerCheatUpdate(playerid, cheatid);
  135. enum e_svCheats_HH
  136. {
  137. svCheckedBy,
  138. bool: svInVehicle,
  139. svVehicleID,
  140. svVehicleSeat,
  141. Float: svOldPlayerPos[4],
  142. svInterior,
  143. svVirtualWorld,
  144. Float: svHealth,
  145. Float: svArmor,
  146. }
  147. enum e_svCheats_RemoteJack
  148. {
  149. Float: svLofPos[3],
  150. svLastJackState,
  151. }
  152. enum e_svCheats_IPJoin
  153. {
  154. svIP_Add,
  155. svTimestamp,
  156. }
  157. new svCheats_SecurityLevel[MAX_PLAYERS], bool: svCheats_Debugging, bool: svCheats_Spawned[MAX_PLAYERS];
  158. new bool: svCheats_GrantedJetpack[MAX_PLAYERS], Float: svCheats_VehicleHealth[MAX_VEHICLES] = 1000.0;
  159. new svCheats_JumpCounters[MAX_PLAYERS], svCheats_JumpCounterTimer[MAX_PLAYERS];
  160. new svCheats_PlayerWeapons[MAX_PLAYERS][13], svCheats_SpamCounters[MAX_PLAYERS];
  161. new svCheats_AFKTime[MAX_PLAYERS], svCheats_LastAFKUpdate[MAX_PLAYERS], bool: svCheats_ReportedAFK[MAX_PLAYERS];
  162. new Float: svCheats_oldPos[MAX_PLAYERS][3];
  163. new svCheats_TabbedUpdates[MAX_PLAYERS], bool: svCheats_ReportedTabbed[MAX_PLAYERS], bool: svCheats_TabbedDisabled[MAX_PLAYERS];
  164. new svCheats_HH[MAX_PLAYERS][e_svCheats_HH];
  165. new svCheats_PossibleNinjaJack[MAX_PLAYERS];
  166. new Float: svCheats_PlayerHealth[MAX_PLAYERS], Float: svCheats_PlayerArmor[MAX_PLAYERS], bool: svCheats_HealthHackDisabled[MAX_PLAYERS];
  167. new svCheats_RemoteJack[MAX_PLAYERS][e_svCheats_RemoteJack];
  168. new svCheats_IPJoin[37][e_svCheats_IPJoin], svCheats_ajs = 0;
  169. new bool: svCheats_SkipPlayerLVCheck[MAX_PLAYERS];
  170. new svCheats_KillAmount[MAX_PLAYERS];
  171. new svCheats_AmountDetected;
  172. Float: svCheats_GetDistance(Float: x1, Float: y1, Float: z1, Float: x2, Float: y2, Float: z2)
  173. {
  174. return floatsqroot(floatpower(x1 - x2, 2.0) + floatpower(y1 - y2, 2.0) + floatpower(z1 - z2, 2.0));
  175. }
  176. #if defined USE_YHOOKS
  177. #if defined FILTERSCRIPT
  178. hook OnFilterScriptInit()
  179. {
  180. new File: svCheats_Stats;
  181. if(!fexist("svCheats_Stats.txt"))
  182. {
  183. svCheats_Stats = fopen("svCheats_Stats.txt", io_append);
  184. fwrite(svCheats_Stats, "0");
  185. }
  186. else
  187. {
  188. new amountDetected[5];
  189. svCheats_Stats = fopen("svCheats_Stats.txt", io_read);
  190. fread(svCheats_Stats, amountDetected);
  191. svCheats_AmountDetected = strval(amountDetected);
  192. }
  193. fclose(svCheats_Stats);
  194. SetTimer("svCheats_Detector", TIMER_TIME, 1);
  195. return 1;
  196. }
  197. hook OnFilterScriptExit()
  198. {
  199. new amountDetected[5], File: svCheats_Stats = fopen("svCheats_Stats.txt", io_write);
  200. format(amountDetected, sizeof(amountDetected), "%d", svCheats_AmountDetected);
  201. fwrite(svCheats_Stats, amountDetected);
  202. fclose(svCheats_Stats);
  203. return 1;
  204. }
  205. #else
  206. hook OnGameModeInit()
  207. {
  208. new File: svCheats_Stats;
  209. if(!fexist("svCheats_Stats.txt"))
  210. {
  211. svCheats_Stats = fopen("svCheats_Stats.txt", io_append);
  212. fwrite(svCheats_Stats, "0");
  213. }
  214. else
  215. {
  216. new amountDetected[5];
  217. svCheats_Stats = fopen("svCheats_Stats.txt", io_read);
  218. fread(svCheats_Stats, amountDetected);
  219. svCheats_AmountDetected = strval(amountDetected);
  220. }
  221. fclose(svCheats_Stats);
  222. SetTimer("svCheats_Detector", TIMER_TIME, 1);
  223. return 1;
  224. }
  225. hook OnGameModeExit()
  226. {
  227. new amountDetected[5], File: svCheats_Stats = fopen("svCheats_Stats.txt", io_write);
  228. format(amountDetected, sizeof(amountDetected), "%d", svCheats_AmountDetected);
  229. fwrite(svCheats_Stats, amountDetected);
  230. fclose(svCheats_Stats);
  231. return 1;
  232. }
  233. #endif
  234. hook OnPlayerConnect(playerid)
  235. {
  236. svCheats_SecurityLevel[playerid] = 0;
  237. #if defined FAKEPLAYER_HACK
  238. new playersIP[17];
  239. GetPlayerIp(playerid, playersIP, 17);
  240. if(strcmp(playersIP, "255.255.255.255") == 0 || (strcmp(SERVER_IP, "127.0.0.1") && strcmp(playersIP, "127.0.0.1") == 0 && !IsPlayerNPC(playerid)))
  241. {
  242. svCheats_CallDetection(playerid, CHEAT_FAKEPLAYER);
  243. }
  244. svCheats_log_new_join(playerid);
  245. if(svCheats_NJTR(playerid, 5000) >= 3)
  246. {
  247. svCheats_CallDetection(playerid, CHEAT_FAKEPLAYER);
  248. }
  249. #endif
  250. #if defined JETPACK_HACK
  251. svCheats_GrantedJetpack[playerid] = false;
  252. #endif
  253. #if defined BUNNYHOP_OFF
  254. svCheats_JumpCounters[playerid] = 0;
  255. svCheats_JumpCounterTimer[playerid] = -1;
  256. #endif
  257. #if defined CHATSPAM_OFF
  258. svCheats_SpamCounters[playerid] = 0;
  259. #endif
  260. #if defined WEAPON_SPAWN
  261. for(new i = 0; i < 13; i++)
  262. {
  263. svCheats_PlayerWeapons[playerid][i] = 0;
  264. }
  265. #endif
  266. #if defined AFK_DISABLED
  267. svCheats_AFKTime[playerid] = 0;
  268. svCheats_LastAFKUpdate[playerid] = GetTickCount();
  269. svCheats_ReportedAFK[playerid] = false;
  270. #endif
  271. #if defined TABBED_DISABLED
  272. svCheats_TabbedUpdates[playerid] = 0;
  273. svCheats_ReportedTabbed[playerid] = false;
  274. svCheats_TabbedDisabled[playerid] = true;
  275. #endif
  276. svCheats_HH[playerid][svCheckedBy] = INVALID_PLAYER_ID;
  277. #if defined NINJAJACK_CHEAT
  278. svCheats_PossibleNinjaJack[playerid] = INVALID_PLAYER_ID;
  279. #endif
  280. #if defined GOIN_LOCKED_VEH
  281. svCheats_SkipPlayerLVCheck[playerid] = false;
  282. #endif
  283. #if defined SPAMKLL_CHEAT
  284. svCheats_KillAmount[playerid] = 0;
  285. #endif
  286. svCheats_Spawned[playerid] = false;
  287. return 1;
  288. }
  289. hook OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
  290. {
  291. #if defined BUNNYHOP_OFF
  292. if(newkeys & KEY_JUMP)
  293. {
  294. if(svCheats_SecurityLevel[playerid] < BUNNYHOP_OFF || BUNNYHOP_OFF == -1)
  295. {
  296. new ai = GetPlayerAnimationIndex(playerid);
  297. if(ai != 1061 && ai != 1062 && ai != 1064 && ai != 1066 && ai != 1195 && ai != 1997 && ai != 1538 || ai != 1538 || ai != 1543)
  298. {
  299. svCheats_JumpCounters[playerid]++;
  300. if(svCheats_JumpCounterTimer[playerid] > -1)
  301. {
  302. KillTimer(svCheats_JumpCounterTimer[playerid]);
  303. svCheats_JumpCounterTimer[playerid] = -1;
  304. }
  305. if(svCheats_JumpCounters[playerid] == BUNNYHOP_AMOUNT)
  306. {
  307. svCheats_JumpCounters[playerid] = 0;
  308. svCheats_CallDetection(playerid, CHEAT_BUNNYHOP);
  309. svCheats_AmountDetected++;
  310. }
  311. else
  312. {
  313. svCheats_JumpCounterTimer[playerid] = SetTimerEx("svCheats_JumpCountersDown", 2000, 0, "i", playerid);
  314. }
  315. }
  316. }
  317. }
  318. #endif
  319. #if defined WEAPON_SPAWN
  320. if(newkeys & KEY_FIRE)
  321. {
  322. if(svCheats_SecurityLevel[playerid] < WEAPON_SPAWN || WEAPON_SPAWN == -1)
  323. {
  324. new w = GetPlayerWeapon(playerid);
  325. if(w > 0 && w < 46)
  326. {
  327. if(svCheats_PlayerWeapons[playerid][svCheats_GetWeaponSlot(w)] != w)
  328. {
  329. svCheats_CallDetection(playerid, CHEAT_WEAPON_SPAWN);
  330. svCheats_AmountDetected++;
  331. }
  332. }
  333. }
  334. }
  335. #endif
  336. return 1;
  337. }
  338. hook OnPlayerText(playerid, text[])
  339. {
  340. #if defined SWEARING_OFF
  341. if(svCheats_SecurityLevel[playerid] < SWEARING_OFF || SWEARING_OFF == -1)
  342. {
  343. for(new c = 0; c < sizeof(CurseWords); c++)
  344. {
  345. if(strfind(text, CurseWords[c], true) > -1)
  346. {
  347. svCheats_CallDetection(playerid, CHEAT_SWEARING);
  348. svCheats_AmountDetected++;
  349. return 0;
  350. }
  351. }
  352. }
  353. #endif
  354. #if defined CHATSPAM_OFF
  355. if(svCheats_SecurityLevel[playerid] < CHATSPAM_OFF || CHATSPAM_OFF == -1)
  356. {
  357. svCheats_SpamCounters[playerid]++;
  358. if(svCheats_SpamCounters[playerid] == CHATSPAM_LINES)
  359. {
  360. svCheats_SpamCounters[playerid] = 0;
  361. svCheats_CallDetection(playerid, CHEAT_CHATSPAM);
  362. svCheats_AmountDetected++;
  363. return 0;
  364. }
  365. }
  366. #endif
  367. #if defined AFK_DISABLED
  368. if(svCheats_SecurityLevel[playerid] < AFK_DISABLED || AFK_DISABLED == -1)
  369. {
  370. svCheats_AFKTime[playerid] = 0;
  371. svCheats_ReportedAFK[playerid] = false;
  372. }
  373. #endif
  374. #if defined SERVERAD_CHEAT
  375. if(svCheats_SecurityLevel[playerid] < SERVERAD_CHEAT || SERVERAD_CHEAT == -1)
  376. {
  377. new dotCount, numCount;
  378. for(new i = 0; i < strlen(text); i++)
  379. {
  380. if(text[i] == '.')
  381. {
  382. dotCount++;
  383. }
  384. else if(text[i] >= '0' && text[i] <= '9')
  385. {
  386. numCount++;
  387. }
  388. }
  389. if(dotCount >= 2 && (numCount >= 7 || strfind(text, "samp.") > -1))
  390. {
  391. if(strfind(text, SERVER_IP) == -1 && strfind(text, SERVER_DOMAIN, true) == -1)
  392. {
  393. svCheats_CallDetection(playerid, CHEAT_SERVERAD);
  394. }
  395. }
  396. }
  397. #endif
  398. return 0;
  399. }
  400. #if defined VEHICLE_REPAIR
  401. hook OnVehicleSpawn(vehicleid)
  402. {
  403. svCheats_VehicleHealth[vehicleid] = 1000.0;
  404. return 1;
  405. }
  406. hook OnPlayerStateChange(playerid, newstate, oldstate)
  407. {
  408. if(newstate == PLAYER_STATE_DRIVER)
  409. {
  410. #if defined VEHICLE_REPAIR
  411. new vehicleid = GetPlayerVehicleID(playerid);
  412. GetVehicleHealth(vehicleid, svCheats_VehicleHealth[vehicleid]);
  413. #endif
  414. #if defined NINJAJACK_OFF
  415. #if defined USE_FOREACH
  416. foreach(new i: Player)
  417. {
  418. if(svCheats_PossibleNinjaJack[i] == playerid)
  419. {
  420. svCheats_PossibleNinjaJack[i] = INVALID_PLAYER_ID;
  421. break;
  422. }
  423. }
  424. #else
  425. for(new i = 0; i < MAX_PLAYERS; i++)
  426. {
  427. if(IsPlayerConnected(i))
  428. {
  429. if(svCheats_PossibleNinjaJack[i] == playerid)
  430. {
  431. svCheats_PossibleNinjaJack[i] = INVALID_PLAYER_ID;
  432. break;
  433. }
  434. }
  435. }
  436. #endif
  437. #endif
  438. }
  439. if(newstate == PLAYER_STATE_DRIVER || newstate == PLAYER_STATE_PASSENGER)
  440. {
  441. #if defined GOIN_LOCKED_VEH
  442. if(svCheats_SecurityLevel[playerid] < GOIN_LOCKED_VEH || GOIN_LOCKED_VEH == -1)
  443. {
  444. if(svCheats_SkipPlayerLVCheck[playerid] == false)
  445. {
  446. new engine, lights, alarm, doors, bonnet, boot, objective;
  447. GetVehicleParamsEx(GetPlayerVehicleID(playerid), engine, lights, alarm, doors, bonnet, boot, objective);
  448. if(doors)
  449. {
  450. svCheats_CallDetection(playerid, CHEAT_LOCKEDVEH);
  451. }
  452. }
  453. else
  454. {
  455. svCheats_SkipPlayerLVCheck[playerid] = false;
  456. }
  457. }
  458. #endif
  459. }
  460. return 1;
  461. }
  462. #endif
  463. #if defined CHEAT_TABBED
  464. hook OnPlayerUpdate(playerid)
  465. {
  466. svCheats_TabbedUpdates[playerid] = 0;
  467. svCheats_ReportedTabbed[playerid] = false;
  468. #if defined CHEAT_REMOTEJACK
  469. new playersVehicle = GetPlayerVehicleID(playerid);
  470. if(!IsPlayerInAnyVehicle(playerid))
  471. {
  472. GetPlayerPos(playerid, svCheats_RemoteJack[playerid][svLofPos][0], svCheats_RemoteJack[playerid][svLofPos][1], svCheats_RemoteJack[playerid][svLofPos][2]);
  473. }
  474. if((playersVehicle != svCheats_RemoteJack[playerid][svLastJackState]) && playersVehicle != 0 && GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
  475. {
  476. new Float: playersPos[3], Float: distancejack = svCheats_GetDistance(playersPos[0], playersPos[1], playersPos[2], svCheats_RemoteJack[playerid][svLofPos][0], svCheats_RemoteJack[playerid][svLofPos][1], svCheats_RemoteJack[playerid][svLofPos][2]), thiscaride = GetVehicleModel(playersVehicle), Float: distanceth = 10;
  477. GetVehiclePos(playersVehicle, playersPos[0], playersPos[1], playersPos[2]);
  478. if(thiscaride == 577 || thiscaride == 592)
  479. {
  480. distanceth = 25.0;
  481. }
  482. if(distancejack > distanceth)
  483. {
  484. svCheats_CallDetection(playerid, CHEAT_REMOTEJACK);
  485. }
  486. GetPlayerPos(playerid, svCheats_RemoteJack[playerid][svLofPos][0], svCheats_RemoteJack[playerid][svLofPos][1], svCheats_RemoteJack[playerid][svLofPos][2]);
  487. svCheats_RemoteJack[playerid][svLastJackState] = playersVehicle;
  488. }
  489. #endif
  490. return 1;
  491. }
  492. hook OnPlayerSpawn(playerid)
  493. {
  494. svCheats_TabbedDisabled[playerid] = false;
  495. svCheats_Spawned[playerid] = true;
  496. svCheats_GrantedJetpack[playerid] = false;
  497. #if defined HEALTH_HACK
  498. svCheats_PlayerHealth[playerid] = 1000;
  499. svCheats_PlayerArmor[playerid] = 0;
  500. svCheats_HealthHackDisabled[playerid] = false;
  501. #endif
  502. return 1;
  503. }
  504. #endif
  505. hook OnPlayerDeath(playerid, killerid, reason)
  506. {
  507. svCheats_TabbedDisabled[playerid] = true;
  508. svCheats_HealthHackDisabled[playerid] = true;
  509. if(killerid == INVALID_PLAYER_ID)
  510. {
  511. if(svCheats_PossibleNinjaJack[playerid] != INVALID_PLAYER_ID)
  512. {
  513. svCheats_CallDetection(svCheats_PossibleNinjaJack[playerid], CHEAT_NINJAJACK);
  514. svCheats_PossibleNinjaJack[playerid] = INVALID_PLAYER_ID;
  515. }
  516. }
  517. else
  518. {
  519. #if defined FAKEKILL_HACK
  520. if(svCheats_SecurityLevel[killerid] < FAKEKILL_HACK || FAKEKILL_HACK == -1)
  521. {
  522. if(!IsPlayerStreamedInForPlayer(playerid, killerid))
  523. {
  524. svCheats_CallDetection(killerid, CHEAT_FAKEKILL);
  525. }
  526. }
  527. #endif
  528. #if defined SPAMKILL_CHEAT
  529. if(svCheats_SecurityLevel[killerid] < SPAMKILL_CHEAT || SPAMKILL_CHEAT == -1)
  530. {
  531. svCheats_KillAmount[killerid]++;
  532. if(svCheats_KillAmount[killerid] >= DETECT_KILLS)
  533. {
  534. svCheats_CallDetection(killerid, CHEAT_SPAMKILL);
  535. }
  536. SetTimerEx("svCheats_KillAmountDown", DETECT_SECONDS * 1000, 0, "i", killerid);
  537. }
  538. #endif
  539. }
  540. return 1;
  541. }
  542. hook OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
  543. {
  544. #if defined DRVBY_RESTRICT
  545. if(svCheats_SecurityLevel[playerid] < DRVBY_RESTRICT || DRVBY_RESTRICT == -1)
  546. {
  547. if(ispassenger)
  548. {
  549. new w = GetPlayerWeapon(playerid);
  550. if(w > 0)
  551. {
  552. new allowedWeapons[10], bool: allowed;
  553. sscanf(DRIVEBY_WEAPONS, "a<i>[10]", allowedWeapons);
  554. for(new i = 0; i < sizeof(allowedWeapons); i++)
  555. {
  556. if(w == allowedWeapons[i])
  557. {
  558. allowed = true;
  559. break;
  560. }
  561. }
  562. if(allowed == false)
  563. {
  564. SetPlayerArmedWeapon(playerid, 0);
  565. svCheats_CallDetection(playerid, CHEAT_DRIVEBY);
  566. svCheats_AmountDetected++;
  567. }
  568. }
  569. }
  570. }
  571. #endif
  572. #if defined DDRIVEBY_OFF
  573. if(svCheats_SecurityLevel[playerid] < DDRIVEBY_OFF || DDRIVEBY_OFF == -1)
  574. {
  575. if(!ispassenger)
  576. {
  577. new w = GetPlayerWeapon(playerid);
  578. if(w > 0)
  579. {
  580. SetPlayerArmedWeapon(playerid, 0);
  581. svCheats_CallDetection(playerid, CHEAT_DDRIVEBY);
  582. svCheats_AmountDetected++;
  583. }
  584. }
  585. }
  586. #endif
  587. #if defined NINJAJACK_CHEAT
  588. if(svCheats_SecurityLevel[playerid] < NINJAJACK_CHEAT || NINJAJACK_CHEAT == -1)
  589. {
  590. if(!ispassenger)
  591. {
  592. #if defined USE_FOREACH
  593. foreach(new i: Player)
  594. {
  595. if(GetPlayerVehicleID(i) == vehicleid && GetPlayerState(i) == PLAYER_STATE_DRIVER)
  596. {
  597. svCheats_PossibleNinjaJack[i] = playerid;
  598. break;
  599. }
  600. }
  601. #else
  602. for(new i = 0; i < MAX_PLAYERS; i++)
  603. {
  604. if(IsPlayerConnected(i))
  605. {
  606. if(GetPlayerVehicleID(i) == vehicleid && GetPlayerState(i) == PLAYER_STATE_DRIVER)
  607. {
  608. svCheats_PossibleNinjaJack[i] = playerid;
  609. break;
  610. }
  611. }
  612. }
  613. #endif
  614. }
  615. }
  616. #endif
  617. #if defined GOIN_LOCKED_VEH
  618. svCheats_SkipPlayerLVCheck[playerid] = true;
  619. #endif
  620. return 1;
  621. }
  622. #if defined USE_ZCMD
  623. #if defined HH_USED
  624. COMMAND:hh(playerid, params[])
  625. {
  626. if(svCheats_SecurityLevel[playerid] < HH_USED)
  627. {
  628. return SendClientMessage(playerid, -1, "You are not authorized to use this command.");
  629. }
  630. new svCheats_giveplayerid;
  631. if(sscanf(params, "u", svCheats_giveplayerid))
  632. {
  633. return SendClientMessage(playerid, -1, "USAGE: /hh [player]");
  634. }
  635. if(svCheats_ReportedTabbed[svCheats_giveplayerid] == true)
  636. {
  637. return SendClientMessage(playerid, -1, "You may not health hack check tabbed players.");
  638. }
  639. if(svCheats_HH[svCheats_giveplayerid][svCheckedBy] != INVALID_PLAYER_ID)
  640. {
  641. return SendClientMessage(playerid, -1, "That player is already being checked for health hacks.");
  642. }
  643. new string[128], playersName[MAX_PLAYER_NAME], Float: playersPos[3];
  644. GetPlayerName(svCheats_giveplayerid, playersName, sizeof(playersName));
  645. format(string, sizeof(string), "Checking %s for health hacks...", playersName);
  646. SendClientMessage(playerid, -1, string);
  647. GetPlayerPos(svCheats_giveplayerid, playersPos[0], playersPos[1], playersPos[2]);
  648. SetPlayerCameraLookAt(svCheats_giveplayerid, playersPos[0], playersPos[1], playersPos[2]);
  649. SetPlayerCameraPos(svCheats_giveplayerid, playersPos[0], playersPos[1], playersPos[2] + 5);
  650. for(new i = 0; i < 3; i++)
  651. {
  652. svCheats_HH[svCheats_giveplayerid][svOldPlayerPos][i] = playersPos[i];
  653. }
  654. GetPlayerFacingAngle(svCheats_giveplayerid, svCheats_HH[svCheats_giveplayerid][svOldPlayerPos][3]);
  655. svCheats_HH[svCheats_giveplayerid][svInterior] = GetPlayerInterior(svCheats_giveplayerid);
  656. svCheats_HH[svCheats_giveplayerid][svVirtualWorld] = GetPlayerVirtualWorld(svCheats_giveplayerid);
  657. if(IsPlayerInAnyVehicle(svCheats_giveplayerid))
  658. {
  659. svCheats_HH[svCheats_giveplayerid][svInVehicle] = true;
  660. svCheats_HH[svCheats_giveplayerid][svVehicleID] = GetPlayerVehicleID(svCheats_giveplayerid);
  661. svCheats_HH[svCheats_giveplayerid][svVehicleSeat] = GetPlayerVehicleSeat(svCheats_giveplayerid);
  662. }
  663. else
  664. {
  665. svCheats_HH[svCheats_giveplayerid][svInVehicle] = false;
  666. }
  667. GetPlayerHealth(svCheats_giveplayerid, svCheats_HH[svCheats_giveplayerid][svHealth]);
  668. GetPlayerArmour(svCheats_giveplayerid, svCheats_HH[svCheats_giveplayerid][svArmor]);
  669. svCheats_HH[svCheats_giveplayerid][svCheckedBy] = playerid;
  670. SetPlayerInterior(svCheats_giveplayerid, 0);
  671. SetPlayerPos(svCheats_giveplayerid, 0.0, 0.0, 8.0);
  672. SetPlayerHealth(svCheats_giveplayerid, 100.0);
  673. SetPlayerArmour(svCheats_giveplayerid, 0.0);
  674. SetTimerEx("svCheats_HealthHackCheck", 1350 + GetPlayerPing(svCheats_giveplayerid), 0, "i", svCheats_giveplayerid);
  675. return 1;
  676. }
  677. #endif
  678. #if defined ACSTATS_USED
  679. COMMAND:acstats(playerid, params[])
  680. {
  681. new string[50];
  682. format(string, sizeof(string), "(svCheats) Cheaters Detected: %d", svCheats_AmountDetected);
  683. SendClientMessage(playerid, -1, string);
  684. return 1;
  685. }
  686. #endif
  687. #else
  688. hook OnPlayerCommandText(playerid, cmdtext[])
  689. {
  690. #if defined CHATSPAM_OFF
  691. if(svCheats_SecurityLevel[playerid] < CHATSPAM_OFF || CHATSPAM_OFF == -1)
  692. {
  693. svCheats_SpamCounters[playerid]++;
  694. if(svCheats_SpamCounters[playerid] == CHATSPAM_LINES)
  695. {
  696. svCheats_SpamCounters[playerid] = 0;
  697. svCheats_CallDetection(playerid, CHEAT_CHATSPAM);
  698. svCheats_AmountDetected++;
  699. return 0;
  700. }
  701. }
  702. #endif
  703. #if defined HH_USED
  704. new svCheats_cmd[5];
  705. sscanf(cmdtext, "s[5]", svCheats_cmd);
  706. if(strcmp(svCheats_cmd, "/hh", true) == 0)
  707. {
  708. if(svCheats_SecurityLevel[playerid] < HH_USED)
  709. {
  710. return SendClientMessage(playerid, -1, "You are not authorized to use this command.");
  711. }
  712. new svCheats_giveplayerid;
  713. if(sscanf(cmdtext, "{s[5]}u", svCheats_giveplayerid))
  714. {
  715. return SendClientMessage(playerid, -1, "USAGE: /hh [player]");
  716. }
  717. if(svCheats_ReportedTabbed[svCheats_giveplayerid] == true)
  718. {
  719. return SendClientMessage(playerid, -1, "You may not health hack check tabbed players.");
  720. }
  721. if(svCheats_HH[svCheats_giveplayerid][svCheckedBy] != INVALID_PLAYER_ID)
  722. {
  723. return SendClientMessage(playerid, -1, "That player is already being checked for health hacks.");
  724. }
  725. new string[128], playersName[MAX_PLAYER_NAME], Float: playersPos[3];
  726. GetPlayerName(svCheats_giveplayerid, playersName, sizeof(playersName));
  727. format(string, sizeof(string), "Checking %s for health hacks...", playersName);
  728. SendClientMessage(playerid, -1, string);
  729. GetPlayerPos(svCheats_giveplayerid, playersPos[0], playersPos[1], playersPos[2]);
  730. SetPlayerCameraLookAt(svCheats_giveplayerid, playersPos[0], playersPos[1], playersPos[2]);
  731. SetPlayerCameraPos(svCheats_giveplayerid, playersPos[0], playersPos[1], playersPos[2] + 5);
  732. for(new i = 0; i < 3; i++)
  733. {
  734. svCheats_HH[svCheats_giveplayerid][svOldPlayerPos][i] = playersPos[i];
  735. }
  736. GetPlayerFacingAngle(svCheats_giveplayerid, svCheats_HH[svCheats_giveplayerid][svOldPlayerPos][3]);
  737. svCheats_HH[svCheats_giveplayerid][svInterior] = GetPlayerInterior(svCheats_giveplayerid);
  738. svCheats_HH[svCheats_giveplayerid][svVirtualWorld] = GetPlayerVirtualWorld(svCheats_giveplayerid);
  739. if(IsPlayerInAnyVehicle(svCheats_giveplayerid))
  740. {
  741. svCheats_HH[svCheats_giveplayerid][svInVehicle] = true;
  742. svCheats_HH[svCheats_giveplayerid][svVehicleID] = GetPlayerVehicleID(svCheats_giveplayerid);
  743. svCheats_HH[svCheats_giveplayerid][svVehicleSeat] = GetPlayerVehicleSeat(svCheats_giveplayerid);
  744. }
  745. else
  746. {
  747. svCheats_HH[svCheats_giveplayerid][svInVehicle] = false;
  748. }
  749. GetPlayerHealth(svCheats_giveplayerid, svCheats_HH[svCheats_giveplayerid][svHealth]);
  750. GetPlayerArmour(svCheats_giveplayerid, svCheats_HH[svCheats_giveplayerid][svArmor]);
  751. svCheats_HH[svCheats_giveplayerid][svCheckedBy] = playerid;
  752. SetPlayerInterior(svCheats_giveplayerid, 0);
  753. SetPlayerPos(svCheats_giveplayerid, 0.0, 0.0, 8.0);
  754. SetPlayerHealth(svCheats_giveplayerid, 100.0);
  755. SetPlayerArmour(svCheats_giveplayerid, 0.0);
  756. SetTimerEx("svCheats_HealthHackCheck", 1350 + GetPlayerPing(svCheats_giveplayerid), 0, "i", svCheats_giveplayerid);
  757. return 1;
  758. }
  759. #endif
  760. #if defined ACSTATS_USED
  761. if(strcmp(cmdtext, "/acstats", true) == 0)
  762. {
  763. new string[50];
  764. format(string, sizeof(string), "(svCheats) Cheaters Detected: %d", svCheats_AmountDetected);
  765. SendClientMessage(playerid, -1, string);
  766. return 1;
  767. }
  768. #endif
  769. return 0;
  770. }
  771. #endif
  772. hook OnPlayerTakeDamage(playerid, issuerid, Float: amount, weaponid)
  773. {
  774. if(issuerid == INVALID_PLAYER_ID)
  775. {
  776. if(svCheats_HH[playerid][svCheckedBy] != INVALID_PLAYER_ID)
  777. {
  778. new string[128], playersName[MAX_PLAYER_NAME], giveplayerid = svCheats_HH[playerid][svCheckedBy];
  779. GetPlayerName(playerid, playersName, sizeof(playersName));
  780. format(string, sizeof(string), "The health hack check on %s has been finished and the result is {F81414}negative{FFFFFF}.", playersName);
  781. SendClientMessage(giveplayerid, -1, string);
  782. svCheats_HH[playerid][svCheckedBy] = INVALID_PLAYER_ID;
  783. SetPlayerVirtualWorld(playerid, svCheats_HH[playerid][svVirtualWorld]);
  784. SetPlayerInterior(playerid, svCheats_HH[playerid][svInterior]);
  785. SetPlayerPos(playerid, svCheats_HH[playerid][svOldPlayerPos][0], svCheats_HH[playerid][svOldPlayerPos][1], svCheats_HH[playerid][svOldPlayerPos][2]);
  786. SetPlayerFacingAngle(playerid, svCheats_HH[playerid][svOldPlayerPos][3]);
  787. if(svCheats_HH[playerid][svInVehicle] == true)
  788. {
  789. PutPlayerInVehicle(playerid, svCheats_HH[playerid][svVehicleID], svCheats_HH[playerid][svVehicleSeat]);
  790. }
  791. SetPlayerHealth(playerid, svCheats_HH[playerid][svHealth]);
  792. SetPlayerArmour(playerid, svCheats_HH[playerid][svArmor]);
  793. SetCameraBehindPlayer(playerid);
  794. }
  795. }
  796. else
  797. {
  798. #if defined CARRAM_OFF
  799. if(svCheats_SecurityLevel[playerid] < CARRAM_OFF || CARRAM_OFF == -1)
  800. {
  801. if(weaponid == 49)
  802. {
  803. svCheats_CallDetection(playerid, CHEAT_CARRAM);
  804. }
  805. }
  806. #endif
  807. #if defined HELIBLADE_OFF
  808. if(svCheats_SecurityLevel[playerid] < HELIBLADE_OFF || HELIBLADE_OFF == -1)
  809. {
  810. if(weaponid == 50)
  811. {
  812. svCheats_CallDetection(playerid, CHEAT_HELIBLADE);
  813. }
  814. }
  815. #endif
  816. }
  817. #if defined HEALTH_HACK
  818. if(!svCheats_PlayerArmor[playerid] || issuerid == INVALID_PLAYER_ID)
  819. {
  820. svCheats_PlayerHealth[playerid] -= amount;
  821. }
  822. else
  823. {
  824. if(svCheats_PlayerArmor[playerid] - amount >= 0)
  825. {
  826. svCheats_PlayerArmor[playerid] -= amount;
  827. }
  828. else
  829. {
  830. svCheats_PlayerHealth[playerid] -= (amount - svCheats_PlayerArmor[playerid]);
  831. svCheats_PlayerArmor[playerid] = 0;
  832. }
  833. }
  834. #endif
  835. return CallRemoteFunction("svCheats_OnPlayerTakeDamage", "ddfd", playerid, issuerid, amount, weaponid);
  836. }
  837. #if defined TELEPORT_HACK
  838. hook OnPlayerClickMap(playerid, Float:fX, Float:fY, Float:fZ)
  839. {
  840. if(svCheats_SecurityLevel[playerid] < TELEPORT_HACK || TELEPORT_HACK == -1)
  841. {
  842. if(!IsPlayerInRangeOfPoint(playerid, 10.0, svCheats_oldPos[playerid][0], svCheats_oldPos[playerid][1], svCheats_oldPos[playerid][2]))
  843. {
  844. if(IsPlayerInRangeOfPoint(playerid, 10.0, fX, fY, fZ))
  845. {
  846. svCheats_CallDetection(playerid, CHEAT_TELEPORT_HACK);
  847. }
  848. }
  849. }
  850. return 1;
  851. }
  852. #endif
  853. hook OnVehicleMod(playerid, vehicleid, componentid)
  854. {
  855. #if defined VEHMOD_HACK
  856. if(svCheats_SecurityLevel[playerid] < VEHMOD_HACK || VEHMOD_HACK == -1)
  857. {
  858. if(!GetPlayerInterior(playerid))
  859. {
  860. svCheats_CallDetection(playerid, CHEAT_VEHMOD);
  861. }
  862. }
  863. #endif
  864. #if defined INVALIDMOD_HACK
  865. if(!svCheats_IsAllowedCarMod(GetVehicleModel(vehicleid), componentid))
  866. {
  867. svCheats_CallDetection(playerid, CHEAT_INVALIDMOD);
  868. }
  869. #endif
  870. return 1;
  871. }
  872. #else
  873. #if defined FILTERSCRIPT
  874. forward svCheats_OnFilterScriptInit();
  875. public OnFilterScriptInit()
  876. {
  877. new File: svCheats_Stats;
  878. if(!fexist("svCheats_Stats.txt"))
  879. {
  880. svCheats_Stats = fopen("svCheats_Stats.txt", io_append);
  881. fwrite(svCheats_Stats, "0");
  882. }
  883. else
  884. {
  885. new amountDetected[5];
  886. svCheats_Stats = fopen("svCheats_Stats.txt", io_read);
  887. fread(svCheats_Stats, amountDetected);
  888. svCheats_AmountDetected = strval(amountDetected);
  889. }
  890. fclose(svCheats_Stats);
  891. SetTimer("svCheats_Detector", TIMER_TIME, 1);
  892. return CallRemoteFunction("svCheats_OnFilterScriptInit", "");
  893. }
  894. #if defined _ALS_OnFilterScriptInit
  895. #undef OnFilterScriptInit
  896. #else
  897. #define _ALS_OnFilterScriptInit
  898. #endif
  899. #define OnFilterScriptInit svCheats_OnFilterScriptInit
  900. forward svCheats_OnFilterScriptExit();
  901. public OnFilterScriptExit()
  902. {
  903. new amountDetected[5], File: svCheats_Stats = fopen("svCheats_Stats.txt", io_write);
  904. format(amountDetected, sizeof(amountDetected), "%d", svCheats_AmountDetected);
  905. fwrite(svCheats_Stats, amountDetected);
  906. fclose(svCheats_Stats);
  907. return CallRemoteFunction("svCheats_OnFilterScriptExit", "");
  908. }
  909. #if defined _ALS_OnFilterScriptExit
  910. #undef OnFilterScriptExit
  911. #else
  912. #define _ALS_OnFilterScriptExit
  913. #endif
  914. #define OnFilterScriptExit svCheats_OnFilterScriptExit
  915. #else
  916. forward svCheats_OnGameModeInit();
  917. public OnGameModeInit()
  918. {
  919. new File: svCheats_Stats;
  920. if(!fexist("svCheats_Stats.txt"))
  921. {
  922. svCheats_Stats = fopen("svCheats_Stats.txt", io_append);
  923. fwrite(svCheats_Stats, "0");
  924. }
  925. else
  926. {
  927. new amountDetected[5];
  928. svCheats_Stats = fopen("svCheats_Stats.txt", io_read);
  929. fread(svCheats_Stats, amountDetected);
  930. svCheats_AmountDetected = strval(amountDetected);
  931. }
  932. fclose(svCheats_Stats);
  933. SetTimer("svCheats_Detector", TIMER_TIME, 1);
  934. return CallRemoteFunction("svCheats_OnGameModeInit", "");
  935. }
  936. #if defined _ALS_OnGameModeInit
  937. #undef OnGameModeInit
  938. #else
  939. #define _ALS_OnGameModeInit
  940. #endif
  941. #define OnGameModeInit svCheats_OnGameModeInit
  942. forward svCheats_OnGameModeExit();
  943. public OnGameModeExit()
  944. {
  945. new amountDetected[5], File: svCheats_Stats = fopen("svCheats_Stats.txt", io_write);
  946. format(amountDetected, sizeof(amountDetected), "%d", svCheats_AmountDetected);
  947. fwrite(svCheats_Stats, amountDetected);
  948. fclose(svCheats_Stats);
  949. return CallRemoteFunction("svCheats_OnGameModeExit", "");
  950. }
  951. #if defined _ALS_OnGameModeExit
  952. #undef OnGameModeExit
  953. #else
  954. #define _ALS_OnGameModeExit
  955. #endif
  956. #define OnGameModeExit svCheats_OnGameModeExit
  957. #endif
  958. forward svCheats_OnPlayerDeath(playerid, killerid, reason);
  959. public OnPlayerDeath(playerid, killerid, reason)
  960. {
  961. svCheats_TabbedDisabled[playerid] = true;
  962. svCheats_HealthHackDisabled[playerid] = true;
  963. if(killerid == INVALID_PLAYER_ID)
  964. {
  965. if(svCheats_PossibleNinjaJack[playerid] != INVALID_PLAYER_ID)
  966. {
  967. svCheats_CallDetection(svCheats_PossibleNinjaJack[playerid], CHEAT_NINJAJACK);
  968. svCheats_PossibleNinjaJack[playerid] = INVALID_PLAYER_ID;
  969. }
  970. }
  971. else
  972. {
  973. #if defined FAKEKILL_HACK
  974. if(svCheats_SecurityLevel[killerid] < FAKEKILL_HACK || FAKEKILL_HACK == -1)
  975. {
  976. if(!IsPlayerStreamedInForPlayer(playerid, killerid))
  977. {
  978. svCheats_CallDetection(killerid, CHEAT_FAKEKILL);
  979. }
  980. }
  981. #endif
  982. #if defined SPAMKILL_CHEAT
  983. if(svCheats_SecurityLevel[killerid] < SPAMKILL_CHEAT || SPAMKILL_CHEAT == -1)
  984. {
  985. svCheats_KillAmount[killerid]++;
  986. if(svCheats_KillAmount[killerid] >= DETECT_KILLS)
  987. {
  988. svCheats_CallDetection(killerid, CHEAT_SPAMKILL);
  989. }
  990. SetTimerEx("svCheats_KillAmountDown", DETECT_SECONDS * 1000, 0, "i", killerid);
  991. }
  992. #endif
  993. }
  994. return CallRemoteFunction("svCheats_OnPlayerDeath", "ddd", playerid, killerid, reason);
  995. }
  996. #if defined _ALS_OnPlayerDeath
  997. #undef OnPlayerDeath
  998. #else
  999. #define _ALS_OnPlayerDeath
  1000. #endif
  1001. #define OnPlayerDeath svCheats_OnPlayerDeath
  1002. forward svCheats_OnPlayerConnect(playerid);
  1003. public OnPlayerConnect(playerid)
  1004. {
  1005. svCheats_SecurityLevel[playerid] = 0;
  1006. #if defined FAKEPLAYER_HACK
  1007. new playersIP[17];
  1008. GetPlayerIp(playerid, playersIP, 17);
  1009. if(strcmp(playersIP, "255.255.255.255") == 0 || (strcmp(SERVER_IP, "127.0.0.1") && strcmp(playersIP, "127.0.0.1") == 0 && !IsPlayerNPC(playerid)))
  1010. {
  1011. svCheats_CallDetection(playerid, CHEAT_FAKEPLAYER);
  1012. }
  1013. svCheats_log_new_join(playerid);
  1014. if(svCheats_NJTR(playerid, 5000) >= 3)
  1015. {
  1016. svCheats_CallDetection(playerid, CHEAT_FAKEPLAYER);
  1017. }
  1018. #endif
  1019. #if defined JETPACK_HACK
  1020. svCheats_GrantedJetpack[playerid] = false;
  1021. #endif
  1022. #if defined BUNNYHOP_OFF
  1023. svCheats_JumpCounters[playerid] = 0;
  1024. svCheats_JumpCounterTimer[playerid] = -1;
  1025. #endif
  1026. #if defined CHATSPAM_OFF
  1027. svCheats_SpamCounters[playerid] = 0;
  1028. #endif
  1029. #if defined WEAPON_SPAWN
  1030. for(new i = 0; i < 13; i++)
  1031. {
  1032. svCheats_PlayerWeapons[playerid][i] = 0;
  1033. }
  1034. #endif
  1035. #if defined AFK_DISABLED
  1036. svCheats_AFKTime[playerid] = 0;
  1037. svCheats_LastAFKUpdate[playerid] = GetTickCount();
  1038. svCheats_ReportedAFK[playerid] = false;
  1039. #endif
  1040. #if defined TABBED_DISABLED
  1041. svCheats_TabbedUpdates[playerid] = 0;
  1042. svCheats_ReportedTabbed[playerid] = false;
  1043. svCheats_TabbedDisabled[playerid] = true;
  1044. #endif
  1045. svCheats_HH[playerid][svCheckedBy] = INVALID_PLAYER_ID;
  1046. #if defined NINJAJACK_CHEAT
  1047. svCheats_PossibleNinjaJack[playerid] = INVALID_PLAYER_ID;
  1048. #endif
  1049. #if defined GOIN_LOCKED_VEH
  1050. svCheats_SkipPlayerLVCheck[playerid] = false;
  1051. #endif
  1052. #if defined SPAMKLL_CHEAT
  1053. svCheats_KillAmount[playerid] = 0;
  1054. #endif
  1055. svCheats_Spawned[playerid] = false;
  1056. return CallRemoteFunction("svCheats_OnPlayerConnect", "d", playerid);
  1057. }
  1058. #if defined _ALS_OnPlayerConnect
  1059. #undef OnPlayerConnect
  1060. #else
  1061. #define _ALS_OnPlayerConnect
  1062. #endif
  1063. #define OnPlayerConnect svCheats_OnPlayerConnect
  1064. forward svCheats_OnPlayerKeyStateChange(playerid, newkeys, oldkeys);
  1065. public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
  1066. {
  1067. #if defined BUNNYHOP_OFF
  1068. if(newkeys & KEY_JUMP)
  1069. {
  1070. if(svCheats_SecurityLevel[playerid] < BUNNYHOP_OFF || BUNNYHOP_OFF == -1)
  1071. {
  1072. new ai = GetPlayerAnimationIndex(playerid);
  1073. if(ai != 1061 && ai != 1062 && ai != 1064 && ai != 1066 && ai != 1195 && ai != 1997 && ai != 1538 || ai != 1538 || ai != 1543)
  1074. {
  1075. svCheats_JumpCounters[playerid]++;
  1076. if(svCheats_JumpCounterTimer[playerid] > -1)
  1077. {
  1078. KillTimer(svCheats_JumpCounterTimer[playerid]);
  1079. svCheats_JumpCounterTimer[playerid] = -1;
  1080. }
  1081. if(svCheats_JumpCounters[playerid] == BUNNYHOP_AMOUNT)
  1082. {
  1083. svCheats_JumpCounters[playerid] = 0;
  1084. svCheats_CallDetection(playerid, CHEAT_BUNNYHOP);
  1085. svCheats_AmountDetected++;
  1086. }
  1087. else
  1088. {
  1089. svCheats_JumpCounterTimer[playerid] = SetTimerEx("svCheats_JumpCountersDown", 2000, 0, "i", playerid);
  1090. }
  1091. }
  1092. }
  1093. }
  1094. #endif
  1095. #if defined WEAPON_SPAWN
  1096. if(newkeys & KEY_FIRE)
  1097. {
  1098. if(svCheats_SecurityLevel[playerid] < WEAPON_SPAWN || WEAPON_SPAWN == -1)
  1099. {
  1100. new w = GetPlayerWeapon(playerid);
  1101. if(w > 0 && w < 46)
  1102. {
  1103. if(svCheats_PlayerWeapons[playerid][svCheats_GetWeaponSlot(w)] != w)
  1104. {
  1105. svCheats_CallDetection(playerid, CHEAT_WEAPON_SPAWN);
  1106. svCheats_AmountDetected++;
  1107. }
  1108. }
  1109. }
  1110. }
  1111. #endif
  1112. return CallRemoteFunction("svCheats_OnPlayerKeyStateChange", "ddd", playerid, newkeys, oldkeys);
  1113. }
  1114. #if defined _ALS_OnPlayerKeyStateChange
  1115. #undef OnPlayerKeyStateChange
  1116. #else
  1117. #define _ALS_OnPlayerKeyStateChange
  1118. #endif
  1119. #define OnPlayerKeyStateChange svCheats_OnPlayerKeyStateChange
  1120. forward svCheats_OnPlayerText(playerid, text[]);
  1121. public OnPlayerText(playerid, text[])
  1122. {
  1123. #if defined SWEARING_OFF
  1124. if(svCheats_SecurityLevel[playerid] < SWEARING_OFF || SWEARING_OFF == -1)
  1125. {
  1126. for(new c = 0; c < sizeof(CurseWords); c++)
  1127. {
  1128. if(strfind(text, CurseWords[c], true) > -1)
  1129. {
  1130. svCheats_CallDetection(playerid, CHEAT_SWEARING);
  1131. svCheats_AmountDetected++;
  1132. return 0;
  1133. }
  1134. }
  1135. }
  1136. #endif
  1137. #if defined CHATSPAM_OFF
  1138. if(svCheats_SecurityLevel[playerid] < CHATSPAM_OFF || CHATSPAM_OFF == -1)
  1139. {
  1140. svCheats_SpamCounters[playerid]++;
  1141. if(svCheats_SpamCounters[playerid] == CHATSPAM_LINES)
  1142. {
  1143. svCheats_SpamCounters[playerid] = 0;
  1144. svCheats_CallDetection(playerid, CHEAT_CHATSPAM);
  1145. svCheats_AmountDetected++;
  1146. return 0;
  1147. }
  1148. }
  1149. #endif
  1150. #if defined AFK_DISABLED
  1151. if(svCheats_SecurityLevel[playerid] < AFK_DISABLED || AFK_DISABLED == -1)
  1152. {
  1153. svCheats_AFKTime[playerid] = 0;
  1154. svCheats_ReportedAFK[playerid] = false;
  1155. }
  1156. #endif
  1157. #if defined SERVERAD_CHEAT
  1158. if(svCheats_SecurityLevel[playerid] < SERVERAD_CHEAT || SERVERAD_CHEAT == -1)
  1159. {
  1160. new dotCount, numCount;
  1161. for(new i = 0; i < strlen(text); i++)
  1162. {
  1163. if(text[i] == '.')
  1164. {
  1165. dotCount++;
  1166. }
  1167. else if(text[i] >= '0' && text[i] <= '9')
  1168. {
  1169. numCount++;
  1170. }
  1171. }
  1172. if(dotCount >= 3 && (numCount >= 7 || strfind(text, "samp.") > -1))
  1173. {
  1174. if(strfind(text, SERVER_IP) == -1 && strfind(text, SERVER_DOMAIN, true) == -1)
  1175. {
  1176. svCheats_CallDetection(playerid, CHEAT_SERVERAD);
  1177. }
  1178. }
  1179. }
  1180. #endif
  1181. return CallRemoteFunction("svCheats_OnPlayerText", "ds", playerid, text);
  1182. }
  1183. #if defined _ALS_OnPlayerText
  1184. #undef OnPlayerText
  1185. #else
  1186. #define _ALS_OnPlayerText
  1187. #endif
  1188. #define OnPlayerText svCheats_OnPlayerText
  1189. #if defined VEHICLE_REPAIR
  1190. forward svCheats_OnVehicleSpawn(vehicleid);
  1191. public OnVehicleSpawn(vehicleid)
  1192. {
  1193. svCheats_VehicleHealth[vehicleid] = 1000.0;
  1194. return CallRemoteFunction("svCheats_OnVehicleSpawn", "d", vehicleid);
  1195. }
  1196. #if defined _ALS_OnVehicleSpawn
  1197. #undef OnVehicleSpawn
  1198. #else
  1199. #define _ALS_OnVehicleSpawn
  1200. #endif
  1201. #define OnVehicleSpawn svCheats_OnVehicleSpawn
  1202. forward svCheats_OnPlayerStateChange(playerid, newstate, oldstate);
  1203. public OnPlayerStateChange(playerid, newstate, oldstate)
  1204. {
  1205. if(newstate == PLAYER_STATE_DRIVER)
  1206. {
  1207. #if defined VEHICLE_REPAIR
  1208. new vehicleid = GetPlayerVehicleID(playerid);
  1209. GetVehicleHealth(vehicleid, svCheats_VehicleHealth[vehicleid]);
  1210. #endif
  1211. #if defined NINJAJACK_OFF
  1212. #if defined USE_FOREACH
  1213. foreach(new i: Player)
  1214. {
  1215. if(svCheats_PossibleNinjaJack[i] == playerid)
  1216. {
  1217. svCheats_PossibleNinjaJack[i] = INVALID_PLAYER_ID;
  1218. break;
  1219. }
  1220. }
  1221. #else
  1222. for(new i = 0; i < MAX_PLAYERS; i++)
  1223. {
  1224. if(IsPlayerConnected(i))
  1225. {
  1226. if(svCheats_PossibleNinjaJack[i] == playerid)
  1227. {
  1228. svCheats_PossibleNinjaJack[i] = INVALID_PLAYER_ID;
  1229. break;
  1230. }
  1231. }
  1232. }
  1233. #endif
  1234. #endif
  1235. }
  1236. if(newstate == PLAYER_STATE_DRIVER || newstate == PLAYER_STATE_PASSENGER)
  1237. {
  1238. #if defined GOIN_LOCKED_VEH
  1239. if(svCheats_SecurityLevel[playerid] < GOIN_LOCKED_VEH || GOIN_LOCKED_VEH == -1)
  1240. {
  1241. if(svCheats_SkipPlayerLVCheck[playerid] == false)
  1242. {
  1243. new engine2, lights2, alarm2, doors2, bonnet2, boot2, objective2;
  1244. GetVehicleParamsEx(GetPlayerVehicleID(playerid), engine2, lights2, alarm2, doors2, bonnet2, boot2, objective2);
  1245. if(doors2)
  1246. {
  1247. svCheats_CallDetection(playerid, CHEAT_LOCKEDVEH);
  1248. }
  1249. }
  1250. else
  1251. {
  1252. svCheats_SkipPlayerLVCheck[playerid] = false;
  1253. }
  1254. }
  1255. #endif
  1256. }
  1257. return CallRemoteFunction("svCheats_OnPlayerStateChange", "ddd", playerid, newstate, oldstate);
  1258. }
  1259. #if defined _ALS_OnPlayerStateChange
  1260. #undef OnPlayerStateChange
  1261. #else
  1262. #define _ALS_OnPlayerStateChange
  1263. #endif
  1264. #define OnPlayerStateChange svCheats_OnPlayerStateChange
  1265. #endif
  1266. #if defined CHEAT_TABBED
  1267. forward svCheats_OnPlayerUpdate(playerid);
  1268. public OnPlayerUpdate(playerid)
  1269. {
  1270. svCheats_TabbedUpdates[playerid] = 0;
  1271. svCheats_ReportedTabbed[playerid] = false;
  1272. #if defined CHEAT_REMOTEJACK
  1273. new playersVehicle = GetPlayerVehicleID(playerid);
  1274. if(!IsPlayerInAnyVehicle(playerid))
  1275. {
  1276. GetPlayerPos(playerid, svCheats_RemoteJack[playerid][svLofPos][0], svCheats_RemoteJack[playerid][svLofPos][1], svCheats_RemoteJack[playerid][svLofPos][2]);
  1277. }
  1278. if((playersVehicle != svCheats_RemoteJack[playerid][svLastJackState]) && playersVehicle != 0 && GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
  1279. {
  1280. new Float: playersPos[3], Float: distancejack = svCheats_GetDistance(playersPos[0], playersPos[1], playersPos[2], svCheats_RemoteJack[playerid][svLofPos][0], svCheats_RemoteJack[playerid][svLofPos][1], svCheats_RemoteJack[playerid][svLofPos][2]), thiscaride = GetVehicleModel(playersVehicle), Float: distanceth = 10;
  1281. GetVehiclePos(playersVehicle, playersPos[0], playersPos[1], playersPos[2]);
  1282. if(thiscaride == 577 || thiscaride == 592)
  1283. {
  1284. distanceth = 25.0;
  1285. }
  1286. if(distancejack > distanceth)
  1287. {
  1288. svCheats_CallDetection(playerid, CHEAT_REMOTEJACK);
  1289. }
  1290. GetPlayerPos(playerid, svCheats_RemoteJack[playerid][svLofPos][0], svCheats_RemoteJack[playerid][svLofPos][1], svCheats_RemoteJack[playerid][svLofPos][2]);
  1291. svCheats_RemoteJack[playerid][svLastJackState] = playersVehicle;
  1292. }
  1293. #endif
  1294. return CallRemoteFunction("svCheats_OnPlayerUpdate", "d", playerid);
  1295. }
  1296. #if defined _ALS_OnPlayerUpdate
  1297. #undef OnPlayerUpdate
  1298. #else
  1299. #define _ALS_OnPlayerUpdate
  1300. #endif
  1301. #define OnPlayerUpdate svCheats_OnPlayerUpdate
  1302. forward svCheats_OnPlayerSpawn(playerid);
  1303. public OnPlayerSpawn(playerid)
  1304. {
  1305. svCheats_TabbedDisabled[playerid] = false;
  1306. svCheats_Spawned[playerid] = true;
  1307. #if defined HEALTH_HACK
  1308. svCheats_PlayerHealth[playerid] = 1000;
  1309. svCheats_PlayerArmor[playerid] = 0;
  1310. svCheats_HealthHackDisabled[playerid] = false;
  1311. #endif
  1312. return CallRemoteFunction("svCheats_OnPlayerSpawn", "d", playerid);
  1313. }
  1314. #if defined _ALS_OnPlayerSpawn
  1315. #undef OnPlayerSpawn
  1316. #else
  1317. #define _ALS_OnPlayerSpawn
  1318. #endif
  1319. #define OnPlayerSpawn svCheats_OnPlayerSpawn
  1320. forward svCheats_OnPlayerEnterVehicle(playerid, vehicleid, ispassenger);
  1321. public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
  1322. {
  1323. #if defined DRVBY_RESTRICT
  1324. if(svCheats_SecurityLevel[playerid] < DRVBY_RESTRICT || DRVBY_RESTRICT == -1)
  1325. {
  1326. if(ispassenger)
  1327. {
  1328. new w = GetPlayerWeapon(playerid);
  1329. if(w > 0)
  1330. {
  1331. new allowedWeapons[10], bool: allowed;
  1332. sscanf(DRIVEBY_WEAPONS, "a<i>[10]", allowedWeapons);
  1333. for(new i = 0; i < sizeof(allowedWeapons); i++)
  1334. {
  1335. if(w == allowedWeapons[i])
  1336. {
  1337. allowed = true;
  1338. break;
  1339. }
  1340. }
  1341. if(allowed == false)
  1342. {
  1343. SetPlayerArmedWeapon(playerid, 0);
  1344. svCheats_CallDetection(playerid, CHEAT_DRIVEBY);
  1345. svCheats_AmountDetected++;
  1346. }
  1347. }
  1348. }
  1349. }
  1350. #endif
  1351. #if defined DDRIVEBY_OFF
  1352. if(svCheats_SecurityLevel[playerid] < DDRIVEBY_OFF || DDRIVEBY_OFF == -1)
  1353. {
  1354. if(!ispassenger)
  1355. {
  1356. new w = GetPlayerWeapon(playerid);
  1357. if(w > 0)
  1358. {
  1359. SetPlayerArmedWeapon(playerid, 0);
  1360. svCheats_CallDetection(playerid, CHEAT_DDRIVEBY);
  1361. svCheats_AmountDetected++;
  1362. }
  1363. }
  1364. }
  1365. #endif
  1366. #if defined NINJAJACK_CHEAT
  1367. if(svCheats_SecurityLevel[playerid] < NINJAJACK_CHEAT || NINJAJACK_CHEAT == -1)
  1368. {
  1369. if(!ispassenger)
  1370. {
  1371. #if defined USE_FOREACH
  1372. foreach(new i: Player)
  1373. {
  1374. if(GetPlayerVehicleID(i) == vehicleid && GetPlayerState(i) == PLAYER_STATE_DRIVER)
  1375. {
  1376. svCheats_PossibleNinjaJack[i] = playerid;
  1377. break;
  1378. }
  1379. }
  1380. #else
  1381. for(new i = 0; i < MAX_PLAYERS; i++)
  1382. {
  1383. if(IsPlayerConnected(i))
  1384. {
  1385. if(GetPlayerVehicleID(i) == vehicleid && GetPlayerState(i) == PLAYER_STATE_DRIVER)
  1386. {
  1387. svCheats_PossibleNinjaJack[i] = playerid;
  1388. break;
  1389. }
  1390. }
  1391. }
  1392. #endif
  1393. }
  1394. }
  1395. #endif
  1396. #if defined GOIN_LOCKED_VEH
  1397. svCheats_SkipPlayerLVCheck[playerid] = true;
  1398. #endif
  1399. return CallRemoteFunction("svCheats_OnPlayerEnterVehicle", "ddd", playerid, vehicleid, ispassenger);
  1400. }
  1401. #if defined _ALS_OnPlayerEnterVehicle
  1402. #undef OnPlayerEnterVehicle
  1403. #else
  1404. #define _ALS_OnPlayerEnterVehicle
  1405. #endif
  1406. #define OnPlayerEnterVehicle svCheats_OnPlayerEnterVehicle
  1407. #if defined USE_ZCMD
  1408. #if defined HH_USED
  1409. COMMAND:hh(playerid, params[])
  1410. {
  1411. if(svCheats_SecurityLevel[playerid] < HH_USED)
  1412. {
  1413. return SendClientMessage(playerid, -1, "You are not authorized to use this command.");
  1414. }
  1415. new svCheats_giveplayerid;
  1416. if(sscanf(params, "u", svCheats_giveplayerid))
  1417. {
  1418. return SendClientMessage(playerid, -1, "USAGE: /hh [player]");
  1419. }
  1420. if(svCheats_ReportedTabbed[svCheats_giveplayerid] == true)
  1421. {
  1422. return SendClientMessage(playerid, -1, "You may not health hack check tabbed players.");
  1423. }
  1424. if(svCheats_HH[svCheats_giveplayerid][svCheckedBy] != INVALID_PLAYER_ID)
  1425. {
  1426. return SendClientMessage(playerid, -1, "That player is already being checked for health hacks.");
  1427. }
  1428. new string[128], playersName[MAX_PLAYER_NAME], Float: playersPos[3];
  1429. GetPlayerName(svCheats_giveplayerid, playersName, sizeof(playersName));
  1430. format(string, sizeof(string), "Checking %s for health hacks...", playersName);
  1431. SendClientMessage(playerid, -1, string);
  1432. GetPlayerPos(svCheats_giveplayerid, playersPos[0], playersPos[1], playersPos[2]);
  1433. SetPlayerCameraLookAt(svCheats_giveplayerid, playersPos[0], playersPos[1], playersPos[2]);
  1434. SetPlayerCameraPos(svCheats_giveplayerid, playersPos[0], playersPos[1], playersPos[2] + 5);
  1435. for(new i = 0; i < 3; i++)
  1436. {
  1437. svCheats_HH[svCheats_giveplayerid][svOldPlayerPos][i] = playersPos[i];
  1438. }
  1439. GetPlayerFacingAngle(svCheats_giveplayerid, svCheats_HH[svCheats_giveplayerid][svOldPlayerPos][3]);
  1440. svCheats_HH[svCheats_giveplayerid][svInterior] = GetPlayerInterior(svCheats_giveplayerid);
  1441. svCheats_HH[svCheats_giveplayerid][svVirtualWorld] = GetPlayerVirtualWorld(svCheats_giveplayerid);
  1442. if(IsPlayerInAnyVehicle(svCheats_giveplayerid))
  1443. {
  1444. svCheats_HH[svCheats_giveplayerid][svInVehicle] = true;
  1445. svCheats_HH[svCheats_giveplayerid][svVehicleID] = GetPlayerVehicleID(svCheats_giveplayerid);
  1446. svCheats_HH[svCheats_giveplayerid][svVehicleSeat] = GetPlayerVehicleSeat(svCheats_giveplayerid);
  1447. }
  1448. else
  1449. {
  1450. svCheats_HH[svCheats_giveplayerid][svInVehicle] = false;
  1451. }
  1452. GetPlayerHealth(svCheats_giveplayerid, svCheats_HH[svCheats_giveplayerid][svHealth]);
  1453. GetPlayerArmour(svCheats_giveplayerid, svCheats_HH[svCheats_giveplayerid][svArmor]);
  1454. svCheats_HH[svCheats_giveplayerid][svCheckedBy] = playerid;
  1455. SetPlayerInterior(svCheats_giveplayerid, 0);
  1456. SetPlayerPos(svCheats_giveplayerid, 0.0, 0.0, 8.0);
  1457. SetPlayerHealth(svCheats_giveplayerid, 100.0);
  1458. SetPlayerArmour(svCheats_giveplayerid, 0.0);
  1459. SetTimerEx("svCheats_HealthHackCheck", 1350 + GetPlayerPing(svCheats_giveplayerid), 0, "i", svCheats_giveplayerid);
  1460. return 1;
  1461. }
  1462. #endif
  1463. #if defined ACSTATS_USED
  1464. COMMAND:acstats(playerid, params[])
  1465. {
  1466. new string[50];
  1467. format(string, sizeof(string), "(svCheats) Cheaters Detected: %d", svCheats_AmountDetected);
  1468. SendClientMessage(playerid, -1, string);
  1469. return 1;
  1470. }
  1471. #endif
  1472. #else
  1473. forward svCheats_OnPlayerCommandText(playerid, cmdtext[]);
  1474. public OnPlayerCommandText(playerid, cmdtext[])
  1475. {
  1476. #if defined CHATSPAM_OFF
  1477. if(svCheats_SecurityLevel[playerid] < CHATSPAM_OFF || CHATSPAM_OFF == -1)
  1478. {
  1479. svCheats_SpamCounters[playerid]++;
  1480. if(svCheats_SpamCounters[playerid] == CHATSPAM_LINES)
  1481. {
  1482. svCheats_SpamCounters[playerid] = 0;
  1483. svCheats_CallDetection(playerid, CHEAT_CHATSPAM);
  1484. svCheats_AmountDetected++;
  1485. return 0;
  1486. }
  1487. }
  1488. #endif
  1489. #if defined HH_USED
  1490. new svCheats_cmd[5];
  1491. sscanf(cmdtext, "s[5]", svCheats_cmd);
  1492. if(strcmp(svCheats_cmd, "/hh", true) == 0)
  1493. {
  1494. if(svCheats_SecurityLevel[playerid] < HH_USED)
  1495. {
  1496. return SendClientMessage(playerid, -1, "You are not authorized to use this command.");
  1497. }
  1498. new svCheats_giveplayerid;
  1499. if(sscanf(cmdtext, "{s[5]}u", svCheats_giveplayeid))
  1500. {
  1501. return SendClientMessage(playerid, -1, "USAGE: /hh [player]");
  1502. }
  1503. if(svCheats_ReportedTabbed[svCheats_giveplayerid] == true)
  1504. {
  1505. return SendClientMessage(playerid, -1, "You may not health hack check tabbed players.");
  1506. }
  1507. if(svCheats_HH[svCheats_giveplayerid][svCheckedBy] != INVALID_PLAYER_ID)
  1508. {
  1509. return SendClientMessage(playerid, -1, "That player is already being checked for health hacks.");
  1510. }
  1511. new string[128], playersName[MAX_PLAYER_NAME], Float: playersPos[3];
  1512. GetPlayerName(svCheats_giveplayerid, playersName, sizeof(playersName));
  1513. format(string, sizeof(string), "Checking %s for health hacks...", playersName);
  1514. SendClientMessage(playerid, -1, string);
  1515. GetPlayerPos(svCheats_giveplayerid, playersPos[0], playersPos[1], playersPos[2]);
  1516. SetPlayerCameraLookAt(svCheats_giveplayerid, playersPos[0], playersPos[1], playersPos[2]);
  1517. SetPlayerCameraPos(svCheats_giveplayerid, playersPos[0], playersPos[1], playersPos[2] + 5);
  1518. for(new i = 0; i < 3; i++)
  1519. {
  1520. svCheats_HH[svCheats_giveplayerid][svOldPlayerPos][i] = playersPos[i];
  1521. }
  1522. GetPlayerFacingAngle(svCheats_giveplayerid, svCheats_HH[svCheats_giveplayerid][svOldPlayerPos][3]);
  1523. svCheats_HH[svCheats_giveplayerid][svInterior] = GetPlayerInterior(svCheats_giveplayerid);
  1524. svCheats_HH[svCheats_giveplayerid][svVirtualWorld] = GetPlayerVirtualWorld(svCheats_giveplayerid);
  1525. if(IsPlayerInAnyVehicle(svCheats_giveplayerid))
  1526. {
  1527. svCheats_HH[svCheats_giveplayerid][svInVehicle] = true;
  1528. svCheats_HH[svCheats_giveplayerid][svVehicleID] = GetPlayerVehicleID(svCheats_giveplayerid);
  1529. svCheats_HH[svCheats_giveplayerid][svVehicleSeat] = GetPlayerVehicleSeat(svCheats_giveplayerid);
  1530. }
  1531. else
  1532. {
  1533. svCheats_HH[svCheats_giveplayerid][svInVehicle] = false;
  1534. }
  1535. GetPlayerHealth(svCheats_giveplayerid, svCheats_HH[svCheats_giveplayerid][svHealth]);
  1536. GetPlayerArmour(svCheats_giveplayerid, svCheats_HH[svCheats_giveplayerid][svArmor]);
  1537. svCheats_HH[svCheats_giveplayerid][svCheckedBy] = playerid;
  1538. SetPlayerInterior(svCheats_giveplayerid, 0);
  1539. SetPlayerPos(svCheats_giveplayerid, 0.0, 0.0, 8.0);
  1540. SetPlayerHealth(svCheats_giveplayerid, 100.0);
  1541. SetPlayerArmour(svCheats_giveplayerid, 0.0);
  1542. SetTimerEx("svCheats_HealthHackCheck", 1350 + GetPlayerPing(svCheats_giveplayerid), 0, "i", svCheats_giveplayerid);
  1543. return 1;
  1544. }
  1545. #endif
  1546. #if defined ACSTATS_USED
  1547. if(strcmp(cmdtext, "/acstats", true) == 0)
  1548. {
  1549. new string[50];
  1550. format(string, sizeof(string), "(svCheats) Cheaters Detected: %d", svCheats_AmountDetected);
  1551. SendClientMessage(playerid, -1, string);
  1552. return 1;
  1553. }
  1554. #endif
  1555. return CallRemoteFunction("svCheats_OnPlayerCommandText", "ds", playerid, cmdtext);
  1556. }
  1557. #if defined _ALS_OnPlayerCommandText
  1558. #undef OnPlayerCommandText
  1559. #else
  1560. #define _ALS_OnPlayerCommandText
  1561. #endif
  1562. #define OnPlayerCommandText svCheats_OnPlayerCommandText
  1563. #endif
  1564. forward svCheats_OnPlayerTakeDamage(playerid, issuerid, Float: amount, weaponid);
  1565. public OnPlayerTakeDamage(playerid, issuerid, Float: amount, weaponid)
  1566. {
  1567. if(issuerid == INVALID_PLAYER_ID)
  1568. {
  1569. if(svCheats_HH[playerid][svCheckedBy] != INVALID_PLAYER_ID)
  1570. {
  1571. new string[128], playersName[MAX_PLAYER_NAME], giveplayerid = svCheats_HH[playerid][svCheckedBy];
  1572. GetPlayerName(playerid, playersName, sizeof(playersName));
  1573. format(string, sizeof(string), "The health hack check on %s has been finished and the result is {F81414}negative{FFFFFF}.", playersName);
  1574. SendClientMessage(giveplayerid, -1, string);
  1575. svCheats_HH[playerid][svCheckedBy] = INVALID_PLAYER_ID;
  1576. SetPlayerVirtualWorld(playerid, svCheats_HH[playerid][svVirtualWorld]);
  1577. SetPlayerInterior(playerid, svCheats_HH[playerid][svInterior]);
  1578. SetPlayerPos(playerid, svCheats_HH[playerid][svOldPlayerPos][0], svCheats_HH[playerid][svOldPlayerPos][1], svCheats_HH[playerid][svOldPlayerPos][2]);
  1579. SetPlayerFacingAngle(playerid, svCheats_HH[playerid][svOldPlayerPos][3]);
  1580. if(svCheats_HH[playerid][svInVehicle] == true)
  1581. {
  1582. PutPlayerInVehicle(playerid, svCheats_HH[playerid][svVehicleID], svCheats_HH[playerid][svVehicleSeat]);
  1583. }
  1584. SetPlayerHealth(playerid, svCheats_HH[playerid][svHealth]);
  1585. SetPlayerArmour(playerid, svCheats_HH[playerid][svArmor]);
  1586. SetCameraBehindPlayer(playerid);
  1587. }
  1588. }
  1589. else
  1590. {
  1591. #if defined CARRAM_OFF
  1592. if(svCheats_SecurityLevel[playerid] < CARRAM_OFF || CARRAM_OFF == -1)
  1593. {
  1594. if(weaponid == 49)
  1595. {
  1596. svCheats_CallDetection(playerid, CHEAT_CARRAM);
  1597. }
  1598. }
  1599. #endif
  1600. #if defined HELIBLADE_OFF
  1601. if(svCheats_SecurityLevel[playerid] < HELIBLADE_OFF || HELIBLADE_OFF == -1)
  1602. {
  1603. if(weaponid == 50)
  1604. {
  1605. svCheats_CallDetection(playerid, CHEAT_HELIBLADE);
  1606. }
  1607. }
  1608. #endif
  1609. }
  1610. #if defined HEALTH_HACK
  1611. if(!svCheats_PlayerArmor[playerid] || issuerid == INVALID_PLAYER_ID)
  1612. {
  1613. svCheats_PlayerHealth[playerid] -= amount;
  1614. }
  1615. else
  1616. {
  1617. if(svCheats_PlayerArmor[playerid] - amount >= 0)
  1618. {
  1619. svCheats_PlayerArmor[playerid] -= amount;
  1620. }
  1621. else
  1622. {
  1623. svCheats_PlayerHealth[playerid] -= (amount - svCheats_PlayerArmor[playerid]);
  1624. svCheats_PlayerArmor[playerid] = 0;
  1625. }
  1626. }
  1627. #endif
  1628. return CallRemoteFunction("svCheats_OnPlayerTakeDamage", "ddfd", playerid, issuerid, amount, weaponid);
  1629. }
  1630. #if defined _ALS_OnPlayerTakeDamage
  1631. #undef OnPlayerTakeDamage
  1632. #else
  1633. #define _ALS_OnPlayerTakeDamage
  1634. #endif
  1635. #define OnPlayerTakeDamage svCheats_OnPlayerTakeDamage
  1636. #if defined TELEPORT_HACK
  1637. forward svCheats_OnPlayerClickMap(playerid, Float: fX, Float: fY, Float: fZ);
  1638. public OnPlayerClickMap(playerid, Float:fX, Float:fY, Float:fZ)
  1639. {
  1640. if(svCheats_SecurityLevel[playerid] < TELEPORT_HACK || TELEPORT_HACK == -1)
  1641. {
  1642. if(!IsPlayerInRangeOfPoint(playerid, 10.0, svCheats_oldPos[playerid][0], svCheats_oldPos[playerid][1], svCheats_oldPos[playerid][2]))
  1643. {
  1644. if(IsPlayerInRangeOfPoint(playerid, 10.0, fX, fY, fZ))
  1645. {
  1646. svCheats_CallDetection(playerid, CHEAT_TELEPORT_HACK);
  1647. }
  1648. }
  1649. }
  1650. return CallRemoteFunction("svCheats_OnPlayerClickMap", "dfff", playerid, fX, fY, fZ);
  1651. }
  1652. #if defined _ALS_OnPlayerClickMap
  1653. #undef OnPlayerClickMap
  1654. #else
  1655. #define _ALS_OnPlayerClickMap
  1656. #endif
  1657. #define OnPlayerClickMap svCheats_OnPlayerClickMap
  1658. #endif
  1659. forward svCheats_OnVehicleMod(playerid, vehicleid, componentid);
  1660. public OnVehicleMod(playerid, vehicleid, componentid)
  1661. {
  1662. #if defined VEHMOD_HACK
  1663. if(svCheats_SecurityLevel[playerid] < VEHMOD_HACK || VEHMOD_HACK == -1)
  1664. {
  1665. if(!GetPlayerInterior(playerid))
  1666. {
  1667. svCheats_CallDetection(playerid, CHEAT_VEHMOD);
  1668. }
  1669. }
  1670. #endif
  1671. #if defined INVALIDMOD_HACK
  1672. if(!svCheats_IsAllowedCarMod(GetVehicleModel(vehicleid), componentid))
  1673. {
  1674. svCheats_CallDetection(playerid, CHEAT_INVALIDMOD);
  1675. }
  1676. #endif
  1677. return CallRemoteFunction("svCheats_OnVehicleMod", "ddd", playerid, vehicleid, componentid);
  1678. }
  1679. #if defined _ALS_OnVehicleMod
  1680. #undef OnVehicleMod
  1681. #else
  1682. #define _ALS_OnVehicleMod
  1683. #endif
  1684. #define OnVehicleMod svCheats_OnVehicleMod
  1685. #endif
  1686. #endif
  1687. new legalmods2[48][22] = {
  1688. {400, 1024,1021,1020,1019,1018,1013,0000,0000,0000,0000,0000,0000,0000,0000,0000,0000,0000,0000},
  1689. {401, 1145,1144,1143,1142,1020,1019,1017,1013,1007,1006,1005,1004,1003,1001,0000,0000,0000,0000},
  1690. {404, 1021,1020,1019,1017,1016,1013,1007,1002,1000,0000,0000,0000,0000,0000,0000,0000,0000,0000},
  1691. {405, 1023,1021,1020,1019,1018,1014,1001,1000,0000,0000,0000,0000,0000,0000,0000,0000,0000,0000},
  1692. {410, 1024,1023,1021,1020,1019,1017,1013,1007,1003,1001,0000,0000,0000,0000,0000,0000,0000,0000},
  1693. {415, 1023,1019,1018,1017,1007,1003,1001,0000,0000,0000,0000,0000,0000,0000,0000,0000,0000,0000},
  1694. {418, 1021,1020,1016,1006,1002,0000,0000,0000,0000,0000,0000,0000,0000,0000,0000,0000,0000,0000},
  1695. {420, 1021,1019,1005,1004,1003,1001,0000,0000,0000,0000,0000,0000,0000,0000,0000,0000,0000,0000},
  1696. {421, 1023,1021,1020,1019,1018,1016,1014,1000,0000,0000,0000,0000,0000,0000,0000,0000,0000,0000},
  1697. {422, 1021,1020,1019,1017,1013,1007,0000,0000,0000,0000,0000,0000,0000,0000,0000,0000,0000,0000},
  1698. {426, 1021,1019,1006,1005,1004,1003,1001,0000,0000,0000,0000,0000,0000,0000,0000,0000,0000,0000},
  1699. {436, 1022,1021,1020,1019,1017,1013,1007,1006,1003,1001,0000,0000,0000,0000,0000,0000,0000,0000},
  1700. {439, 1145,1144,1143,1142,1023,1017,1013,1007,1003,1001,0000,0000,0000,0000,0000,0000,0000,0000},
  1701. {477, 1021,1020,1019,1018,1017,1007,1006,0000,0000,0000,0000,0000,0000,0000,0000,0000,0000,0000},
  1702. {478, 1024,1022,1021,1020,1013,1012,1005,1004,0000,0000,0000,0000,0000,0000,0000,0000,0000,0000},
  1703. {489, 1024,1020,1019,1018,1016,1013,1006,1005,1004,1002,1000,0000,0000,0000,0000,0000,0000,0000},
  1704. {491, 1145,1144,1143,1142,1023,1021,1020,1019,1018,1017,1014,1007,1003,0000,0000,0000,0000,0000},
  1705. {492, 1016,1006,1005,1004,1000,0000,0000,0000,0000,0000,0000,0000,0000,0000,0000,0000,0000,0000},
  1706. {496, 1143,1142,1023,1020,1019,1017,1011,1007,1006,1003,1002,1001,0000,0000,0000,0000,0000,0000},
  1707. {500, 1024,1021,1020,1019,1013,0000,0000,0000,0000,0000,0000,0000,0000,0000,0000,0000,0000,0000},
  1708. {516, 1021,1020,1019,1018,1017,1016,1015,1007,1004,1002,1000,0000,0000,0000,0000,0000,0000,0000},
  1709. {517, 1145,1144,1143,1142,1023,1020,1019,1018,1017,1016,1007,1003,1002,0000,0000,0000,0000,0000},
  1710. {518, 1145,1144,1143,1142,1023,1020,1018,1017,1013,1007,1006,1005,1003,1001,0000,0000,0000,0000},
  1711. {527, 1021,1020,1018,1017,1015,1014,1007,1001,0000,0000,0000,0000,0000,0000,0000,0000,0000,0000},
  1712. {529, 1023,1020,1019,1018,1017,1012,1011,1007,1006,1003,1001,0000,0000,0000,0000,0000,0000,0000},
  1713. {534, 1185,1180,1179,1178,1127,1126,1125,1124,1123,1122,1106,1101,1100,0000,0000,0000,0000,0000},
  1714. {535, 1121,1120,1119,1118,1117,1116,1115,1114,1113,1110,1109,0000,0000,0000,0000,0000,0000,0000},
  1715. {536, 1184,1183,1182,1181,1128,1108,1107,1105,1104,1103,0000,0000,0000,0000,0000,0000,0000,0000},
  1716. {540, 1145,1144,1143,1142,1024,1023,1020,1019,1018,1017,1007,1006,1004,1001,0000,0000,0000,0000},
  1717. {542, 1145,1144,1021,1020,1019,1018,1015,1014,0000,0000,0000,0000,0000,0000,0000,0000,0000,0000},
  1718. {546, 1145,1144,1143,1142,1024,1023,1019,1018,1017,1007,1006,1004,1002,1001,0000,0000,0000,0000},
  1719. {547, 1143,1142,1021,1020,1019,1018,1016,1003,1000,0000,0000,0000,0000,0000,0000,0000,0000,0000},
  1720. {549, 1145,1144,1143,1142,1023,1020,1019,1018,1017,1012,1011,1007,1003,1001,0000,0000,0000,0000},
  1721. {550, 1145,1144,1143,1142,1023,1020,1019,1018,1006,1005,1004,1003,1001,0000,0000,0000,0000,0000},
  1722. {551, 1023,1021,1020,1019,1018,1016,1006,1005,1003,1002,0000,0000,0000,0000,0000,0000,0000,0000},
  1723. {558, 1168,1167,1166,1165,1164,1163,1095,1094,1093,1092,1091,1090,1089,1088,0000,0000,0000,0000},
  1724. {559, 1173,1162,1161,1160,1159,1158,1072,1071,1070,1069,1068,1067,1066,1065,0000,0000,0000,0000},
  1725. {560, 1170,1169,1141,1140,1139,1138,1033,1032,1031,1030,1029,1028,1027,1026,0000,0000,0000,0000},
  1726. {561, 1157,1156,1155,1154,1064,1063,1062,1061,1060,1059,1058,1057,1056,1055,1031,1030,1027,1026},
  1727. {562, 1172,1171,1149,1148,1147,1146,1041,1040,1039,1038,1037,1036,1035,1034,0000,0000,0000,0000},
  1728. {565, 1153,1152,1151,1150,1054,1053,1052,1051,1050,1049,1048,1047,1046,1045,0000,0000,0000,0000},
  1729. {567, 1189,1188,1187,1186,1133,1132,1131,1130,1129,1102,0000,0000,0000,0000,0000,0000,0000,0000},
  1730. {575, 1177,1176,1175,1174,1099,1044,1043,1042,0000,0000,0000,0000,0000,0000,0000,0000,0000,0000},
  1731. {576, 1193,1192,1191,1190,1137,1136,1135,1134,0000,0000,0000,0000,0000,0000,0000,0000,0000,0000},
  1732. {580, 1023,1020,1018,1017,1007,1006,1001,0000,0000,0000,0000,0000,0000,0000,0000,0000,0000,0000},
  1733. {589, 1145,1144,1024,1020,1018,1017,1016,1013,1007,1006,1005,1004,1000,0000,0000,0000,0000,0000},
  1734. {600, 1022,1020,1018,1017,1013,1007,1006,1005,1004,0000,0000,0000,0000,0000,0000,0000,0000,0000},
  1735. {603, 1145,1144,1143,1142,1024,1023,1020,1019,1018,1017,1007,1006,1001,0000,0000,0000,0000,0000}
  1736. };
  1737. forward svCheats_HealthHackCheck(giveplayerid);
  1738. public svCheats_HealthHackCheck(giveplayerid)
  1739. {
  1740. if(svCheats_HH[giveplayerid][svCheckedBy] != INVALID_PLAYER_ID)
  1741. {
  1742. new string[128], playersName[MAX_PLAYER_NAME], playerid = svCheats_HH[giveplayerid][svCheckedBy];
  1743. GetPlayerName(giveplayerid, playersName, sizeof(playersName));
  1744. format(string, sizeof(string), "The health hack check on %s has been finished and the result is {6EF83C}positive{FFFFFF}.", playersName);
  1745. SendClientMessage(playerid, -1, string);
  1746. svCheats_HH[giveplayerid][svCheckedBy] = INVALID_PLAYER_ID;
  1747. SetPlayerVirtualWorld(giveplayerid, svCheats_HH[giveplayerid][svVirtualWorld]);
  1748. SetPlayerInterior(giveplayerid, svCheats_HH[giveplayerid][svInterior]);
  1749. SetPlayerPos(giveplayerid, svCheats_HH[giveplayerid][svOldPlayerPos][0], svCheats_HH[giveplayerid][svOldPlayerPos][1], svCheats_HH[giveplayerid][svOldPlayerPos][2]);
  1750. SetPlayerFacingAngle(giveplayerid, svCheats_HH[giveplayerid][svOldPlayerPos][3]);
  1751. if(svCheats_HH[giveplayerid][svInVehicle] == true)
  1752. {
  1753. PutPlayerInVehicle(giveplayerid, svCheats_HH[giveplayerid][svVehicleID], svCheats_HH[giveplayerid][svVehicleSeat]);
  1754. }
  1755. SetPlayerHealth(giveplayerid, svCheats_HH[giveplayerid][svHealth]);
  1756. SetPlayerArmour(giveplayerid, svCheats_HH[giveplayerid][svArmor]);
  1757. SetCameraBehindPlayer(giveplayerid);
  1758. svCheats_CallDetection(giveplayerid, CHEAT_GODMODE);
  1759. svCheats_AmountDetected++;
  1760. }
  1761. return 1;
  1762. }
  1763. forward svCheats_JumpCountersDown(playerid);
  1764. public svCheats_JumpCountersDown(playerid)
  1765. {
  1766. svCheats_JumpCounters[playerid]--;
  1767. svCheats_JumpCounterTimer[playerid] = -1;
  1768. return 1;
  1769. }
  1770. forward svCheats_KillAmountDown(playerid);
  1771. public svCheats_KillAmountDown(playerid)
  1772. {
  1773. return svCheats_KillAmount[playerid]--;
  1774. }
  1775. svCheats_CallDetection(playerid, cheatid)
  1776. {
  1777. return CallRemoteFunction("svCheats_OnPlayerCheatUpdate", "dd", playerid, cheatid);
  1778. }
  1779. svCheats_GetWeaponSlot(weaponid)
  1780. {
  1781. switch(weaponid)
  1782. {
  1783. case 0, 1:
  1784. {
  1785. return 0;
  1786. }
  1787. case 2, 3, 4, 5, 6, 7, 8, 9:
  1788. {
  1789. return 1;
  1790. }
  1791. case 22, 23, 24:
  1792. {
  1793. return 2;
  1794. }
  1795. case 25, 26, 27:
  1796. {
  1797. return 3;
  1798. }
  1799. case 28, 29, 32:
  1800. {
  1801. return 4;
  1802. }
  1803. case 30, 31:
  1804. {
  1805. return 5;
  1806. }
  1807. case 33, 34:
  1808. {
  1809. return 6;
  1810. }
  1811. case 35, 36, 37, 38:
  1812. {
  1813. return 7;
  1814. }
  1815. case 16, 17, 18, 39, 40:
  1816. {
  1817. return 8;
  1818. }
  1819. case 41, 42, 43:
  1820. {
  1821. return 9;
  1822. }
  1823. case 10, 11, 12, 13, 14, 15:
  1824. {
  1825. return 10;
  1826. }
  1827. case 44, 45, 46:
  1828. {
  1829. return 11;
  1830. }
  1831. }
  1832. return 0;
  1833. }
  1834. svCheats_IsPlayerAtRepairPoint(playerid)
  1835. {
  1836. if(GetPlayerCameraMode(playerid) == 15) return 1;
  1837. if(IsPlayerInRangeOfPoint(playerid, 25.0, 2067.00, -1831.65, 13.55)) return 1;
  1838. if(IsPlayerInRangeOfPoint(playerid, 25.0, 1024.97, -1023.88, 32.10)) return 1;
  1839. if(IsPlayerInRangeOfPoint(playerid, 25.0, 1041.19, -1022.50, 32.11)) return 1;
  1840. if(IsPlayerInRangeOfPoint(playerid, 25.0, 720.25, -457.17, 16.34)) return 1;
  1841. if(IsPlayerInRangeOfPoint(playerid, 25.0, 2386.66, 1045.68, 10.82)) return 1;
  1842. if(IsPlayerInRangeOfPoint(playerid, 25.0, 1972.50, 2163.03, 11.07)) return 1;
  1843. if(IsPlayerInRangeOfPoint(playerid, 25.0, -1420.58, 2586.17, 55.84)) return 1;
  1844. if(IsPlayerInRangeOfPoint(playerid, 25.0, -1904.90, 283.96, 41.05)) return 1;
  1845. if(IsPlayerInRangeOfPoint(playerid, 25.0, -2719.46, 217.77, 4.48)) return 1;
  1846. return 0;
  1847. }
  1848. svCheats_IsPlayerAtHealingPoint(playerid)
  1849. {
  1850. if(IsPlayerInRangeOfPoint(playerid, 50.0, 286.148, -40.644, 1001.569)) return 1;
  1851. if(IsPlayerInRangeOfPoint(playerid, 50.0, 286.148, -82.547, 1001.569)) return 1;
  1852. if(IsPlayerInRangeOfPoint(playerid, 50.0, 296.148, -108.644, 1001.569)) return 1;
  1853. if(IsPlayerInRangeOfPoint(playerid, 50.0, 316.524, -167.706, 999.661)) return 1;
  1854. if(IsPlayerInRangeOfPoint(playerid, 4.0, -2420.219, 984.578, 44.297)) return 1;
  1855. if(IsPlayerInRangeOfPoint(playerid, 4.0, -2420.180, 985.945, 44.297)) return 1;
  1856. if(IsPlayerInRangeOfPoint(playerid, 4.0, 2225.203, -1153.422, 1025.906)) return 1;
  1857. if(IsPlayerInRangeOfPoint(playerid, 4.0, 2576.703, -1284.430, 1061.094)) return 1;
  1858. if(IsPlayerInRangeOfPoint(playerid, 4.0, 2155.906, 1606.773, 1000.055)) return 1;
  1859. if(IsPlayerInRangeOfPoint(playerid, 4.0, 2209.906, 1607.195, 1000.055)) return 1;
  1860. if(IsPlayerInRangeOfPoint(playerid, 4.0, 2222.203, 1606.773, 1000.055)) return 1;
  1861. if(IsPlayerInRangeOfPoint(playerid, 4.0, 495.969, -24.320, 1000.734)) return 1;
  1862. if(IsPlayerInRangeOfPoint(playerid, 4.0, 501.828, -1.430, 1000.734)) return 1;
  1863. if(IsPlayerInRangeOfPoint(playerid, 4.0, 373.828, -178.141, 1000.734)) return 1;
  1864. if(IsPlayerInRangeOfPoint(playerid, 4.0, 330.680, 178.500, 1020.070)) return 1;
  1865. if(IsPlayerInRangeOfPoint(playerid, 4.0, 331.922, 178.500, 1020.070)) return 1;
  1866. if(IsPlayerInRangeOfPoint(playerid, 4.0, 350.906, 206.086, 1008.477)) return 1;
  1867. if(IsPlayerInRangeOfPoint(playerid, 4.0, 361.563, 158.617, 1008.477)) return 1;
  1868. if(IsPlayerInRangeOfPoint(playerid, 4.0, 371.594, 178.453, 1020.070)) return 1;
  1869. if(IsPlayerInRangeOfPoint(playerid, 4.0, 374.891, 188.977, 1008.477)) return 1;
  1870. if(IsPlayerInRangeOfPoint(playerid, 4.0, 2155.844, 1607.875, 1000.063)) return 1;
  1871. if(IsPlayerInRangeOfPoint(playerid, 4.0, 2202.453, 1617.008, 1000.063)) return 1;
  1872. if(IsPlayerInRangeOfPoint(playerid, 4.0, 2209.242, 1621.211, 1000.063)) return 1;
  1873. if(IsPlayerInRangeOfPoint(playerid, 4.0, 2222.367, 1602.641, 1000.063)) return 1;
  1874. if(IsPlayerInRangeOfPoint(playerid, 4.0, 500.563, -1.367, 1000.734)) return 1;
  1875. if(IsPlayerInRangeOfPoint(playerid, 4.0, 379.039, -178.883, 1000.734)) return 1;
  1876. if(IsPlayerInRangeOfPoint(playerid, 4.0, 2480.86,-1959.27,12.9609)) return 1;
  1877. if(IsPlayerInRangeOfPoint(playerid, 4.0, 1634.11,-2237.53,12.8906)) return 1;
  1878. if(IsPlayerInRangeOfPoint(playerid, 4.0, 2139.52,-1161.48,23.3594)) return 1;
  1879. if(IsPlayerInRangeOfPoint(playerid, 4.0, 2153.23,-1016.15,62.2344)) return 1;
  1880. if(IsPlayerInRangeOfPoint(playerid, 4.0, -1350.12,493.859,10.5859)) return 1;
  1881. if(IsPlayerInRangeOfPoint(playerid, 4.0, -2229.19,286.414,34.7031)) return 1;
  1882. if(IsPlayerInRangeOfPoint(playerid, 4.0, 1659.46,1722.86,10.2188)) return 1;
  1883. if(IsPlayerInRangeOfPoint(playerid, 4.0, 2647.7,1129.66,10.2188)) return 1;
  1884. if(IsPlayerInRangeOfPoint(playerid, 4.0, 2845.73,1295.05,10.7891)) return 1;
  1885. if(IsPlayerInRangeOfPoint(playerid, 4.0, 1398.84,2222.61,10.4219)) return 1;
  1886. if(IsPlayerInRangeOfPoint(playerid, 4.0, -1455.12,2591.66,55.2344)) return 1;
  1887. if(IsPlayerInRangeOfPoint(playerid, 4.0, -76.0312,1227.99,19.125)) return 1;
  1888. if(IsPlayerInRangeOfPoint(playerid, 4.0, 662.43,-552.164,15.7109)) return 1;
  1889. if(IsPlayerInRangeOfPoint(playerid, 4.0, -253.742,2599.76,62.2422)) return 1;
  1890. if(IsPlayerInRangeOfPoint(playerid, 4.0, 2271.73,-76.4609,25.9609)) return 1;
  1891. if(IsPlayerInRangeOfPoint(playerid, 4.0, 1789.21,-1369.27,15.1641)) return 1;
  1892. if(IsPlayerInRangeOfPoint(playerid, 4.0, 1729.79,-1943.05,12.9453)) return 1;
  1893. if(IsPlayerInRangeOfPoint(playerid, 4.0, 2060.12,-1897.64,12.9297)) return 1;
  1894. if(IsPlayerInRangeOfPoint(playerid, 4.0, 1928.73,-1772.45,12.9453)) return 1;
  1895. if(IsPlayerInRangeOfPoint(playerid, 4.0, 2325.98,-1645.13,14.2109)) return 1;
  1896. if(IsPlayerInRangeOfPoint(playerid, 4.0, 2352.18,-1357.16,23.7734)) return 1;
  1897. if(IsPlayerInRangeOfPoint(playerid, 4.0, 1154.73,-1460.89,15.1562)) return 1;
  1898. if(IsPlayerInRangeOfPoint(playerid, 4.0, -1350.12,492.289,10.5859)) return 1;
  1899. if(IsPlayerInRangeOfPoint(playerid, 4.0, -2118.97,-423.648,34.7266)) return 1;
  1900. if(IsPlayerInRangeOfPoint(playerid, 4.0, -2118.62,-422.414,34.7266)) return 1;
  1901. if(IsPlayerInRangeOfPoint(playerid, 4.0, -2097.27,-398.336,34.7266)) return 1;
  1902. if(IsPlayerInRangeOfPoint(playerid, 4.0, -2092.09,-490.055,34.7266)) return 1;
  1903. if(IsPlayerInRangeOfPoint(playerid, 4.0, -2063.27,-490.055,34.7266)) return 1;
  1904. if(IsPlayerInRangeOfPoint(playerid, 4.0, -2005.65,-490.055,34.7266)) return 1;
  1905. if(IsPlayerInRangeOfPoint(playerid, 4.0, -2034.46,-490.055,34.7266)) return 1;
  1906. if(IsPlayerInRangeOfPoint(playerid, 4.0, -2068.56,-398.336,34.7266)) return 1;
  1907. if(IsPlayerInRangeOfPoint(playerid, 4.0, -2039.85,-398.336,34.7266)) return 1;
  1908. if(IsPlayerInRangeOfPoint(playerid, 4.0, -2011.14,-398.336,34.7266)) return 1;
  1909. if(IsPlayerInRangeOfPoint(playerid, 4.0, -1980.79,142.664,27.0703)) return 1;
  1910. if(IsPlayerInRangeOfPoint(playerid, 4.0, 2319.99,2532.85,10.2188)) return 1;
  1911. if(IsPlayerInRangeOfPoint(playerid, 4.0, 1520.15,1055.27,10.00)) return 1;
  1912. if(IsPlayerInRangeOfPoint(playerid, 4.0, 2503.14,1243.7,10.2188)) return 1;
  1913. if(IsPlayerInRangeOfPoint(playerid, 4.0, 2085.77,2071.36,10.4531)) return 1;
  1914. if(IsPlayerInRangeOfPoint(playerid, 4.0, -862.828,1536.61,21.9844)) return 1;
  1915. if(IsPlayerInRangeOfPoint(playerid, 4.0, -14.7031,1175.36,18.9531)) return 1;
  1916. if(IsPlayerInRangeOfPoint(playerid, 4.0, -253.742,2597.95,62.2422)) return 1;
  1917. if(IsPlayerInRangeOfPoint(playerid, 4.0, 201.016,-107.617,0.898438)) return 1;
  1918. if(IsPlayerInRangeOfPoint(playerid, 4.0, 1277.84,372.516,18.9531)) return 1;
  1919. return 0;
  1920. }
  1921. svCheats_GetSwimmingPointZ(playerid)
  1922. {
  1923. if(IsPlayerInRangeOfPoint(playerid, 50.0, 1962.15, -1198.71, 17.45)) return 19;
  1924. if(IsPlayerInRangeOfPoint(playerid, 100.0, -1127.58, 2764.43, 40.00)) return 43;
  1925. if(IsPlayerInRangeOfPoint(playerid, 100.0, -988.19, 2486.89, 40.00)) return 43;
  1926. if(IsPlayerInRangeOfPoint(playerid, 100.0, -924.33, 2306.59, 40.00)) return 43;
  1927. if(IsPlayerInRangeOfPoint(playerid, 100.0, -1104.15, 2175.83, 40.00)) return 43;
  1928. if(IsPlayerInRangeOfPoint(playerid, 100.0, -1307.06, 2119.33, 40.00)) return 43;
  1929. if(IsPlayerInRangeOfPoint(playerid, 100.0, -831.85, 2122.23, 40.00)) return 43;
  1930. if(IsPlayerInRangeOfPoint(playerid, 100.0, -595.76, 2138.34, 40.00)) return 43;
  1931. if(IsPlayerInRangeOfPoint(playerid, 100.0, -569.24, 2274.40, 40.00)) return 43;
  1932. if(IsPlayerInRangeOfPoint(playerid, 12.0, 1095.800, -674.950, 111.908)) return 113;
  1933. if(IsPlayerInRangeOfPoint(playerid, 12.0, 224.500, -1185.725, 73.908)) return 76;
  1934. if(IsPlayerInRangeOfPoint(playerid, 12.0, 193.700, -1230.608, 76.603)) return 79;
  1935. if(IsPlayerInRangeOfPoint(playerid, 12.0, 1277.500, -805.200, 86.581)) return 88;
  1936. if(IsPlayerInRangeOfPoint(playerid, 12.0, 2582.0, 2387.0, 16.0)) return 18;
  1937. return 10;
  1938. }
  1939. svCheats_GetVehicleSpeed(vehicleid)
  1940. {
  1941. new Float: vVel[3];
  1942. GetVehicleVelocity(vehicleid, vVel[0], vVel[1], vVel[2]);
  1943. return floatround(floatsqroot((vVel[0]*vVel[1]+vVel[2]*vVel[2]))*100.0*1.6);
  1944. }
  1945. svCheats_IllegalCarNitroIde(carmodel)
  1946. {
  1947. new illegalvehs[29] = { 581, 523, 462, 521, 463, 522, 461, 448, 468, 586, 509, 481, 510, 472, 473, 493, 595, 484, 430, 453, 452, 446, 454, 590, 569, 537, 538, 570, 449 };
  1948. for(new i = 0; i < sizeof(illegalvehs); i++)
  1949. {
  1950. if(carmodel == illegalvehs[i])
  1951. {
  1952. return 1;
  1953. }
  1954. }
  1955. return 0;
  1956. }
  1957. svCheats_IsComponentWheel(componentid)
  1958. {
  1959. new wheelmodels[17] = {1025,1073,1074,1075,1076,1077,1078,1079,1080,1081,1082,1083,1084,1085,1096,1097,1098};
  1960. for(new i = 0; i < sizeof(wheelmodels); i++)
  1961. {
  1962. if(componentid == wheelmodels[i])
  1963. {
  1964. return 1;
  1965. }
  1966. }
  1967. return 0;
  1968. }
  1969. svCheats_IsAllowedCarMod(vehicleide, componentid)
  1970. {
  1971. new bool: modok = false;
  1972. if(svCheats_IsComponentWheel(componentid) || componentid == 1086 || componentid == 1087 || (componentid >= 1008 && componentid <= 1010))
  1973. {
  1974. if(!svCheats_IllegalCarNitroIde(vehicleide))
  1975. {
  1976. modok = true;
  1977. }
  1978. }
  1979. else
  1980. {
  1981. for(new i = 0; i < sizeof(legalmods2); i++)
  1982. {
  1983. if(legalmods2[i][0] == vehicleide)
  1984. {
  1985. for(new j = 1; j < 22; j++)
  1986. {
  1987. if(legalmods2[i][j] == componentid)
  1988. {
  1989. modok = true;
  1990. }
  1991. }
  1992. }
  1993. }
  1994. }
  1995. return modok;
  1996. }
  1997. svCheats_Intabs(innumber)
  1998. {
  1999. if(innumber < 0)
  2000. {
  2001. return -innumber;
  2002. }
  2003. return innumber;
  2004. }
  2005. svCheats_Distance1Dint(fPos1, fPos2)
  2006. {
  2007. if(fPos1 > fPos2)
  2008. {
  2009. return svCheats_Intabs(fPos1 - fPos2);
  2010. }
  2011. else
  2012. {
  2013. return svCheats_Intabs(fPos2 - fPos1);
  2014. }
  2015. }
  2016. svCheats_GetTimeDistance(a, b)
  2017. {
  2018. if(a < 0 && b > 0)
  2019. {
  2020. new dist;
  2021. dist = svCheats_Distance1Dint(a, b);
  2022. if(dist > 2147483647)
  2023. {
  2024. return svCheats_Distance1Dint(a - 2147483647, b - 2147483647);
  2025. }
  2026. else
  2027. {
  2028. return dist;
  2029. }
  2030. }
  2031. else
  2032. {
  2033. return svCheats_Distance1Dint(a, b);
  2034. }
  2035. }
  2036. svCheats_inet_aton(ip[])
  2037. {
  2038. new ipv = strval(ip) << 24, pos = 0;
  2039. while (pos < 15 && ip[pos++] != '.') {}
  2040. ipv += strval(ip[pos]) << 16;
  2041. while (pos < 15 && ip[pos++] != '.') {}
  2042. ipv += strval(ip[pos]) << 8;
  2043. while (pos < 15 && ip[pos++] != '.') {}
  2044. ipv += strval(ip[pos]);
  2045. return ipv;
  2046. }
  2047. svCheats_log_new_join(playerid) {
  2048. new ip[18];
  2049. GetPlayerIp(playerid, ip, sizeof(ip));
  2050. new ipv = svCheats_inet_aton(ip);
  2051. svCheats_IPJoin[svCheats_ajs][svIP_Add] = ipv;
  2052. svCheats_IPJoin[svCheats_ajs][svTimestamp] = tickcount();
  2053. svCheats_ajs++;
  2054. if(svCheats_ajs >= 37)
  2055. {
  2056. svCheats_ajs = 0;
  2057. }
  2058. }
  2059. svCheats_NJTR(playerid, max_time) {
  2060. new ip[18];
  2061. GetPlayerIp(playerid, ip, sizeof(ip));
  2062. new ipv = svCheats_inet_aton(ip);
  2063. new counted = 0;
  2064. for(new i = 0; i < sizeof(svCheats_IPJoin); i++)
  2065. {
  2066. if(svCheats_IPJoin[i][svIP_Add] != ipv)
  2067. {
  2068. continue;
  2069. }
  2070. if(svCheats_GetTimeDistance(tickcount(), svCheats_IPJoin[i][svTimestamp]) <= max_time)
  2071. {
  2072. counted++;
  2073. }
  2074. }
  2075. return counted;
  2076. }
  2077. public svCheats_Detector()
  2078. {
  2079. #if defined USE_FOREACH
  2080. foreach(new playerid: Player)
  2081. {
  2082. #if defined HIGH_PING
  2083. if(svCheats_SecurityLevel[playerid] < HIGH_PING || HIGH_PING == -1)
  2084. {
  2085. if(GetPlayerPing(playerid) > MAX_PING)
  2086. {
  2087. svCheats_CallDetection(playerid, CHEAT_HIGH_PING);
  2088. svCheats_AmountDetected++;
  2089. }
  2090. }
  2091. #endif
  2092. #if defined SPEED_HACK
  2093. if(svCheats_SecurityLevel[playerid] < SPEED_HACK || SPEED_HACK == -1)
  2094. {
  2095. if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
  2096. {
  2097. new vehicleid = GetPlayerVehicleID(playerid);
  2098. if(svCheats_GetVehicleSpeed(vehicleid) > MAX_SPEED)
  2099. {
  2100. if(GetVehicleModel(vehicleid) != 520)
  2101. {
  2102. new Float: vehicleVelocity[3];
  2103. GetVehicleVelocity(vehicleid, vehicleVelocity[0], vehicleVelocity[1], vehicleVelocity[2]);
  2104. if(vehicleVelocity[2] > -0.5)
  2105. {
  2106. svCheats_CallDetection(playerid, CHEAT_SPEED_HACK);
  2107. svCheats_AmountDetected++;
  2108. }
  2109. }
  2110. }
  2111. }
  2112. }
  2113. #endif
  2114. #if defined JETPACK_HACK
  2115. if(svCheats_SecurityLevel[playerid] < JETPACK_HACK || JETPACK_HACK == -1)
  2116. {
  2117. if(GetPlayerSpecialAction(playerid) == SPECIAL_ACTION_USEJETPACK)
  2118. {
  2119. if(svCheats_GrantedJetpack[playerid] == false && svCheats_ReportedTabbed[playerid] == false)
  2120. {
  2121. svCheats_CallDetection(playerid, CHEAT_JETPACK_HACK);
  2122. svCheats_AmountDetected++;
  2123. }
  2124. }
  2125. else
  2126. {
  2127. svCheats_GrantedJetpack[playerid] = false;
  2128. }
  2129. }
  2130. #endif
  2131. #if defined AIRBREAK_HACK
  2132. if(svCheats_SecurityLevel[playerid] < AIRBREAK_HACK || AIRBREAK_HACK == -1)
  2133. {
  2134. new ai = GetPlayerAnimationIndex(playerid);
  2135. if(ai == 1231 || ai == 1266)
  2136. {
  2137. new Float: playersPos[3];
  2138. GetPlayerPos(playerid, playersPos[0], playersPos[1], playersPos[2]);
  2139. if(playersPos[2] > svCheats_GetSwimmingPointZ(playerid))
  2140. {
  2141. if(!IsPlayerInRangeOfPoint(playerid, 200.0, 602.74, 871.44, -20.65) && !IsPlayerInRangeOfPoint(playerid, 300.0, 1678.38, -2291.18, -1.00))
  2142. {
  2143. if(GetPointZPos(playersPos[0], playersPos[1]) < playersPos[2] - 15.0)
  2144. {
  2145. svCheats_CallDetection(playerid, CHEAT_AIRBREAK_HACK);
  2146. svCheats_AmountDetected++;
  2147. }
  2148. }
  2149. }
  2150. }
  2151. }
  2152. #endif
  2153. #if defined FLY_HACK
  2154. if(svCheats_SecurityLevel[playerid] < FLY_HACK || FLY_HACK == -1)
  2155. {
  2156. if(GetPlayerState(playerid) == PLAYER_STATE_ONFOOT)
  2157. {
  2158. new ai = GetPlayerAnimationIndex(playerid);
  2159. if(ai == 1538 || ai == 1538 || ai == 1543)
  2160. {
  2161. if(!GetPlayerInterior(playerid))
  2162. {
  2163. new Float: playersPos[3];
  2164. GetPlayerPos(playerid, playersPos[0], playersPos[1], playersPos[2]);
  2165. if(playersPos[2] > svCheats_GetSwimmingPointZ(playerid))
  2166. {
  2167. svCheats_CallDetection(playerid, CHEAT_FLY_HACK);
  2168. svCheats_AmountDetected++;
  2169. }
  2170. }
  2171. }
  2172. }
  2173. }
  2174. #endif
  2175. #if defined TELEPORT_HACK
  2176. if(svCheats_SecurityLevel[playerid] < TELEPORT_HACK || TELEPORT_HACK == -1)
  2177. {
  2178. if(GetPlayerState(playerid) == PLAYER_STATE_ONFOOT)
  2179. {
  2180. new interior = GetPlayerInterior(playerid);
  2181. if(interior > 0)
  2182. {
  2183. new allowedInteriors[10], bool: allowed;
  2184. sscanf(USED_INTERIORS, "a<i>[10]", allowedInteriors);
  2185. for(new i = 0; i < sizeof(allowedInteriors); i++)
  2186. {
  2187. if(allowedInteriors[i] == interior)
  2188. {
  2189. allowed = true;
  2190. break;
  2191. }
  2192. }
  2193. if(allowed == false)
  2194. {
  2195. svCheats_CallDetection(playerid, CHEAT_TELEPORT_HACK);
  2196. svCheats_AmountDetected++;
  2197. }
  2198. }
  2199. }
  2200. }
  2201. #endif
  2202. #if defined VEHICLE_REPAIR
  2203. if(svCheats_SecurityLevel[playerid] < VEHICLE_REPAIR || VEHICLE_REPAIR == -1)
  2204. {
  2205. if(svCheats_ReportedTabbed[playerid] == false)
  2206. {
  2207. if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
  2208. {
  2209. new vehicleid = GetPlayerVehicleID(playerid), Float: vHealth;
  2210. GetVehicleHealth(vehicleid, vHealth);
  2211. if(vHealth > svCheats_VehicleHealth[vehicleid])
  2212. {
  2213. if(!svCheats_IsPlayerAtRepairPoint(playerid))
  2214. {
  2215. svCheats_CallDetection(playerid, CHEAT_VEHICLE_REPAIR);
  2216. svCheats_AmountDetected++;
  2217. }
  2218. }
  2219. svCheats_VehicleHealth[vehicleid] = vHealth;
  2220. }
  2221. }
  2222. }
  2223. #endif
  2224. #if defined CHATSPAM_OFF
  2225. if(svCheats_SecurityLevel[playerid] < CHATSPAM_OFF || CHATSPAM_OFF == -1)
  2226. {
  2227. svCheats_SpamCounters[playerid]--;
  2228. if(svCheats_SpamCounters[playerid] < 0)
  2229. {
  2230. svCheats_SpamCounters[playerid] = 0;
  2231. }
  2232. }
  2233. #endif
  2234. #if defined AFK_DISABLED
  2235. if(svCheats_SecurityLevel[playerid] < AFK_DISABLED || AFK_DISABLED == -1)
  2236. {
  2237. if(svCheats_ReportedAFK[playerid] == false)
  2238. {
  2239. new Float: playersPos[3];
  2240. GetPlayerPos(playerid, playersPos[0], playersPos[1], playersPos[2]);
  2241. if(playersPos[0] != svCheats_oldPos[playerid][0] || playersPos[1] != svCheats_oldPos[playerid][1] || playersPos[2] != svCheats_oldPos[playerid][2])
  2242. {
  2243. svCheats_AFKTime[playerid] = 0;
  2244. }
  2245. else
  2246. {
  2247. svCheats_AFKTime[playerid] += GetTickCount() - svCheats_LastAFKUpdate[playerid];
  2248. }
  2249. svCheats_LastAFKUpdate[playerid] = GetTickCount();
  2250. svCheats_oldPos[playerid][0] = playersPos[0], svCheats_oldPos[playerid][1] = playersPos[1], svCheats_oldPos[playerid][2] = playersPos[2];
  2251. if(svCheats_ReportedAFK[playerid] == false)
  2252. {
  2253. new AFKMinutes = svCheats_AFKTime[playerid] / 60000;
  2254. if(AFKMinutes >= AFK_MINUTES)
  2255. {
  2256. svCheats_ReportedAFK[playerid] = true;
  2257. svCheats_CallDetection(playerid, CHEAT_AFK);
  2258. svCheats_AmountDetected++;
  2259. }
  2260. }
  2261. }
  2262. }
  2263. #endif
  2264. #if defined TABBED_DISABLED
  2265. if(svCheats_SecurityLevel[playerid] < TABBED_DISABLED || TABBED_DISABLED == -1)
  2266. {
  2267. if(svCheats_ReportedTabbed[playerid] == false && svCheats_TabbedDisabled[playerid] == false)
  2268. {
  2269. if(GetPlayerCameraMode(playerid) != 55 && (GetPlayerState(playerid) < 4 || GetPlayerState(playerid) > 6))
  2270. {
  2271. svCheats_TabbedUpdates[playerid]++;
  2272. if(svCheats_TabbedUpdates[playerid] > 1)
  2273. {
  2274. svCheats_TabbedUpdates[playerid] = 0;
  2275. svCheats_ReportedTabbed[playerid] = true;
  2276. svCheats_CallDetection(playerid, CHEAT_TABBED);
  2277. svCheats_AmountDetected++;
  2278. }
  2279. }
  2280. }
  2281. }
  2282. #endif
  2283. #if defined HEALTH_HACK
  2284. if(svCheats_SecurityLevel[playerid] < HEALTH_HACK || HEALTH_HACK == -1)
  2285. {
  2286. if(svCheats_HealthHackDisabled[playerid] == false && svCheats_ReportedTabbed[playerid] == false)
  2287. {
  2288. new Float: Health, Float: Armor;
  2289. GetPlayerHealth(playerid, Health);
  2290. GetPlayerArmour(playerid, Armor);
  2291. if(!svCheats_IsPlayerAtHealingPoint(playerid))
  2292. {
  2293. if(svCheats_PlayerHealth[playerid] < Health || svCheats_PlayerArmor[playerid] < Armor)
  2294. {
  2295. svCheats_CallDetection(playerid, CHEAT_HEALTHHACK);
  2296. svCheats_AmountDetected++;
  2297. }
  2298. }
  2299. svCheats_PlayerHealth[playerid] = Health;
  2300. svCheats_PlayerArmor[playerid] = Armor;
  2301. }
  2302. }
  2303. #endif
  2304. }
  2305. #else
  2306. for(new playerid = 0; playerid < MAX_PLAYERS; playerid++)
  2307. {
  2308. if(IsPlayerConnected(playerid))
  2309. {
  2310. #if defined HIGH_PING
  2311. if(svCheats_SecurityLevel[playerid] < HIGH_PING || HIGH_PING == -1)
  2312. {
  2313. if(GetPlayerPing(playerid) > MAX_PING)
  2314. {
  2315. svCheats_CallDetection(playerid, CHEAT_HIGH_PING);
  2316. svCheats_AmountDetected++;
  2317. }
  2318. }
  2319. #endif
  2320. #if defined SPEED_HACK
  2321. if(svCheats_SecurityLevel[playerid] < SPEED_HACK || SPEED_HACK == -1)
  2322. {
  2323. if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
  2324. {
  2325. new vehicleid = GetPlayerVehicleID(playerid);
  2326. if(svCheats_GetVehicleSpeed(vehicleid) > MAX_SPEED)
  2327. {
  2328. if(GetVehicleModel(vehicleid) != 520)
  2329. {
  2330. new Float: vehicleVelocity[3];
  2331. GetVehicleVelocity(vehicleid, vehicleVelocity[0], vehicleVelocity[1], vehicleVelocity[2]);
  2332. if(vehicleVelocity[2] > -0.5)
  2333. {
  2334. svCheats_CallDetection(playerid, CHEAT_SPEED_HACK);
  2335. svCheats_AmountDetected++;
  2336. }
  2337. }
  2338. }
  2339. }
  2340. }
  2341. #endif
  2342. #if defined JETPACK_HACK
  2343. if(svCheats_SecurityLevel[playerid] < JETPACK_HACK || JETPACK_HACK == -1)
  2344. {
  2345. if(GetPlayerSpecialAction(playerid) == SPECIAL_ACTION_USEJETPACK)
  2346. {
  2347. if(svCheats_GrantedJetpack[playerid] == false && svCheats_ReportedTabbed[playerid] == false)
  2348. {
  2349. svCheats_CallDetection(playerid, CHEAT_JETPACK_HACK);
  2350. svCheats_AmountDetected++;
  2351. }
  2352. }
  2353. else
  2354. {
  2355. svCheats_GrantedJetpack[playerid] = false;
  2356. }
  2357. }
  2358. #endif
  2359. #if defined AIRBREAK_HACK
  2360. if(svCheats_SecurityLevel[playerid] < AIRBREAK_HACK || AIRBREAK_HACK == -1)
  2361. {
  2362. new ai = GetPlayerAnimationIndex(playerid);
  2363. if(ai == 1231 || ai == 1266)
  2364. {
  2365. new Float: playersPos[3];
  2366. GetPlayerPos(playerid, playersPos[0], playersPos[1], playersPos[2]);
  2367. if(playersPos[2] > svCheats_GetSwimmingPointZ(playerid))
  2368. {
  2369. if(!IsPlayerInRangeOfPoint(playerid, 200.0, 602.74, 871.44, -20.65) && !IsPlayerInRangeOfPoint(playerid, 300.0, 1678.38, -2291.18, -1.00))
  2370. {
  2371. if(GetPointZPos(playersPos[0], playersPos[1]) < playersPos[2] - 15.0)
  2372. {
  2373. svCheats_CallDetection(playerid, CHEAT_AIRBREAK_HACK);
  2374. svCheats_AmountDetected++;
  2375. }
  2376. }
  2377. }
  2378. }
  2379. }
  2380. #endif
  2381. #if defined FLY_HACK
  2382. if(svCheats_SecurityLevel[playerid] < FLY_HACK || FLY_HACK == -1)
  2383. {
  2384. if(GetPlayerState(playerid) == PLAYER_STATE_ONFOOT)
  2385. {
  2386. new ai = GetPlayerAnimationIndex(playerid);
  2387. if(ai == 1538 || ai == 1538 || ai == 1543)
  2388. {
  2389. if(!GetPlayerInterior(playerid))
  2390. {
  2391. new Float: playersPos[3];
  2392. GetPlayerPos(playerid, playersPos[0], playersPos[1], playersPos[2]);
  2393. if(playersPos[2] > svCheats_GetSwimmingPointZ(playerid))
  2394. {
  2395. svCheats_CallDetection(playerid, CHEAT_FLY_HACK);
  2396. svCheats_AmountDetected++;
  2397. }
  2398. }
  2399. }
  2400. }
  2401. }
  2402. #endif
  2403. #if defined TELEPORT_HACK
  2404. if(svCheats_SecurityLevel[playerid] < TELEPORT_HACK || TELEPORT_HACK == -1)
  2405. {
  2406. if(GetPlayerState(playerid) == PLAYER_STATE_ONFOOT)
  2407. {
  2408. new interior = GetPlayerInterior(playerid);
  2409. if(interior > 0)
  2410. {
  2411. new allowedInteriors[10], bool: allowed;
  2412. sscanf(USED_INTERIORS, "a<i>[10]", allowedInteriors);
  2413. for(new i = 0; i < sizeof(allowedInteriors); i++)
  2414. {
  2415. if(allowedInteriors[i] == interior)
  2416. {
  2417. allowed = true;
  2418. break;
  2419. }
  2420. }
  2421. if(allowed == false)
  2422. {
  2423. svCheats_CallDetection(playerid, CHEAT_TELEPORT_HACK);
  2424. svCheats_AmountDetected++;
  2425. }
  2426. }
  2427. }
  2428. }
  2429. #endif
  2430. #if defined VEHICLE_REPAIR
  2431. if(svCheats_SecurityLevel[playerid] < VEHICLE_REPAIR || VEHICLE_REPAIR == -1)
  2432. {
  2433. if(svCheats_ReportedTabbed[playerid] == false)
  2434. {
  2435. if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
  2436. {
  2437. new vehicleid = GetPlayerVehicleID(playerid), Float: vHealth;
  2438. GetVehicleHealth(vehicleid, vHealth);
  2439. if(vHealth > svCheats_VehicleHealth[vehicleid])
  2440. {
  2441. if(!svCheats_IsPlayerAtRepairPoint(playerid))
  2442. {
  2443. svCheats_CallDetection(playerid, CHEAT_VEHICLE_REPAIR);
  2444. svCheats_AmountDetected++;
  2445. }
  2446. }
  2447. svCheats_VehicleHealth[vehicleid] = vHealth;
  2448. }
  2449. }
  2450. }
  2451. #endif
  2452. #if defined CHATSPAM_OFF
  2453. if(svCheats_SecurityLevel[playerid] < CHATSPAM_OFF || CHATSPAM_OFF == -1)
  2454. {
  2455. svCheats_SpamCounters[playerid]--;
  2456. if(svCheats_SpamCounters[playerid] < 0)
  2457. {
  2458. svCheats_SpamCounters[playerid] = 0;
  2459. }
  2460. }
  2461. #endif
  2462. #if defined AFK_DISABLED
  2463. if(svCheats_SecurityLevel[playerid] < AFK_DISABLED || AFK_DISABLED == -1)
  2464. {
  2465. if(svCheats_ReportedAFK[playerid] == false)
  2466. {
  2467. new Float: playersPos[3];
  2468. GetPlayerPos(playerid, playersPos[0], playersPos[1], playersPos[2]);
  2469. if(playersPos[0] != svCheats_oldPos[playerid][0] || playersPos[1] != svCheats_oldPos[playerid][1] || playersPos[2] != svCheats_oldPos[playerid][2])
  2470. {
  2471. svCheats_AFKTime[playerid] = 0;
  2472. }
  2473. else
  2474. {
  2475. svCheats_AFKTime[playerid] += GetTickCount() - svCheats_LastAFKUpdate[playerid];
  2476. }
  2477. svCheats_LastAFKUpdate[playerid] = GetTickCount();
  2478. svCheats_oldPos[playerid][0] = playersPos[0], svCheats_oldPos[playerid][1] = playersPos[1], svCheats_oldPos[playerid][2] = playersPos[2];
  2479. if(svCheats_ReportedAFK[playerid] == false)
  2480. {
  2481. new AFKMinutes = svCheats_AFKTime[playerid] / 60000;
  2482. if(AFKMinutes >= AFK_MINUTES)
  2483. {
  2484. svCheats_ReportedAFK[playerid] = true;
  2485. svCheats_CallDetection(playerid, CHEAT_AFK);
  2486. svCheats_AmountDetected++;
  2487. }
  2488. }
  2489. }
  2490. }
  2491. #endif
  2492. #if defined TABBED_DISABLED
  2493. if(svCheats_SecurityLevel[playerid] < TABBED_DISABLED || TABBED_DISABLED == -1)
  2494. {
  2495. if(svCheats_ReportedTabbed[playerid] == false && svCheats_TabbedDisabled[playerid] == false)
  2496. {
  2497. if(GetPlayerCameraMode(playerid) != 55 && (GetPlayerState(playerid) < 4 || GetPlayerState(playerid) > 6))
  2498. {
  2499. svCheats_TabbedUpdates[playerid]++;
  2500. if(svCheats_TabbedUpdates[playerid] > 1)
  2501. {
  2502. svCheats_TabbedUpdates[playerid] = 0;
  2503. svCheats_ReportedTabbed[playerid] = true;
  2504. svCheats_CallDetection(playerid, CHEAT_TABBED);
  2505. svCheats_AmountDetected++;
  2506. }
  2507. }
  2508. }
  2509. }
  2510. #endif
  2511. #if defined HEALTH_HACK
  2512. if(svCheats_SecurityLevel[playerid] < HEALTH_HACK || HEALTH_HACK == -1)
  2513. {
  2514. if(svCheats_HealthHackDisabled[playerid] == false && svCheats_ReportedTabbed[playerid] == false)
  2515. {
  2516. new Float: Health, Float: Armor;
  2517. GetPlayerHealth(playerid, Health);
  2518. GetPlayerArmour(playerid, Armor);
  2519. if(!svCheats_IsPlayerAtHealingPoint(playerid))
  2520. {
  2521. if(svCheats_PlayerHealth[playerid] < Health || svCheats_PlayerArmor[playerid] < Armor)
  2522. {
  2523. svCheats_CallDetection(playerid, CHEAT_HEALTHHACK);
  2524. svCheats_AmountDetected++;
  2525. }
  2526. }
  2527. svCheats_PlayerHealth[playerid] = Health;
  2528. svCheats_PlayerArmor[playerid] = Armor;
  2529. }
  2530. }
  2531. #endif
  2532. }
  2533. }
  2534. #endif
  2535. return 1;
  2536. }
  2537. stock svCheats_Debug(bool: togDebug)
  2538. {
  2539. if(togDebug == true)
  2540. {
  2541. print("(svCheats) Debugging has been turned on");
  2542. }
  2543. else if(togDebug == false)
  2544. {
  2545. print("(svCheats) Debugging has been turned off");
  2546. }
  2547. return svCheats_Debugging = togDebug;
  2548. }
  2549. stock svCheats_SetPlayerSecurityLevel(playerid, secLevel)
  2550. {
  2551. if(svCheats_Debugging == true)
  2552. {
  2553. printf("(svCheats) SetPlayerSecurityLevel(playerid = %d, secLevel = %d)", playerid, secLevel);
  2554. }
  2555. return svCheats_SecurityLevel[playerid] = secLevel;
  2556. }
  2557. stock svCheats_GetPlayerSecurityLevel(playerid)
  2558. {
  2559. if(svCheats_Debugging == true)
  2560. {
  2561. printf("(svCheats) GetPlayerSecurityLevel(playerid = %d)", playerid);
  2562. }
  2563. return svCheats_SecurityLevel[playerid];
  2564. }
  2565. stock svCheats_SetVehicleHealth(vehicleid, Float: vHealth)
  2566. {
  2567. if(svCheats_Debugging == true)
  2568. {
  2569. printf("(svCheats) SetVehicleHealth(vehicleid = %d, vHealth = %f)", vehicleid, vHealth);
  2570. }
  2571. svCheats_VehicleHealth[vehicleid] = vHealth;
  2572. return SetVehicleHealth(vehicleid, vHealth);
  2573. }
  2574. #if defined _ALS_SetVehicleHealth
  2575. #undef SetVehicleHealth
  2576. #else
  2577. #define _ALS_SetVehicleHealth
  2578. #endif
  2579. #define SetVehicleHealth svCheats_SetVehicleHealth
  2580. stock svCheats_GivePlayerWeapon(playerid, weaponid, ammo)
  2581. {
  2582. if(svCheats_Debugging == true)
  2583. {
  2584. printf("(svCheats) GivePlayerWeapon(playerid = %d, weaponid = %d, ammo = %d)", playerid, weaponid, ammo);
  2585. }
  2586. svCheats_PlayerWeapons[playerid][GetWeaponSlot(weaponid)] = weaponid;
  2587. return GivePlayerWeapon(playerid, weaponid, ammo);
  2588. }
  2589. #if defined _ALS_GivePlayerWeapon
  2590. #undef GivePlayerWeapon
  2591. #else
  2592. #define _ALS_GivePlayerWeapon
  2593. #endif
  2594. #define GivePlayerWeapon svCheats_GivePlayerWeapon
  2595. stock svCheats_SetPlayerHealth(playerid, Float: pHealth)
  2596. {
  2597. if(svCheats_Debugging == true)
  2598. {
  2599. printf("(svCheats) SetPlayerHealth(playerid = %d, pHealth = %f)", playerid, pHealth);
  2600. }
  2601. svCheats_PlayerHealth[playerid] = pHealth;
  2602. return SetPlayerHealth(playerid, pHealth);
  2603. }
  2604. #if defined _ALS_SetPlayerHealth
  2605. #undef SetPlayerHealth
  2606. #else
  2607. #define _ALS_SetPlayerHealth
  2608. #endif
  2609. //#define SetPlayerHealth svCheats_SetPlayerHealth
  2610. stock svCheats_SetPlayerArmour(playerid, Float: pArmour)
  2611. {
  2612. if(svCheats_Debugging == true)
  2613. {
  2614. printf("(svCheats) SetPlayerArmour(playerid = %d, pArmour = %f)", playerid, pArmour);
  2615. }
  2616. svCheats_PlayerArmor[playerid] = pArmour;
  2617. return SetPlayerArmour(playerid, pArmour);
  2618. }
  2619. #if defined _ALS_SetPlayerArmour
  2620. #undef SetPlayerArmour
  2621. #else
  2622. #define _ALS_SetPlayerArmour
  2623. #endif
  2624. //#define SetPlayerArmour svCheats_SetPlayerArmour
  2625. stock svCheats_SetPlayerSpecialAction(playerid, actionid)
  2626. {
  2627. if(actionid == SPECIAL_ACTION_USEJETPACK)
  2628. {
  2629. svCheats_GrantedJetpack[playerid] = true;
  2630. }
  2631. else if(actionid == SPECIAL_ACTION_NONE)
  2632. {
  2633. svCheats_GrantedJetpack[playerid] = false;
  2634. }
  2635. return SetPlayerSpecialAction(playerid, actionid);
  2636. }
  2637. #if defined _ALS_SetPlayerSpecialAction
  2638. #undef SetPlayerSpecialAction
  2639. #else
  2640. #define _ALS_SetPlayerSpecialAction
  2641. #endif
  2642. #define SetPlayerSpecialAction svCheats_SetPlayerSpecialAction
  2643. stock svCheats_ClearAnimations(playerid)
  2644. {
  2645. svCheats_GrantedJetpack[playerid] = false;
  2646. return ClearAnimations(playerid);
  2647. }
  2648. #if defined _ALS_ClearAnimations
  2649. #undef ClearAnimations
  2650. #else
  2651. #define _ALS_ClearAnimations
  2652. #endif
  2653. #define ClearAnimations svCheats_ClearAnimations