Abfrage ob Zahl negativ ist, funktioniert nicht

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
  • Hey,
    Liegt vielleicht daran, das ich schon seit 16 Uhr am Scripten bin, und nen freien Kopf brauche, oder an was weiß ich, aber meine Abfrage ob die Zahl negativ ist, funktioniert nicht.


    Der Befehl bei dem er Positiv statt negativ eingebener Zahl auspuckt:
    ocmd:givemoney(playerid,params[])
    {
    if(!IsAdmin(playerid,3))return noaccess
    new plid;
    new geld;
    new string[128];
    if(sscanf(params,"ui",plid,geld))return SendClientMessage(playerid,WEIß,"Verwendung: /givemoney (Spieler/ID) (Geld)");
    GivePlayerMoney(plid,geld);
    if(!PlayerOnline(plid))return SendClientMessage(playerid,GRAU,"Dieser Spieler ist nicht erreichbar.");
    format(string,sizeof(string),"%s %s hat dir %i$ gegeben.",RangName(playerid),PlayerName(plid),geld);
    for(new i=0; i<GetMaxPlayers(); i++)
    {
    if(!IsAdmin(i,3))continue;
    new str[222];
    format(str,sizeof(str),"Achtung: %s %s hat dem Spieler %s %i$ überwiesen.",RangName(playerid),PlayerName(playerid),PlayerName(plid),geld);
    SendClientMessage(i,GELB,str);
    }
    SendClientMessage(plid,GELB,string);
    }



    Der Stock
    stock GivePlayerMoneyEx(playerid, amount)
    {
    if(amount<0)
    {
    Geld[playerid]-=amount;
    }
    else
    {
    Geld[playerid]=Geld[playerid]+amount;
    }
    new moneystr[128];
    format(moneystr,sizeof(moneystr),"$%s",valstr(Geld[playerid]));
    TextDrawSetString(pMoneyTd[playerid],moneystr);
    }



    Im Endeffekt gebe ich bei /givemoney negative Zahl ein (-100) bekomme aber +100 auf mein Geld.



    Achja, Ja, ich habe GivePlayerMoney zu GivePlayerMoneyEx defined. Liegt nicht daran.


    Jeder der mir eine Lösung darauf anbieten kann, oder mir auf die Sprünge helfen kann, ist willkommen.
    Ich möchte keine Tipps haben, wie ich meinen Code aufhübschen kann, oder effizienter machen kann, nur Hilfe zu diesem Fehler.

    GitHub
    Eat - Sleep - Linkin Park

    2 Mal editiert, zuletzt von toketwo ()

  • Code
    if(amount<0)
    {
    	Geld[playerid]-=amount;
    }


    Einzelschritt-Debugging im Kopf:


    Code
    amount ist -500
    if (amount<0)
    -> erfüllt
    
    
    Geld[playerid] -= amount;
    -> Geld[playerid] = Geld[playerid] - amount;
    -> Geld[playerid] = Geld[playerid] - (-500);
    -> Geld[playerid] = Geld[playerid] + 500;


    Du brauchst keinen Check, ob der Wert unter 0 ist. die einfach Anweisung

    Code
    Geld[playerid] += amount


    reicht als korrekter Ersatz für die Zeilen 3 - 10