Rotation des Spielers für CreateObject und MoveObject, wie ?

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
  • Hey Leute,


    ich habe folgendes:


    Ich will ein EMP machen.
    Und dafür habe ich es so gemacht:
    Man macht /emp und bekommt einen Rocket Luncher mit einer Munition und vorne dran ist ne Nitro Flasche, die das EMP darstellen soll.


    Und ich habe es so gemacht, wenn man dann schießen drückt, wird die Munition von Rocket Luncher sofort auf 0 gesetzt (SetPlayerAmmo(playerid, 35, 0);) damit es zu keiner Explosion kommt.


    Und es wird so ein Sound abgespielt.
    Habe es nochmal neu gemacht, so geht alles, nur dass er nicht in die richtung fliegt,
    ich weiß, weil ich nur x+100 gemacht habe.
    Aber wie kriege ich das hin ? dass er in die richtung fliegt in die ich schieße, oder KEY_FIRE betötige ?



    if(newkeys & KEY_FIRE)
    {
    if (GetPlayerState(playerid) == PLAYER_STATE_ONFOOT)
    {
    if(GetPlayerWeapon(playerid) == 35)
    {
    if(IsACop(playerid) && HatEMPStinger[playerid] == 1)
    {
    new Float:x, Float:y, Float:z;
    new Float:EMPRot;
    GetPlayerPos(playerid, x, y, z);
    GetPlayerFacingAngle(playerid,EMPRot);
    EMPStinger = CreateObject(345,x,y,z+0.35,0,0,EMPRot);
    MoveObject(EMPStinger, x+100, y, z, 50);
    /*EMPStinger = CreateObject(345, x, y, z, 0.0000, 0.0000, 0.0000);
    MoveObject(EMPStinger, x+100, y, z, 10);*/
    PlaySoundForPlayer(playerid, 36400);
    SetTimerEx("EMPNachladen", 3500, 0, "d", playerid);
    SetPlayerAmmo(playerid, 35, 0);
    }
    }
    }
    }


    Aber ich will es so machen, dass die Rakete in die Position geht, wo ich mit dem Rocket Luncher hinschieße, sprich dass er die X und Y Position beim moven, und die Rotation beim Erstellen des Objekts abfragt.


    Kriege das net hin und kompliziert will ich es auch nicht machen, also wenn er in der Rotation zwischen 0 und 20 ist, dann schießt es in diese Richtung und zwischen 20 und 40 und so weiter.


    Hoffe ihr könnt helfen, wie es richtig geht.


    Ein Kollege (Mauzen) hat mir erklärt, dass man es mit GetPlayerFrontVector machen muss.


    Aber wie genau, weiß ich net.
    Er sagt er kann es nicht machen da er für die Uni studieren muss (kann ich aufjedenfall verstehen)


    MfG
    MrS.

    6 Mal editiert, zuletzt von MrScripter ()

  • Als erstes solltest du mal die Edit regel beachten ;)


    Als nächstes musst du irgendwie die x und y cordinaten berechnen die an dem Punkt liegen auf das du zielst.
    Und dein "Kollege" Mauzen hat vollkommen recht es sollte mit GetPlayerFrontVector gemacht werden.
    Wie die genaue berechnung dafür ist weiß ich jetzt aber nicht.

    "Bevor ich mir Informationen aus der "Bild" hole,
    werde ich anfangen, Wahlergebnisse danach vorauszusagen,
    neben welchen Busch unsere Katze gepinkelt hat."

    Margarete Stokowski

  • Habe die //EDIT regel eingehalten, nur nicht //EDIT gemacht
    Habe nicht nur einen Buchstaben geändert, sondern immer was dazugefügt, sry


    Ja wie, weißt du genau nicht soweit bin ich auch, ich hoffe es kann mir einer helfen.


    MfG
    MrS.

  • Also es ist möglich, einen Punkt in einer bestimmten Entfernung vor dem Spieler auszumachen.
    Ich habs benutzt, um abzufragen ob der Spieler hinter einem Fahrzeug steht.


    new Float:pcoord[3]; GetPlayerPos(veh,pcoord[0],pcoord[1],pcoord[2]);
    new Float:pangle; GetPlayerFacingAngle(playerid,pangle);
    pcoord[0] = floatadd(pcoord[0],(distanz * floatsin(-pangle,degrees)));
    pcoord[1] = floatadd(pcoord[1],(distanz * floatcos(-pangle,degrees)));


    ist ungetestet, aber Distanz einfach durch z.B. 15.0 ersetzen und mal ausprobieren.



    MfG Firer