Ungeültiger Befehl? - For-Schleifen & returns

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
  • ich habe diesen Befehl:



    if(strcmp("/aufladen", cmdtext, true,10) ==0)
    {
    for(new k = -1; k < sizeof(Trashcar); k++)
    {
    if(IsPlayerInVehicle(playerid,Trashcar[k]))
    {
    if(isfull[Trashcar[k]] < 3)
    {
    if(PlayerInfo[playerid][JobTrash] == 1)
    {
    for(new i = 0; i<49; i++)
    {
    if(IsPlayerInRangeOfDynamicObject(playerid,trash[i],5.0))
    {
    DestroyDynamicObject(trash[i]);
    isfull[Trashcar[k]] += 1;
    SendClientMessage(playerid,COLOR_WHITE,"Müll wird aufgeladen");
    FREEZE
    Muelltimer[playerid] = SetTimerEx("Unfreeze", 2500, false,"i",playerid);
    return 1;
    }
    }
    }
    }
    }
    }
    return 1;
    }



    Wo müssen hier die Returns gesetzt werden, habe schon einiges ausprobiert... nur iwie verwirren mich die FOR-schleifen
    Hoffe jemand kann mir da helfen...

    Scripter und Mapper Since 2010

  • Wo genau befindet sich der Error in diesem Command?


    //edit:
    Fail sehe gerade der "Unknown Command" kommt ja Ingame xDD


    Versuch mal so:


    if(strcmp("/aufladen", cmdtext, true,10) ==0)
    {
    for(new k = 0; k < sizeof(Trashcar); k++)
    {
    if(IsPlayerInVehicle(playerid,Trashcar[k]))
    {
    if(isfull[Trashcar[k]] < 3)
    {
    if(PlayerInfo[playerid][JobTrash] == 1)
    {
    for(new i = 0; i < 49; i++)
    {
    if(IsPlayerInRangeOfDynamicObject(playerid,trash[i],5.0))
    {
    DestroyDynamicObject(trash[i]);
    isfull[Trashcar[k]] += 1;
    SendClientMessage(playerid,COLOR_WHITE,"Müll wird aufgeladen");
    TogglePlayerControllable(playerid,0);
    Muelltimer[playerid] = SetTimerEx("Unfreeze", 2500, false,"i",playerid);
    return 1;
    }
    }
    }
    }
    }
    }
    return 1;
    }

    05eb03de-9fda-461c-9dfc-834ae5b64e65.png << Server | Home >> 13462590508.png

  • von der Synthax her ist der Command richtig...


    aber wenn ich ihn ausführe kommt die Meldung "UNKNOWN COMMAND" ...


    //


    Jetzt kommt nurnoch UNKNOWN Command wenn ich im Fahrzeug sitze und den Befehl eingebe...



    // die erste For-Schleife geht also durch... aber danach gehts nicht weiter... ?

    Scripter und Mapper Since 2010

    2 Mal editiert, zuletzt von Home_Edit ()

  • if(strcmp("/aufladen", cmdtext, true,10) ==0)
    {
    for(new k = 0; k < sizeof(Trashcar); k++)
    {
    if(IsPlayerInVehicle(playerid,Trashcar[k]))
    {
    if(isfull[Trashcar[k]] < 3)
    {
    if(PlayerInfo[playerid][JobTrash] == 1)
    {
    for(new i = 0; i < 49; i++)
    {
    if(IsPlayerInRangeOfDynamicObject(playerid,trash[i],5.0))
    {
    DestroyDynamicObject(trash[i]);
    isfull[Trashcar[k]] += 1;
    SendClientMessage(playerid,COLOR_WHITE,"Müll wird aufgeladen");
    TogglePlayerControllable(playerid,0);
    Muelltimer[playerid] = SetTimerEx("Unfreeze", 2500, false,"i",playerid);
    return 1;
    }
    }
    }
    return SendClientMessage(playerid,COLOR_GRAD2,"Du hast nicht den richtigen Job dafür!");
    }
    return 1;
    }
    return 1;
    }
    return 1;
    }

    05eb03de-9fda-461c-9dfc-834ae5b64e65.png << Server | Home >> 13462590508.png


  • Mit den ganzen returns solltest du dir auch nochmal durch den kopf gehen lassen


    if(strcmp("/aufladen", cmdtext, true,9) ==0){
    new bool:no;
    if(PlayerInfo[playerid][JobTrash] != 1)return SendClientMessage(playerid,COLOR_GRAD2,"Du hast nicht den richtigen Job dafür!");
    for(new k; k < sizeof(Trashcar); k++){
    if(IsPlayerInVehicle(playerid,Trashcar[k])){
    if(isfull[Trashcar[k]] < 3){
    for(new i; i < 49; i++){
    if(IsPlayerInRangeOfDynamicObject(playerid,trash[i],5.0)){
    DestroyDynamicObject(trash[i]);
    isfull[Trashcar[k]] += 1;
    SendClientMessage(playerid,COLOR_WHITE,"Müll wird aufgeladen");
    TogglePlayerControllable(playerid,0);
    no=false;
    Muelltimer[playerid] = SetTimerEx("Unfreeze", 2500, false,"i",playerid);
    break;
    }else no=true;
    }
    }
    }
    }
    if(no)return SendClientMessage(playerid,-1,"Du bist nicht in der nähe eines Müllsackes");
    return 1;
    }


    ich hab dir mal noch eine abfrage rein gebastelt , das eine nachricht kommt sollte der spieler nicht in der nähe sein.
    Ahja sollte dies nicht gehen zeig mal was IsPlayerInRangeOfDynamicObject wiedergibt

  • Ein Tipp: Problem ausklammern bzw. Auffinden durch SendClientMessages:


    Erste Bedingung:
    SendClient..(X1)
    Zweite Aktion:
    SendClientX2
    ...
    SendClient X6


    dann weißt du ah es liegt zwischen X3 und X4, wenn er bis X3 durch kommt, X4 aber nicht erscheint.

  • Mit continue kann man auch arbeiten :D


    Sähe dann so aus:


    if(!strcmp("/aufladen", cmdtext, true))
    {
    for(new k = -1; k < sizeof(Trashcar); k++) {
    if(!IsPlayerInVehicle(playerid,Trashcar[k])) continue;
    if(isfull[Trashcar[k]] < 3) {
    if(PlayerInfo[playerid][JobTrash] != 1) continue;
    for(new i = 0; i<49; i++) {
    if(!IsPlayerInRangeOfDynamicObject(playerid,trash[i],5.0)) continue;
    DestroyDynamicObject(trash[i]);
    isfull[Trashcar[k]] += 1;
    SendClientMessage(playerid,COLOR_WHITE,"Müll wird aufgeladen");
    FREEZE
    Muelltimer[playerid] = SetTimerEx("Unfreeze", 2500, false,"i",playerid);
    break;
    }
    }
    }
    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





  • Beides ... UKNOWN COMMAND

    Scripter und Mapper Since 2010

  • Beides ... UKNOWN COMMAND


    Dann würde ich mir mal an deiner stelle gedanken darüber machen die .amx zu löschen bevor du diese kompilst oder dir dne windows ordner neu runter zu laden sollte nix per print ausgeben werden, wenn du dies auch mal getestet hast innerhalb deine commands. Da UNKNOWN COMMAND nur zurück gegeben wird wenn bei OnPlayerCommandText
    kein return 1; verwendet wird bei commands. Dies passiert, wenn man ein return 1; vergessen hat am ende des befehls oder der command nicht existiert.
    Wie schon oben erwähnt kann es auch an pawno liegen dies war bei mir auch mal so das die .amx nicht ersetzt wurde. Wie solch ein fehler bei pawno zustande kommt
    kann ich dir nicht genau sagen die ursachen sind mir auch unbekannt.

  • Dann würde ich mir mal an deiner stelle gedanken darüber machen die .amx zu löschen bevor du diese kompilst oder dir dne windows ordner neu runter zu laden sollte nix per print ausgeben werden, wenn du dies auch mal getestet hast innerhalb deine commands. Da UNKNOWN COMMAND nur zurück gegeben wird wenn bei OnPlayerCommandText
    kein return 1; verwendet wird bei commands. Dies passiert, wenn man ein return 1; vergessen hat am ende des befehls oder der command nicht existiert.
    Wie schon oben erwähnt kann es auch an pawno liegen dies war bei mir auch mal so das die .amx nicht ersetzt wurde. Wie solch ein fehler bei pawno zustande kommt
    kann ich dir nicht genau sagen die ursachen sind mir auch unbekannt.


    amx wird garantiert ersetzt...


    deswegen bin ich auch ziemlich verwirrt...

    Scripter und Mapper Since 2010