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
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
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)
Weiß nicht ob es in einen der Links erwähnt wurde, aber ein Filterscript kannst du jederzeit Ingame laden und entladen, ohne den Server zu restarten
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?
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.
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?
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.
Alles anzeigenKleine 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?
Sagen wir, dein Include sieht folgendermaßen aus
/*
* hier eine kleine beschreibung, falls andere hier auch daran arbeiten können sollen
* deswegen schreibe ich hier kurz im obersten bereich, was hier grundlegend gemacht wird
* author: jack Gerilla
* bla bla bla
*/
stock FunktionsName() {
/*
hier der Algorithmus, der den Rückgabewert bestimmt
*/
return 1;
}
Alles anzeigen
So sieht dann die Include dann mit einem native folgend aus:
/*
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.
Danke dir, sehr schön verdeutlicht. Das ist aber echt gut, dass einem dann die Vorschläge gemacht werden, sehr hilfreich, danke dir für den Beitrag nochmal!