Hi,
ich habe mit Hilfe des Tutorials von Blackfox versucht ein Loginsystem in meinen gamemode einzubauen, was zunächst auch funktioniert hat. Nun ist es aber so, dass ich versucht habe eine Classselection einzubauen, die sich per CMD öffnen lässt, also nicht am Anfang.
Jetzt ist es so, dass wenn man auf den Server kommt muss man nach der Passworteingabe trotzdem noch auf Spawn klicken und dann spawnt der Spieler im Koordinatenursprung. Was habe ich falsch gemacht?
public OnPlayerRequestClass(playerid, classid)
{
if (classselection && Spieler[playerid][eingeloggt] == 1)
{
SetPlayerPos(playerid,-2666.6602,1594.9426,217.2739);
SetPlayerCameraPos(playerid,-2672.0273,1600.5834,219.5353);
SetPlayerCameraLookAt(playerid,-2666.6602,1594.9426,217.2739);
SetPlayerFacingAngle(playerid,39);
}
else
{
OnPlayerSpawn(playerid);
}
return 1;
}
public OnPlayerConnect(playerid)
{
new playername[MAX_PLAYER_NAME], string[22 + MAX_PLAYER_NAME];
GetPlayerName(playerid, playername, sizeof(playername));
format(string, sizeof(string), "%s hat das Spiel betreten.", playername);
SendClientMessageToAll(0xAAAAAAAA, string);
//Loginsystem
new pname[MAX_PLAYERS],accFormat[128];
GetPlayerName(playerid,pname,sizeof pname);
format(accFormat,sizeof accFormat,"%s.datei",pname);
if(fexist(accFormat))
{
ShowPlayerDialog(playerid,DIALOG_LOGIN,1,"Login","Bitte logge dich ein, indem du dein Passwort eingibst.","Weiter","Abbrechen");
}
else
{
ShowPlayerDialog(playerid,DIALOG_REG,1,"Registrieren","Bitte Registriere dich, indem du dein Passwort eingibst.","Weiter","Abbrechen");
}
return 1;
}
public OnPlayerDisconnect(playerid, reason)
{
new pname[MAX_PLAYER_NAME], string[39 + MAX_PLAYER_NAME];
GetPlayerName(playerid, pname, sizeof(pname));
switch(reason)
{
case 0: format(string, sizeof(string), "%s hat das Spiel verlassen. (Lost Connection)", pname);
case 1: format(string, sizeof(string), "%s hat das Spiel verlassen. (Leaving)", pname);
case 2: format(string, sizeof(string), "%s hat das Spiel verlassen. (Kicked)", pname);
}
SendClientMessageToAll(0xAAAAAAAA, string);
//Loginsystem
new playername[MAX_PLAYERS],accFormat[128];
GetPlayerName(playerid,playername,sizeof playername);
format(accFormat,sizeof accFormat,"%s.datei",playername);
if(fexist(accFormat) && Spieler[playerid][eingeloggt])
{
dini_IntSet(accFormat,"wanted",Spieler[playerid][wanted]);
dini_IntSet(accFormat,"skin",Spieler[playerid][skin]);
dini_FloatSet(accFormat,"lastx",Spieler[playerid][lastx]);
dini_FloatSet(accFormat,"lasty",Spieler[playerid][lasty]);
dini_FloatSet(accFormat,"lastz",Spieler[playerid][lastz]);
dini_IntSet(accFormat,"Geld",GetPlayerMoney(playerid));
dini_IntSet(accFormat,"Score",GetPlayerScore(playerid));
}
Spieler[playerid][eingeloggt] = 0;
Spieler[playerid][wanted] = 0;
Spieler[playerid][skin] = 0;
Spieler[playerid][lastx] = (0.0);
Spieler[playerid][lasty] = (0.0);
Spieler[playerid][lastz] = (0.0);
//-------------------
return 1;
}
public OnPlayerSpawn(playerid)
{
//Loginsystem
if (!classselection && Spieler[playerid][eingeloggt] == 1)
{
new pname[MAX_PLAYERS],accFormat[128];
GetPlayerName(playerid,pname,sizeof pname);
format(accFormat,sizeof accFormat,"%s.datei",pname);
if(dini_Isset(accFormat,"lastx"))
{
SetPlayerPos(playerid,Spieler[playerid][lastx],Spieler[playerid][lasty],Spieler[playerid][lastz]);
}
}
return 1;
}
public OnPlayerCommandText(playerid, cmdtext[])
{
if (strcmp("/kill", cmdtext, true, 10) == 0)
{
SetPlayerHealth(playerid,0);
classselection = true;
ForceClassSelection(playerid);
return 1;
}
return 0;
}