Geld verdoppelt sich

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
  • Hallo Community,
    bei mir ist das so, dass wenn ich z.B in minus bin InGame d.h
    in -1200$ und wenn ich mich auslogge & wieder einlogge habe ich das toppelte
    also -2400$ und das geht immer so weiter.. -4800 -> 9600 etc.


    Genau das gleiche wenn ich in plus bin wenn ich 300$ habe habe ich nach nem Relogg
    600 -> 1200 -> 2400 immer so weiter.


    Ich weiss nicht warum das so ist..


    mfG,
    Ien_Levin

    :) SWAGETTI & YOLONAISE!

  • Zeig uns doch wie du das ganze speicherst, am Ende, wenn sich der Spieler ausloggt und wie du es lädsts, am Anfang, beim Einloggen.


  • stock SpielerLaden(playerid)
    {
    new Spielerdatei[64];
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof(name));
    format(Spielerdatei,sizeof(Spielerdatei),"/Spieler/%s.txt",name);


    if(klasse[playerid] == 1)
    {
    SetPlayerColor(playerid,PINK);
    }


    SetPlayerScore(playerid,dini_Int(Spielerdatei,"Level"));
    PayPlayerMoney(playerid,dini_Int(Spielerdatei,"Geld"));
    SetPlayerSkin(playerid,dini_Int(Spielerdatei,"Skin"));
    SetPVarInt(playerid,"Kontostand",dini_Int(Spielerdatei,"Kontostand"));
    SetPVarInt(playerid,"Adminlevel",dini_Int(Spielerdatei,"Adminlevel"));


    _____________________________________________________________


    stock SpielerSpeichern(playerid)
    {
    new Spielerdatei[64];
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof(name));
    format(Spielerdatei,sizeof(Spielerdatei),"/Spieler/%s.txt",name);
    dini_IntSet(Spielerdatei,"Level",GetPlayerScore(playerid));
    dini_IntSet(Spielerdatei,"Geld",GetPVarInt(playerid,"Geld"));


    ______________________________________________________________


    stock Login(playerid,inputtext[])
    {
    new Spielerdatei[64];
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof(name));
    format(Spielerdatei,sizeof(Spielerdatei),"/Spieler/%s.txt",name);
    if(gettime()<dini_Int(Spielerdatei,"Timeban"))
    {
    SpielerSpeichern(playerid);
    SendClientMessage(playerid,ROT,"Du bist noch gebannt. Komm später wieder.");
    Kick(playerid);
    return 1;
    }
    if(strcmp(MD5_Hash(inputtext),dini_Get(Spielerdatei,"Passwort")) == 0)
    {
    SpielerLaden(playerid);
    SendClientMessage(playerid,ORANGE,"Bei Fragen oder Problemen kannst Du dich bei den Supportern melden. {E74F68}/report");
    SendClientMessage(playerid,ORANGE,"Falls Du Hilfe benötigst, kannst Du das Help System benutzen. {E74F68}/help");
    return 1;
    }
    else
    {
    new IP[512],iptext[512];
    GetPlayerIp(playerid,IP,512);
    format(iptext,sizeof(iptext),"Falsches Passwort. Gebe das korrekte Passwort erneut ein.\n{E74F68}Cheater werden automatisch gebannt.",IP);
    ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_INPUT,"{FAFAFA}Login",iptext,"Login ","Abbrechen");
    }
    return 1;
    }


    Hier

    :) SWAGETTI & YOLONAISE!

  • PayPlayerMoney - Jetzt will ich das sehen ;).


  • public OnPlayerDisconnect(playerid, reason)
    {
    Spieler[playerid][Paintball] = 0;


    new pname[MAX_PLAYER_NAME], string[45 + MAX_PLAYER_NAME];
    GetPlayerName(playerid, pname, sizeof(pname));
    switch(reason)
    {
    case 0: format(string, sizeof(string), "%s hat den Server verlassen. (Verbindung verloren)", pname);
    case 1: format(string, sizeof(string), "%s hat den Server verlassen. (Verlassen)", pname);
    case 2: format(string, sizeof(string), "%s hat den Server verlassen. (Gekickt/Gebannt)", pname);
    }
    SendClientMessageToAll(GELB, string);


    TextDrawDestroy(Kills[playerid]);
    TextDrawDestroy(Tode[playerid]);
    TextDrawDestroy(KDRATE[playerid]);
    TextDrawDestroy(Pres[playerid]);


    DeletePVar(playerid, "LastHP");
    DeletePVar(playerid, "LastHP1");
    DeletePVar(playerid, "last_anim");


    if(Desktop_Timer_Started[playerid] == 1){KillTimer(Desktop_Timer[playerid]);}
    ResetPlayerTimers(playerid);


    SpielerSpeichern(playerid);
    return 1;
    }

    :) SWAGETTI & YOLONAISE!

  • mach dein PayPlayerMoney raus und benutz die funktion GivePlayerMoney, zb so:
    stock SpielerLaden(playerid)
    {
    new Spielerdatei[64];
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof(name));
    format(Spielerdatei,sizeof(Spielerdatei),"/Spieler/%s.txt",name);


    if(klasse[playerid] == 1)
    {
    SetPlayerColor(playerid,PINK);
    }


    SetPlayerScore(playerid,dini_Int(Spielerdatei,"Level"));
    GivePlayerMoney(playerid,dini_Int(Spielerdatei,"Geld"));
    SetPlayerSkin(playerid,dini_Int(Spielerdatei,"Skin"));
    SetPVarInt(playerid,"Kontostand",dini_Int(Spielerdatei,"Kontostand"));
    SetPVarInt(playerid,"Adminlevel",dini_Int(Spielerdatei,"Adminlevel"));

  • DU kannst direkt SetPlayerMoney machen


    Ist nicht ... gibt's u.a. nur in uf.inc (oder man schreibt es sich fix neu).



    John_Sanclear:



    #define Function%0(%1) forward%0(%1); public%0(%1)


    Function SetPlayerMoney(playerid, amount)
    {
    ResetPlayerMoney(playerid);
    GivePlayerMoney(playerid, amount);
    return 1;
    }


    Guck dir mal das hier an und dann deine Variante.



    stock PayPlayerMoney(playerid,menge)
    {
    SetPVarInt(playerid,"Geld",GetPVarInt(playerid,"Geld")+menge);
    GivePlayerMoney(playerid,menge);
    return 1;
    }


    Du setzt die Variable "Geld" auf den Inhalt dieser Variable (Sinn?) + die Menge (unter SpielerSpeichern setzt du die Variable "menge" gleich der Variable "Geld"), ergo Geld+Geld ist neues Geld (GetPVarInt + GetPVarInt unter SetPVarint). Anschließend gibst du ihm dann das "doppelte" Geld.



    McMoney: Unsinnig. Der Server restartet, der Spieler behält das Geld und loggt sich neu ein -> selbes Problem, doppelt Geld.