Recycler, 12.04.2007, 20:28 |
---|
Globale/Lokale Variablen mit und ohne Arrays Dies ist ein Tutorial über Variablen in der Scripting-Language PAWN (Eigentlich gillt das meiste auch für andere Programmiersprachen :-P). Wie der Titel schon sagt, gibt es nicht nur die eine und einfache Variable, sondern auch Formationen, sprich global/lokal/indexiert/ uvm. Alles werde ich nicht erklären können, aber das, was für den kleinen Scripter benötigt wird, sollte hier vorzufinden sein. Aber fangen wir einfach an: Was sind eigentlich "Variablen"? Eine Variable ist eine Größe, die verschiedene Werte annehmen kann. Das heißt, sie ist in ihrer Größe variabel. Variablen kann man auch als Platzhalter/Unbekannte bezeichenen. Sie kommen in Formeln, Termen und Gleichungen vor. Und das nicht nur z.B. in einer binomischen Formel: Auf diese Formel wird dir der beste Rechner der Welt keine Antwort geben können, wenn du keine Wertzuweisung oder eine Gleichung aufstellst. Man kann diese Formel so... oder so... ...lösen. Aber nun zurück zu unserer Variable. Variablen gibt es nicht nur in Mathematik und NW, sondern auch im IT-Bereich. Dabei haben sie nun aber überhaupt keine andere Funktion als in der Mathematik. Wer gut in Mathe ist, wird keine Probleme mit Variablen haben^^ Nehmen wir ein Beispiel aus der Scriptengine von SA-MP. Durch ein Command wählt der Spieler nun, ob er das Spiel in der Sprache Englisch oder Deutsch spielen will. Logischerweise kann das Script nicht jedesmal, bevor Text erscheinen soll, den Spieler nach der Sprache fragen; das wäre ziemlich dämlich. Und nun kommen wir zu der ersten Art der Variabeln. Globale Variablen Mit Arrays... Wir nehmen wieder das oben genannte Beispiel auf. Nun, da wir etwas brauchen, um die Sprache zu speichern, brauchen wir Platzhalter. Wir vereinbaren, das wenn der der Spieler die Sprache Deutsch wählt, eine Variable den Wert 1 annimmt. Wir gehen folgendermaßen vor; in einem Script muss man Variablen vorher festlegen. Das heißt, du kannst nicht einfach ein "x" als Variable benutzen, ohne sie zu "erstellen". In PAWN sieht das ganze so aus: Jetzt werdet ihr euch fragen: Wohin damit? Was soll das MAX_PLAYERS?! Eins nach dem anderen Wir brauchen für diese Situation eine globale Variable, da wir sie für jeden Text des Spiels immer wieder einsetzen. Global bedeutet im Script, das sie immer existiert. Also werden wir sie vor main() erstellen. Oben schon erwähnt, wir brauchen auch die sogenannten Arrays. Ein netter englischer Begriff, und da ich in meinen Lernphasen im Alter von ca. 9 solche Begriffe verabscheute, einigen wir uns darauf, das wir sie Garagen nennen. (Damit konnte ich es mir besser merken :-P) Die Variable in diesem Fall brauchen zwingend alle Spieler. Aber was passiert nun, wenn wir bei jedem neuen Spieler den Wert der Variable verändern? Genau, die Daten der vorherigen Spieler werden gelöscht. Jetzt könnte man sich denken, dann erstelle ich eben für jeden Spieler eine einzelne Variable. Das wird lange bei einem Server mit 100 Spielern dauern, findet ihr nicht auch? Und da kommen auf einmal die Garagen: sie ermöglichen es, das eine Variable spezifisch für einen Spieler (oder was auch immer) ist. In diesem Fall steht das MAX_PLAYERS für die maximalen Spieler im Server (100). So, Spieler Rafioso (ID: 0) wählt Englisch. Wir setzen die Variable so ein: playerid bezeichnet hier nur den mitgelieferten Parameter in OnPlayerCommandText oder sonst woher. Also ist playerid auch ein Platzhalter; er steht, weil es ja Rafioso ist, für 0. Dann wird die Variable des Spielers "0" auf 2 (Englisch) gesetzt. Und fertig ist die perfekte Variable mit Garage Später wird man durch ein if-statement abfragen müssen, ob die Variable für 1 oder 2 steht. Ein sehr gutes Tutorial hat unser Rafioso hier gemacht. |
Recycler, 12.04.2007, 20:46 |
---|
Ohne Arrays... Wie oben schon gesagt, es bleibt bei einer globalen Variable. Also werden wir sie wieder über main() erstellen. Diese Variable kann nur einen einzigen Wert haben und besitzt keine Garagen. Ihr könnt sie z.B. als Wechselvariable benutzen, indem ihr, wenn etwas bestimmtes erfolgt ist, sie einem Wert zuweist und diesen Wert für euer Script relevant macht. Ich hoffe, ihr versteht was ich meine Lokale Variablen Mit und ohne Arrays... Diese Art von Variablen ist vielleicht die häufigste. Allerdings kommen sie in Verbindung mit Garagen nur selten vor, weil es keinen großen Sinn ergeben würde Sie sind das Gegenteil von global. Das heißt, sie existieren nur in der Funktion, wo sie auch erstellt wurden. Wenn jemand eine Variable in einem Command etwa so erstellt: Dann kann ihr ein Wert zugewiesen werden, und alles was man mit einer Variable halt so machen kann Nur nach Beendigung der Funktion wird die Variable gelöscht, und ihr könnt sie nicht mehr verwenden. Deshalb könnt ihr auch in anderen Funktionen gleichnamige Platzhalter erstellen, was bei globalen nicht möglich ist. Sonst ist eigentlich nichts mehr zu sagen; alles wurde oben schon mehr oder weniger erklärt^^ Ich mach noch ein Beispiel für eine lokale Variable: Hier wird zufällig irgendein Spieler zwischen 0-5 gekillt. (Wobei man eigentlich noch ein IsPlayerConnected machen müsste, aber egal :D) Array: "Bei einem Array handelt es sich um eine Gruppe von Variablen oder Daten gleichen Typs, die unter einem gemeinsamen Namen in einer eindimensionalen, zweidimensionalen oder mehrdimensionalen Anordnung gespeichert werden. Arrays werden benötigt, um einerseits eine große Anzahl von Variablen mit wenig Aufwand zu definieren und um andererseits die Voraussetzung zu schaffen, direkt auf ein bestimmtes Variablenelement durch Angabe eines numerischen Werts, dem sogenannten Index zuzugreifen" __________________________________________________________________________________ Ich hoffe dieses Tutorial hat euch nocheinmal ein bisschen beigebracht Wenn ihr Fragen habt, fragt ruhig. Aber bitte nicht hier! MfG Recycler |
FloRaX, 03.12.2007, 12:25 |
---|
Hey cool,wenigstens weis ich jetzt was das bedeutet |