In diesem Tutorial erkäre ich euch, wie ihr gTeam arbeiten könnt und somit Commands, Spawns, etc. nur für bestimmte Teams machbar sind.
1. Variable erstellen
Oben zu den anderen new's im Script fügt man ein
new gTeam[MAX_PLAYERS];
ein. Im Klartext erstellt man eine Variable für jeden Spieler, der die Nummer des Teams speichert.
2. Teams erstellen/definieren
Man definiert die gewünschten Teams mit einer Nummer. Die Nummer ist Endeffekt egal, hauptsache eine Gangzahl:
#define TEAM_GROVE 0
#define TEAM_BALLAS 1
#define TEAM_VAGOS 2
#define TEAM_COPS 3
#define TEAM_ZIVILISTEN 4
3. Teams zuweisen
Nun geht man zu OnPlayerRequestClass. Das ist das Callback, das aufgerufen wird, wenn jemand bei der Skinauswahl ist/zwischen den Skins hin und her wechselt. playerid ist der Spieler und classid der wievielte Skin es gerade ist, den er anschaut. Wichtig: Bei der ClassID fängt man bei 0 an zu zählen. Also entspricht der 1. Skin ClassID 0, der 2.Skin entspricht ClassID 1, etc.
Um die ClassID abzufragen, benutzt man am besten switch. Hier ein kleines Beispiel:
public OnPlayerRequestClass(playerid,classid)
{
switch(classid)
{
case 0: gTeam[playerid] = TEAM_GROVES; // 1. Skin
case 1,2,3: gTeam[playerid] = TEAM_BALLAS; // 2. 3. und 4. Skin
case 6..10: gTeam[playerid] = TEAM_VAGOS; // 7. bis 10. Skin
case 4,5,11..14: gTeam[playerid] = TEAM_COPS; // 5. 6. und 12. bis 15. Skin
default: gTeam[playerid] = TEAM_ZIVILISTEN; // alle restlichen Skins, die hier drüber nicht abgefragt wurden (zum Beispiel: 16. bis 80. Skin)
}
return 1;
}
Ich hoffe ich muss jetzt switch nicht noch extra erklären, wenn ihr das nicht versteht, einfach nach einem kleine Tut schauen.
4. Teams abfragen
Das sollte nicht sonderlich schwierig sein:
if(gTeam[playerid] == TEAM_ZIVILISTEN) // wenn playerid zum Team TEAM_ZIVILISTEN gehört
{
// Do blabla
}
else if(gTeam[playerid] == TEAM_GROVES || gTeam[playerid] == TEAM_BALLAS) // wenn playerid zu TEAM_GROVES oder TEAM_BALLAS gehört
{
// Do blabla
}
else // wenn playerid zu einem anderen Team gehört
{
// Do blabla
}
5. Verwendung
Hier ein Beispiel von einem Teleport, der nur für Cops nutzbar ist
if(strcmp("/copbase",cmdtext,true) == 0)
{
if(gTeam[playerid] == TEAM_COPS)
{
SetPlayerPos(playerid,123.00,456.00,22.00);
SendClientMessage(playerid,0x00FF00FF,"Du bist nun bei der Cop-Base, da du ein Cop bist! :)");
}
else
{
SendClientMessage(playerid,0xFF0000FF,"Du bist kein Cop, deswegen wirst du nicht teleportiert!");
}
return 1;
}
6. Fertig ;D
Und dann hat mans auch schon gepackt, es ist im Grunde genommen ganz einfach. Hier noch ein Scriptbeispiel, wenn es Probleme geben sollte: breadfish.de/wcf/attachment/1719/
Viel Spaß damit und gutes Gelingen!
Last Update: 12.02.10 22:04 (Tut mir Leid, die Intention ist irgendwie im Arsch, ich hab das Tut grundauf etwas verbessert)