Anti Money

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
  • Könnte man nicht einfach das so machen das man nicht mit GivePlayerMoney und GetMoney sondern ein eigenes mit pvars oda enums dann würde das ercheatete Geld ihm kein Sinn machen weil er damit nix anfangen kann...


    Guter Support, Gute Preise! Freunde das ist kein Speed das ist Lichtgeschwindigkeit!
    Atrox Devolpment[/size]
    [size=24][color=#ff0000]Kunde | Top WBB Produkte

  • new pMoney[MAX_PLAYERS];


    stock GiveUserMoney(playerid, money)
    {
    GivePlayerMoney(playerid, money);
    pMoney[playerid] = money;
    return 1;
    }


    SetTimer("CheckMoneyHack", 100, true),


    public CheckMoneyHack(playerid)
    {
    if(pMoney[playerid] != GetPlayerMoney(playerid))
    {
    SendClientMessage(playerid, 0xFFFFFFFF, "*hust* warum hack? *hust*");
    Ban(playerid);
    }
    return 1;
    }

    So sieht ein Anti Money Hack aus


    Einmal editiert, zuletzt von EinfachMax ()

  • So sieht ein Anti Money Hack aus


    Also da muss ich doch mal einlenken. So sieht ein Anti Money Hack hoffentlich bei niemanden auch nur annähernd aus. Warum? Erklärungen folgen:

    • pMoney[playerid] = money; <= Falsch. Alleine der Aufruf deiner GiveUserMoney Funktion würde den Spieler schon bannen.
    • Es fehlen sämtliche Variable-Resets, wenn der Spieler den Server verlässt.
    • SetTimer("CheckMoneyHack", true), <= Alleine hier sind schon 2 Fehler. Zum einen Fehlt die Abfragezeit, also das Intervall, zum anderen gehört da ein Semikolon hin, und kein Komma.
    • Du beachtest keinen Lag. Spieler mit sehr hoher Ping können gebannt werden, wenn die Variable bereits hoch gesetzt wurde, der Befehl aber noch nicht beim Spieler Client ankam. Das ist tatsächlich der Fall, hatte das bei meinem Anti Money Hack System.
    • Außerdem fehlt dir jeglicher Ausschluss von Desynchronisation. Was ist das? Geh mal in einen Server, und dann lade eine größere Datei hoch, je nach Internetverbindung bist du danach im Server nicht mehr synchronisiert, was folglich zu einem Ban führt, sobald sich dein Geld per Aufruf ändert.
    • Es fehlen sämtliche Ausschlüsse, dazu zählen:

      • Snack Maschinen
      • Ammu Nation
      • Stunt Bonus
      • Tune Garagen
      • Pay'n'Spray
      • Casino
      • (...)


      Da du abfragst ob GetPlayerMoney nicht der Variable entspricht, wirst du, sofern der Timer richtig gesetzt wird (siehe (1)) sofort gebannt, solltest du eine der obigen Funktionen nutzen. Das ist sehr schlecht.


    Es gibt noch weitere Kriterien die unbedingt beachtet werden sollten, um falsche Bans auszuschließen. Ich habe über 1 Jahr lang mein Anti Money Hack immer wieder verbessert und mit diesen Kriterien ausgestattet. Also so was ist nicht in 5 Minuten gemacht.


  • Mein Stock wird aber gehen?
    stock GiveMoney(playerid,value)
    {
    SetPVarInt(playerid,"Money",GetPVarInt(playerid,"Money")+value);
    Spieler[playerid][pMoney]+value;
    return value;
    }


    Guter Support, Gute Preise! Freunde das ist kein Speed das ist Lichtgeschwindigkeit!
    Atrox Devolpment[/size]
    [size=24][color=#ff0000]Kunde | Top WBB Produkte

  • Hey,
    @Jerry:
    Zu Punkt 6 ist es möglich, eine Toleranzgrenze einzubauen, da es meiner Meinung nach nicht möglich ist, zu überprüfen, ob der Spieler sich was am Automaten gekauft hat.


    z.B. if(GetPlayerMoney(playerid) >= pMoney[playerid] - 200)


    Das wäre eine Toleranzgrenze von 200$


    reoarni:
    Du gibst dem Spieler aber garnicht das Geld ( oben rechts ) sondern speicherst es nur in die PVar.


    Du musst die Toleranzgrenze zudem einbauen, was aber beim Check funktioniert


  • Was für eine grenze?
    Doch ich gebe ihm doch +value d.h input = value = Sein Money


    Guter Support, Gute Preise! Freunde das ist kein Speed das ist Lichtgeschwindigkeit!
    Atrox Devolpment[/size]
    [size=24][color=#ff0000]Kunde | Top WBB Produkte

  • Das stock an sich ist schon falsch, der Compiler wird da sicher rummäckern.


    stock GiveMoney(playerid,value)
    {
    SetPVarInt(playerid,"Money",GetPVarInt(playerid,"Money")+value);
    Spieler[playerid][pMoney]+value; //Das hier hat keinen Sinn, und auch keinen Effekt.
    return value;
    }


    Blu3scReeN: Die Toleranzgrenze sollte dann über 36.000.000 sein, da ich bei einem Einsatz von 1.000.000 im Casino auf die 0 beim Roulette 36.000.000 gewinnen kann. :D Zugegebenermaßen etwas unrealistisch, aber es kann doch gut sein, dass der Spieler ein paar Hunderttausend gewinnt.


    reoarni: Du kannst auch ein ganz auf Server Variablen basierendes Geld System machen, dabei würden allerdings sämtliche genannten Funktionen (Casino, Ammu Nation...) ihren Sinn verlieren, da man kostenlos sich deren bedienen kann. Je nach GM wäre das sinnvoll, oder auch nicht.

  • reoarni:


    Wenn ein Spieler bei dir in den PNS geht, etwas isst, ist es deine Absicht, ob er gebannt wird.
    -> Du musst eine Toleranzgrenze von min. 200$ einbauen, wie oben beschrieben.


    Jeffry: Wieso heißt sein stock denn nicht GetGiveMoney(playerid, value), denn sein stock gibt etwas zurück :o


    Du kannst das Casino auch einfach deaktivieren^^

  • Es ist kein RL servr ^^ PNS gibts nicht gut ehm .. Was eine Idee ist wenn er die Trinkautomaten Anim macht geld abziehen... oder per samp map editor entfernen und BSN etc machen.


    Jeffrey


    Spieler[playerid][pMoney]+value; //Das hier hat keinen Sinn, und auch keinen Effekt.Warum nicht?


    Arbeite eig. immer mit pvars wird das erste mal mit enum


    Guter Support, Gute Preise! Freunde das ist kein Speed das ist Lichtgeschwindigkeit!
    Atrox Devolpment[/size]
    [size=24][color=#ff0000]Kunde | Top WBB Produkte

  • Naja, es war ein Beispiel, habe nichts getestet oder gar Beachtet das ich was Falsch schreibe.
    Wenn der Spieler den Server verlässt wird die Variable im normalfall sowieso resetet.


    Mfg ^^

  • Jeffry: Wieso heißt sein stock denn nicht GetGiveMoney(playerid, value), denn sein stock gibt etwas zurück :o


    CreateVehicle gibt dir ja auch was zurück (Vehicle ID) und heißt deswegen nicht "GetCreateVehicle", oder? ^^
    Wie er die Funktion nennt, und was er zurück gibt ist irrelevant, solange er durchblickt. Er kann es auch "IchMagSchokodonuts" nennen.
    Siehe dazu: http://forum.sa-mp.com/showthread.php?t=255246


    reoarni:
    WENN, dann so:
    Spieler[playerid][pMoney]+=value;


    Wenn der Spieler den Server verlässt wird die Variable im normalfall sowieso resetet.


    Nö. Nur wenn du es auch angibst. Von selber geht nichts. ;)
    In dem Fall bei OnPlayerDisconnect: pMoney[playerid] = 0;

  • Nunja, was möchtest du noch mit der Variable wenn du gar nicht mehr Online bist? ;)


    Ein neuer Spieler mit der selben ID wird ja sicher bald den Server betreten, in dem Fall wäre die Variable angenommen vom Spieler der das Spiel verlassen hat noch "12345", gibst du dem neuen Spieler dann sein Geld, so hat die Variable 12345 mehr an Wert, was nach deinem System mit != zu einem Ban führt. ;)


    Variablen IMMER bei OnPlayerDisconnect resetten, sofern sie für den Spieler bestimmt sind, sie resetten sich NIE von alleine (außer du startest den Server neu).




  • Ein neuer Spieler mit der selben ID wird ja sicher bald den Server betreten, in dem Fall wäre die Variable angenommen vom Spieler der das Spiel verlassen hat noch "12345", gibst du dem neuen Spieler dann sein Geld, so hat die Variable 12345 mehr an Wert, was nach deinem System mit != zu einem Ban führt. ;)


    Variablen IMMER bei OnPlayerDisconnect resetten, sofern sie für den Spieler bestimmt sind, sie resetten sich NIE von alleine (außer du startest den Server neu).


    Was empfiehlst du?enum oda PVar hab auch mehr erfahrung mit PVar


    Guter Support, Gute Preise! Freunde das ist kein Speed das ist Lichtgeschwindigkeit!
    Atrox Devolpment[/size]
    [size=24][color=#ff0000]Kunde | Top WBB Produkte