Anti-armă anti-înșelătoare

Anti-Armă / Amenajare Hack

Mergând pe cele mai multe servere cu mecanica interesante de pompare arma de calificare sau în cazul în care o mulțime de arme diferite, care se disting prin rang sau de ce acest titlu jucători văzut, probabil, nubtsy care au intrat doar serv rulează deja cu același arsenal precum și bunici servo, de obicei, proprietarii de iobagi a scrie ieftin brațele prin rândurile, sau ora, dar apoi din nou, ai un rang mai sus / jos și vă puteți adăuga cartușe sau chiar le include infinite și așa mai departe, cred că nu e corect, iar jucătorii care joacă pentru o lungă perioadă de timp să nu se grăbească pentru a vedea astfel de Pec poze de in, un alt 0.3e am început să scriu acest lucru ieftin pe arme, singurul lucru care lipsește deoarece există urmărire fotografii (încercând să știe să facă o carja cu stat cheie presupune klatsnul mouse-ul și împușcat), dar apoi am saturat de ea și a schimbat versiunea kostylepisanie 0.3 .7 și a obținut un succes total la scrierea acestui anti-cheat pe arme și muniție pentru acestea, sau care nu mă înșele nici o dorință de a se sustrage, sau într-adevăr el a atins succesul, dar cred că prima opțiune








goodies
  • Văd problema oricărei arme stângace
  • Văd problema oricărui cartuș de stânga
  • Vede substituția armelor în slot
  • Controlează s / k la infinit
  • Acest cod va prinde pe trișor atât pe jos, cât și în mașină
  • Cod maxim de pliere fără gunoi
  • Toate acestea fără apeluri false (Dacă citiți cu atenție codul și puneți verificarea AFK în locul potrivit)

contra
  • Pe scaunul șoferului nu funcționează unul (important) callboy, așadar locul șoferului a trebuit să repare


Bușteni de dezvoltare:
# 91; 0,4 # 93;
- Cartușele sunt acum scrise din fiecare slot într-o matrice separată
(deci va fi mai corectă și mai convenabilă pentru dezvoltarea în continuare a modei pentru mecanica armelor)
- Locul șoferului a fost fixat ascunzând armele din mâinile jucătorului
(prea multă vulnerabilitate în scaunul șoferului)

# 91; 0,3 # 93;
- Verificați înlocuirea armelor în slot (de exemplu: AK-47 ar putea fi înlocuit cu M4)
- O verificare mai detaliată pentru prezența unui parașut pentru asaltul aerian

# 91; 0,2 # 93;
- Fixați chemarea falsă a antihitului la moarte
- Un test mai detaliat pentru muniția Infinity
* /

#include
#include

#if definit FIX_DRIVER_WEAPONS
#define MAX_DHW_TIMER (1500)
// numărul de milisecunde pentru timer (ascunderea armei de la conducătorul auto la aterizare)
# endif


nou pPauseAC_one # 91; MAX_PLAYERS char # 93;
pPauseAC_two # 91; MAX_PLAYERS char # 93;
pState # 91; MAX_PLAYERS char # 93;
pWeapon # 91; MAX_SLOT_WEAP # 93; # 91; MAX_PLAYERS char # 93;
pAmmo # 91; MAX_SLOT_WEAP # 93; # 91; MAX_PLAYERS # 93;
pUseVehicleID # 91; MAX_PLAYERS # 93;
timglobal;

// -------------------- # 91; Interceptarea funcției: 3 # 93; ------------------------------
stocul GivePlayerWeaponAC (valoarea jucătorului.
dacă (IsPlayerConnected (playerid) == 0) returnează 0;
noul w_slot = arma_slot # 91; weaponid # 93 ;;
pPauseAC_one = MAX_TICK_PAUSE_AC;
pWeapon # 91; w_slot # 93; = arma;
pAmmo # 91; w_slot # 93; # 91; playerid # 93; + = suma;
GivePlayerWeapon (valoarea jucătorului: Weaponid.);
#if definit FIX_DRIVER_WEAPONS
dacă (pState == PLAYER_STATE_DRIVER)
SetTimerEx ( "DriverHidesWeapons" MAX_DHW_TIMER false "i" playerid ....!);
>
# endif
retur 1;
>
#if definit _ALS_GivePlayerWeapon
#undef GivePlayerWeapon
#else
#define _ALS_GivePlayerWeapon
# endif
#define GivePlayerWeap GivePlayerWeaponAC

stocul ResetPlayerWeaponsAC (jucător)
dacă (IsPlayerConnected (playerid) == 0) returnează 0;
pPauseAC_one = MAX_TICK_PAUSE_AC;
ResetPlayerWeapons (playerid);
pentru (noul i; i pWeapon # 91; eu # 93; = 0;
pAmmo # 91; eu # 93; # 91; playerid # 93; = 0;
>
retur 1;
>
#if definit _ALS_ResetPlayerWeapon
#undef ResetPlayerWeaponturi
#else
#define _ALS_ResetPlayerWeapons
# endif
#define ResetPlayerWeapons ResetPlayerWeaponsAC

// Pentru interceptare este posibil să adăugați încă SetPlayerAmmo / SetSpawnInfo,
// dar pe baza acestor funcții vă puteți orbi.
// ------------------------------------------------ ------------------------------








publice OnGameModeInit ()
SetGameModeText (! "Test AntiCheat");
AddPlayerClass (0. 0.0, 0.0, 4.0, 0.0.-1, - 1, - 1, - 1, - 1);
CreateVehicle (411. 7.0, 7.0, 6.0, 0.0, 0. 0. 60. 1);
CreateVehicle (425. 9.0, 8.0, 7.0, 0.0, 0. 0. 60. 1);
CreateVehicle (461. 10.0, 9.0, 8.0, 0.0, 0. 0. 60. 1);
timglobal = SetTimer (! "OnGlobalUpdate") TIME_GLOBAL_UPDATE.
retur 1;
>

public OnGameModeExit ()
KillTimer (timglobal);
retur 1;
>


public OnPlayerDisconnect (playerid)
pentru (noul i; i pWeapon # 91; eu # 93; = 0;
pAmmo # 91; eu # 93; # 91; playerid # 93; = 0;
>
retur 0;
>

// Public afectat doar pentru a emite arme
public OnPlayerKeyStateChange (chei de jucători noi.
dacă (chei noi KEY_YES) // Y
GivePlayerWeapon (playerid, 24. 1);
GivePlayerWeapon (playerid, 28. 2);
GivePlayerWeapon (playerid, 31. 3);
GivePlayerWeapon (playerid 34. 4);
>
dacă (chei noi KEY_NO) // N
GivePlayerWeapon (playerid 23. 1);
GivePlayerWeapon (playerid, 29. 2);
GivePlayerWeapon (playerid, 30. 3);
GivePlayerWeapon (playerid. 33. 4);
>
retur 1;
>

public OnPlayerStateChange (jucător nou.
pState = newstate;
dacă (newstate == PLAYER_STATE_WASTED || (newstate == PLAYER_STATE_ONFOOT
(oldstate == PLAYER_STATE_DRIVER || oldstate == PLAYER_STATE_PASSENGER)))
pUseVehicleID # 91; playerid # 93; = 0;
>
#if definit FIX_DRIVER_WEAPONS
dacă (newstate == PLAYER_STATE_DRIVER)
SetTimerEx (! "DriverHidesWeapons". MAX_DHW_TIMER.
>
# endif
retur 1;
>

public OnPlayerDeath (motiv pentru jucator killerid.)
// Nu sunt sigur dacă am nevoie de o grămadă de arme,
// dar în versiunile inițiale ale SA: MP, a fost observată o eroare de date incorecte în GPWD
#if definit FIX_SPAWN_RESET_WEAP
ResetPlayerWeapons (playerid);
#else
pentru (noul i; i pWeapon # 91; eu # 93; = 0;
pAmmo # 91; eu # 93; # 91; playerid # 93; = 0;
>
# endif
retur 1;
>

public OnPlayerEnterVehicle (playerid vehicul ispassenger)
pUseVehicleID # 91; playerid # 93; = vehicul;
retur 1;
>

public OnPlayerExitVehicle (playerid)
// Parașutism la ieșirea din transportul aerian) -_- (
dacă (IsAirTransport (GetVehicleModel (pUseVehicleID # 91; playerid # 93;)) == 1)
pPauseAC_one = MAX_TICK_PAUSE_AC - 1;
pWeapon # 91; SLOT_WEAPON_PARACHUTE # 93; = WEAPON_PARACHUTE;
pAmmo # 91; SLOT_WEAPON_PARACHUTE # 93; # 91; playerid # 93; = 1;
>
retur 1;
>

public OnPlayerWeaponShot (playerid, weaponid, hittype, hitid, Float, fX, Float, FY, Float, fZ)
// Lupta cu Ammo Infinity ^ - ^
nou wslot = arma_slot # 91; weaponid # 93 ;;
dacă (pAmmo # 91; wslot # 93; # 91; playerid # 93;> 0)
pPauseAC_two = MAX_TICK_PAUSE_AC - 1;
pAmmo # 91; wslot # 93; # 91; playerid # 93; -;
>
altul retur 0;
retur 1;
>


transmite OnGlobalUpdate ();
public OnGlobalUpdate ()
foreach (noul i.player)
// Verificați jucătorul pentru faptul că el trăiește și rulează în jurul hărții
// Vă recomandăm să vă pun verificarea jucătorilor de pe AFK
dacă (pState == 7 || pState == 8) continua;

dacă (pPauseAC_two > 0) pPauseAC_two --;
dacă (pPauseAC_one > 0)
pPauseAC_one --;
continua;
>

arme noi # 91; MAX_SLOT_WEAP # 93;
weaponammo # 91; MAX_SLOT_WEAP # 93 ;;

pentru (new s; s // Începem să scriem arma și b / n din slot
GetPlayerWeaponData (i.s. Weaponid # 91; s # 93; arma # 91; s # 93;);

// Verificați ocolirea în minus sau pe muniția Infinitiy
dacă (pAmmo # 91; s # 93; # 91; eu # 93; <0 || weaponammo [ s ] <0 )
printf ("# 91; partea # 93; jucătorul # 91;% i # 93; slotul # 91;% i; 93; arma de armă; este pAmmo # 91; s # 93; # 91; eu # 93; arma # 91; s # 93;);
SendClientMessage (i. - 1. "Ayyay, folosiți cartușe nesfârșite sau ați mers în jur ?! # 91; # 001 # 93;");
ResetPlayerWeapons (i);
// Kick (i);
pauză;
>

// A aruncat arma cu slotul cu serverul
dacă (armonid # 91; s # 93;> 0 weaponid # 91; s # 93; ! = pWeapon # 91; s # 93;)
printf ("# 91; partea # 93; jucătorul # 91;% i # 93; slot # 91;% i # 93; armaid # 91;% i # 93; i. pWeapon # 91; s # 93;, s. weaponid # 91; s # 93;);
SendClientMessage (i .- 1. "Ayay, nu ți-am dat un astfel de trunchi!"; 91; # 002 # 93;);
ResetPlayerWeapons (i);
// Kick (i);
pauză;
>

dacă (pPauseAC_two > 0) continuați;

// Dacă numărul de cartușe înregistrate în slot este mai mic decât cel găsit (hacked)
dacă (pAmmo # 91; s # 93; # 91; eu # 93; dacă (pPauseAC_one == 0 pPauseAC_two == 0)
printf ("# 91; partea # 93; jucătorul # 91;% i # 93; slotul # 91;% i; 93; arma de armă; este pAmmo # 91; s # 93; # 91; eu # 93; arma # 91; s # 93;);
SendClientMessage (i .- 1. "Ayyay, fura cartușele! # 91; # 003 # 93;");
ResetPlayerWeapons (i);
// Kick (i);
pauză;
>
altceva rupe;
>

// Dacă numărul cartușelor înregistrate în slot este mai mare decât cel găsit,
// apoi actualizați numărul de runde din arma slotului variabil
altfel dacă (pAmmo # 91; s # 93; # 91; eu Arme # 91; s # 93;)
dacă (pPauseAC_one == 0 pPauseAC_two == 0) pAmmo # 91; s # 93; # 91; eu # 93; = arma # 91; s # 93 ;;
altceva rupe;
>
// Dacă numărul cartușelor înregistrate în slot este egal cu cel găsit,
// nu explicați sistemul;
>
>
retur 1;
>

#if definit FIX_DRIVER_WEAPONS
înainte DriverHidsWeapons (playerid);
publice ȘoferiVideuri (jucători)
retur SetPlayerArmedWeapon (playerid. 0);
# endif

// este vehid indicat prin aer, 1 - da | 0 - nr
stoc IsAirTransport (vehid)
comutator (vehid)
Cazul 417. 425. 447. 460. 469. 476. 487. 488. 497. 511..513,
519. 520. 548. 553. 563. 577. 592. 593. retur 1;
>
retur 0;
>







Trimiteți-le prietenilor: