VehicleParams mit einem cmd aktivieren / deaktivieren

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
  • Hi,


    Ich möchte gerne meine Motorhaube gerne mit einem einzigen Befehl sowohl öffnen als auch schließen können. Das gleiche mit Lichtern und Kofferraum.


    Bisher hab ich's nur so, dass ich z.b. Mit /lichtan und
    /lichtaus das Licht bediene. Daraus soll nur der cmd /Licht werden. Beim einmaligen betätigen gehen die Lichter an, beim zweiten betätigen wieder aus.


    Wie ist sowas möglich? Sorry, wenns zu banal für euch ist. :b danke.

  • if(strcmp(cmd, "/mhaube",true) == 0)
    {
    if(GetPlayerState(playerid) != PLAYER_STATE_DRIVER) return 1;
    new vid = GetPlayerVehicleID(playerid);
    GetVehicleParamsEx(vid,engine,lights,alarm,doors,bonnet,boot,objective);
    if(vid != INVALID_VEHICLE_ID)
    {
    if(bonnet == VEHICLE_PARAMS_ON)
    {
    SetVehicleParamsEx(vid,engine,lights,alarm,doors,VEHICLE_PARAMS_OFF,boot,objective);
    }
    else
    {
    SetVehicleParamsEx(vid,engine,lights,alarm,doors,VEHICLE_PARAMS_ON,boot,objective);
    }
    }
    return 1;
    }


    if(strcmp(cmd, "/licht",true) == 0)
    {
    if(GetPlayerState(playerid) != PLAYER_STATE_DRIVER) return 1;
    new vid = GetPlayerVehicleID(playerid);
    GetVehicleParamsEx(vid,engine,lights,alarm,doors,bonnet,boot,objective);
    if(vid != INVALID_VEHICLE_ID)
    {
    if(lights == VEHICLE_PARAMS_ON)
    {
    SetVehicleParamsEx(vid,engine,VEHICLE_PARAMS_OFF,alarm,doors,bonnet,boot,objective);
    }
    else
    {
    SetVehicleParamsEx(vid,engine,VEHICLE_PARAMS_ON,alarm,doors,bonnet,boot,objective);
    }
    }
    return 1;
    }

  • das würde nicht gehen
    du musst bei der deklairung auf MAX_VEHICLES bestehen und bei der abfrage das auto aufrufen wo er drin sitzt und dann den wert holen


    //edit
    so meinte ich es:
    new Licht[MAX_VEHICLES];
    bcmd:licht(playerid,params[])
    {
    if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
    {
    new engine,lights,alarm,doors,bonnet,boot,objective;
    new veh = GetPlayerVehicleID(playerid);
    GetVehicleParamsEx(veh,engine,lights,alarm,doors,bonnet,boot,objective);
    if(veh != INVALID_VEHICLE_ID)
    {
    if(Licht[veh] == 0)
    {
    SetVehicleParamsEx(veh,engine,VEHICLE_PARAMS_ON,alarm,doors,bonnet,boot,objective);
    GameTextForPlayer(playerid, "~w~Licht ~r~eingeschaltet", 3000, 6);
    Licht[veh] = 1;
    }
    else
    {
    SetVehicleParamsEx(veh,engine,VEHICLE_PARAMS_OFF,alarm,doors,bonnet,boot,objective);
    GameTextForPlayer(playerid, "~w~Licht ~g~ausgeschaltet", 3000, 6);
    Licht[veh] = 0;
    }
    }
    }
    return 1;
    }
    Da stezt du den wert nur für das car wo du drin sitzt

    All in all it's just another brick in the wall

    Einmal editiert, zuletzt von Beavis ()

  • Ja aber dann 1 für alle autos und das is doch sinnlos
    da macht man es dann richtig und macht für jedes auto ne eigene variable
    daher ist es in meinen augen unbrauchbar Sprich funktioniert nicht/teilweise

    All in all it's just another brick in the wall

  • man kann doch die gleiche variable einfach für alle autos benutzen da diese nur für einen bruchteil einer sekunde benutzt wird kann man sie direkt wieder verwenden beim nächsten auto.
    ist auf jeden fall resourcenschonender und funktioniert 100%



    ocmd:licht(playerid,params[])
    {
    new engine,lights,alarm,doors,bonnet,boot,objective;
    GetVehicleParamsEx(GetPlayerVehicleID(playerid),engine,lights,alarm,doors,bonnet,boot,objective);
    if(lights!=1)
    {
    SetVehicleParamsEx(GetPlayerVehicleID(playerid),engine,1,alarm,doors,bonnet,boot,objective);
    SendClientMessage(playerid,ORANGE,"Du hast das Licht angeschaltet!");
    }
    else
    {
    SetVehicleParamsEx(GetPlayerVehicleID(playerid),engine,0,alarm,doors,bonnet,boot,objective);
    SendClientMessage(playerid,ORANGE,"Du hast das Licht ausgeschaltet!");
    }
    return 1;
    }

  • Das kommt bei mir in beiden Fällen:


    warning 219: local variable "engine" shadows a variable at a preceding level
    warning 219: local variable "lights" shadows a variable at a preceding level
    warning 219: local variable "alarm" shadows a variable at a preceding level
    warning 219: local variable "doors" shadows a variable at a preceding level
    warning 219: local variable "bonnet" shadows a variable at a preceding level
    warning 219: local variable "boot" shadows a variable at a preceding level
    warning 219: local variable "objective" shadows a variable at a preceding level

  • ocmd:motorhaube(playerid,params[])
    {
    if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
    {
    new engine,lights,alarm,doors,bonnet,boot,objective;
    new veh = GetPlayerVehicleID(playerid);
    GetVehicleParamsEx(veh,engine,lights,alarm,doors,bonnet,boot,objective);
    if(veh!=INVALID_VEHICLE_ID)
    {
    if(Motorhaube[veh] == 0)
    {
    SetVehicleParamsEx(veh,engine,lights,alarm,doors,VEHICLE_PARAMS_ON,boot,objective);
    Motorhaube[veh] = 1;
    }
    else
    {
    SetVehicleParamsEx(veh,engine,lights,alarm,doors,VEHICLE_PARAMS_OFF,boot,objective);
    Motorhaube[veh] = 0;
    }
    }
    }
    return 1;
    }


    Zum Beispiel ..


    Wenn ich hinter das engine,lights,alarm,doors etc. z.B. jeweils eine 1 setze, also engine1,lights1,alarm1,doors1, dann funktionierts. Ist aber nicht Sinn der Sache, wieso funktionierts denn so nicht?