In der Luft spawnen möglich?

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


    Also erstmal meine Idee. Ich habe mir einen Helikopter gebastelt der es ermöglicht in seiner Nähe einzusteigen. Wenn man einsteigt befindet man sich im Laderaum von diesem. Nun will ich unterm Flug austeigen können. Problem ist. Auch wenn er die Position des Helikopters hat setzt er mich dennoch aufm Boden. Egal was ich tu.


    Meine Bitte:
    Eine Lösung für das Spawnen in der Luft neben dem Helikopter. Egal ob der Fliegt oder nicht. oder das Verhindern vom Spawnen aufm Boden..
    Eins vom beiden löst das Hauptproblem :D


    Meine Vorgehensweise:


    Befehl eingeben -> Heli Coordinanten auslesen -> Austeigen mit +5 zu jeder Coordinate. Problem = Ich lande egal wo er in der Luft ist unter ihm aufm Boden...


    Mein Code: (falls der Hilft.) (Zu den Interios. Ich dachte damit kann ich das ein bissle Tricksen.. aber falsch gedacht..)


    if(strcmp("/cargoexit", cmdtext, true, 15) == 0)
    {
    new Float:ax, Float:ay, Float:az = GetVehiclePos(cargocopter, ax, ay, az);
    if(!IsPlayerInRangeOfPoint(playerid, 20, 2509.7761, -2227.9753, 928.9933))
    {
    SendClientMessage(playerid, ORANGE, "Du musst dafür im Laderaum sein.");
    return 1;
    }
    else
    {
    SendClientMessage(playerid, ORANGE, "Du verlässt den Laderaum.");
    SetPlayerInterior(playerid, 1);
    SetPlayerPos(playerid, ax+10, ay+10, az+20);
    SetPlayerInterior(playerid, 0);
    return 1;
    }
    }


    Danke schonmal im Vorraus fürs Lesen und Hilfestellung geben. :)


    Mit freundlichen Grüßen


    Pac-White

  • Warum setzt du das Interior erst auf 1 und dann auf 0? Könnte eventuell was damit zu tun haben, versuch mal, es direkt auf 0 zu setzen statt zuerst auf 1.


    //Edit: Achso klar, wenn du float:az = GetVehiclePos verwendest, wird die z-Koordinate auf das gesetzt, was die GetVehiclePos Funktion returnt, und die returnt nichts bestimmtes, also ist das dann wahrscheinlich 0 oder so. Du musst es so machen:


    new Float:ax, Float:ay, Float:az;
    GetVehiclePos(cargocopter, ax, ay, az);

  • Probier mal anstatt:
    new Float:ax, Float:ay, Float:az = GetVehiclePos(cargocopter, ax, ay, az);
    das hier:
    new Float:ax, Float:ay, Float:az;
    GetVehiclePos(cargocopter, ax, ay, az);


    Ich hatte so ein Problem auch mal und bei mir lag es daran^^

    Windows ist wie ein U-Boot, öffnest du ein Fenster hast du ein Problem.

  • Das Interior setzt ich um da ich dachte das würde tricksen.. aber es gibt garkein Interior :D das war einfach nur.. mal ausprobiert ;)


    Und deine Idee probier ich auch mal. aber das ändert doch eigentlich nichts? Nur das ich eine Zeile mehr geschummelt habe :D!

  • Ja das mit der einen Zeile ... aber bei mir lag es an dem "=" Zeichen.


    Achja und du solltest besser das hier:
    SetPlayerPos(playerid, ax+10, ay+10, az+20);
    in das hier ändern:
    SetPlayerPos(playerid, ax+5, ay+5, az);
    Weil du sonst 20 meter weiter oben gespawnt wirst wenn der heli auf dem boden steht ;)

    Windows ist wie ein U-Boot, öffnest du ein Fenster hast du ein Problem.

  • Das weiß ich, Problem is das ich sonst unter dem Helispawne da der Cargobob ne sehr große ModelHeight hat^^ :)


    Und das = Setzt die Floats sofort anstatt in der Nächsten Zeile :) Was eig das selbe ist. Aber ich bin grad am Umschreiben^^ Brauch nur schnell den Piloten :D



    //Edit: Ok Hab des nun versetzt.. jetzt gehts..?! Was ändert das das die ZEilen untereinander stehen? und nicht nebeneinander?

    Einmal editiert, zuletzt von PacWhite ()


  • In Samp gibts Funktionen, die ihre Werte direkt als Return ausgeben, z. B. "GetPlayerVehicleID", da kannst du das so machen: "new variable = GetPlayerVehicleID". Andere Funktionen machen das dagegen aber nicht, da musst du die Variablen, an die sie ihre Werte ausgeben sollen, direkt in den Parametern der Funktion angeben. Z.B. GetPlayerPos oder GetVehiclePos sind solche Funktionen, die gibst du so an: "GetVehiclePos(x,y,z)", an den ersten Parameter wird die x-Koordinate ausgegeben, an den zweiten die y-Koordinate, .....


    Bei letzteren Funktionen ist der Return kein bestimmter Wert, also im Normalfall glaub 0. Bei welcher Funktion du das jetzt wie machen musst, kannst du einfach im SA:MP Wiki nachschauen (ich geb immer bei Google ein "samp [scriptfunktion]", da kommt im Normalfall als erstes der Wiki-Eintrag), da sind sämtliche Funktionen mit ihren Parametern und Returns aufgeführt.

  • Also liegt es daran das GetVehiclePos einfach kein return mit x, y, z hat? und deswegen diese auch nicht sofort setzen kann.?


    Naja gut.. Hött ich eigentlich wissen müssen.. Anfänger fehler..^^ :) Aber Ich bedanke mich für die Hilfe !


    Ich komm bestimmt wieder =)


    mfg
    PacWhite