Machen, dass Flugzeug unter Wasser nichtmehr aus Wasser rausgeht

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,
    ich hab gemacht, dass eine Hydra im Wasser gespawnt wird, damit sie unter wasser fliegen kann. Jetzt hab ich ne Frage: Kann ich machen, dass wenn ich in der Hydra unter Wasser bin ich nicht an die Oberfläche kann. D.h., dass ich mit der Hydra dann nur unter Wasser sein kann und nciht mehr an die Oberfläche komm. Mein Probem ist gerade, dass ich mach, wenn die Hydra an der Oberfläche ist sie nach unten wieder ins Wasser gesetzt wird, aber dann kann cih nciht mehr fliegen.
    Hier der Code (det Timer wird in OnGameModeInit gestartet9:
    public HydraT()
    {
    new Float:uX, Float:uY, Float:uZ;
    GetVehiclePos(hydra, uX, uY, uZ);
    if(IsVehicleInWater(hydra) == 0)
    {
    new Float:uX, Float:uY, Float:uZ;
    GetVehiclePos(hydra, uX, uY, uZ);
    SetVehiclePos(hydra, uX, uY, uZ - 3.0);
    if(IsVehicleInWater(hydra) == 0)
    {
    GetVehiclePos(hydra, uX, uY, uZ);
    SetVehiclePos(hydra, uX, uY, uZ - 3.0);
    if(IsVehicleInWater(hydra) == 0)
    {
    GetVehiclePos(hydra, uX, uY, uZ);
    SetVehiclePos(hydra, uX, uY, uZ - 3.0);
    }
    }
    GetVehiclePos(hydra, uX, uY, uZ);
    SetVehiclePos(hydra, uX, uY, uZ - 2.0);
    }
    return 1;
    }

    2 Mal editiert, zuletzt von Tom Sunder ()

  • Beitrag von Tom Sunder ()

    Dieser Beitrag wurde gelöscht, Informationen über den Löschvorgang sind nicht verfügbar.
  • Du musst sie weiter nach unten setzen. Wenn du sie direkt auf die Oberfäche setzt, oder nur etwas darunter, dann geht's nicht.


    Funkt net habs grad so:
    public HydraT()
    {
    new Float:uX, Float:uY, Float:uZ;
    if(IsVehicleInWater(hydra) == 0)
    {
    GetVehiclePos(hydra, uX, uY, uZ);
    SetVehiclePos(hydra, uX, uY, uZ - 6.0);
    if(IsVehicleInWater(hydra) == 0)
    {
    GetVehiclePos(hydra, uX, uY, uZ);
    SetVehiclePos(hydra, uX, uY, uZ - 6.0);
    if(IsVehicleInWater(hydra) == 0)
    {
    GetVehiclePos(hydra, uX, uY, uZ);
    SetVehiclePos(hydra, uX, uY, uZ - 6.0);
    }
    }
    }
    return 1;
    }

  • Mehr.
    Ich nehme an du fliegst nicht in einem See herum, sondern im Meer, dann mach es doch einfach so:


    SetVehiclePos(hydra, uX, uY, -10.0);

    Funkt net. Wenn die Hydra dann an der Oberfläche ist wird sie nach unten gesetzt, schwimmt an die Oberfläche und dann geht sie unter (Darum passiert dann halt das was passiert wenn man mit einem Auto ins Wasser fährt)

  • Wenn der Spieler bereits unter Wasser ist, würde ich einfach die Z Koordinarte vom Fahrzeug mir holen und bei einer gewissen Grenze dann das Fahrzeug via. SetVehicleVelocity nach unten drücken, ist in meinen Augen eine sinnigere Lösung als via. SetVehiclePos. Das ganze dann über OnPlayerUpdate() , dann kannst dir direkt den Timer sparen.

  • Wenn du steil aus dem Wasser fliegst, kannst du weiterfliegen, dann geht es auch wenn du nach unten gesetzt wirst.
    Wenn du an der Oberfläche schwimmst und dann nach unten gesetzt wirst, dann geht es nicht. Dann musst du den Spieler aus der Hydra setzen, die Hydra wieder unter Wasser setzen (möglicherweise neu spawnen) und den Spieler wieder reinsetzen.

  • Wenn der Spieler bereits unter Wasser ist, würde ich einfach die Z Koordinarte vom Fahrzeug mir holen und bei einer gewissen Grenze dann das Fahrzeug via. SetVehicleVelocity nach unten drücken, ist in meinen Augen eine sinnigere Lösung als via. SetVehiclePos. Das ganze dann über OnPlayerUpdate() , dann kannst dir direkt den Timer sparen.


    Geht leider net wenn cih das mach ist mein Bildschirm gelb und es ist in der mitte ein schwarzer Kasten in dem Loading... steht



    Zitat von Jeffry

    Wenn du steil aus dem Wasser fliegst, kannst du weiterfliegen, dann geht es auch wenn du nach unten gesetzt wirst.
    Wenn du an der Oberfläche schwimmst und dann nach unten gesetzt wirst, dann geht es nicht. Dann musst du den Spieler aus der Hydra setzen, die Hydra wieder unter Wasser setzen (möglicherweise neu spawnen) und den Spieler wieder reinsetzen.


    geht nicht passiert genau das gleiche
    public HydraT()
    {
    new Float:uX, Float:uY, Float:uZ;
    if(IsVehicleInWater(hydra) == 0)
    {
    for(new i=0; i < MAX_PLAYERS; i++)
    {
    if(IsPlayerInVehicle(i, hydra) == 1)
    {
    SetPlayerPos(i, 0.0, 0.0, 0.0);
    GetVehiclePos(hydra, uX, uY, uZ);
    SetVehiclePos(hydra, uX, uY, -16.0);
    PutPlayerInVehicle(i, hydra, 0);
    }
    }
    }
    return 1;
    }

    2 Mal editiert, zuletzt von Tom Sunder ()

  • Du kannst nur Spieler freezen, Fahrzeuge nicht. Wenn du den Spieler im Fahrzeug freezt, dann kann er es auch nicht mehr steuern, allerdings rollt es vorher aus.


    schade. Und kann ich etl um das Fahrzeug herum unsichtbare Gegenstände spawnen lassen, die niemand sieht oder kann mir wer was machen wo das Fahrzeug sobald es sich bewegt sofort wieder an die Stelle wo man eingestellt hat geportet wird (das bekomm ich net hin ohne, dass es 200 mb Ram verbraucht)?

  • [quote='Jeffry','index.php?page=Thread&postID=1987889#post1987889']schade. Und kann ich etl um das Fahrzeug herum unsichtbare Gegenstände spawnen lassen, die niemand sieht oder kann mir wer was machen wo das Fahrzeug sobald es sich bewegt sofort wieder an die Stelle wo man eingestellt hat geportet wird (das bekomm ich net hin ohne, dass es 200 mb Ram verbraucht)?


    Du kannst SetVehicleVelocity zu 0 setzen, und den Spieler freezen, dann bewegt es sich nicht mehr.