Guten Tag zu meinem zweiten Tutorial, heute geht es darum wie wir eine Fraktion + makeleader & invite befehl erstellen.
Tutorial schreiber: .Art.
Was braucht ihr für dieses Tutorial:
1x Login & Register Script
1x Grundkenntnisse.
Als beispiel nehme ich mal Julians Login & Register Script, zum einloggen ohne Befehl
[url = http://www.megaupload.com/?d=93Q2E8NZ]Klick[/url]
Hier ist es
nun werde ich euch Stück für Stück alles Zeigen + Erklären
Wir gehen als erstes zu enum SInfo
und fügen dort 3 sachen ein.
1. Chef//Chef der Fraktion
2. Beruf//Mitglied der Fraktion
3. Firma//Die Firma :D
Das würde dan so aussehen:
enum SInfo
{
Passwort[256],
Wanteds,
Geld,
Chef,
Beruf,
Firma,
}
Gut, Weiter gehts zum Speichern der Fraktion d.H nach dem Ausloggen wird es Gespeichert, beim Connecten wird es Geladen.
Bei diesem Login & Register müssen wir mit STRG + F diesen public suchen: public Registrieren(playerid)
Da sehen wir dan diesen Code:
....
dini_IntSet(Spielerdatei,"Wanteds",SpielerInfo[playerid][Wanteds]);
dini_IntSet(Spielerdatei,"Geld",SpielerInfo[playerid][Geld]);
....
Dan fügen wir dort sein:
dini_IntSet(Spielerdatei,"Chef",SpielerInfo[playerid][Chef]);
dini_IntSet(Spielerdatei,"Beruf",SpielerInfo[playerid][Beruf]);
dini_IntSet(Spielerdatei,"Firma",SpielerInfo[playerid][Firma]);
Gut, nun wird beim Regestrieren in der Ini Chef, Beruf, Firma gespeichert
nun suchen wir wieder mit STRG + F den public:
public Anmelden(playerid)
In diesem Public gibt es wieder Datein die wir brauchen:
....
SpielerInfo[playerid][Wanteds] = dini_Int(Spielerdatei,"Wanteds");
....
Dan fügen wir dort ein
SpielerInfo[playerid][Chef] = dini_Int(Spielerdatei,"Chef");
SpielerInfo[playerid][Beruf] = dini_Int(Spielerdatei,"Beruf");
SpielerInfo[playerid][Firma] = dini_Int(Spielerdatei,"Firma");
Wow, Glückwunsch... ihr habt eure Fraktion speichern lassen
nun zu dem Makeleader und Invite command.
Dafür benutzen wir Dini
Also fügen wir Ganz oben:
#define dcmd(%1,%2,%3) if ((strcmp((%3)[1], #%1, true, (%2)) == 0) && ((((%3)[(%2) + 1] == 0) && (dcmd_%1(playerid, "")))||(((%3)[(%2) + 1] == 32) && (dcmd_%1(playerid, (%3)[(%2) + 2]))))) return 1
nun gehen wir zu " OnPlayerCommandText
Da fügen wir 2 dinge ein
dcmd(makeleader,10,cmdtext);
dcmd(einladen,8,cmdtext);
Das heißt wir Definieren einen Command mit einmal der Länge 10 und einmal der Länge 8.
nun Fügt ihr ganz unten in euer Script das Hier ein:
dcmd_makeleader(playerid,params[])
{
new pID;
new frakid;
new string[128];
new string2[256];
if (sscanf(params, "ui", pID, frakid)) SendClientMessage(playerid, Farbe, "Info: /makeleader [SpielerID] [FraktionID]");
else if (pID == INVALID_PLAYER_ID || IsPlayerNPC(pID)) SendClientMessage(playerid, Farbe, "*:: Dieser Spieler kann nicht erreicht werden. ::*");
else if (frakid < 0 || frakid > 3) SendClientMessage(playerid, Farbe, "Die FraktionID muss zwischen 0 und 3 sein!");
else
{
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid, name, sizeof(name));
if(ISTADMIN)//Eure admin Abfrage
{
if(frakid == 0) { SpielerInfo[pID][Firma] = 0; SpielerInfo[pID][Chef] = 0; } //Zivilist
if(frakid == 1) { SpielerInfo[pID][Firma] = 1; SpielerInfo[pID][Chef] = 1; } //Fraktion 1
if(frakid == 2) { SpielerInfo[pID][Firma] = 2; SpielerInfo[pID][Chef] = 2; } //Fraktion 2
ResetPlayerWeapons(playerid);
format(string, sizeof(string),"Du hast ID: %d zum Chef der Job ID: %d gemacht.",pID,frakid);
format(string2, sizeof(string2),"Du wurdest vom Admin %s zum Chef der Job ID: %d gemacht.",name, frakid);
SendClientMessage(pID, Farbe, string2);
SendClientMessage(playerid, Farbe, string);
}
else
{
SendClientMessage(playerid, Farbe, "Du bist kein Admin");
}
}
return 1;
}
dcmd_einladen(playerid,params[])
{
new pID;
new frakid = SpielerInfo[playerid][Chef];
new string[128];
new string2[256];
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid, name, sizeof(name));
if(SpielerInfo[playerid][Chef] > 0)
{
if(sscanf(params, "u",pID))
{
return SendClientMessage(playerid,0xFFFFFFFF,"/Einladen [playerid]");
}
if(!IsPlayerConnected(pID)) {
return SendClientMessage(playerid,0xFFFFFFFF,"Kein Spieler mit angegebener ID Online!");
}
if(frakid == 1) { SpielerInfo[pID][Firma] = 1; SpielerInfo[pID][Beruf] = 1; } //Fraktion 1
else if(frakid == 2) { SpielerInfo[pID][Firma] = 2; SpielerInfo[pID][Beruf] = 2; } //Fraktion 2
format(string, sizeof(string),"Du hast ID:%d in deine Firma eingeladen.",pID);
format(string2, sizeof(string2),"Du wurdest von Chef %s in seine Firma eingeladen.",name);
SendClientMessage(pID, Farbe, string2);
SendClientMessage(playerid, Farbe, string);
}
else
{
SendClientMessage(playerid, Farbe, "Du bist kein Chef");
}
return 1;
}
Nun falls ihr noch wollt das eure Fraktion an einem bestimmten Ort spawnt müsst ihr erst mit STRG + F zu OnPlayerSpawn gehen.
Dan fügt ihr diesen Code ein:
if(SpielerInfo[playerid][Firma] == 1)
{
SetPlayerPos(playerid, Float:X, Float:Y, Float:Y);
SetPlayerInterior(playerid, Int);
SetPlayerVirtualWorld(playerid, World);
return 1;
}
Wo ich jetzt das Beispiel gemacht habe, müsst ihr den Code natürlich anpassen
nun ihr wollt noch einen kleinen Command für eure Fraktion?
dan geht ihr mit STRG + F zu
OnPlayerCommandText
und fügt:
if(strcmp(cmd, "/Fraktion1", true) == 0)
{
if(SpielerInfo[playerid][Firma] == 1)
{
SendClientMessage(playerid, FARBE, "Du bist in der Fraktion 1");
}
return 1;
}
So, nun habt ihr es.. ihr könnt es natürlich verändern und und und.. ich habe nicht all zuviel erklärt da ein Fortgeschrittener Scripter die Basics behärschen müsste
Hier mal das Gamemode:
http://www.megaupload.com/?d=UD0SN33S
Credits to .Art. wegen dem Tutorial
Credits to RFT aka Julian wegen dem Login & Register
//Edit:
Neuer Link Uploadet : )
//Edit 2: Befehl + Spawn
//Edit 3: Habe mal das ganze GM gemacht mit makeadmin, makeleader, einladen und spawns