Frage zum Zug

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 hier was aber es geht nicht
    if(IsVehicleAZug(vehicleid))
    {
    for(new i=0; i<sizeof(Zug); i++)
    {
    if(Spieler[playerid][pJob] != 21)
    {
    RemovePlayerFromVehicle(playerid);
    TextDrawShowForPlayer(playerid,InfoSign);
    PlayerTextDrawSetString(playerid,INFOdraw[playerid][2],"~r~Info:~w~~n~Du besitzt nicht den jeweiligen Job.");
    PlayerTextDrawShow(playerid,INFOdraw[playerid][2]);
    SetTimerEx("HideInfoBox",3000,0,"i",playerid);

    }
    }
    }

    es kommt immer nur das Du besitzt nicht den jeweiligen Job aber der bleit drine der wird nicht raus geschmissen

  • Beitrag von KnoLe_x3 ()

    Dieser Beitrag wurde von Trooper[Y] aus folgendem Grund gelöscht: Spam ().
  • wo hast du die Abfrage stehen?


    Im Wiki steht zu [wiki]RemovePlayerFromVehicle[/wiki]:

    Code
    This function will not work when used in OnPlayerEnterVehicle, because the player isn't in the vehicle when the callback is called. Use OnPlayerStateChange instead(see the example below).
  • ich habe ihn in OnPlayerStateChange Drine Passiert aber nix MfG


    der schmeist den nicht aus dem zug raus

    if(IsVehicleAZug(vehicleid))
    {
    if(!isPlayerInJob(playerid,21))
    {
    TextDrawShowForPlayer(playerid,InfoSign);
    PlayerTextDrawSetString(playerid,INFOdraw[playerid][2],"~r~Info:~w~~n~Du besitzt nicht den jeweiligen Job.");
    PlayerTextDrawShow(playerid,INFOdraw[playerid][2]);
    SetTimerEx("HideInfoBox",3000,0,"i",playerid);
    return RemovePlayerFromVehicle(playerid);
    }
    }

  • Wie ist "IsVehicleAZug" definiert?
    Setzt am besten mal ein Print unter jeden Schritt. So siehst du bis wohin er geht und kannst es eingrenzen.

    „Auge um Auge - und die ganze Welt wird blind sein.“
    - Mahatma Gandhi

  • stock IsVehicleAZug(vehicleid){ for(new i=0;i<sizeof(Zug);i++) { if(vehicleid == Zug[i]) return 1; } return 0;}


    habe es so gemacht



    printf("Schleife1.");
    if(IsVehicleAZug(vehicleid))
    {
    printf("Schleife2.");
    if(!isPlayerInJob(playerid,21))
    {
    printf("Schleife3.");
    TextDrawShowForPlayer(playerid,InfoSign);
    PlayerTextDrawSetString(playerid,INFOdraw[playerid][2],"~r~Info:~w~~n~Du besitzt nicht den jeweiligen Job.");
    PlayerTextDrawShow(playerid,INFOdraw[playerid][2]);
    SetTimerEx("HideInfoBox",3000,0,"i",playerid);
    return RemovePlayerFromVehicle(playerid);
    }
    }


    Hier die logs
    [18:07:01] Schleife1.
    [18:07:01] Schleife2.
    [18:07:01] Schleife3.
    der wird nicht vom zug rausgeschmissen

  • unter

    public OnPlayerStateChange(playerid,newstate,oldstate)
    {
    new vehicleid = GetPlayerVehicleID(playerid),string[256];
    if(newstate == PLAYER_STATE_DRIVER)
    {
    printf("Schleife1.");
    if(IsVehicleAZug(vehicleid))
    {
    printf("Schleife2.");
    if(!isPlayerInJob(playerid,21))
    {
    printf("Schleife3.");
    TextDrawShowForPlayer(playerid,InfoSign);
    PlayerTextDrawSetString(playerid,INFOdraw[playerid][2],"~r~Info:~w~~n~Du besitzt nicht den jeweiligen Job.");
    PlayerTextDrawShow(playerid,INFOdraw[playerid][2]);
    SetTimerEx("HideInfoBox",3000,0,"i",playerid);
    return RemovePlayerFromVehicle(playerid);
    }
    }
    }
    return 1;
    }

  • Soviel ich weiß, geht das bei Zügen nicht mit RemovePlayerFromVehicle.
    Nutze stattdessen:
    new Float:x, Float:y, Float:z;
    GetPlayerPos(playerid,x,y,z);
    SetPlayerPos(playerid,x+2,y+2,z+2);


    Alternativ dazu kannst du versuchen, den Code bei OnPlayerEnterVehicle hinzusetzen, und statt RemovePlayerFromVehicle das zu nutzen:
    TogglePlayerControllable(playerid, false);
    TogglePlayerControllable(playerid, true);