Hallo,
Ich wollte fragen wie ich das Geld schütze vor Cheatern. Also ich habe irgenwas mit Variabeln gehört.
Gruß
Hallo,
Ich wollte fragen wie ich das Geld schütze vor Cheatern. Also ich habe irgenwas mit Variabeln gehört.
Gruß
Wenn du zB GivePlayerMoney anwendest dann gibst du dem Spieler Geld, das kann der Spieler sich aber "hacken".
Wenn du jetzt aber eine Variable zB PlayerINfo[playerid][pGeld] miteinbeziehst welche immer aktualisiert wird sofern du dem Spieler Geld gibst kannst du dich davor so halbwegs schützen.
Einfach in einem "Timer" oder Timestamp überprüfen ob beides noch übereinstimmt und fertig.
Okay. Das heist alle paar Minuten das Geld neu laden. Oder?
Du kannst es durchaus neu setzen lassen, aber neu aus der Datei laden, nein.
Aber wie gesagt, neu setzen ist keine schlechte Wahl
Du kannst es durchaus neu setzen lassen, aber neu aus der Datei laden, nein.
Warum sollte er es nicht neu aus der Datei laden können?
@Threadersteller: Der Schutz entsteht quasi dadurch, dass du das Geld nicht über das Spiel verwaltest, sondern über eine Variable. Jedes mal, wenn du GivePlayerMoney benutzt, erhöhst du diese Variable um den selben Wert. Dadurch wird das Geld im Spiel nur eine Anzeige von Zahlen, verliert aber seine Bedeutung. Der Spieler kann sich also letztlich so viel Geld hacken wie er möchte, die Variable erhöht sich durch den Hack allerdings nicht.
Schau einfach mal in den M_Bot.
Ich finde da ist das sehr leicht erklärt. Am einfachsten wärs auch wenn du einfach die M_Bot Include in den Script einfügst. Dann brauchst du nicht mal was verändern.
Warum sollte er es nicht neu aus der Datei laden können?
Wieso soll er jedes mal eine Datei öffnen, auslesen, schreiben, schließen, wenn er es auch einfach per Variable machen kann?
Wir reden hier nicht von MySQL oder was auch immer, sondern von Dini. Es macht zwar nicht viel Unterschied, doch trotzdem brauch man nicht jedes mal wenn sich der Wert ändert eine Datei öffnen,schreiben,schließen. Und dann auch noch bei jeder Abfrage die mit dem Geld zu tun hat auch nochmal öffnen, lesen, schließen..
//EDIT
Es möge gut möglich sein, dass wir an einander vorbei reden, da ich das für sehr dumm halte, die Datei zu nehmen anstatt eine Variable, und ich hoffe, dass du es anders meinst
Es möge gut möglich sein, dass wir an einander vorbei reden, da ich das für sehr dumm halte, die Datei zu nehmen anstatt eine Variable, und ich hoffe, dass du es anders meinst
Es ging mir nicht darum, ob es sinnvoll ist, sondern, dass die Möglichkeit gegeben ist. Deine Aussage verneint das und das ist falsch. Um mehr gings mir nicht :p
Okay, dann ergibt es Sinn.
GamerKing44:
Du hast ja jetzt auch dank LeijaT: noch die Begründung, warum du lieber direkt eine Variable nehmen solltest, und nicht die Datei neu laden solltest
Okay,
Ich bedanke mich bei euch :))))
Gruß - Gamer
Schützt 100% gegen Geld Hack, habe es selbst ausprobiert. Geld wird angezeigt aber direkt wieder abgezogen.
stock SetMoney(playerid, value)
{
if(!IsPlayerConnected(playerid))return 0;
SpielerInfo[playerid][pGeld] = value;
ResetPlayerMoney(playerid);
GivePlayerMoney(playerid, SpielerInfo[playerid][pGeld]);
return 1;
}
stock GiveMoney(playerid, value)
{
if(!IsPlayerConnected(playerid))return 0;
SpielerInfo[playerid][pGeld] += value;
ResetPlayerMoney(playerid);
GivePlayerMoney(playerid, SpielerInfo[playerid][pGeld]);
return 1;
}
Mfg
Okay das heißt. Wie wende ich dieses jetzt an?
Statt dem GivePlayerMoney Befehl benutzt du das obere GiveMoney bzw SetMoney.
Ok,
Ich habe das jetzt so
sInfo[playerid][sMoney] = GiveMoney(playerid,dini_Int(Spielerdatei,"Geld"));
Was stimmt da nicht?
Habe die 2 Funktionen angepasst