Problem mit CMD und 2 mal sscanf

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, ich habe mal wieder ein Problem, und zwar schreibe ich zur Zeit das DRP Script um.
    Nun bin ich bei dem Job Pilot und dort gib es ein Befehl "/waren" mit diesen kann man eine bestimmte Anzahl (selbst wählbar) an Waren kaufen, und Tauchen (Die komplette Ladung).
    Jetzt ist meine Frage wie ich das umsetze das bei "/waren kaufen" noch der Parameter für die Anzahl abgefragt wird.
    Mein bisheriger Versuch:
    CMD:waren(playerid,params[]){
    if(!IsPlayerConnected(playerid)||gPlayerLogged[playerid] == 0)return SendClientMessage(playerid,COLOR_GREY,"Du bist nicht eingeloggt.");
    if(PlayerInfo[playerid][pJob] != 14)return SendClientMessage(playerid, COLOR_GREY, "Du bist kein Pilot!");
    new aktion[10],menge,string[128];
    if(sscanf(params,"s",aktion)){
    SendClientMessage(playerid, COLOR_GOLD, "____________________________|Warenhilfe|____________________________");
    SendClientMessage(playerid, COLOR_WHITE, "Benutzung: /waren [Aktion]");
    SendClientMessage(playerid, COLOR_WHITE, "Verfügbare Funktionen: kaufen, tauschen, verkaufen, abrechnen");
    SendClientMessage(playerid, COLOR_WHITE, "*Kaufen [SF], Tauschen [LS], Verkaufen [LV], Abrechnen [SF]");
    SendClientMessage(playerid, COLOR_GOLD,"__________________________________________________________________");
    return 1;
    }
    if(!strcmp(aktion,"kaufen",true))
    {
    print("Kaufen 1");
    if(GetVehicleModel(GetPlayerVehicleID(playerid)) != 553)return SendClientMessage(playerid, COLOR_GREY, "Du kannst nur mit einer Nevada Waren kaufen!");
    if(!IsPlayerInRangeOfPoint(playerid, 90.0, -1233.6982,-88.1554,14.9228))return SendClientMessage(playerid, COLOR_GREY, "Du bist nicht am Hangar am San Fiero Airport!");
    if(sscanf(params,"d",menge)){
    SendClientMessage(playerid, COLOR_GREY, "Benutzung: /waren kaufen [Anzahl]");
    SendClientMessage(playerid, COLOR_GREY, "*Preis pro Ware: 15$, Maximale Waren: 75");
    print("kaufen 2");
    return 1;
    }
    print("kaufen 3");
    new preis = menge*15;
    if(menge < 5 || menge > 75)return SendClientMessage(playerid, COLOR_GREY, "Du musst mindestens 5 Waren und maximal 75 Waren kaufen!");
    if(WarenDabei[playerid] >= 75)return SendClientMessage(playerid, COLOR_GREY, "Du hast schon 75 Waren dabei!");
    if(preis > GetPlayerMoney(playerid))return SendClientMessage(playerid, COLOR_GREY, "Kannst du dir nicht leisten!");
    WarenDabei[playerid] += menge;
    GivePlayerMoney(playerid, -preis);
    format(string, sizeof(string), "*Du hast dir %d Waren im Wert von %d$ gekauft", menge, preis);
    SendClientMessage(playerid, COLOR_LIGHTBLUE, string);
    SendClientMessage(playerid, COLOR_LIGHTBLUE, "*Fliege jetzt zum LS Airport (Roter Marker)");
    SetPlayerCheckpoint(playerid, 1888.6704,-2638.9941,13.5469, 8.0);
    return 1;
    }
    return 1;
    }
    In der Konsole printet er mir bis einschließlich "Kaufen 2" und wenn ich die Anzahl dahinter schreibe macht er nicht weiter...


    Bitte um Hilfe.


    AndyWalker

  • @Music4You: dies habe ich auch überlegt, aber da ja die User faul sind, wollte ich diese 4 Aktionen in einen Befehl packen und da mna bei "/waren Taschen" keine Anuahl benötigt, würde er ja ein weiteren Parameter von mir verlangen, obwohl ich diesen dann nicht benötige....

  • @Music4You: dies habe ich auch überlegt, aber da ja die User faul sind, wollte ich diese 4 Aktionen in einen Befehl packen und da mna bei "/waren Taschen" keine Anuahl benötigt, würde er ja ein weiteren Parameter von mir verlangen, obwohl ich diesen dann nicht benötige....


    -.- ich versteh nicht wieso du dieses return 1; nicht einfach mal wegnimmst und merkst, dass es dann funktioniert ?(


  • Ob ich "return SendClientMessage..." oder return 1; stehen habe ist ja egal, da diese ja erscheinen soll, WENN dieses parameter fehlt..


    return 1; beendet die funktion, gibt im prinzip der funktion CMD: true aus! ich weiß nicht was du gedacht hast was das macht. Setzte einfach mal ganz oben in deine abfrage return 1; und er wird dir gar nichts machen!

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen