GivePlayerMoney sicherer machen?

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
  • Oben steht ja eigentlich schon meine Frage ich arbeite momentan an einem Selfmade wie bekomme ich das GivePlayerMoney sicherer? Ich möchte es nicht mit Textdraw machen ich würde gern die "grüne" Geldanzeige behalten aber ich weis aus Erfahrung das diese sehr leicht zu "manipulieren" ist. :pinch:

    - heftig abhängig von Karli Kugelblitz Choco Drinks

  • Du könntest auch eine Variable machen die speichert was der Spieler im gesamten Spiel bzw. seit seiner Registrierung ausgegeben und eingenommen hat.


    z.b. hat der Spieler nun 100$ ausgegeben so addierst du dies in die Variable für die Ausgaben und wenn der Spieler nun 1000$ verdient in die Variable für die Einnahmen


    Beim betreten bekommt er die Einnahmen und kriegt die ganzen Ausgaben abgezogen so hast du den Betrag den er aktuell hat.

    Mfg. BlackFoX_UD_ alias [BFX]Explosion



  • Was ist mit PNS und Sprunks

    Löschen oder berücksichtigen (Abfragen in welcher Zeit er wie oft was gedrückt hat in einer Sekunde 5x F ist gleich so viel ich weis 1x Essen also 1 Dollar verlust somit wird in der Var 1 Dollar abgezogen und wenn er in einem PNS ist kann er nur 1x sprayen also -100 dann muss er raus dann wird nicht mehr berücksichtigt wieder rein maximal -100 Dollar etc.)

  • Was ist mit PNS und Sprunks

    Benötige ich eh nicht :) (Selfmade)


    Ich habe es jetzt so gemacht.. oben in meinem enum 'geld' reingehauen...
    dann hab ich einen Timer erstellt in Dauerschleife der das hier aufruft:



    public geldcheck(playerid)
    {
    if(GetPlayerMoney(playerid)==pInfo[playerid][geld])
    {
    ClearChat(playerid);
    new string[128];
    format(string,sizeof(string),"Spieler %s hat sich spontan dafür entschieden zugehen.. (Grund: Hack)",getplayername(playerid));
    SendClientMessageToAll(rot,string);
    SendClientMessage(playerid,rot,"Hack: Geldcheat");
    SendClientMessage(playerid,weiss,"Sollte dies nicht richtig sein melde dich bitte im Teamspeak!");
    Ban(playerid);
    }
    return 1;
    }

    - heftig abhängig von Karli Kugelblitz Choco Drinks

  • Es wird aber irgendwie nicht in die MySQL Datenbank gesetzt..
    Unter SavePlayer hab ich das hier pInfo[playerid][geld]=GetPlayerMoney(playerid);
    und unter LoadPlayer das hier GivePlayerMoney(playerid,pInfo[playerid][geld]);
    logischerweise hab ich auch noch den ganzen anderen mist mit der mysql query
    da drinnen.

    - heftig abhängig von Karli Kugelblitz Choco Drinks

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • if(GetPlayerMoney(playerid)!=pInfo[playerid][geld])


    Das ist auch nicht schlau, was ist, wenn er am Lebensautomat war oder Tuning-Garage?


    Hier, so kannst du es einfach machen: [ SCRIPTING ] Anti Moneyhack


    Beachte, dass du das in ein Include schreiben solltest ^^


    mfg. :thumbup:

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • Für so welche Fälle schreibt man sich Extra Funktionen


    //Zum Geld addieren
    stock GivePlayerMoneyEx(playerid, amount){
    SetPVarInt(playerid, "geld", GetPVarInt(playerid, "geld") + amount );
    GivePlayerMoney(playerid, amount);
    }


    //Zum Geld setzen
    stock SetPlayerMoneyEx(playerid, amount){
    SetPVarInt(playerid, "geld", 0);
    GivePlayerMoneyEx(playerid, amount);
    }


    //Zum geld auslesen
    stock GetPlayerMoneyEx(playerid)return GetPVarInt(playerid, "geld");


    //Der Timer den du irgendwo starten musst (optional)
    SetTimerEx("@Timer", 1000, true, "i", playerid);


    //Der Timer an sich!
    @Timer(playerid); @Timer(playerid){
    if(GetPlayerMoney(playerid) > GetPlayerMoneyEx(playerid)){
    //Geldcheat
    }
    return 1;
    }


    Falls der Code Fehlerhaft dann tut es mir leid (ich bin grad noch im halbschlaf)