Pilot-Problem - Du bist in keinem Flugzeug ...

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
  • Hallo Leute.
    Ich habe ein Problem, undzwar wenn ich in einem Flugzeug bin die vordefiniert sind, einsteige und /pilotduty mache, steht da nur:
    Du bist in keinem Flugzeug.


    Hier der Code:



    if(strcmp(cmd, "/pilotduty", true) == 0)
    {
    if(IsPlayerConnected(playerid))
    {
    new vehicleid = GetPlayerVehicleID(playerid);
    if(Spieler[playerid][Job] == 1)
    {
    if(PilotDuty[playerid] == 0)
    {
    if(IsPlayerInAnyVehicle(playerid))
    {
    for(new i=0;i<sizeof(pilotcars);i++)
    {
    if(vehicleid == pilotcars[i])
    {
    PilotDuty[playerid] = 1;
    SendClientMessage(playerid, COLOR_WHITE, "Bitte bewege dich nun mit deinem Flugzeug zu dem Punkt auf der Karte.");
    SendClientMessage(playerid, COLOR_RED, "Bitte denke daran, dass wenn du aussteigst, und den Checkpoint ohne Flugzeug");
    SendClientMessage(playerid, COLOR_RED, "Vervollständigst, dass die Arbeit abgebrochen wird.");
    pCP[playerid] = CHECKPOINT_PILOTSTART;
    SetPlayerCheckpoint(playerid, 2049.2961,-2593.2168,13.1720, 10.0);
    LockCar(vehicleid);
    return 1;
    }
    else if(vehicleid != pilotcars[i])
    {
    SendClientMessage(playerid, COLOR_GRAD2, "Du bist in keinem Flugzeug.");
    return 1;
    }
    }
    }
    }
    else if(PilotDuty[playerid] == 1)
    {
    PilotDuty[playerid] = 0;
    SendClientMessage(playerid, COLOR_WHITE, "Du bist nun nichtmehr im Dienst.");
    return 1;
    }
    }
    else
    {
    SendClientMessage(playerid, COLOR_WHITE, "Du bist kein Pilot.");
    return 1;
    }
    }
    return 1;
    }


    Hier noch die AddStaticVehicle Dinger.

    pilotcars[0] = AddStaticVehicleEx(511,1989.59997559,-2301.30004883,15.10000038,90.00000000,2,2,-1); //Beagle
    pilotcars[1] = AddStaticVehicleEx(511,1989.50000000,-2325.19995117,15.10000038,90.00000000,2,2,-1); //Beagle
    pilotcars[2] = AddStaticVehicleEx(511,1989.09997559,-2371.39990234,15.10000038,90.00000000,2,2,-1); //Beagle
    pilotcars[3] = AddStaticVehicleEx(511,1989.19995117,-2394.89990234,15.10000038,90.00000000,2,2,-1); //Beagle
    pilotcars[4] = AddStaticVehicleEx(511,1990.30004883,-2247.89990234,15.10000038,90.00000000,2,2,-1); //Beagle


    Ganz oben im Script bei den defines etc.



    new pilotcars[5];


    Kann mir jemand helfen?

  • Hai, mit Schleifen ist das immer etwas kompliziert, ich versuchs dir mal zu erklären.


    Die Schleife hat nähmlich nur dir Möglichkeit das erste Flugzeug (pilotcars[0]) durchzunehmen, da du mit return 1; das ganze "beendest". Ich würde dir empfehlen das else if ganz rauszunehmen und das ca. so aufzubauen.


    for(schleife cars i)
    {
    if(car[i])
    {
    // dann
    }
    }
    // dann unter der Schleife.
    SendClientMessage(playerid, COLOR_GRAD2, "Du bist in keinem Flugzeug.");
    return 1;


    Wieso unter der Schleife?
    Wenn er die Schleife der Flugzeuge durchläuft und erkennt dass der Spieler in einem Flieger sitzt, dann beendet er die Funktion, das heißt dann, dass der Gamemode garnicht dazu kommt das zu senden was unter der Schleife steht.


    Wenn jedoch die Funktion nicht beendet wird, wenn ein Spieler nicht im Flieger sitzt, wird das gesendet.



    Gruß.

  • Jop,
    mach also ganz einfach das Du bist in keinem Flugzeug und das return 1; unter die Schleife.
    Danach müsste es klappen.
    Denn so geht die Schleife einfach alle Autos durch, und direkt beim ersten erkennt er es ist kein Flugzeug -> Der text kommt und es wird returnt