Scripting Basics DE
From SA-MP Wiki
Contents |
Variablentypen
In Variablen koennen Werte gespeichert werden. Variablen in PAWN sind Case-Sensitive (= zwischen GroÃer- und Kleinschreibung wird unterschieden), d.h. eine Variable mit dem Namen 'lolhax' ist z.B. nicht dieselbe wie 'LOLHAX' oder 'LoLhAx'Â oder. Variablennamen muessen mit einem Buchstaben beginnen (a-z, A-Z).
Integer
Integer ist der Standardvariablentyp. Ein Integer ist eine Ganzzahl. Es duerfen keine Dezimalpunkte in Integern vorkommen, auch wenn alle Ziffern hinter dem Dezimalpunkt '0'Â sind. 5.00 z.B. ist technisch gesehen kein Integer.
Beispiel
new integer = 1337; // Definiert eine neue Integervariable namens 'integer' und setzt ihren Wert auf '1337'.
new integer; // Definiert eine neue Integervariable namens 'integer' und setzt ihren Wert auf '0' da kein spezieller Wert angegeben wird.
Moegliche Verwendung
if(integer == 1337) { /* Weitere Anweisungen */ }
Float
Floatvariablen koennen Kommazahlen abspeichern. Das Komma ist dabei nicht wie im Deutschen ',' sondern muss durch '.' ersetzt werden.
Beispiel
new Float:float; // Definiert eine neue leere Floatvariable namens 'Float'. new Float:float = 2.0; // Definiert eine neue Floatvariable namens 'Float' und setzt ihren Wert auf '2.0'.
Moegliche Verwendung
SetPlayerPos(playerid, float, 2.0, 1400.0);
String
Strings koennen einzelne Zeichen oder Zeichenketten abspeichern. Strings sind Ueblicherweise Arrays. Ein Array ist eine spezielle Variable, die mehrere Werte beinhalten kann. Jeder Wert eines Arrays hat einen Index, der bei 0 anfaengt und sich dann pro Wert um 1 erhoeht. Da jedes Zeichen auch als Integer dargestellt werden kann, kann man in einen Integer auch ein Zeichen abspeichern. Einzelne Zeichen werden in zugewiesen (Bsp.: 'a'), Strings in "" (Bsp.: "Hallo").
Beispiel
new string[7] = "String"; // 7 ist die Laenge des Strings plus 1 fuehr den String Identifier, der festlegt, dass das Array ein String ist. Das Ganze Script ueber koennte ein solches Array 'String' also maximal 6 Zeichen beinhalten. new string[7]; string[0] = 'S'; string[1] = 't'; string[2] = 'r'; string[3] = 'i'; string[4] = 'n'; string[5] = 'g'; string[6] = 0; // 0 ist der String Identifier.
Gewoehnliche Verwendung
new string[256];
Moegliche Verwendung
SendClientMessage(playerid, 0xFFFFFFAA, string);
Boolean
Ein Boolean kann zwei Werte abspeichern. Entweder true oder false. True entspricht dem Integerwert 1, false dem Integerwert 0. In PAWN wird alles, was nicht 0 ist, als true angesehen. Beim Definieren ist der Standardwert eines Booleans 0, also false.
Beispiel
new bool:boolname;
Moegliche Verwendung
if(boolname == true) { /* Weitere Anweisungen */ }
Array
Arrays koennen groÃee Datenmengen abspeichern. Sie sind vergleichbar mit Tabellen. Es gibt ein- und mehrdimensionale Arrays. Float- oder Boolean-Arrays werden genauso definiert wie Float- oder Boolean-Variablen (mit den Praefixen Float: und bool:).
Eindimensionales Array
Ein eindimensionales Array ist eine Reihe von Werten, die alle einen Index zugewiesen bekommen.
new onedimensionalarray[FELDER];
Beispiel
new onedimensionarray[5] = {4, 6, 7, 9, 2}; // Die '5' zwischen [ und ] legt fest, wie viele Felder das Array hat.
Moegliche Verwendung
new randomnumber = random(sizeof(onedimensionalarray)); // Zufaellige Nummer eines Feldes. printf("Zufallszahl: %d", onedimensionalarray[random]); // Die zzufaellige Nummer wird als Index fuer ein Feld verwendet. <pawn> == Zweidimensionales Array == Zweidimensionale Arrays sind wie Tabellen und haben Zeilen und Spalten. <pawn> new twodimensionalarray[ZEILEN][SPALTEN]; <pawn> === Beispiel === <pawn> new Float:twodimensionarray[4][3] = { {3.0, 4.5, 5.76}, // Zeile 0 {10.85, 76.34, 23.54}, // Zeile 1 {2.32, 10.23, 80.2}, // Zeile 2 {6.6666, 45.3, 32.64} // Zeile 3 };
Moegliche Verwendung
SetPlayerPos(playerid, twodimensionalarray[2][2], twodimensionalarray[3][1], twodimensionalarray[2][0]);
Dreidimensionales Array / Zweidimensionales String-Array
new treedimensionalarray[ZEILEN][SPALTEN][Z];
Zweidimensionales String-Array
new twodimensionalarraystring[ROWS][COLLUMNS][256]; //fuer einen 255 Bytes langen String
Bedingungen
Bedingungen ermoeglichen es, Daten zu pruefen oder zu vergleichen und dann bestimmte Scripts auszufuehren, je nach dem, ob die Bedingung wahr oder falsch ist. Die gebraeuchlichste Bedingung ist wohl if/else, aber es gibt auch einige andere: case, for- und while-Schleifen.
If/Else
Die if/else-Bedingung vergleicht zwei Werte miteinander und fuehrt dann je nach Ergebnis ein Script aus oder nicht. Optional kann man auch ein Script angeben, was aausgefuehrt wird, wenn die Bedingung falsch ist.
Vergleichsoperatoren
Operator | Bedeutung | Benutzung |
---|---|---|
== | Links gleicht Rechts | if(Links == Rechts) |
!= | Links gleicht Rechts nicht | if(Links != Rechts) |
> | Links ist groeÃer als Rechts | if(Links > Rechts) |
>= | Links ist groeÃer oder gleich Rechts | if(Links >= Rechts) |
< | Links ist kleiner als Rechts | if(Links < Rechts) |
<= | Links ist kleiner oder gleich Rechts | if(Links <= Rechts) |
Operator | Bedeutung | Benutzung | ||
---|---|---|---|---|
&& | AND (Und) | if(Links && Rechts) | ||
OR | if(Links | Rechts) | ||
! | NO | if(!Variable) | ||
NOR | if(!(Links | Rechts)) | ||
NAND | if(!(Links && Rechts)) | |||
XOR | if((Links && !Rechts) | (!Links && Rechts)) | ||
NXOR | if(!((Links && !Rechts) | (!Links && Rechts))) |
Beispiel
if(lvalue > rvalue) { /* Weitere Anweisungen */ }
Im Beispiel werden die weiteren Anweisungen ausgefuehrt, wenn die Bedingung zwischen lvalue und rvaluewahr ist. Die Bedingung lautet: Wenn lvalue groeÃer als rvalue ist, dann fuehre die Weiteren Anweisungen aus.