Problem mit eigener giveplayermoney Funktion

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 Brotfische,


    Ich habe mir eine eigene giveplayermoney Funktion gescriptet (wegen Anti-Moneycheat), Wenn jetzt ein Spieler z.B. "00005174" $ hat, und ich führe den Befehl "/givemoney ID -4 " aus, sollte ja der Spieler dann noch "00005170" $ haben. Leider hat er aber "00005178" $ also es wird irgenwie Plus gerechnet.


    Codes:

    giveplayermoney(playerid,money)
    {
    new string[128];
    if(money > 0)
    {
    sInfo[playerid][geld]+=money;
    format(string, sizeof(string), "%08d", sInfo[playerid][geld]);
    PlayerTextDrawSetString(playerid,Money_Anzeige[playerid][2], string);
    format(string, sizeof(string),"~g~+%d$", money);
    }
    else if(money < 0)
    {
    sInfo[playerid][geld]-=money;
    format(string, sizeof(string), "%08d", sInfo[playerid][geld]);
    print(string);
    PlayerTextDrawSetString(playerid,Money_Anzeige[playerid][2], string);
    format(string, sizeof(string),"~r~%d$", money);
    }
    GameTextForPlayer(playerid, string, 1000, 1);
    return 1;
    }


    ocmd:givemoney(playerid,params[])
    {
    if(!isAdmin(playerid,1337)) return SendClientMessage(playerid, C_Error, "Du hast keine Berechtigung für diesen Befehl!");
    new pID, money,string[128];
    if(sscanf(params,"ui",pID,money)) return SendClientMessage(playerid,C_Weiß,"/givemoney [id] [Betrag]");
    giveplayermoney(pID, money);
    format(string,sizeof(string),"Du hast %i$ bekommen.",money);
    SendClientMessage(pID,C_Blau,string);
    return 1;
    }



    Ich hoffe ihr könnt mir helfen :)


    MfG :thumbup:


    Mit freundlichen Grüßen
    German_ScripterHD

  • Deine Funktion muss so lauten bzw. die Zuweisung vom Geld muss so lauten, den Rest habe ich nur etwas besser zusammengefasst der vorher auch richtig war.
    giveplayermoney(playerid,money)
    {
    sInfo[playerid][geld] += money;
    new string[128];
    format(string,sizeof string,"%08d",sInfo[playerid][geld]);
    PlayerTextDrawSetString(playerid,Money_Anzeige[playerid][2],string);
    if(money > 0)format(string,sizeof string,"~g~+%d$",money);
    else format(string,sizeof string,"~r~%d$",money);
    GameTextForPlayer(playerid,string,1000,1);
    return 1;
    }


    Ungleiche Vorzeichen werden zu minus, gleiche Vorzeichen zu plus. Daher kannst du das einfach so schreiben:
    sInfo[playerid][geld] += money;

    Einmal editiert, zuletzt von AirM4X ()