Unrechable Code

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
  • Abend
    hab ein kleines problem mit einer rollervermietung

    Code
    Zeile (934) : warning 225: unreachable code
    Zeile (940) : warning 225: unreachable code
    Zeile (946) : warning 225: unreachable code
    Zeile (952) : warning 225: unreachable code
    Zeile (975) : warning 225: unreachable code
    Zeile (989) : warning 225: unreachable code
    Zeile (1003) : warning 225: unreachable code
    Zeile (1018) : warning 225: unreachable code


    die zeilen


    public OnPlayerExitVehicle(playerid, vehicleid)
    {
    new Vehicle = GetPlayerVehicleID(playerid);
    if(Vehicle == rentroller[0])
    {
    SetVehicleToRespawn(GetPlayerVehicleID(playerid));
    }
    return 1;


    if(Vehicle == rentroller[1]) //hier
    {
    SetVehicleToRespawn(GetPlayerVehicleID(playerid));
    }
    return 1;


    if(Vehicle == rentroller[2]) //hier
    {
    SetVehicleToRespawn(GetPlayerVehicleID(playerid));
    }
    return 1;

    if(Vehicle == rentroller[3]) //hier
    {
    SetVehicleToRespawn(GetPlayerVehicleID(playerid));
    }
    return 1;

    if(Vehicle == rentroller[4]) //hier
    {
    SetVehicleToRespawn(GetPlayerVehicleID(playerid));
    }
    return 1;
    }


    public OnPlayerStateChange(playerid, newstate, oldstate)
    {
    if(newstate == PLAYER_STATE_DRIVER)
    {
    new Vehicle = GetPlayerVehicleID(playerid);
    if(Vehicle == rentroller[0])
    {
    SendClientMessage(playerid,HELLGRAU,"Dieses Fahrzeug kannst du mieten! Tippe /mieten, wenn du nicht möchtest, dann /mietausstieg.");

    TogglePlayerControllable(playerid,0);

    return 1;
    }
    }
    return 1;

    if(newstate == PLAYER_STATE_DRIVER) //hier
    {
    new Vehicle = GetPlayerVehicleID(playerid);
    if(Vehicle == rentroller[1])
    {
    SendClientMessage(playerid,HELLGRAU,"Dieses Fahrzeug kannst du mieten! Tippe /mieten, wenn du nicht möchtest, dann /mietausstieg.");

    TogglePlayerControllable(playerid,0);

    return 1;
    }
    }
    return 1;

    if(newstate == PLAYER_STATE_DRIVER) //hier
    {
    new Vehicle = GetPlayerVehicleID(playerid);
    if(Vehicle == rentroller[2])
    {
    SendClientMessage(playerid,HELLGRAU,"Dieses Fahrzeug kannst du mieten! Tippe /mieten, wenn du nicht möchtest, dann /mietausstieg.");

    TogglePlayerControllable(playerid,0);

    return 1;
    }
    }
    return 1;

    if(newstate == PLAYER_STATE_DRIVER) //hier
    {
    new Vehicle = GetPlayerVehicleID(playerid);
    if(Vehicle == rentroller[3])
    {
    SendClientMessage(playerid,HELLGRAU,"Dieses Fahrzeug kannst du mieten! Tippe /mieten, wenn du nicht möchtest, dann /mietausstieg.");

    TogglePlayerControllable(playerid,0);

    return 1;
    }
    }
    return 1;


    if(newstate == PLAYER_STATE_DRIVER) //hier
    {
    new Vehicle = GetPlayerVehicleID(playerid);
    if(Vehicle == rentroller[4])
    {
    SendClientMessage(playerid,HELLGRAU,"Dieses Fahrzeug kannst du mieten! Tippe /mieten, wenn du nicht möchtest, dann /mietausstieg.");

    TogglePlayerControllable(playerid,0);

    return 1;
    }
    }
    return 1;
    }



    schonmal im vorraus vielen dank
    mfg
    John_Smith



    /edit
    errors genau markiert

    Einmal editiert, zuletzt von John_Smith ()

  • Makiere mal genau die zeilen ausserdem Returnst du zu oft in einer funktion

  • sind nur warnings sind nix schlimmes :D
    oder buggt es ingame?

  • die vermietung funktioniert nicht :D


    die errors sind überall wo /hier steht
    aber das komische meiner meinung nach ist ja wenn nur ein roller drinnen ist funktionierts aber wenns mehrere sind dann eben nicht

  • Wenn du dir den Code mal genau anguckst ( zb bei OnPlayerExitVehicle ) , solltest du merken, dass nach einem return bei dir noch Code folgt.
    Nach einem return kann aber kein code mehr in der Funktion aufgerufen werden, daher ist alles nach dem return sinnlos bzw es wird nie aufgerufen. Denn das return beendet die Funktion ( kann man sich jedenfalls so vorstellen ).
    Ich zeig dir mal bei OnPlayerExitVehicle, wo die returns hin könnte ( oder du lässt sie weg ).


    public OnPlayerExitVehicle(playerid, vehicleid)
    {
    new Vehicle = GetPlayerVehicleID(playerid);
    if(Vehicle == rentroller[0])
    {
    SetVehicleToRespawn(GetPlayerVehicleID(playerid));
    return 1;
    }


    if(Vehicle == rentroller[1]) //hier
    {
    SetVehicleToRespawn(GetPlayerVehicleID(playerid));
    return 1;
    }


    if(Vehicle == rentroller[2]) //hier
    {
    SetVehicleToRespawn(GetPlayerVehicleID(playerid));
    return 1;
    }


    if(Vehicle == rentroller[3]) //hier
    {
    SetVehicleToRespawn(GetPlayerVehicleID(playerid));
    return 1;
    }
    if(Vehicle == rentroller[4]) //hier
    {
    SetVehicleToRespawn(GetPlayerVehicleID(playerid));
    }
    return 1;
    }

  • public OnPlayerStateChange(playerid, newstate, oldstate)
    {
    new Vehicle = GetPlayerVehicleID(playerid);


    if(newstate == PLAYER_STATE_DRIVER)
    {


    if(Vehicle == rentroller[0])
    {
    SendClientMessage(playerid,HELLGRAU,"Dieses Fahrzeug kannst du mieten! Tippe /mieten, wenn du nicht möchtest, dann /mietausstieg.");


    TogglePlayerControllable(playerid,0);
    }
    if(Vehicle == rentroller[1])
    {
    SendClientMessage(playerid,HELLGRAU,"Dieses Fahrzeug kannst du mieten! Tippe /mieten, wenn du nicht möchtest, dann /mietausstieg.");


    TogglePlayerControllable(playerid,0);


    }
    if(Vehicle == rentroller[2])
    {
    SendClientMessage(playerid,HELLGRAU,"Dieses Fahrzeug kannst du mieten! Tippe /mieten, wenn du nicht möchtest, dann /mietausstieg.");


    TogglePlayerControllable(playerid,0);


    }
    if(Vehicle == rentroller[3])
    {
    SendClientMessage(playerid,HELLGRAU,"Dieses Fahrzeug kannst du mieten! Tippe /mieten, wenn du nicht möchtest, dann /mietausstieg.");


    TogglePlayerControllable(playerid,0);



    }
    if(Vehicle == rentroller[4])
    {
    SendClientMessage(playerid,HELLGRAU,"Dieses Fahrzeug kannst du mieten! Tippe /mieten, wenn du nicht möchtest, dann /mietausstieg.");


    TogglePlayerControllable(playerid,0);



    }
    }
    return 1;
    }


    Ich würde dann so versuchen und das andere wie Goldkiller geschrieben hat :D da war etwas üeberschneidung drin

  • Kleine Optimierung: Verwende eine if Schleife:
    if(Vehicle == rentroller[1] || Vehicle == rentroller[2])
    usw

    Kalcor: "... it makes the game look like it's not GTA. This mod is called San Andreas Multiplayer. It's not a custom game engine which you can script..."

  • Oder so :)
    if(Vehicle == (rentroller[1] || rentroller[2]))

    Unkompetent. Das neue dynamisch.



    ihr seit schon lustig postet erros aber nicht die zeilen wo sie sind dann können wir euch auch nicht helfen^^


    Lernt Scripten, Leute, und macht eure Augen auf!


    _______________________________________
    50 Beiträge: [x] 300 Beiträge: [x]
    100 Beiträge: [x] 500 Beiträge: [x]
    150 Beiträge: [x] 1000 Beiträge: [x]
    200 Beiträge: [x]
    2000 Beiträge: []
    250 Beiträge: [X] Boardaktivitäten: Profil


    [size=36]_______________________________________

    /Edit: Schmerzt es dir eigentlich nicht so ein Müll zu schreiben 8|

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Oder so :)
    if(Vehicle == (rentroller[1] || rentroller[2]))


    Das funktioniert niemals.
    Warum ? Splitten wir das:
    (rentroller[1] || rentroller[2])


    rentroller[1]
    rentroller[2]
    Sind beides eigene Statements, da mit ODER ( || ) verknüpft.Ist rentroller[1] oder rentroller[2] 0 , dann ist das Statement false.Wenn nicht,ist es für sich Wahr.Es ist zwar mit oder verknüpft, macht aber nichts. Ist eines der beiden wahr,ist das gesamte Statement ( rentroller[1] || rentroller[2]) ebenfalls wahr. Wenn nicht,ist es falsch.
    Heisst, das Gesamte Statement (rentroller[1] || rentroller[2]) ist entweder 0 ( falsch ) oder 1 ( wahr ).
    Funktioniert also nur in Ausnahmesitituationen, zb wenn rentroller[1] oder rentroller[2] Vehicleid 0 oder 1 ist. Zusätzlich muss dann auch Vehicle 0 oder 1 sein.


    //Edit:
    Um es nochmal zu verdeutlichen, wie der Ausgang immer sein würde.

    Vehicle == ( 1 / wahr )
    Vehicle == ( 0 / falsch )
    if(Vehicle == (rentroller[1] || rentroller[2]))