Kleines AntiMoney Cheat (Simple)

Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!

Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
  • Hallo, heute möchte ich euch mal zeigen wir ihr ein Kleines und Feines AntiMoney Cheat macht nix Großes aber egal:



    Erstmal die Player Variable Erstellen:



    new pGeld[MAX_PLAYERS];


    Das wars erstmal jetzt erstellen wir ein Timer mit den Interval von 2500 ( Beliebig).


    Dazu geht man zu der OnGameModeInit und schreibt den SetTimer ein zum Timer Starten



    SetTimer("check",2500,1);

    Info: Das erste mit den Namen check ist der name von der Public das zweite der Interval (MS) 1000 * 1 Sekunde.


    Jetzt kommen wir zu der Public wo überprüft ob der Spieler sein Geld Gecheatet hat oder nicht kleine Erklärung: Über einen Befehl wie GivePlayerMoney wird die Var. pGeld auf die anzahl gesetzt wieviel geld er hat wenn diese nicht überein stimmen heißt es MoneyCheat.



    forward check();
    public check()
    {


    for (playerid = 0; playerid < MAX_PLAYERS; playerid++)
    {
    if(pGeld[playerid] == GetPlayerMoney(playerid))
    {}
    else
    {Ban();} // Spieler Bannen
    }
    return 1;
    }

    Jetzt sind wir fast Fertig es fehlt nurnoch der Command zum geben dafür benutzen wir stock:



    stock AGivePlayerMoney(playerid,menge)
    {
    pGeld[playerid] += menge;
    GivePlayerMoney(playerid, menge);
    }

    Noch ganz oben:
    #define GivePlayerMoney AGivePlayerMoney
    jetzt als GivePlayerMoney nurnoch AGivePlayerMoney benutzen!


    Es kann sein das Fehler vorkommen das Tutorial wurde ohne Pawno vorarbeite oder getestet * Also bitte nicht gleich Posten wenns darum geht :) wenn fehler auftreten natürlich posten wenn was fehlt auch ;)


    Letzte Update: 18:45 18.08.2010


    mfg CuBe


    Spamm *.*

    3 Mal editiert, zuletzt von CuBe ()

  • Muss ein stock nicht irgendwas returnen? Und ein Public nicht auch?

  • Muss es ja.


    Statt so:

    Code
    for (playerid = 0; playerid < MAX_PLAYERS; playerid++) 
    {


    Muss es so:

    Code
    for (new playerid = 0; playerid < MAX_PLAYERS; playerid++) 
    {


    Sein.

  • Bei einer "stock" Funktion "return" zu benutzen wird alles andere abbrechen, glaub mir, ich spreche aus erfahrung !
    So zum beispiel:


    stock xLaLa(playerid)
    {
    if(IsPlayerConnected(playerid)) { return SendClientMessage(playerid,0xFFFFFFAA,"Hier spricht das gesetz, sofort /q machen !!!"); }
    return 0;
    }


    Wenn du es jetzt so benutzt:
    public OnPlayerSpawn(playerid)
    {
    xLaLa(playerid); //Wird gesendet
    SendClientMessage(playerid,0xFFFFFFAA,"Willkommen hier auf unserem"); //Wird NICHT gesendet
    SendClientMessage(playerid,0xFFFFFFAA,"guten alten Server, wo du maechtig spaß haben wirst !"); //Wird NICHT gesendet
    }


    Da wird NUR xLaLa(playerid); ausgeführt, der Rest (also die anderen 2 SendClientMessages) werden NICHT ausgeführt, deswegen wird auch soeine Warning kommen:

    Code
    unreachable code


    Deswegen musste ich in meinem Selfmade-GM alle stock's die ich gemacht habe zu public's machen, als ich gemerkt habe das das so ist ;)

  • Dafür gebe ich dir 0/10 Gründe müssten dir beweusst sein, wenn ein Spieler im Payn Spray rein geht und sein Fahrzeug umsprühen lässt, dann wird er auch gebannt weil das Geld abgezogen wird und somit nicht mehr stimmt = Ban. Ich würds so machen das ausgerechnet wird wieviel gecheatet wurden ist und abziehen von der Hand so wird dem Spieler das ercheatete Geld statt addiert abgenommen

    RFT

  • Ich meinte es aber so




    new Cheated = GetPlayerMoney(playerid) - PlayerVariable;


    und das abziehen


    das sieht dann so aus:


    Spieler hat 3000$ und versucht sich 100& zu cheaten statt das Geld wieder auf 3000 zu setzen solls mit der Rechnung auf 2900 gesetzt werden.


    MFG Julian

    RFT

  • Ich würd einfach checken ob das Geld was der Spieler hat größer ist als eine Variable die das tatsächliche Geld speichert, weil WER hackt sich weniger Geld? :D :pinch:

  • für Automaten: anim (VEND_USE) abfragen und danach geld abziehen. (funktioniert super, damit kann man auch einstellen wieviel heal man bekommt indem man z.b. 20hp abzieht wenn anim beendet ist)
    für Payn Spray undso: wenn spieler weniger geld hat dann diesen wert übernehmen. Wenn spieler 0 hat lieber nicht den wert übernehmen, weil nachm coneccten 0 hat also 0 dann servervariable einsetzen.

    Gmäeß eneir Sutide eneir elgnihcesn Uvinisterät, ist es nchit witihcg
    in wlecehr Rneflogheie die Bstachuebn in eneim Wrot snid, das ezniige
    was wcthiig ist, ist daß der estre und der leztte Bstabchue an der
    ritihcegn Pstoiion snid. Der Rset knan ein ttoaelr Bsinöldn sien,
    tedztorm knan man ihn onhe Pemoblre lseen. Das ist so, wiel wir nciht
    jeedn Bstachuebn enzelin leesn, snderon das Wrot als gseatems.