Willkommen beim Pawn Tutorial Stufe 2.
Bei diesem Tutorial werden Variablen erklärt und wie man sie einsetzen kann.
Die Variablen sind im Pawn eines der wichtigsten Dinge der Sprache.
Man kann mit ihnen Werte speichern, auch speziell für Spieler und anderes.
Die Variablen können Texte, Zahlen, Wahr-Falsch Werte oder Dezimalzahlen sein.
Variablen können die Koordinaten eines Spielers festhalten.
Ebenso kann der Geldstand eines Spielers damit festgehalten werden.
Eine wichtige Sache ist, dass jede Spielervariable, wenn ein Spieler sich mit dem Server verbindet auf ein Standart Wert gesetzt wird (meist 0).
Wenn dies nicht gemacht wird, dann kann es passieren, dass ein Spieler auf einmal ungewohlt 3.000.000 $ hat.
Dieses Problem könnte viele nächste Probleme auslösen.
Hier ist ein Beispiel, wie man eine Variable einsetzen kann:
Auf diesem Bild werden paar allgemeine Informationen geschildert, welche für das Scripten wichtig sind.
Wichtig ist, dass eine Variable, nur Werte zwischen -2147483648 bis 2147483647 speichern kann.
Es gibt verschiedene Arten von Variablen, auf dem Bild ist ein Array zu sehen.
Integer:
new beispiel;
(Wenn kein "Startwert" gesetzt wird, dann wird der Wert 0 zugeweist.)
new beispiel = 7;
(Hier wird gleich beim Erstellen von der Variable, dessen Wert auf 7 gesetzt.)
new beispiel = 12;
-> Ausgabe 1
beispeil += 3;
-> Ausgabe 2
beispiel -= 5;
-> Ausgabe 3
Ausgabe 1 - 12
Ausgabe 2 - 15
Ausagbe 3 - 10
(Man kann ebenso "/=" und "*=" verwenden.)
(Es ist auch möglich ein Wert dazu zuaddieren mit diesem Vorgang: beispiel = beispiel + wert; )
Float:
new Float:beispiel;
(Hier wird, wie beim Integer, jedoch auf 0.0 gesetzt.)
(Wichtig: Man kann kein Integer mit einer Float-Zahl auf direktem Wege addieren, subtrahieren, ...)
( -> Dazu gibt es bestimmte Funktionen)
new Float:gravitation = 0.008; (Standart Gravitation ist 0.008)
SetGravity(gravitation);
(Hier wird die Gravitation auf den Wert von "gravitation"(- 0.008) gesetzt.)
(SetGravity(Float:value) - Das ist eine Funktion, um die Gravitation zu verändern)
Wichtig: Um zwei Dezimalzahlen zu addieren, schaut in die float.inc rein. (Serverordner/pawno/includes/);
Beispiel:
new Float:Wert1 = 2.5;
new Float:Wert2 = 5.5;
new Float:Ergebnis = floatadd(Wert1, Wert2);
(floatadd gibt an die Variable(Ergebnis) nun die Summe aus Wert1 und Wert2 weiter.)
Addittion:
floatadd(Float:oper1, Float:oper2)
Subtraktion:
floatsub(Float:oper1, Float:oper2)
Division:
floatdiv(Float:dividend, Float:divisor)
Multiplikation:
floatmul(Float:oper1, Float:oper2)
Float ins Integer runden:
floatround(Float:value, floatround_method:method=floatround_round)
Beispeil:
new Float:Test1 = 3.141592653; // Hier ist es die PI-Zahl
new pi = floatround(Test1);
Boolean
Eine Boolean-Variable kann nur true(= 1) oder false(= 0) speichern.
Anwendung:
new bool:Autoschein;
(Wie bei den Vorgängern wird hier Autoschein auf 0( = false) gesetzt.
new bool:Autoschein = true;
(Hier wird nun der Wert von Autoschein auf true ( = 1) gesetzt.)
Wichtig: Der Boolean wird nur für Wahr oder Falsch verwendet.
Array
Der Array ist ein wichtiger Teil der Variablen, da dieser mehrere Werte festhalten kann.
Beispiel:
new Test[5];
(Wichtig: Ihr könnt bei Arrays, wie hier zum Beispiel nur Test[0] bis Test[4] besetzten, weil das System anfängt bei 0 zu zählen.)
Die meisten Anfänger stellen sich so ein Array vor (Beispiel):
new Test[5];
Test[3] = 9;
0 1 2 3 4 5
0 0 0 9 0 0
Da jedoch das System anfängt bei 0 zu zählen ist dies Falsch. Dies ist richtig:
(Unten = Wert | Oben = Slot)
0 1 2 3 4 5
0 0 9 0 0 0
Arrays werden oft für Spieler benutzt, da es viel mehr Probleme geben würde, wenn für jeden Spieler
jeweils ein Integer angelegt wird. (new player0; new player1; new player2; ...)
Es gibt auch Mehrdimensionale-Arrays:
new Spieler[500][2];
Spieler[0][0] = 5;
Spieler[0][1] = 10;
(Man kann also mehrere Werte für einen Spieler speichern.)
Hier ist ein anderes Beispiel:
new Spieler[500][3];
Spieler[0][0] = 5;
Spieler[0][1] = 10;
Spieler[1][3] = Spieler[0][0] + Spieler[0][1];
Man muss vorsichtig bei den Mehrdimensionalen Arrays sein.
Text
Es gibt keine extra Variable für Texte, es werden dafür Arrays benutzt.
Jeder Array-Slot kann nur 1 Buchstaben besitzen:
new World[6] = "Hello";
0 1 2 3 4 5 6
H e l l o \0 0
(Das Zeichen "\0" steht dafür, dass hier der String endet.)
Man kann in der Konsole diesen Text wiedergeben:
printf(World);
(Diese Funktion wird später erklärt.)
Lokale & Globale Variablen
Kurze Erklärung durch ein Bild:
Das war nun ein Tutorial zu den Variablen.
Wenn ihr ein Fehler habt, dann überprüft ob die Variablennamen auch übereinstimmen,
weil häufig dort der Fehler liegt. (Bsp.: new test = 1; tes = 3;)
Es dürfen nur Namen benutzt werden, welche noch nicht im Script benutzt wurden.
Mit freundlichen Grüßen
Seibay