Kleines Mörser Skript

  • Hallöle,


    hier ein kleines Skript, womit man ein Projektil in den Himmel feuern kann und es dann wieder runterkommt.


    Angestoßen durch den Thread: SA:MP Mörser 1 & 2 WK.


    Nur kurz als Information:
    Das Include dient eher als Prototyp für Skripter und nicht direkt für Endnutzer.


    Primär ging es mir nur darum, dass das Projektil einen Bogen fliegt und nicht straight einfach wie von einem Raketenwerfer gefeuert fliegt.


    Habe mal mit ein paar schönen Bällchen die Flugbahn simuliert:



    Funktionen im Include:


    C
    1. /*
    2. Erstellt eine Route mit den Bällchen von Punkt A nach Punkt B.
    3. (Dient nur zur Demonstration ist für die eig Missile nicht notwendig)
    4. */
    5. ShowRoute(Float:x,Float:y,Float:z, Float:x2,Float:y2,Float:z2);
    6. DestroyRoute(); //Löscht die Route eben wieder


    C
    1. /*
    2. Rakete fliegt von Punkt A nach Punkt B.
    3. In dem Bogen, der per ShowRoute angezeigt werden kann.
    4. */
    5. StartMissile(Float:x,Float:y,Float:z, Float:x2,Float:y2,Float:z2);


    Es gibt einen Callback:



    C
    1. public OnMissileFinished(Float:x,Float:y,Float:z)
    2. {
    3. CreateExplosion(x,y,z,2,20); //Damit es bumms macht
    4. return 1;
    5. }


    Das erstellt am Zielort eine Explosion, wenn die Rakete eben da ist (Rakete wird automatisch zerstört).


    Wenn die Rakete höher fliegen soll, kann man einfach mit dem Define MAX_MISSILE_HEIGHT ein wenig rumspielen :)



    BUGs:
    Also die Ziel und End Höhe (Z-Koordinate) sollte ca gleich sein, ansonsten kommt es zu Fehlern.
    Dann bleibt die Rakete über dem Ziel oder unter dem Ziel hängen. Allerdings sind die End-Koordinaten bei OnMissileFinished, immer die des Ziels!


    Downlaod: PasteBin


    Related Work:
    https://forum.sa-mp.com/showthread.php?t=630602
    https://forum.sa-mp.com/showthread.php?t=446286
    https://forum.sa-mp.com/showthread.php?t=591010



    Mit freundlichen Grüßen,
    Euer Kalle :P

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • Klasse Arbeit !


    Die ersten Ergebnisse lassen sich echt gut sehen :)


    Ich werde dann gleich in der Präsentation gleich ein Update-Video mit deiner Funktion Veröffentlichen.

    Programmieren: 1% Programmieren, 99% Bugs Fixen

  • Das Include dient eher als Prototyp für Skripter und nicht direkt für Endnutzer.

    Auch wenn das ganze als Prototyp bzw. Showcase gelten soll, hab ich da ein wenige Kritik anzubringen.


    1. Warum nutzt du streamer funktionen, wenn du den Streamer nicht mit "includierst" mit der a_samp machst du das auch.
    Vor allem brauchst du die nicht (VectorSize) lässt sich auch selbst basteln °L°


    2. Warum packed strings ?
    Warum static stock ?
    Warum static @function ?


    Wenn das für andere Leute gedacht ist, schreib das doch so, dass Leute ohne Jahrelange Erfahrung verstehen, was da vor sich geht.
    Hättest du in dem ganzen Code noch Kommentare - würde ich sagen, ist OK kann man so machen.


    So find ich das irgendwie uncool - so nimmst du den Leuten die Chance zu verstehen was du dort gebastelt hast.


    3. (optional)
    Wo ist Map/ColAndreas ? °L°

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

    Margarete Stokowski

  • Danke für die Kritik.



    Warum nutzt du streamer funktionen, wenn du den Streamer nicht mit "includierst" mit der a_samp machst du das auch.

    True dat.


    Vor allem brauchst du die nicht (VectorSize) lässt sich auch selbst basteln °L°

    VectorSize ist für diese Berechnung optimiert und somit schneller xD



    So find ich das irgendwie uncool - so nimmst du den Leuten die Chance zu verstehen was du dort gebastelt hast.

    Das stimmt wohl, wobei ich das auch in nem Tutorial mal erklärt habe, aber das irgendwie einfach zur Gewohnheit geworden.



    Wo ist Map/ColAndreas

    Wollte ja das gerade ohne die großen Plugins lösen.


    Alternativ war ja das Physic Include etc verlinkt, aber diese ziehen halt echt viele Ressourcen, für etwas, was man eben auch so grob lösen kann.

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S