Motor bug brauche hilfe..

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
  • Also ich habe da einen bug das wenn man in einen auto einsteigt gefreezed wird... jedoch wenn man id 0 ist passiert es nicht hier der motor befehl


    if(strcmp(cmd, "/motor",true) == 0)
    {
    if(IsANoTachoVehicle(GetPlayerVehicleID(playerid)))
    {
    SendClientMessage(playerid, COLOR_GRAD1, "{FFFFFF}Fahrräder haben {FF0000}keinen{FFFFFF} Motor!");
    return 1;
    }
    if(GetPlayerState(playerid) != PLAYER_STATE_DRIVER) return 1;
    new engine,lights,alarm,doors,bonnet,boot,objective;
    new vid = GetPlayerVehicleID(playerid);
    GetVehicleParamsEx(vid,engine,lights,alarm,doors,bonnet,boot,objective);
    if(vid != INVALID_VEHICLE_ID)
    {
    if(engine == VEHICLE_PARAMS_ON)
    {
    SetVehicleParamsEx(vid,VEHICLE_PARAMS_OFF,lights,alarm,doors,bonnet,boot,objective);
    GameTextForPlayer(playerid, "~n~~n~~n~~n~~n~~n~~W~Motor ~r~aus!", 2000, 5);
    }
    else
    {
    SetVehicleParamsEx(vid,VEHICLE_PARAMS_ON,lights,alarm,doors,bonnet,boot,objective);
    GameTextForPlayer(playerid, "~n~~n~~n~~n~~n~~n~~W~Motor ~g~an!", 2000, 5);
    }
    }
    return 1;
    }

  • Dein Problem: Du willst dass man nicht gefreezt ist oder was ist dein Problem?


    Wenn du einsteigst und dann gefreezt wirst, hat dass nichts mit /Motor zu tun.


    Also am besten mal die Public's


    OnPlayerEnterVehicle
    oder
    OnPlayerStateChange


    schauen.

  • TogglePlayerControllable



    as vll?
    else if((newkeys == 8))
    {
    new
    Float:SEnDE1,
    Float:SEnDE2,
    Float:SEnDE3;
    GetPlayerPos(playerid, SEnDE1, SEnDE2, SEnDE3);
    PlayerPlaySound(playerid, 5203, SEnDE1, SEnDE2, SEnDE3);
    SetCameraBehindPlayer(playerid);
    SendClientMessage(playerid, 0x4589FFFF, "Schönen Tag noch");
    SkinLadenAhA[playerid] = false;
    UnFreezePlayer(playerid);
    TogglePlayerControllable(playerid, true);
    TextDrawHideForPlayer(playerid,SkinLadenFertig);
    TextDrawHideForPlayer(playerid,SkinLadenWeiter);
    }
    }


    Oder das


    if(LKPH >= VehicleMaxSpeed)
    {
    TogglePlayerControllable(i,0);
    LUnFreeze = SetTimer("LuX_UnFreezeCar", 250, 1);
    format(lstr,sizeof(lstr),"~g~MP/H: ~w~%d ~g~KM/H: ~r~%d",LMPH,LKPH);
    TextDrawSetString(Lmph[i], lstr);
    }
    }


    kann aber auch an das vll liegen?


    forward LuX_UnFreezeCar(playerid);
    public LuX_UnFreezeCar(playerid)
    {
    for(new i=0; i<PLAYERS; i++)
    {
    TogglePlayerControllable(playerid,1);
    KillTimer(LUnFreeze);
    }
    return 1;
    }

  • if(LKPH >= VehicleMaxSpeed)
    {
    TogglePlayerControllable(i,0);
    LUnFreeze = SetTimer("LuX_UnFreezeCar", 250, 1);
    format(lstr,sizeof(lstr),"~g~MP/H: ~w~%d ~g~KM/H: ~r~%d",LMPH,LKPH);
    TextDrawSetString(Lmph, lstr);
    }
    }


    Du musst bei LUnFreeze = SetTimer("LuX_UnFreezeCar", 250, 1);
    die Playerid mitgeben,


    also


    if(LKPH >= VehicleMaxSpeed)
    {
    TogglePlayerControllable(i,0);
    LUnFreeze[playerid] = SetTimerEx("LuX_UnFreezeCar", 250, 1, "i", playerid);
    format(lstr,sizeof(lstr),"~g~MP/H: ~w~%d ~g~KM/H: ~r~%d",LMPH,LKPH);
    TextDrawSetString(Lmph, lstr);
    }
    }


    Dann noch:


    new LUnFreeze;
    zu
    new LUnFreeze[MAX_PLAYERS];


    forward LuX_UnFreezeCar(playerid);
    public LuX_UnFreezeCar(playerid)
    {
    for(new i=0; i<PLAYERS; i++)
    {
    TogglePlayerControllable(playerid,1);
    KillTimer(LUnFreeze[playerid]);
    }
    return 1;
    }


  • ok danke hat geklappt !! :D


    Aber noch eine frage ich wollte das wenn man auf ein Auto schiesst das es platzt und nicht respawnt wird was muss ich verändern ?


    PolizeiVehs[0] = AddStaticVehicleEx(596,1600.80004883,-1684.09997559,5.69999981,90.00000000,-1,1,-1); //Police Car (LSPD)

  • forward CarCheckTimer();



    OnGameModeInit()
    {
    SetTimer("CarCheckTImer", 2000, 1);
    }




    public CarCheckTimer()
    {
    for(new i; i < MAX_VEHICLES; i++)
    {
    new Float:h;
    GetVehicleHealth(i, h);
    if(h < 250)
    {
    SetVehicleHealth(i, 251);
    new engine, lights, alarm, doors, bonnet, boot, objective;
    GetVehicleParamsEx(i, engine, lights, alarm, doors, bonnet, boot, objective);
    SetVehicleParamsEx(i, 0, lights, alarm, doors, bonnet, boot, objective);
    return 1;
    }
    return 1;
    }
    }



    Nicht getestet, müsste aber funktionieren.


    Funktion:


    Wenn der Zustand vom Auto kleiner als 250 ist (Also wenns brennt) wird der Zustand auf 251 gesetzt und der Motor wird aus gemacht.


    Ist eine Explosion notwendig?


  • ja schon :/ weil der bleibt ja nur stehen.. aber geht nicht down sonst verbuggt sich ja beim respawnen die cars das deren zustand dann 251 bleibt und nicht anspringt.. der soll nur explodieren wenn man ihn zerschießt damit user die bei dem auto zB mitsaßen auch sterben..

  • Dann müsstest du es explodieren lassen, wartet bis es respawnt und dann das Auto wieder mit SetVehiclePos und SetVehicleZAngle an die Unfallstelle bringen.


    new Float:UX[MAX_VEHICLES],Float:UY[MAX_VEHICLES],Float:UZ[MAX_VEHICLES],Float:UR[MAX_VEHICLES];



    public OnVehicleSpawn(vehicleid)
    {
    SetVehiclePos(vehicleid, UX[vehicleid], UY[vehicleid], UZ[vehicleid]);
    SetVehicleZAngle(vehicleid, UR[vehicleid]);
    return 1;
    }


    public OnVehicleDeath(vehicleid, killerid)
    {
    GetVehiclePos(vehicleid, UX[vehicleid], UY[vehicleid], UZ[vehicleid]);
    GetVehicleZAngle(vehicleid, UR[vehicleid]);
    return 1;
    }


    Kommt drauf an was du dann mit dem Auto machen möchtest. Soll es kaputt sein oder soll es wieder komplett ganz sein?