KOSTENLOSE REGISTRIERUNG - FREE REGISTER
  • Willkommen, Gast!
  • Donnerstag, 28. März 2024, 13:06:40
Position: Home » Tutorials » Workshop » In Bearbeitung » Rechenarten, #define's und Enum's

Willkommen im GTAvision.com Forum

Du bist noch nicht bei uns angemeldet. Wenn das dein erster Besuch bei uns ist, so kannst du die wichtigsten Funktionen des Boards in der FAQ nachlesen. Um Beiträge zu schreiben oder neue Themen zu erstellen musst du in fast jedem Forum registriert und eingeloggt sein. Dies gilt nicht bei den Newskommentaren, dort können auch Gäste etwas schreiben ohne sich vorher registrieren zu müssen. Damit du Beiträge lesen kannst, musst du dir erst ein Forum aussuchen welches dich interessiert, z.B. GTA V - Allgemeines, dann klickst du auf ein Thema das dich interessiert z.B. "Allgemeine GTA V Plauderecke" und schon kannst du die Beiträge lesen. Um im genannten Thema zu antworten, musst du dich allerdings vorher eingeloggt haben. Viel Spaß in unserem Forum, wünscht das gesamte GTAvision.com Team.

Follow @GTAvision
Thema: Rechenarten, #define's und Enum's [Seite 1 ]  

Kein neuer Beitrag 06.03.2008, 22:15
Beitrag #1   

Tjong
Informant
* * * * O O O O O O O
Kein Bild vorhanden
Registrierung: 10.03.2007, 21:01
Homepage: http://benohausen.myminicit...
Lieblings-GTA: GTA: Vice City
Script Editor: Pawno
Beiträge: 80

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:

Code:
1
Variable += 2;


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

Code:
1
Variable++;


bzw.

Code:
1
Variable--;


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


Druckansicht

n/a n/a 1     (Anzeige: 1 – 1; Insgesamt: 1) n/a n/a
Toggle Ähnliche Themen zu „Rechenarten, #define's und Enum's“
  Antworten Aufrufe Themeneröffnung Letzter Beitrag
Es wurden keine Themen gefunden.
  • 0.033159 Sek., 11 DB-Zugriffe, 1.957 MiB
  • Powered by Boardsolution v1.45
GTAvision.com :: Forumregeln :: FAQ :: Impressum :: Kontakt :: RDRvision.com :: LANOIREvision.com :: MaxPayneVision.com
NetVisionWork.NET
.: © 2006-2014 by GTAvision.com :.

Rockstar GamesTake-Two Interactive Deutschland

Free Grand Theft Auto Downloads