Angle von Punkt A zu Punkt B messen

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
  • Abend, ich stehe etwas auf dem Schlauch.
    Ich schreibe gerade einen kleinen Gamemode, welcher "Multiplayer Missionen" für SAMP mit sich bringt.
    Alles schön und gut, die Bots töten mich dauernd mit Messern, Schlagstöcken und Baseballschlägern.
    Nun wage ich mich an die Schusswaffen - Sie zielen auf bestimmte Punkte, schießen selbstständig und machen auch Schaden wenn der Lagshot deaktiviert ist.
    ABER (!) immer wenn ich sie auf einen neuen Punkt zielen lasse, hören sie auf zu zielen, drehen sich und zielen wieder.
    Nun kann ich dem Bot die Facing Angle einstellen. Klappt auch wenn ich von Hand irgendeine Random Koordinate eingebe, er schießt brav weiter.
    Aber wie kriege ich nun einen Wert zwischen Punkt A und Punkt B hin? Als Beispiel:
    Spieler A ist auf Koordinate 2035.5573, 1343.0396, 10.8203, Spieler B auf Koordinate 2027.8364, 1339.8917, 10.8203.
    Wie kann ich Spieler A's Facing Angle so ausrichten, dass er genau auf Spieler B zeigt?
    Also wie kriege ich den gewünschten Wert für "Angle" heraus?

  • Diese Funktion sollte dir helfen:
    stock SetPlayerLookAt(playerid, Float:X, Float:Y)
    {
    new Float:Px, Float:Py, Float: Pa;
    GetPlayerPos(playerid, Px, Py, Pa);
    Pa = floatabs(atan((Y-Py)/(X-Px)));
    if (X <= Px && Y >= Py) Pa = floatsub(180, Pa);
    else if (X < Px && Y < Py) Pa = floatadd(Pa, 180);
    else if (X >= Px && Y <= Py) Pa = floatsub(360.0, Pa);
    Pa = floatsub(Pa, 90.0);
    if (Pa >= 360.0) Pa = floatsub(Pa, 360.0);
    SetPlayerFacingAngle(playerid, Pa);
    }
    http://forum.sa-mp.com/showpost.php?p=3266453&postcount=4

  • Perfekt, danke.
    Nur mal so nebenbei.... Du kennst dich nicht zufällig mit FCNPC aus?
    Versuche das Plugin gerade zu installieren, das würde mir einiges an Arbeit ersparen.
    Aber leider will das Ding nicht. Sobald ich es als Plugin einfüge stürzt der Server ab. (Getestet auf Windows 10, Windows 7, Debian 7 und Debian 8)
    Bei Windows spuckt er gar nichts aus.
    Linux hingegen gibt mir die Meldung "Speicherzugriffsfehler" aus und folgendes steht im Serverlog:


    Sämtliche Plugins wurden erfolgreich geladen, alles ist richtig includiert. Scheint als Läge der Fehler irgendwo bei mir im Script - Nur bin ich jede einzelne Stelle in der ich eine FCNPC Funktion aufrufe durchgegangen und finde einfach keinen Fehler. Hilfe.....? ;(


    PS: