Anti Money Hack funktioniert nicht wie es sein soll

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
  • Hey,
    ich bin echt schon am Verzweifeln. Ich habe schon verschiedenste Includes probiert, aber mein Anti Money Hack arbeitet nie wie er sein soll. Wenn jemand Geld hackt erkennt er es zwar, nur manchmal wird man auch zufällig gebannt wenn man von der alternativen Geldgebefunktion Geld bekommt oder abgezogen bekommt. So erkenne ich ob der Spieler sich das Geld ercheatet hat:
    if(GetPlayerMoney(playerid) > NewMoney[playerid])
    {
    ResetPlayerMoney(playerid);
    GivePlayerMoneyEx(playerid,OldMoney[playerid]);
    new mbformat[128];
    format(mbformat,sizeof(mbformat),"Anti Cheat has banned %s due to Money Hack",getPlayerName(playerid));
    SendClientMessageToAll(COLOR_RED,mbformat);
    new tbanIP[50];
    GetPlayerIp(playerid,tbanIP,sizeof(tbanIP));
    TimeBan("Anti Cheat",getPlayerName(playerid),"Money Hack",90,tbanIP);
    banTimer[playerid] = SetTimerEx("KickIT",500,0,"i",playerid);


    }
    Das ganze habe ich in einem Timer der jede Sekunde aufgerufen wird und nur zur Info, ich hattes auch schonmal unter OnPlayerUpdate aber dort trat das gleiche Problem auf. Hier noch die Geldgebefunktion:
    public GivePlayerMoneyEx(playerid,ammount)
    {
    OldMoney[playerid] = GetPlayerMoney(playerid);
    NewMoney[playerid] += ammount;
    GivePlayerMoney(playerid,ammount);
    return 1;
    }
    Und bei OnPlayerConnect noch das hier:
    NewMoney[playerid] = GetPlayerMoney(playerid);
    Über Hilfe wäre ich sehr erfreut :)

  • Ich weiß nicht, wieso Ihr das alle immer so kompliziert macht.


    In der Funktion GivePlayerMoneyEx(); einfach folgendes:


    SetPVarInt(playerid, "money", betrag);


    Dann abgleichen, ob GetPlayerMoney(playerid) mit GetPVarInt(playerid, "money") übereinstimmt. Wenn nicht => Bann.


    Viel einfacher und fehlerunanfälliger.

  • Müsste es nicht so sein ?
    SetPVarInt(playerid, "money", money+ betrag);


  • == Ist in diesem Fall aber nicht cool, denn beim PNS zum Beispiel verliert man immer Geld. ;)

    ▬|██████|▬
    This is Nudelholz.
    Copy Nudelholz in your Signatur
    to make better Kuchens
    and other Teigprodukte!

  • Hey,


    Eigentlich ist ein AntiMoneyhack unnötig da das Geld ja eh Serverseitig läuft.Sowie S0beit damals für den Singleplayer ausgelegt war,soweit ich weiß ändert so ein Money Hack nur deine Hud also du denkst es wäre mehr ist es aber nicht.Der Server zieht sich ja alle Infos aus der Datenbank und der Hack kann diese nicht beeinflussen


    Falls du es doch willst empfehle ich dir einfach dass GivePlayerMoney in GivePlayerCash oder so umzuändern.Wenn jmd. Dann Money bekommt lässt du ihn bannen :p

    Einmal editiert, zuletzt von Eljero ()

  • Hey,


    Eigentlich ist ein AntiMoneyhack unnötig da das Geld ja eh Serverseitig läuft.Sowie S0beit damals für den Singleplayer ausgelegt war,soweit ich weiß ändert so ein Money Hack nur deine Hud also du denkst es wäre mehr ist es aber nicht.Der Server zieht sich ja alle Infos aus der Datenbank und der Hack kann diese nicht beeinflussen


    Falls du es doch willst empfehle ich dir einfach dass GivePlayerMoney in GivePlayerCash oder so umzuändern.Wenn jmd. Dann Money bekommt lässt du ihn bannen :p


    Ist es ja eigentlich nicht ;)
    Wenn er das normale GTA San Andreas Geld System benutzen würde, dann würde er die Speicherung warscheinlich mit GetPlayerMoney machen.
    Und was würde heißen man geht in ein beliebiges Programm z.B Cheat Engine, S0beit, Trollbeit etc.
    Dann würde Funktion SetPlayerMoney zum Einsatz kommen, da ja das normale System verwenden wird.
    Also kann man sich extra Funktionen erstellen, die zur Erleichterung dienen.


    Beispiel Code:


    stock SetPlayerMoney(playerid, amount) {
    SetPVarInt(playerid, "Money", 0);
    return GivePlayerMoneyEx(playerid, amount);
    }


    stock GivePlayerMoneyEx(playerid, amount) {
    SetPVarInt(playerid, "Money", GetPlayerMoneyEx(playerid) + amount );
    return GivePlayerMoney(playerid, amount);
    }


    stock GetPlayerMoneyEx(playerid) {
    return GetPVarInt(playerid, "Money");
    }


    Mit Freundlichen Grüßen,


    Michael aka MrPawn