Geld cheaten

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
  • Zitat

    Also das man sich mit dem Cleo oder S0beit kein Geld cheaten kann?


    Wie mein Vorredner bereits sagte, in Playervariablen/enums speichern. Also niemals den beim Player angezeigten Wert nehmen um Überprüfungen nach Geld zu machen oder das Geld zu speichern. Immer wo Geld abgezogen wird zuerst die Variable ändern lassen, dann die Änderung zum Spieler schicke um sie ihm anzuzeigen. :)

  • Nach dem Prinzip(PlayerMoney = das was du als Speicherung nimmst):

    if(GetPlayerMoney(playerid) > PlayerMoney[playerid])
    {
    ResetPlayerMoney(playerid);
    GivePlayerMoney(playerid,PlayerMoney[playerid]);
    return 1;
    }
    // So gibst du dann nurnoch geld:
    stock SetPlayerMoney(playerid,geld)
    {
    GivePlayerMoney(playerid,geld);
    PlayerMoney[playerid]=geld;
    return 1;
    }


    kA ob es nun ganz richtig ist aber nach so nen Prinzip musst du es machen - alles hier im Post geschrieben daher kann es fehlerhaft sein


  • #include <ocmd>
    #define Grün 0xFFFF00AD




    if(strcmp(cmd, "/money", true) == 0)
    {
    if(IsPlayerConnected(playerid))
    {
    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp))
    {
    SendClientMessage(playerid, COLOR_GRAD2, "Benutzung: /money [Spieler ID] [Geldbetrag]");
    return 1;
    }
    new playa;
    new money;
    playa = ReturnUser(tmp);
    tmp = strtok(cmdtext, idx);
    money = strval(tmp);
    if (PlayerInfo[playerid][pAdmin] >= 1338) //Dein AdminLevel
    {
    if(IsPlayerConnected(playa))
    {
    if(playa != INVALID_PLAYER_ID)
    {
    ResetPlayerMoney(playa);
    ConsumingMoney[playa] = 1;
    GivePlayerMoney(playa, money);
    GetPlayerName(playa, giveplayer, sizeof(giveplayer));
    GetPlayerName(playerid, sendername, sizeof(sendername));
    format(string, sizeof(string), "AdmCmd: %s hat %s's Geld auf %d$ gesettet!",sendername,giveplayer,money);
    ABroadCast(COLOR_LIGHTRED,string,4);
    }
    }
    }
    else
    {
    SendClientMessage(playerid, COLOR_GRAD1, "Das darfst du nicht tun!");
    }
    }
    return 1;
    }


    LG
    smaxzz


    Viel spaß damit

  • Man kann sich durch s0beit kein Geld cheaten, nur als Info, das Geld cheaten funkt bei s0beit nur im Singleplayer.

    Nope kann man ganz normal solange der Server es nicht verhindert.



    Danach hat er nicht gefragt?? Mal lesen und keine komischen Posts machen??

  • Du musst einfach das Geld serverseitig laufen lassen. (Einfach gedacht: Einen neuen Stock namens GivePlayerGeld) - Ich mache das ganze über MySQL.
    Nun brauchste nurnoch einen Timer, der überprüft ob der aktuelle Geldbetrag auch dem Geldbetrag in der Datenbank gleicht.
    Wenn nicht -> Geld abziehen.

    [tabmenu][tab='Angebote',http://images-1.findicons.com/files/icons/1722/gnome_2_18_icon_theme/48/stock_new_meeting.png][subtab='CMS und Forumsystem',http://icons.iconarchive.com/icons/uribaani/realm/128/Control-panel-icon.png]Installationen & Forumlösung - Forumthread

  • Das Problem an GetPlayerMoney ist, dass es den Wert zurück gibt, der beim Spieler angezeigt wird. Das von dir genannte Programm verändert lediglich diesen Wert. Als Resultat gibt GetPlayerMoney dir den falschen Betrag wieder. Um das ganze zu verhindern musst du das Geld, wie schon mehrmals erwähnt, über den Server laufen lassen und GivePlayerMoney nur zum Anzeigen verwenden. Das heißt: Du schreibst dir eigene Funktionen zum setzen/returnen des Betrages und updatest die Anzeige per GivePlayerMoney:



    new pMoney[MAX_PLAYERS];


    GiveMoney(playerid, money)
    {
    pMoney[playerid] += money;
    GivePlayerMoney(playerid, money);
    }


    GetMoney(playerid)
    {
    return pMoney[playerid];
    }

    Nun wird pMoney zum speichern des Geldes verwendet und GivePlayerMoney nur zum Anzeigen.
    Wenn ein Spieler also die Anzeige per Programm verändert, liefert dir GetPlayerMoney einen anderen Wert als GetMoney. Damit kannst du herausfinden ob und wieviel Geld sich ein Spieler gecheatet hat.
    Dann kannst du mit GivePlayerMoney(playerid, -betrag) das Geld wieder abziehen, sodass die Anzeige mit deiner Variable übereinstimmt.