SA:MP Scripting Tutorial (PAWN) (* GTA - San Andreas)

SA:MP Scripting Tutorial (PAWN) (* GTA - San Andreas)

Für eine Umfangreiche Dokumentation zu "The Pawn Language" findet ihr Hier[PDF]

Callbacks
Der SA:MP Server ruft bestimmte Funktionen unter bestimmten Bedingungen auf.
Das SA:MP Dev Team hat diese, der Einfachheit halber, immer nach ihrer Aktion benannt.
public OnPlayerConnect(playerid) { ... }

Dieses Callback wird immer aufgerufen wenn ein Spieler sich zum Server verbindet.
In den geschweiften Klammern ({ und })
stehen die Anweisungen.
Kommentare
Kommentare werden mit // für eine Zeile erstellt.
alles was hinter // steht wird ignoriert!
Variablen
Eine Variable ist ein Dynamischer Speicher welcher nach belieben gefüllt werden kann.
Eine Variable erstellen wir mit
new NAME

Die Variable "x" soll erstellt werden.
new x;

Nun können wir schon bei der Erstellung die Variable füllen.
new x = 5;

Nun ist die Variable "x" mit 5 gefüllt.
Was ist aber wenn wir eine Gleitkommazahl haben wollen?
Dann nehmen wir ein "Tag".
Diese werden so erstellt:
new TAG:NAME

"y" soll die besagte Gleitkommazahl sein.
new Float:y;

Im laufe des Programmes können wir die Variablen mit neuen Werten füllen.
z.B. wenn ein Spieler sich verbindet wollen wir "x" auf 1 setzten.
new x;
//.. Quelltext ...
public OnPlayerConnect(playerid)
{
x = 1;
};

Nun wird , wenn sich ein Spieler verbindet "x" auf 1 gesetzt.
Array
Ein Array ist eine Variable die bestimmte Speicherparzellen besitzt.
Erstellt werden diese so
new NAME[ZELLEN]

"z" soll 3 Speicherzellen uns geben.
new z[3];

ACHTUNG Es wird nur beim erstellen von 1-XYZ gezählt.
Ansonsten immer von 0-XYZ-1.
Wenn wir also die erste Zelle von z mit 2 belegen wollen müssen wir folgendes tun.
z[0] = 2;

Dies können wir bis zur Zellen zahl 2 fortführen da wir ja 3 Zellen reserviert haben.
Zwei Posts weil mehrere code Tags wohl zu Fehlern führen ;)
Bedingungen
Als Bedingungs Funktionen stehen uns if und else zur Verfügung.
If
if ist immer das Statement was prüft.
z.b. wollen wir prüfen ob "x" gleich 1 ist.
if(x == 1)

Wichtig! Gleich (=) ist in der if schleife immer ==!
Wir prüfen nun ob "x" gleich 1 ist und schreiben dann in z mit der Zelle 2 die Zahl 7
if(x == 1)
{
z[2] = 7;
}

Wichtig sind die klammern ( { und } )
Nun trifft die If schleife nicht ein,
was nun?
else
Nun nutzen wir else weil if nicht eingetretten ist.
Else ist also immer wenn die Bedingung von if falsch ist.
x ist also nun 2 und wir prüfen es auf 1.
die if sagt nun: "Nein das passt nicht" und übergibt an else.
in else wird z[2] mit 5 gefüllt.
if(x == 1)
{
z[2] = 7;
}
else
{
z[2] = 5;
}

Übrigens kann man auch Arrays mit genauer Zellen angabe prüfen.
String (Zeichenkette)
Wir wollen nun eine Zeichenkette abspeichern.
Jeder Buchstabe (auch Leerzeichen) verbrauchen immer eine Zelle.
Also müssen wir ein Array erstellen was XYZ Zellen hat.
Es können auch mehr Zellen sein als die Zeichenkette, das stellt kein Problem da.
new str[256];

Nun füllen wir str mit Hallo Welt.
new str[256];
str = "Hallo Welt";

WICHTIG die " sagen wo der Anfang und das Ende ist.
Um zwei Strings zu vergleichen nutzen wir die Funktion "strcmp".
new str[256];
str = "test";
if(strcmp(str, "test", false) == 1)
{
str = "test bestanden";
}
else
{
str = "test nicht bestanden";
}

strcmp vergleicht zwei Strings mit einander.
Diese können in Form eines Array (Variable) sein oder auch nur "Instant".
SA:MP
Gut das bringt uns aber noch nichts.
Wir wollen jetzt dem Spieler wenn er sich verbindet eine Meldung ausgeben!
#include <a_samp>
//rest code
public OnPlayerConnect(playerid)
{
SendClientMessage(playerid, 0xFF0000AA, "Willkommen auf meinem Server");
return 1;
}


Die Funktion heißt SendClientMessage.
Das erste ist die Spieler ID , danach der Farbcode und dann der Text (auch in form eines Strings).

MEHR FOLGT DEMNÄCHST

Weiter Informationen zu SA:MP und dessen Funktionen gibt es auf http://wiki.sa-mp.com (english)
Logge dich ein um einen Beitrag zu schreiben.