Ins geschlossene Fahrzeug einsteigen

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 hab ein Auto, und möchte, wenn ich als Admin eingeloggt bin, trotzdem in das Auto einsteigen kann.
    Jemand eine Idee?


    Hier mein /zu befehl:


    if(strcmp("/zu", cmdtext, true, 10) == 0)
    {
    new vehicleid;
    vehicleid = GetPlayerVehicleID(playerid);
    new engine, lights, alarm, doors, bonnet, boot, objective;
    GetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, bonnet, boot, objective);
    SetVehicleParamsEx(vehicleid, 1, lights, alarm, doors, bonnet, boot, objective);
    SendClientMessage(playerid,COLOR_GELB,"Auto abgeschlossen");
    }


  • if(strcmp("/zu", cmdtext, true, 10) == 0)
    {
    new vehicleid;
    vehicleid = GetPlayerVehicleID(playerid);
    new engine, lights, alarm, doors, bonnet, boot, objective;
    GetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, bonnet, boot, objective);
    SetVehicleParamsEx(vehicleid, 1, lights, alarm, doors, bonnet, boot, objective);
    SendClientMessage(playerid,COLOR_GELB,"Auto abgeschlossen");
    }


    Ist ja nur der Befehl?


    Du musst irgendwo abfragen ob das Auto zu oder offen ist..


    Beispiel:


    public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
    {


    new tmp_engine,
    tmp_lights,
    tmp_alarm,
    tmp_doors,
    tmp_bonnet,
    tmp_boot,
    tmp_objective;
    GetVehicleParamsEx(vehicleid, tmp_engine,tmp_lights,tmp_alarm,tmp_doors,tmp_bonnet,tmp_boot,tmp_objective);
    if(tmp_doors==0) //Wenn sie ZU sind
    {
    //ADMIN-ABFRAGE:
    if(GetPVarInt(playerid,"Adminlevel")==2) // Muss je nach admin-abfrage geändert werden.
    {
    return 1;
    }
    else
    {
    TogglePlayerControllable(playerid,false);
    TogglePlayerControllable(playerid,true);
    SendClientMessage(playerid,rot,"Dieses Auto ist verschlossen.");
    }
    }


    }


    Meinste das so?

    Einmal editiert, zuletzt von Michi.pwn ()

  • Zitat

    Eventuell kannst du bei OnPlayerEnterVehicle prüfen, ob es abgeschlossen ist, und wenn ja, PutPlayerInVehicle nutzen. Oder du machst einen Befehl /goincar [CARID]


    Währe es nicht einfacher bei der (ZU oder nicht) - Abfrage direkt das Adminlevel abzufragen und ihn wenn er Admin ist einsteigen zu lassen ^^?

  • //Edit


    Hab es jetzt so:



    public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
    {
    new engine, lights, alarm, doors, bonnet, boot, objective;
    GetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, bonnet, boot, objective);
    if(doors==1)
    {
    if(sInfo[playerid][Adminlevel] == 6)
    {
    PutPlayerInVehicle(playerid,vehicleid,0);
    return 1;
    }
    else
    {
    TogglePlayerControllable(playerid,false);
    TogglePlayerControllable(playerid,true);
    SendClientMessage(playerid,COLOR_RED,"Dieses Auto ist verschlossen.");
    return 1;
    }
    }
    return 1;
    }
    ocmd:zu(playerid,params[])
    {
    new vehicleid;
    vehicleid = GetPlayerVehicleID(playerid);
    new engine, lights, alarm, doors, bonnet, boot, objective;
    GetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, bonnet, boot, objective);
    SetVehicleParamsEx(vehicleid, engine, lights, alarm, 1, bonnet, boot, objective);
    SendClientMessage(playerid,COLOR_GELB,"Auto abgeschlossen");
    return 1;
    }

    Aber ich kann als Admin nur mit G einsteigen
    Aber ich will mit F mich reinporten.

  • if(doors==1)//Ist das Auto zu? 0= nein 1= ja
    {
    if(sInfo[playerid][Adminlevel] == 6) //Ja hab alle Adminlevels durchgetestet

  • Schon mal SetVehicleParamsForPlayer versucht? Bei der Adminabfrage einfach anwenden und doors auf 1 setzen.
    if(sInfo[playerid][Adminlevel] == 6)
    {
    new ptmp_doors=1;
    SetVehicleParamsForPlayer(vehicleid,playerid,1,ptmp_doors);
    return 1;
    }

    Einmal editiert, zuletzt von Michi.pwn ()

  • Das geht schon, aber ich muss erst G drücken, will aber das es mit F geht.

  • Hier..



    Ersetze:
    if(sInfo[playerid][Adminlevel] == 6)
    {
    PutPlayerInVehicle(playerid,vehicleid,0);
    return 1;
    }



    Mit:
    if(sInfo[playerid][Adminlevel] == 6)
    {
    new ptmp_doors=1;
    SetVehicleParamsForPlayer(vehicleid,playerid,1,ptmp_doors);
    return 1;
    }

  • Setze die vehicleid in eine PVAR und bei OnPlayerKeyStateChange abfragen ob die PVAR nicht auf 0 steht.Wenn nicht setzt du den Spieler in das Auto.


    Bei OnPlayerEnterVehicle ersetzt du deine jetzige Abfrage mit dieser:
    if(sInfo[playerid][Adminlevel] == 6)
    {
    SetPVarInt(playerid,"WillInAuto",vehicleid);
    return 1;
    }



    Nun bei:
    public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
    {
    if(newkeys & KEY_SECONDARY_ATTACK)
    {
    if(GetPVarInt(playerid,"WillInAuto")!=0)
    {
    new vid=GetPVarInt(playerid,"WillInAuto");
    PutPlayerInVehicle(playerid,vid);
    SetPVarInt(playerid,"WillInAuto",0);
    return 1;
    }
    }
    return 1;
    }


    #Ungetestet.

    Einmal editiert, zuletzt von Michi.pwn ()

  • Boah.. dann folgendes:


    Dann mach einen Befehl und schreib das hinein:
    //Hier den Befehl anfangen.. z.Bsp ocmd:letmein(playerid,params[]) oder if(strcmp(cmd ....
    {
    PutPlayerInVehicle(playerid,GetPVarInt(playerid,"WillInAuto"),0);
    return 1;
    }



    Versuche in das Auto einzusteigen.
    Es geht aber nicht auf.


    Dann gib den Befehl ein und dann sollte es gehen.