Unknow Command bei Funktionierendem Befehl | For Schleife Fail

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
  • Heyho,
    ich hab ein Problem wenn ich den folgenden Befehl ausführe funktioniert er zwar aber es kommt Unknow Command.
    if(strcmp(cmdtext, "/cveh menu", true) == 0)
    {
    if(sinfo[playerid][pAutos] == 0)return SendClientMessage(playerid,GRAU,"Du besitzt kein Auto!");
    new str[300];
    for(new auto = 0;auto < 6; auto++)
    {
    format(str,sizeof(str),"%s\n%s",str,PlayerVehicle[GetVehicleModel(Spielercar[playerid][auto]) - 400]);
    ShowPlayerDialog(playerid,carmenu,2,"Fahrzeuge",str,"Auswählen","Abbrechen");
    }

    return 1;
    }
    Wenn ich das ShowPlayerDialog nach der Geschweiften klammer mache kommt nur Unknow Command ;/
    Danke im Vorraus :)


    ~TheSnipesZone =]


    //Edit: Überschrift überarbeitet

  • Die einfachste Lösung wäre, wenn du jetzt einfach eine Nachricht returnst.


    Aber es muss ja einen Grund haben, wieso er Unknown Command returnt.


    Versuch mal, auch wenn das wahrscheinlich nichts bringen wird, nach dem ShowPlayerDialog noch etwas zu machen. Testweise eine Nachricht oder so.


    Gruß,
    Neo. :)

  • In der For-Schleife wird str immer wieder - bei jedem durchlauf - neu formatiert.


    Ich denke, dass das nicht von dir gewollt ist (?).


    Könntest du mir kurz sagen, was der Befehl eigentlich bringen soll?


    Gruß,
    Neo. :)

  • Hallo,


    so ein Fehler tritt oft auf, wenn ein Array kleiner ist, als dass, was du eigentlich möchtest.


    Sprich:

    new MeinArray[20]; // dieses Array geht von 0 - 19


    Angeforderter Wert:

    printf("%s", MeinArray[20]); // Wird nicht ausgeführt, da dass Array zu klein ist

  • Sorry wegen der Späten Antwort aber irgendwie komm ich nur mit Proxys auf das Forum ka wieso komisch :/
    Jedenfalls ich hab die Array vergrößert auf 1000 und trozdem ist der Fehler noch da.
    Ich formatier den immer neu weil ich die Autos des Spieler auflisten will in einem Dialog ;p
    ~TheSnipesZone


    Ich hoffe irgendjemand kann mir helfen :(


  • Hey Neo ja das ist so gedacht weil ich da alle Autos die ein Spieler besitzt im Dialog aufgelistet soll und der von dort aus ein Auto Verkaufen bzw. finden kann.


    Was passiert, wenn du ShowPlayerDialog über der For Schleife ausführst?


    Ich hab den befehl mal so geändert:
    ocmd:carmenu(playerid,params[])
    {
    if(sinfo[playerid][pAutos] == 0)return SendClientMessage(playerid,GRAU,"Du besitzt kein Auto!");
    new str[1000];
    SendClientMessage(playerid,GRAU,"Test 1");
    ShowPlayerDialog(playerid,carmenu,2,"Fahrzeuge",str,"Auswählen","Abbrechen");
    for(new auto = 0;auto < 6; auto++)
    {
    format(str,sizeof(str),"%s\n%s",str,PlayerVehicle[GetVehicleModel(Spielercar[playerid][auto]) - 400]);
    if(auto == 5)
    {

    }
    }
    SendClientMessage(playerid,GRAU,"Test 2");
    return 1;
    }
    Als test hab ich ShowPlayDialog davor gesetzt wird aber nartürlich nicht angezeigt da der String str noch leer ist.
    Die Message Test 1 erhalte ich aber nie die Test 2 Message. Ich bin auf ocmd umgestiegen weil dann kein Unknow Command steht. Mein Problem ist halt noch das man bei OCMD keine 2 wörter als command haben kann.
    Und ich würde gerne wissen was daran falsch ist weil ich alles genau wissen will ;p


    ~TheSnipesZone =]


    //Edit


    Habs hinbekommen ich musste etwas bisschen verändern :).
    if(strcmp(cmdtext, "/cveh menu", true) == 0)
    {
    if(sinfo[playerid][pAutos] == 0)return SendClientMessage(playerid,GRAU,"Du besitzt kein Auto!");
    new str[400];
    new strtext[500];
    for(new overwerkeautos = 0;overwerkeautos < 6; overwerkeautos++)
    {
    if(Spielercar[playerid][overwerkeautos] == 0)break;
    new str1[20];
    format(str1,10,"%i | %i",overwerkeautos,Spielercar[playerid][overwerkeautos]);
    SendClientMessage(playerid,WEISS,str1);
    format(str,400,"%s",PlayerVehicle[GetVehicleModel(Spielercar[playerid][overwerkeautos]) - 400]);
    strcat(str, "\n");
    strcat(strtext, str);
    }
    ShowPlayerDialog(playerid,carmenu,2,"Fahrzeuge",strtext,"Auswählen","Abbrechen");
    return 1;
    }