Viel wichtiger ist außerdem, dass man publics zwangläufig braucht, wenn man eine Funktion (von außerhalb) abrufen will.
(CallRemoteFunction oder CallLocalFuntion)
Den dritten Initialiser den du nicht kennst ist "native". Kannst du benutzen um Pseudo-native Funktionen zu erstellen. Macht man das in einem include, werden die Funktionen sogar rechts in der Tabelle angezeigt.
Das hällt man ja im Kopf nicht aus.
CallRemoteFunction im Script selber ist also ein Aufruf von Außerhalb - ahja...
Du kommst schon mit der pawn-lang.pdf, hast du die mal gelesen oder gibst du einfach nur das stumpf wieder was man dir, scheinbar sehr Fehler-/Lückenhaft, erzählt hat?
Eine Funktion kann ich auch ohne "public" oder "stock" aufrufen.
"stock" ist KEINE Funktionsbeschreibung.
PAWN macht es sich hier ganz einfach.
Es gibt nur "public" als "initialisierer" von Funktionen, keine weiteren.
Der Rest ist sogesehen "private" und kann nicht wie "publics" aufgerufen werden.
Publics sind in SA:MP Scripts notwendig, wenn diese vom Server aufgerufen werden.
Beispielsweise Callbacks, Timer(SetTimer) und die CallFunctions.
Das Sind alles Funktionen, die der Server/Interpreter aufruft, dass hat mit dem Script selber rein gar nichts zu tun.
Aus dem Grund braucht man halt "public".
Dann komm ich mal zu deinem "native" quatsch.
Was sind bitte Pseudo Natives?
Natives die du dir ausdenkst?
Wenn du natives in deine Includes oder ins Script schreibst und dann den Server startest,
was passiert dann?
Richtig -> Runtime Error 19: File or Function is not found.
Warum?
Ganz einfach, weil man natives nicht einfach so erstellen kann, wie man gerade lustig ist.
Natives müssen vorher registriert werden, entweder im Interpreter/Server selbst, oder via Plugin.
Dann hat man die Natives trotzdem nicht im Script, sondern im Plugin.