Auslesen ob Spieler ein Fallschirm hat

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 bei mir einen /warp Befehl bei dem man unter anderem Fallschirmspringen auswählen kann. Wenn ich nun schon einen Fallschirm habe, dann möchte ich das mein script das erkennt und den fallschrim ausrüstet. wenn man keinen fallschirm hat dann soll man einen bekommen.


    Ich habe es so hier gemacht:



    if(listitem == 9) //Das hier ist von meiner CASE anweißung da ich mehr als nur einen Warp habe... könnt ihr ignorieren
    {
    SetPlayerPos(playerid,294.6521,-37.1651,787.4242); // Das hier ist die Position bei dem ich beim Fallschirmspringen hingesetzt werde (Könnt ihr auch ignorieren)
    //SetPlayerArmedWeapon(playerid, 46); //So ist meine Idee wie ich den Fallschirm erhalte wenn ich schon einen habe (Ob es geht habe ich nciht getestet da die Abfrage fehlt ob ich einen habe oder nicht)
    GivePlayerWeapon(playerid, 46, 1); //Das hier gibt mir den Fallschirm und rüstet ihn aus.
    }



    Kann man die Abfrage eventuell mit GetPlayerWeaponData machen? Wenn ja welcher Slot ist dann normalerweiße der Fallschirm? oder muss ich alle slots auslesen?


    Kann mir jemand einen Tipp geben wie ich die komplette abfrage schreiben muss?


    So hier stelle ich mir das vor:

    SetPlayerPos(playerid,294.6521,-37.1651,787.4242);
    if (GetPlayerWeaponData(playerid, 11) == 46)
    {
    SetPlayerArmedWeapon(playerid, 46);
    }
    else
    {
    GivePlayerWeapon(playerid, 46, 1);
    }


    Warum ich das alles machen möchte?
    Wenn man einen Fallschirm hat und dann den Warp nutzt stirbt man wenn man vom Script einen 2. Fallschirm erhält... :(


    Edit: Gerade im Wiki gefunden. Slot 11 mus ausgelesen werden... bin gerade am testen...

    Einmal editiert, zuletzt von Takiry ()

  • Alles klar Danke dir funktioniert perfekt.


    Hier mal mein Ergebnis fals es auch andere suchen:



    new wID, ammo;
    CarEntfernen(playerid);
    SetPlayerPos(playerid,294.6521,-37.1651,787.4242); //Fallschirmspringen
    GetPlayerWeaponData(playerid, 11, wID, ammo);
    if (wID == 46)
    {
    SetPlayerArmedWeapon(playerid, 46);
    }
    else
    {
    GivePlayerWeapon(playerid, 46, 1);
    }




    Aber mein eigentlichens Problem ist damit leider nicht gelöst. Ich dachte ich sterbe beim erneuten auswählen meines warps "Fallschirmspringen" an dem behobenen Problem. Leider sterbe ich sofort wenn ich mich teleporte wenn der fallschirm noch nicht offen ist und man gerade "gleitet"


    Kennt da jemand eine lösung?

  • Das ist leider ein Bug von SA-MP.
    Spontan würde ich sagen, dass du den Spieler freezt (TogglePlayerControllable), dann setzt du die Position und dann entfreezt du den Spieler wieder.


    Wenn es nicht direkt hintereinander geht, dann mit kurzen Timern.