Ich zeig euch, wie ihr in euren Server ein Tutorial einbauen könnt.
Ihr braucht erst mal pTut , pSex , pOrigin
enum pInfo
{
...
pTut,
pOrigin,
pSex,
....
};
Da ich leider ein MySQL Server habe, müsst ihr bei euren Server noch bei /register und OnPlayerUpdate, dies einführen.
Man muss erst abfragen, ob der Tutorial gemacht wurde oder nicht.
Also macht jetzt unter public OnPlayerSpawn(playerid) folgendes:
SetPlayerSpawn(playerid);
Diese Funktion braucht aber ein Forward, hier ist er:
forward SetPlayerSpawn(playerid); - dieser kommt zu den anderen Forwards.
Das fügt ihr noch oben im Script ein:
new RegistrationStep[MAX_PLAYERS];
new TutTime[MAX_PLAYERS];
Jetzt ganz unten im Script fügt ihr folgendes ein:
public SetPlayerSpawn(playerid)
{
if(IsPlayerConnected(playerid))
{
if(PlayerInfo[playerid][pTut] == 0)
{
TogglePlayerControllable(playerid, 0);
RegistrationStep[playerid] = 1;
SendClientMessage(playerid, COLOR_YELLOW, "Willkommen auf Servername! Wir brauchen noch von dir paar Daten:");
SendClientMessage(playerid, COLOR_LIGHTRED, "Bist du ein <Mann> oder eine <Frau> ?");
}
}
}
TogglePlayerControllable(playerid, 0); // Der Spieler wird gefreezed
RegistrationStep[playerid] = 1; // Die Variable RegistrationStep wird auf 1 gesetzt.
SetPlayerSpawn(playerid) // Die Funktion
if(IsPlayerConnected(playerid)) // Prüft ob der Spieler überhaupt Online ist
if(PlayerInfo[playerid][pTut] == 0) // Prüft ob der Spieler schon das Tutorial gemacht hat
Wenn alles stimmt, dann sendet er die zwei Nachrichten.
Ja, aber jetzt kommt doch das Tutorial oder? - Nein
Erst kommt die Bestimmung, ob es ein Mann oder eine Frau ist und woher diese Person ist.
Jetzt kommt unter public OnPlayerText(playerid, text[]) folgendes:
{
new tmp[256];
if(RegistrationStep[playerid] > 0)
{
if(RegistrationStep[playerid] == 1)
{
new idx;
tmp = strtok(text, idx);
if((strcmp("Mann", tmp, true, strlen(tmp)) == 0) && (strlen(tmp) == strlen("Mann")))
{
PlayerInfo[playerid][pSex] = 1;
SendClientMessage(playerid, COLOR_YELLOW2, "Wie ich sehe bist du ein Mann. Kannst du noch diese Frage beantworten:");
SendClientMessage(playerid, COLOR_LIGHTRED, "Woher kommst du? ( USA / Europe / Asia )");
RegistrationStep[playerid] = 3;
return 0;
}
else if((strcmp("Frau", tmp, true, strlen(tmp)) == 0) && (strlen(tmp) == strlen("Frau")))
{
PlayerInfo[playerid][pSex] = 2;
SendClientMessage(playerid, COLOR_YELLOW2, "Wie ich sehe bist du eine Frau. Kannst du noch diese Frage beantworten:");
SendClientMessage(playerid, COLOR_LIGHTRED, "Woher kommst du? ( USA / Europe / Asia )");
RegistrationStep[playerid] = 3;
return 0;
}
else
{
SendClientMessage(playerid, COLOR_LIGHTRED, "Bist du ein Mann oder eine Frau ?");
}
return 0;
}
else if(RegistrationStep[playerid] == 3)
{
new idx;
tmp = strtok(text, idx);
if((strcmp("USA", tmp, true, strlen(tmp)) == 0) && (strlen(tmp) == strlen("USA")))
{
PlayerInfo[playerid][pOrigin] = 1;
SendClientMessage(playerid, COLOR_YELLOW2, "Ok, du bist aus den USA.");
SendClientMessage(playerid, COLOR_LIGHTRED, "Danke fürs Ausfüllen! Nun Startet ein Kurzes Tutorial");
RegistrationStep[playerid] = 0;
TutTime[playerid] = 1;
return 0;
}
else if((strcmp("Europe", tmp, true, strlen(tmp)) == 0) && (strlen(tmp) == strlen("Europe")))
{
PlayerInfo[playerid][pOrigin] = 2;
SendClientMessage(playerid, COLOR_YELLOW2, "Ok, du bist aus Europa.");
SendClientMessage(playerid, COLOR_LIGHTRED, "Danke fürs Ausfüllen! Nun Startet ein Kurzes Tutorial");
RegistrationStep[playerid] = 0;
TutTime[playerid] = 1;
return 0;
}
else if((strcmp("Asia", tmp, true, strlen(tmp)) == 0) && (strlen(tmp) == strlen("Asia")))
{
PlayerInfo[playerid][pOrigin] = 3;
SendClientMessage(playerid, COLOR_YELLOW2, "Ok, du bist aus Asien.");
SendClientMessage(playerid, COLOR_LIGHTRED, "Danke fürs Ausfüllen! Nun Startet ein Kurzes Tutorial");
RegistrationStep[playerid] = 0;
TutTime[playerid] = 1;
return 0;
}
else
{
SendClientMessage(playerid, COLOR_LIGHTRED, "Woher kommst du? ( USA / Europe / Asia )");
}
return 0;
}
return 0;
}
return 1;
}
Hier wird abgefragt ob RegistrationsStep auf über 0 ist und dann prüft es ob die Variable den Wert 1 hat.
Wenn man Mann oder Frau eingegeben hat, wird die Var auf 3 gestellt. ( Dabei wird pSex eingestellt. )
Dannach wird abgefragt, ob die Var den Wert 3 hat, wenn ja muss das Herstammungsort gennant werden.
Wenn alles stimmt so wird RegistrationsStep auf 0 gesetzt und TutTime auf den Wert 1 gesetzt. ( Dabei wird pOrigin eingestellt )
Für die nächste Funktion muss sich das ganze wiederholen, also brauchen wir ein Timer:
SetTimer("Tutorial",1000,1); // Die 1000 entsprechen 1 Sekunde
Und noch ein Forward für den Timer:
forward Tutorial();
Jetzt kommt man zur der Funktion, so sieht sie aus:
Das war Teil 1, der nächste Teil ist im nächsten Post.