|
So ich weiß zwar nicht obs gebraucht wird, aber ich hab jetzt grad mal etwas Zeit/Langeweile und schreibe einfach mal was ich so weiß, vllt. hilfts ja jemanden ^.^
Rechenarten:
So also erstmal ein paar Rechen Arten die es gibt. Oft wird so ein Code hier gebraucht:
Code: 1
| Variable = Variable + 2; |
In dem Fall soll nur eine Variable um 2 erhöht werden, man kannes wie oeben ausschreiben allerdings geht es auch einfach:
In dem Fall wird der Wert links um 2 erhöht, ist also genau das gleiche wie das davor nur weniger zum schreiben, das gleiche kann man mit
Code: 1 2 3
| Variable -= 2; //Verringert die Variable um 2 Variable *= 3; //Multipliziert die Variable mit 3 Variable /= 4; //Teilt die Variable durch 4 |
Noch einfacher geht es wenn eine variable nur um 1 ehöht/verringert werden soll Dann muss man lediglich
bzw.
schreiben, "Variable++;" hat dabei den selben Effekt als wenn man "Variable = Variable + 1;" bzw. "Variable += 1;" schreibt
#define 's:
andere Sachen die euer Script einfacher zu lesen machen sind #define 's wie zB.
#define FARBE_BLAU 0x6699FF
#define's brauchen im Gegensatz zu Variablen keinen Arbeitspeicher, sind allerdings wie der Name sagt "Definiert", sind also im Wert nicht änderbar. Das ist aber auch gar nicht der Sinn der #define 's, denn die #define 's machen ein Script mehr leserlicher, wenn man zB. in SendClientMessage jedesmal als Farbe 0x6699FF schreibt ist das erstens ziemlich schwer sich die Buchstabenfolge zu merken und 2tens wird man nicht wenn man später kurz draufguckt sofrt sagen können: "na kla! das ist blau", stattdessen schreibt man einfach "#define FARBE_BLAU 0x6699FF" und kann es viel einfacher lesen. Auswirkungen auf das Script hat das eigentlich nicht, denn wenn man nun auf dem CompileKnopf in Pawno o.ä. drückt, wird dann (für den Computer) statt FARBE_BLAU der Wert der dahinter steht eingesetzt, es dient also "nur" der besseren Übersicht, es hat allerdings auch weitergehende Bereiche, wenn man zB. was Abkürzen will (was allerdings manchmal das Gegenteil der Leserlichkeit bewirkt), also wenn man was abkürzen will dann geht das genauso zB.:
#define SCM SendClientMessage
Dann könnt ihr statt SendClientMessage(playerid,COLOR_RED,"Hi!");
SCM(playerid,COLOR_RED,"Hi!");
schreiben, für den Server ist das das gleiche. Es gibt noch weitere Anwendungsfälle mit denen man sogar Parameter übergeben kann, das ist allerdings etwas kompliziert, und sollte eigentlich nicht in ein Tutorial
Enum's:
Was ich noch hab und das auch zur Leserlichkeit eines Scripts beiträgt sind Enum's
Enum's sind praktische Array's die aber nicht mit [1] oder [27] angesprochen werden, sondern Namen haben
Sagen wir mal wir möchten die aktuelle Gesundheit, den Namen, die Anzahl der Kills, sowie ob der Member sich eingeloggt hat, speicher
das würde in einem normalen Array schon gar nicht funktionieren da, wir 3 unterschiedliche Typen (Float,Integer und Bool) brauchen Mit Enum's geht das relativ einfach erstmal brauchen wir ein StandardArray für alle Spieler:
Code: 1
| new SpielerDaten[MAX_PLAYERS][SDaten]; |
warum in den 2ten Klammern nicht ein Wert sondern ein Name steht, hat einen Grund, denn in die zweite Klammer kommt der Name eurer Enum in diesem Fall SDaten:
Code: 1 2 3 4 5 6 7
| enum SDaten { Name[MAX_PLAYER_NAME], Float:Gesundheit, Kills, bool:Eingeloggt } |
Das wars eigentlich schon, wenn ihr nun eure Wert speichern wollt geht das einfach und man kann es leicht überbklicken:
Code: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| GetPlayerName(playerid,SpielerDaten[playerid][Name],MAX_PLAYER_NAME);
GetPlayerHealth(playerid,SpielerDaten[playerid][Gesundheit]);
public OnPlayerDeath(playerid,killerid,reason) { SpielerDaten[killerid][Kills]++;
.... }
if(strcmp(cmd, "/login", true)==0) { ... SpielerDaten[playerid][Eingeloggt] = true; ... } |
naja das wars erstmal, hoffe ich hab irgendjemand geholfen oO
|
|