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
  • Die Grundlagen


    Vorwort - In diesem Tutorial zeigen wir Ihnen den Aufbau eines funktionierenden Scripts und die Aufgaben der einzelnen Kategorien - auch "Callbacks" genannt.
    Im Laufe des Tutorials werden wir nur noch die fachsprachigen Ausdrücke benutzen, da diese auch generell in den meisten Script-Foren von Gebrauch sind.
    Unsere deutschsprachige Scriptvorlage (Template) , auch bei uns im Downloadbereich verfügbar, enthält bereits alle wichtigen und standartmäßigen Callbacks, sowie kleine Einstiegshilfen und Extras.


    ___________________________


    Nun aber zum Eigentlichen - Öffnet das Template mit dem PAWN-Editor (Wir empfehlen den meistverwendeten namens "Pawno") und schaut euch das Script ein wenig an.
    Nun denkt ihr vielleicht "Da ist aber schon eine Menge gemacht worden.", jedoch täuscht das. Die grünmarkierten Zeilen sind nur kleine Randinformationen. Sie sind im Script
    nicht von Gebrauch und sind deshalb "undefinied". Um etwas zu undefinieren setzt man // vor die Zeile bzw. vor die Randinformation. Um mehrere Zeilen zu undefinieren,
    setzt man /* am Anfang der Randinformation und */ am Ende der Randinformation (Siehe Bild 1).


    1 Randinformationen in 2 verschiedenen Varianten


    ___________________________


    Nun sehen wir ziemlich weit am Anfang des Scripts folgendes "#include <a_samp>". Dies definiert die INC-Datei, welche die verfügbaren und im Script zu verwendeten Funktionen. Die INC-Dateien befinden sich im "include"-Ordner im Installationsverzeichnis des PAWN-Editors. Standartmäßig sind schon einige vorhanden (a_samp.inc, float.inc, core.inc, ...). Also das "#include <a_samp>" definiert die entsprechende INC-Datei, jedoch gibt es hier einen Sonderfall. Die Includes "a_players", "a_objects", "a_sampdb" und "a_vehicles" müssen nicht im Script definiert werden, solang "a_samp" definiert wurde. Wenn wir nämlich die "a_samp.inc" mit dem Texteditor öffnen, sehen wir, dass schon einige vorhandene Includes in der "a_samp.inc" definiert sind (Siehe Bild 2).


    2 Alle definierten Includes in der "a_samp.inc"


    ___________________________


    Weiter im Script treffen wir auf "#define GROVE 0". Dies ist eine Definition eines Werts. Diese Definitionen haben die Aufgabe, Zahlen im Script durch Wörter zu ersetzen,
    um sich zum Beispiel Team-ID's oder Skin-ID's besser merken zu können (Kleines Beispiel - Siehe Bild 3).


    3 Ein Beispiel zur Verwendung einer Wertedefinition


    Also die Definition "FRAUENSKIN" ersetzt die Zahl "13" im Script. Jedoch ist einem das selbst überlassen, ob, wo und wann man eine Definition einbaut (Sie sind nicht notwenig, sondern dienen
    der Orientierung im Script und um anstelle einer Zahl ein Wort einzufügen).
    Es gibt jedoch noch 2 weitere Definitionsarten - Die Stringdefinitionen (Um Wörter oder einzeilige Texte zu definieren - Strings) und die Hexcode bzw. Pawncodedefinition (Häufig verwendet, um lange
    Farbcodes in Chatnachrichten zu ersetzen). Sie werden genau wie bei der Wertdefinition (Siehe Bild 3 und oben) angewendet und geschrieben, jedoch muss man bei der Stringdefinition vor und nach dem zu
    ersetzenden String " setzen (anders als bei Variablen in einem String, muss man keinen formaten Text erstellen - Siehe Bild 4).


    4 Ein Beispiel zur Verwendung einer Stringdefinition


    ___________________________


    Nun die Definitionen abhacken - Weiter geht's im Script.
    Dort sehen wir als nächstes "newString[256];" und "new Spielername[256];". Dies sind sogenannte Variablen. Es gibt auch hier wieder 2 verschiedene Arten - "Deklaration" und "Einstellung bzw. Setting".
    Deklarationen definieren Variablen mit einem zurzeit noch unbestimmten Wert. Ein Setting dagegen definiert Variablen mit einem bestimmten, jedoch doch Funktionen veränderbaren Wert (Siehe Bild 5).


    5 Beispiel einer Deklaration und einer Einstellung bzw. Setting



    Variablen können genause verwendet werden, wie eine Definition, nur das deren Wert durch eine Funktion verändert werden kann. Um einen Wert einer Variable in einer Chatnachricht einzublenden, müssen
    wir erstmal einen formaten Text erstellen (Siehe Bild 6).


    6 Beispiel eines formaten Textes mit der Verwendung von einer Deklaration und einer Einstellung



    Ein wichtiger Hinweis - Eine Deklaration sollte stets nur in einer Funktion oder in einer Chatnachricht verwendet werden, wenn ihr zuvor ein Wert bestimmt wurde, ansonsten ist das Ergebnis 0 und somit erscheint auch in der Nachricht eine 0 (Deklarationen sollten möglichst unter der Kategorie "public OnGameModeInit()" einen Wert bekommen).
    Um einer Variable einen neuen Wert zu definieren, schreiben wir NameDerVariable = Wert; (Beispiel: AnzahlDerAutos = 52;).


    ___________________________


    Nun begeben wir uns langsam aber sicher zu den Kategorien - "Callbacks". In Callbacks werden Handlungen und Funktionen (Zum Beispiel Erscheinen einer Nachricht oder Ändern des Wertes einer Variable) gesteuert. Die Handlungen und Funktionen könnt ihr rechts in der Spalte sehen. Dort sind sie nach ihren Includes geordnet, in denen sie sich befinden.


    Die Funktionen in einem Callback werden nur ausgelöst, wenn der Callback aktiv ist (Kleines Beispiel - Siehe Bild 7).


    7 Beispiel des Callbacks "OnGameModeInit()"


    OnGameModeInit() bestimmt die Handlungen, die beim Starten des Servers auftreten, zB. SetGameModeText, SetWeather, uvm. (Die Handlungen von OnGameModeInit() treten nur auf, während der Server startet).


    Wenn ihr mit eurem Script zufrieden seid, kontrolliert es noch einmal und startet den Kompiler mit der F5-Taste oder mit dem
    -Button in der Navigationsleiste. Speichert das Script nun im Ordner "gamemodes" unseres SA:MP-Server-Ordners und tragt es in die server.cfg ein. Nun sollten alle Vorbereitungen getroffen sein und ihr könnt euer Script testen.


    ___________________________




    Viel Spaß und Erfolg wünscht euch
    MaCcA
    San Andreas Script Crew.



    Dieses Dokument unterliegt dem © Copyright und deutschen Urheberrecht. Es darf nicht ohne jegliche Angaben von uns veröffentlicht werden. Alle Texte sind selbst erstellt und Eigentum der SA Script Crew.
    http://www.SA-Script-Crew.de.tf