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
  • Einfach das Geld immer in einer Variable laufen lassen.
    Genau wie das Level oder sonst was auch.


    Das Geld in der Anzeige oben Rechts bei einer Transaktion einfach wieder resetten und auf den Betrag der Variable setzen.
    Sollte in der Wert der Geldanzeige (GetPlayerMoney) größer als der der Varialbe sein, so ist davon auszugehen, dass
    der Spieler sich Geld gehackt hat.


  • Ehm das kann man auch ohne Timer regeln gib doch den Neulingen direkt den reocurcenfrssenden Müll


    stock _GivePlayerMoney(playerid,az)
    {
    if(GetPlayerMoney(playerid) != PlayerInfo[playerid][Geld]) return 1;
    else PlayerInfo[playerid][Geld] += az, GivePlayerMoney(playerid,az);
    return 1;
    }


    So easy ohne timner statt return 1; bei dem ersten if deine Sache hineinschreiben (ban(); kick())


  • Ne ich machs auf meiner art mit dem Geld in der Variable...


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

  • Ehm das kann man auch ohne Timer regeln gib doch den Neulingen direkt den reocurcenfrssenden Müll
    So easy ohne timner statt return 1; bei dem ersten if deine Sache hineinschreiben (ban(); kick())


    Gegen einen Timer ist nichts einzuwenden, der ist im Gegensatz zu deiner Variante sogar besser. Warum?


    Folgendes Szenario:

    • Cheater kommt in den Server, bekommt meinetwegen 100€ Startgeld, ok. Funktion wird aufgerufen, passt alles.
    • Cheater cheated sich 100.000€
    • Nichts passiert, die Funktion wurde ja noch nicht aufgerufen.
    • Cheater verlässt den Server, sein Geld wird nun gespeichert (100.100€), kein Ban, die Funktion wurde noch nicht wieder aufgerufen.
    • Cheater kommt wieder in den Server und erhält nun völlig legal die 100.100€ vom Server.


    Daher: Timer, und zwar einen der alle paar Sekunden abfragt, so wird die Chance minimiert, dass bei einem Server-Absturz oder Neustart ein Cheater sich durchmogelt. Und bei OnPlayerDisconnect unbedingt auch überprüfen.


  • Gegen einen Timer ist nichts einzuwenden, der ist im Gegensatz zu deiner Variante sogar besser. Warum?


    Folgendes Szenario:

    • Cheater kommt in den Server, bekommt meinetwegen 100€ Startgeld, ok. Funktion wird aufgerufen, passt alles.
    • Cheater cheated sich 100.000€
    • Nichts passiert, die Funktion wurde ja noch nicht aufgerufen.
    • Cheater verlässt den Server, sein Geld wird nun gespeichert (100.100€), kein Ban, die Funktion wurde noch nicht wieder aufgerufen.
    • Cheater kommt wieder in den Server und erhält nun völlig legal die 100.100€ vom Server.


    Daher: Timer, und zwar einen der alle paar Sekunden abfragt, so wird die Chance minimiert, dass bei einem Server-Absturz oder Neustart ein Cheater sich durchmogelt. Und bei OnPlayerDisconnect unbedingt auch überprüfen.


    Das stimmt aber nicht ganz...du hast zwar Recht, dass wenn die Funktion nicht mehr aufgerufen wird der Cheater auch nciht direkt gebannt wird aber durch diese Variante mit der Geldvariable wird ja beim ausloggen auch die Variable gespeichert und nicht per GetplayerMoney(so würde ich es zumindest machen) und damit nicht sein ercheatetes Geld

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen

  • Das stimmt aber nicht ganz...du hast zwar Recht, dass wenn die Funktion nicht mehr aufgerufen wird der Cheater auch nciht direkt gebannt wird aber durch diese Variante mit der Geldvariable wird ja beim ausloggen auch die Variable gespeichert und nicht per GetplayerMoney(so würde ich es zumindest machen) und damit nicht sein ercheatetes Geld


    Unter dieser Vorraussetzung ja, da hast du allerdings Recht, wenn es so gemacht wird. :D


    Ich denke mal wir können da noch unendlich weit ins Detail gehen, daher würde ich mal sagen, dass dieser Thread eigentlich beendet ist, zumindest was die Ausgangsfrage betrifft sollte dem Threadstarter ja mehr als geholfen sein. :thumbup:


  • Gegen einen Timer ist nichts einzuwenden, der ist im Gegensatz zu deiner Variante sogar besser. Warum?


    Folgendes Szenario:

    • Cheater kommt in den Server, bekommt meinetwegen 100€ Startgeld, ok. Funktion wird aufgerufen, passt alles.
    • Cheater cheated sich 100.000€
    • Nichts passiert, die Funktion wurde ja noch nicht aufgerufen.
    • Cheater verlässt den Server, sein Geld wird nun gespeichert (100.100€), kein Ban, die Funktion wurde noch nicht wieder aufgerufen.
    • Cheater kommt wieder in den Server und erhält nun völlig legal die 100.100€ vom Server.


    Daher: Timer, und zwar einen der alle paar Sekunden abfragt, so wird die Chance minimiert, dass bei einem Server-Absturz oder Neustart ein Cheater sich durchmogelt. Und bei OnPlayerDisconnect unbedingt auch überprüfen.


    Falsch!!!


    Es werden dann zwar 100.000 angezeigt aber in der Variable sind noch 100 Euro. Folglich sind innerlich 100 Euro in der Datenbank. Da ich GetPlayerMoney nur für den Anticheat nutze.


    Aber beim Speichern Frage ich das selbe nochmal ab ;)


  • Falsch!!!
    Es werden dann zwar 100.000 angezeigt aber in der Variable sind noch 100 Euro. Folglich sind innerlich 100 Euro in der Datenbank. Da ich GetPlayerMoney nur für den Anticheat nutze.
    Aber beim Speichern Frage ich das selbe nochmal ab ;)


    Genau, wurde ja bereits gesagt. :)
    Diese Vorraussetzung hatte ich unterschlagen, tut mir Leid. Gehen wir mal davon aus, dass du nicht GetPlayerMoney verwendest, dann wird das Geld natürlich nicht gespeichert, das stimmt. Das war aber aus deinem Code nicht ersichtlich, wie du das machst. Um nicht mit nackten Variablen zu arbeiten, würde sich das da anbieten:


    stock _GetPlayerMoney(playerid)
    {
    return PlayerInfo[playerid][Geld];
    }


    Damit wären dann alle Unklarheiten beseitigt, würde ich sagen, oder? :)

  • Ich habs mal so gemacht das ich einen Zufallsschlüssel für die nächste "Geldübergabe" generiert habe natürlich auch in eigene Funktionen eingebunden, alles was diesen Schlüssel nicht hatte wurde abgelehnt hinzu wurde die gesetzte Variable beim verlassen des Servers gespeichert und nicht der Betrag der Visuell zu sehen war. Bei jeder Geldübergabe habe ich einen neuen Schlüssel definiert in einer Zufalls Spielervariable, der Bezeichner dieser Variable wurde in einer weiteren Spielervariable gespeichert :)

    Mfg. BlackFoX_UD_ alias [BFX]Explosion



  • Ja sry habe nicht nachgedacht das da mehrere Teile dranhängen als der Stock


    Aber sonst wäre es ja auch kein AntiMoney System


    Naja ende gut alles gut