Unerklärter Fehler?

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
  • Wenn ich im Game /buyfuel eingebe kommt <<Du hast schon 2500 Waren>>


    Hier der Code


    if(strcmp(cmd, "/buyfuel", true) == 0)
    {
    if(PlayerInfo[playerid][pJob] != 22)
    {
    SendClientMessage(playerid,WHITE,"Du bist kein Bootsmann");
    return 1;
    }
    if(PlayerInfo[playerid][pTrucker] <= 2500)//HIER
    {
    SendClientMessage(playerid,WHITE,"Du hast schon 2500 Waren");
    return 1;
    }
    if(GetVehicleModel(GetPlayerVehicleID(playerid)) != 453)
    {
    SendClientMessage(playerid, COLOR_GRAD1, "Du kannst nur mit einem Roadtrain Benzin kaufen!");
    return 1;
    }
    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp))
    {
    SendClientMessage(playerid, COLOR_GOLD, "Benutzung: /buyfuel [Anzahl]");
    }
    new Anzahl;
    PlayerInfo[playerid][pTrucker] += Anzahl;
    }

  • wieso das ?


    und warum bei pJob "!=" ?


    "==" reicht als ausgabe >= das ist abfrage ob er höher als die zahl ist die angeben ist zb bei admin


    [pAdmin] >= 1338)
    so für grade zb nur 1338
    [pAdmin] == 1338)

  • So sollte das aussehen:


    if(strcmp(cmd, "/buyfuel", true) == 0)
    {
    if(PlayerInfo[playerid][pJob] != 22) return SendClientMessage(playerid,WHITE,"Du bist kein Bootsmann");
    if(PlayerInfo[playerid][pTrucker] >= 2500) return SendClientMessage(playerid,WHITE,"Du hast schon 2500 Waren");
    if(GetVehicleModel(GetPlayerVehicleID(playerid)) != 453) return SendClientMessage(playerid, COLOR_GRAD1, "Du kannst nur mit einem Roadtrain Benzin kaufen!");
    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp)) return SendClientMessage(playerid, COLOR_GOLD, "Benutzung: /buyfuel [Anzahl]");
    new Anzahl = strval(tmp);
    PlayerInfo[playerid][pTrucker] += Anzahl;
    return 1;
    }


    mfg. :thumbup:

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • Wieso new Anzahl = strval(tmp);


    Kaliber


    Weil tmp ein string ist und in diesem String befindet sich die Information einer Zahl (die Anzahl halt, was er eingibt) und strval formatiert den String in eine brauchbare Zahl ;)


    mfg. :thumbup:

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • if(PlayerInfo[playerid][pTrucker] + anzahl > 2500) return SendClientMessage...




    Also erstmal Danke an alle


    Kaliber ich kaoiers immernoch nicht aber egal Danke

  • Kaliber ich kaoiers immernoch nicht aber egal Danke


    Ist doch ganz simpel, schau mal her:


    new Anzahl; //new deklariert eine neue Variable (Anzahl hat den Wert 0)


    so jetzt wenn wir es so machen würden:
    Anzahl = 1;//Wäre Anzahl 1
    aber wir machen das:
    Anzahl = strval(tmp);//tmp = eine Variable in der der Text steht, was der User eingegeben hat (/buyfuel [ANZAHL]) diese Anzahl steht in tmp und strval holt diese Zahl aus der Variable


    Nochmal auf deinen Code bezogen:


    if(strcmp(cmd, "/buyfuel", true) == 0)
    {
    if(PlayerInfo[playerid][pJob] != 22) return SendClientMessage(playerid,WHITE,"Du bist kein Bootsmann");
    if(PlayerInfo[playerid][pTrucker] >= 2500) return SendClientMessage(playerid,WHITE,"Du hast schon 2500 Waren");
    if(GetVehicleModel(GetPlayerVehicleID(playerid)) != 453) return SendClientMessage(playerid, COLOR_GRAD1, "Du kannst nur mit einem Roadtrain Benzin kaufen!");
    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp)) return SendClientMessage(playerid, COLOR_GOLD, "Benutzung: /buyfuel [Anzahl]");
    new Anzahl = strval(tmp);
    if(GetPlayerMoney(playerid) < (Anzahl*500)) return SendClientMessage(playerid,WHITE,"Du besitzt zu wenig Geld für so viele Waren !");//Wenn er zu wenig Geld hat
    PlayerInfo[playerid][pTrucker] += Anzahl;
    new str[128];
    format(str, 128,"Du hast %d Waren gekauft und besitzt schon %d Waren !",Anzahl,PlayerInfo[playerid][pTrucker]);
    SendClientMessage(playerid,WHITE,str);
    GivePlayerMoney(playerid, -(Anzahl*500));//das hast du vergessen, er soll ja schließlich geld verlieren
    return 1;
    }


    mfg. :thumbup:

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S