Filterscript/ Include, Unterschied, Vorteile

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
  • Guten Tag,


    könnte mir jemand die Vorteile/ Unterschiede von Filterscripts und Includes nennen?


    Wäre sehr hilfreich, vielen Dank. Und wieso findet man nichts über Filterscripts in der samp Wiki?


    Gruß,
    Jack

    VIVA LA REVOLUCIÓN

  • Eine Include kannst du in mehrere Filterscripts/Gamemodes einbauen. Oftmals packt man da Funktionen rein, die in mehreren Codes benötigt werden.
    Includes können nicht kompiliert werden, und können daher auch nicht separat ausgeführt werden, sie müssen in einen GM/FS eingebunden werden.


    Ein Filterscript ist wie ein Gamemode eine vom Server ausführbare Datei.


    https://wiki.sa-mp.com/wiki/Co…erver#Using_Filterscripts
    https://de.wikipedia.org/wiki/Include
    http://www.mikrocontroller.net/articles/Include-Files_(C)

  • Kann das Filterscript auch mit dem Gamemode Daten austauschen bzw. kommunizieren? Oder laufen die unabhängig voneinander?


    Und mit den Includes: Die kann man sozusagen nutzen, um den Gamemode auch in gewisser Weise aufzuräumen und den Code dann in die Includes verlagern und vom Gamemode aus drauf zugreifen?

    VIVA LA REVOLUCIÓN

  • Kann das Filterscript auch mit dem Gamemode Daten austauschen bzw. kommunizieren?

    Ja, hiermit: https://wiki.sa-mp.com/wiki/CallRemoteFunction




    Die kann man sozusagen nutzen, um den Gamemode auch in gewisser Weise aufzuräumen und den Code dann in die Includes verlagern und vom Gamemode aus drauf zugreifen?

    Korrekt. Wenn du zum Beispiel 200 Farb-Defines hast, dann kannst du die da rein packen.
    Oder wenn du eben Funktionen hast, die du in mehreren Codes (GM/FS) nutzen willst.

  • Beitrag von datgame ()

    Dieser Beitrag wurde vom Autor aus folgendem Grund gelöscht: Jeffry war schneller ().
  • Korrekt. Wenn du zum Beispiel 200 Farb-Defines hast, dann kannst du die da rein packen.
    Oder wenn du eben Funktionen hast, die du in mehreren Codes (GM/FS) nutzen willst.

    Und die defines aus dem include kann ich dann direkt im Gamemode verwenden ohne vorher was zu machen oder?
    Müssen die Includes in den pawno include Ordner oder der im Server Ordner?

    VIVA LA REVOLUCIÓN

  • Und die defines aus dem include kann ich dann direkt im Gamemode verwenden ohne vorher was zu machen oder?

    Du musst deine Include im Gamemode (am besten ganz oben) inkludieren:
    #include <deineInclude>



    Müssen die Includes in den pawno include Ordner oder der im Server Ordner?

    Die legst du am besten in /pawno/include/ ab. Oder in einem Unterordner davon.

  • Kleine Randanmerkung:


    Jack, dir ist sicherlich aufgefallen, das du gewisse Funktionen schon mit einem Teiltext vorgeschlagen bekommst, z.B. "GetPla" -> GetPlayerPos.
    Dies entstammt aus dem a_samp include, wo eine Zeile mit
    native GetPlayerPos(playerid,Float:posX,Float:posY,Float:posZ);
    beschrieben ist.
    Und wenn du z.B. in einem include von dir selber eine Funktion hast, aber auch dir so schön vorschlagen lassen möchtest, so muss du dann eine Zeile im Include wie folgt beschreiben
    /*
    native FunktionsName(parameter);
    */
    Hier gibt es aber eine Voraussetzung:
    Die gewünschte Include Datei muss direkt im pawno/include ordner sein, andernfalls ist der Pawno Editor nicht in der Lage, diese Natives auch lesen zu können.


  • Wenn ich das mache, dann sagt er mir, dass ich die Funktion schon definiert habe. Ich kann nicht native Funktionsname(); und dann später


    stock Funktionsname() {


    }


    usw... Was mache ich denn hier falsch? :)

    VIVA LA REVOLUCIÓN

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Sagen wir, dein Include sieht folgendermaßen aus


    So sieht dann die Include dann mit einem native folgend aus:

    C
    /*
    native FunktionsName();
    */
    stock FunktionsName() {
    	/*
    	hier der Algorithmus, der den Rückgabewert bestimmt
    	*/
    	return 1;
    }

    Die Meldung erhälst du, da du das nicht als Kommentar verfasst hast.
    Dies ist aber von nöten. Warum und weshabl, das steht im Forum sowie im Wiki.
    Wir wollen uns aber nun darauf beschränken.


    Wenn du nun die native so definiert hast, wie in meinem Beispiel, so musst du nur dein Script neu öffnen und der Editor sieht die "native" Zeile und kann sie dann vorschlagen.