Szerző Téma: IsPlayerCheater  (Megtekintve 2580 alkalommal)

Gang[St]e[R]

  • Vendég
IsPlayerCheater
« Dátum: 2011. április 07. - 18:11:00 »
0 Show voters
Üdv!
Gondolkoztam mit írjak és ez jutott eszembe!
Ez a \"kód\"-al megteheted azt ,hogyha csítel a játékos mi történjen és ha nem csítel akkor mi történjen.
Ha csítel nem bannolja hanem eldöntheted micsináljon vele, csak a számodra megfelelõ helyre írd (mint pl. OnPlayerSpawn, ...) Ha ha csítel és azt akarod ,hogy  történjen valami akkor ezzel a fügvényel kérdezheted le:
 
if(IsPlayerCheater(playerid))

 
De ha azt akarod ,hogy ha nem csítel és akkor történjen a játékossal valami akkor:
 
if(IsPlayerNotCheater(playerid))

 
Ez a kód kicsit scriptnek tûnik, de kódnak szánom:
 

#include <a_samp>
forward OnPlayerCheat(playerid);
new bool:Cheat[MAX_PLAYERS] = {false,...};
new Float:health, Float:armour;
public OnFilterScriptInit()
{
    for(new i; i < MAX_PLAYERS; i++)
{
    SetTimerEx(\"OnPlayerCheat\", 2500, true, \"i\", i);
}
return 1;
}
public OnPlayerSpawn(playerid)
{
Cheat[playerid] = false;
return 1;
}
public OnPlayerCheat(playerid)
{
if(IsPlayerConnected(playerid) && !IsPlayerNPC(playerid))
{
    new weapons = GetPlayerWeapon(playerid);
    GetPlayerHealth(playerid, health);
    GetPlayerArmour(playerid, armour);
    if(health >= 100.1 || armour >= 100.1 || weapons == 35 || weapons == 36 || weapons == 37 || weapons == 38)
    {
        Cheat[playerid] = true;
    }
}
}
stock IsPlayerCheater(playerid)
{
if(Cheat[playerid] == true);
}
stock IsPlayerNotCheater(playerid)
{
if(Cheat[playerid] == false);
}

 
Ez a \"kód\" akkor mutatja ,hogy csíter a játékos ,ha az élete vagy a páncélja nagyobb mint 100.0 vagy akkor ha a 4 nagy tiltott fegyvert használja (Minigun, Rocket Launcher...).
Manapság csak ami scriptjeinkbe vannak úgy a god módok ,hogy 100.0 ra teszi adott idõnként az életet a cheat-ek nél általában nem adott idõnként tölt hanem pl.: 10000-re teszi.
Ez a sajátmagam által írt script, mivel elég kicsi is ha lenne már ilyen kód arrol nem tudtam.
A \"kód\"ot nem teszteltem!
Lesznek még fejlesztések ,és ha zero megengedi beteszem az anti fly scriptjét ,persze mindenhol írnám ,hogy az övé!
« Utoljára szerkesztve: 2011. november 14. - 22:42:05 írta Zsolesszka »

Nem elérhető ZeRo

  • 4620
  • Ex Globális Moderátor
    • Profil megtekintése
IsPlayerCheater
« Válasz #1 Dátum: 2011. április 07. - 18:57:46 »
+2 Show voters
A Cheat szimbólumot vektorként deklaráld, mert így nem fog rendesen mûködni. Tehát például ha ID 2 minigunozna, akkor akárkinek az IDjével futtatnád le az IsPlayerCheater függvényt, az igazzal térne vissza, mivel így csak egy sima változó.
 

new bool: Cheat[ MAX_PLAYERS ] = { false, ... };
« Utoljára szerkesztve: 2011. április 07. - 18:59:17 írta ZeRo »

Nem elérhető Y2K

  • 488
    • Profil megtekintése
IsPlayerCheater
« Válasz #2 Dátum: 2011. április 07. - 19:14:58 »
0 Show voters
Amúgy én nem látok sok értelmet az egészben... Amúgy stock-nak mióta van visszatérése? Vagyis nincs is... de ezmiezmár?

Gang[St]e[R]

  • Vendég
IsPlayerCheater
« Válasz #3 Dátum: 2011. április 07. - 19:26:39 »
0 Show voters
Idézetet írta: Y2K date=1302196498\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"7374\" data-ipsquote-contentclass=\"forums_Topic
Amúgy én nem látok sok értelmet az egészben... Amúgy stock-nak mióta van visszatérése? Vagyis nincs is... de ezmiezmár?
 
Szerintem hasznos is lehet csak kicsit fejlesztgetnem kellene és már nagyon jól mutatná a csítert!

Nem elérhető kurta999

  • 2759
  • Éllő fédisznó
    • Profil megtekintése
IsPlayerCheater
« Válasz #4 Dátum: 2011. április 07. - 19:30:04 »
0 Show voters
A cheatok nemrakják a játékos életét 100 felé. Ezt már énis próbáltam, és nemvált be.

Gang[St]e[R]

  • Vendég
IsPlayerCheater
« Válasz #5 Dátum: 2011. április 07. - 19:30:47 »
0 Show voters
Idézetet írta: kurta999 date=1302197404\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"7374\" data-ipsquote-contentclass=\"forums_Topic
A cheatok nemrakják a játékos életét 100 felé. Ezt már énis próbáltam, és nemvált be.
 
Nekem még régen tesztelték és ott úgy volt!
De mindegyik hack más.
Nincs arra megoldás ,hogy stockban lehessen ! jelet tenni?
« Utoljára szerkesztve: 2011. április 07. - 19:34:37 írta GangSteR] »

IsPlayerCheater
« Válasz #6 Dátum: 2011. április 07. - 19:48:18 »
0 Show voters
\" post=\"127994\" timestamp=\"1302197447\"]

A cheatok nemrakják a játékos életét 100 felé. Ezt már énis próbáltam, és nemvált be.
 
[/quote]
Nekem még régen tesztelték és ott úgy volt!
De mindegyik hack más.
Nincs arra megoldás ,hogy stockban lehessen ! jelet tenni?
 
[/quote]
 
stock bool...

 ?
E:
Például:
 
stock bool:IsPlayerCheater(playerid)
{
     new weapons = GetPlayerWeapon(playerid);
     GetPlayerHealth(playerid, health);
     GetPlayerArmour(playerid, armour);
     if(health >= 100.1 || armour >= 100.1 || weapons == 35 || weapons == 36 || weapons == 37 || weapons == 38) return true;
 return false;
}

 
Nem teszteltem, de valahogy így kell.
« Utoljára szerkesztve: 2011. április 07. - 19:52:10 írta Stricica »

Gang[St]e[R]

  • Vendég
IsPlayerCheater
« Válasz #7 Dátum: 2011. április 07. - 20:23:36 »
0 Show voters
Idézetet írta: Stricica date=1302198498\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"7374\" data-ipsquote-contentclass=\"forums_Topic

link=topic=11308.msg127994#msg127994 date=1302197447]

A cheatok nemrakják a játékos életét 100 felé. Ezt már énis próbáltam, és nemvált be.
 
Nekem még régen tesztelték és ott úgy volt!
De mindegyik hack más.
Nincs arra megoldás ,hogy stockban lehessen ! jelet tenni?
 
[/quote]
 
stock bool...

 ?
E:
Például:
 
stock bool:IsPlayerCheater(playerid)
{
     new weapons = GetPlayerWeapon(playerid);
     GetPlayerHealth(playerid, health);
     GetPlayerArmour(playerid, armour);
     if(health >= 100.1 || armour >= 100.1 || weapons == 35 || weapons == 36 || weapons == 37 || weapons == 38) return true;
 return false;
}

 
Nem teszteltem, de valahogy így kell.
 
[/quote]
Most mivan stricica? ez mi? azt kérdeztem ,hogy stockban meglehet e oldani a ! (felkiáltó) jelet. És úgy csinálnám meg mint pl az IsPlayerNPC !IsPlayerNPC

IsPlayerCheater
« Válasz #8 Dátum: 2011. április 07. - 20:27:04 »
0 Show voters
Ha a másolt formában csinálod !-el akkor menni fog.
Asszem :D

IsPlayerCheater
« Válasz #9 Dátum: 2011. április 07. - 20:29:14 »
0 Show voters
Hát én is látok pár szörnyûséget.  :(
Tanácsként fogadd el hogy tesztelni sosem árt, akkor nem kerülnének ki a kezed közül ennyire tré kódok.
Ezért pár apróságot leírok.
Láttam egy ilyen részt kérdezném tudod-e hogy ez mit is csinál?
 

new bool:Cheat[MAX_PLAYERS] = {false,true};

 
Ne találgass, leírom.
Ezzel a sorral létrehoztál egy bool típusú változót melynek true és false értéke lehet, \"Cheat\" néven majd ezt megsokszoroztad a MAX_PLAYERS definícióval(500), majd adtál értéket a 0 cellának false és az 1-es cellának true-t.
Tehát ha ki printelnénk a tartalmát a következõ eredményt kapnánk.
 

Cheat[0] = false;
Cheat[1] = true;
Cheat[2] = false;
Cheat[3] = false;
Cheat[4] = false;
Cheat[5] = false;
Cheat[6] = false;
...
Cheat[498] = false;
Cheat[499] = false;

 
Ebbõl már látszik hogy ennek így semmi értelme.
Itt egy kis kód ennek a mûködésének tesztelésére:
 

new
pelda[20] = { 1, 0, 2, ... };
printf(\"pelda változó kiíratása cellánként\");
for(new i; i < sizeof pelda; i++)
{
printf(\"cell: %d | %d\", i, pelda);
}

 
Akkor más, ez most tényleg jó így?
 

    for(new i; i < MAX_PLAYERS; i++)
   {
       SetTimerEx(\"OnPlayerCheat\", 2500, true, \"i\", i);
   }

 
Ezzel nem kevesebb mint 500 darab timer-t indítasz el.
Nem lenne elég ha OnPlayerConnectnél indulna el egy darab timer és OnPlayerDisconnectnél meg leállításra kerülne?
Vagy legyen egy állandó timer és a meghívott funkcióban legyen egy ciklus amely lefut MAX_PLAYERS értékig vagy még jobb ha foreach van alkalmazva.
És nézd meg azt ahogy Stricica írta meg.
« Utoljára szerkesztve: 2011. április 08. - 16:52:44 írta Zsolesszka »

Gang[St]e[R]

  • Vendég
IsPlayerCheater
« Válasz #10 Dátum: 2011. április 07. - 20:34:36 »
0 Show voters
De Zero adta azt a kódot és õ profi,de halgatok rád is köszönöm a tanácsot!

Nem elérhető kurta999

  • 2759
  • Éllő fédisznó
    • Profil megtekintése
IsPlayerCheater
« Válasz #11 Dátum: 2011. április 07. - 21:12:37 »
0 Show voters
Nem értem ezeket a stockokat.
Amúgy PVar sztem jobb megoldás lenne. De lényegibe mindegy. Ja és itt meg lehet használni a char-os megoldást, ha nincs PVar.
Mér nem így csinálod meg: ( Itt írtam a fórumon, tuti nem 100% :D )
#define IsPlayerCheater(%1) \\
Cheat[%1]
És akkor:
if(!IsPlayerCheater(playerid)) return Ez ok;
if(IsPlayerCheater(playerid)) return Geci cheater;
« Utoljára szerkesztve: 2011. április 07. - 21:38:53 írta kurta999 »

Nem elérhető ZeRo

  • 4620
  • Ex Globális Moderátor
    • Profil megtekintése
IsPlayerCheater
« Válasz #12 Dátum: 2011. április 08. - 14:32:23 »
0 Show voters
\" post=\"128055\" timestamp=\"1302201276\"]
De Zero adta azt a kódot és õ profi,de halgatok rád is köszönöm a tanácsot!
 
[/quote]
Én nem azt írtam le, amit te beraktál a kódodba, nézd csak meg. Te a ... helyett true-t írtál.

Gang[St]e[R]

  • Vendég
IsPlayerCheater
« Válasz #13 Dátum: 2011. április 08. - 14:45:58 »
0 Show voters
Idézetet írta: ZeRo date=1302265943\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"7374\" data-ipsquote-contentclass=\"forums_Topic

link=topic=11308.msg128055#msg128055 date=1302201276]
De Zero adta azt a kódot és õ profi,de halgatok rád is köszönöm a tanácsot!
 
Én nem azt írtam le, amit te beraktál a kódodba, nézd csak meg. Te a ... helyett true-t írtál.
 
[/quote]
Okok javítva!

Nem elérhető Bart

  • 4111
    • Profil megtekintése
IsPlayerCheater
« Válasz #14 Dátum: 2011. április 15. - 15:57:22 »
0 Show voters
Hát a kód jó, de nem elég pontos.
Ha használod ezt attól még lehet cheater

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal