Hi Leute brauche ma wieder Rat.
Und zwar hab ich alles rumprobiert aber habs entweder kaputt gemacht oder noch schlimmer gemacht.
Folgendes...
Der Spieler soll nach beim Connecten halt entweder sich registrieren oder einloggen falls acc vohanden.
das sieht dann so aus
public OnPlayerConnect(playerid)
{
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","Account vorhanden! Bitte gib dein Passwort ein.","Weiter","Abbrechen");
}
else
{
ShowPlayerDialog(playerid,DIALOG_REG,1,"Registrieren","Account nicht vorhanden! Bitte gib ein Passwort an um dich zu registrieren.","Weiter","Abbrechen");
}
return 1;
}
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
new pname[MAX_PLAYERS],accFormat[128],string11[256];
GetPlayerName(playerid,pname,sizeof pname);
format(accFormat,sizeof accFormat,"%s.datei",pname);
if(response)
{
switch(dialogid)
{
case DIALOG_LOGIN:
{
if(!strlen(inputtext))
{
ShowPlayerDialog(playerid,DIALOG_LOGIN,1,"Login","Account vorhanden! Bitte gib dein Passwort ein.","Weiter","Abbrechen");
return SendClientMessage(playerid,0xFFFFFFFF,"Kein Passwort angegeben!");
}
if(FirstSpawn[playerid] == false)
{
if(strcmp(inputtext,dini_Get(accFormat,"Passwort")) == 0)
{
Spieler[playerid][wanted] = dini_Int(accFormat,"wanted");
Spieler[playerid][skin] = dini_Int(accFormat,"skin");
Spieler[playerid][eingeloggt] = 1;
GivePlayerMoney(playerid,dini_Int(accFormat,"Geld"));
SetPlayerHealth(playerid,dini_Int(accFormat,"Gesundheit"));
PlayerPos[playerid][posX] = dini_Float(accFormat,"X");
PlayerPos[playerid][posY] = dini_Float(accFormat,"Y");
PlayerPos[playerid][posZ] = dini_Float(accFormat,"Z");
Spieler[playerid][level] = dini_Int(accFormat,"Level");
SetPlayerScore(playerid,dini_Int(accFormat,"Level"));
SendClientMessage(playerid,0xFFFFFFFF,"Du wurdest erfolgreich eingeloggt.");
}
else
{
ShowPlayerDialog(playerid,DIALOG_LOGIN,1,"Login","Account vorhanden! Bitte gib dein Passwort ein.","Weiter","Abbrechen");
SendClientMessage(playerid,0xFFFFFFFF,"Das Passwort war Falsch!");
}
}
else
{
if(strcmp(inputtext,dini_Get(accFormat,"Passwort")) == 0)
{
Spieler[playerid][wanted] = dini_Int(accFormat,"wanted");
Spieler[playerid][skin] = dini_Int(accFormat,"skin");
Spieler[playerid][eingeloggt] = 1;
GivePlayerMoney(playerid,dini_Int(accFormat,"Geld"));
SetPlayerHealth(playerid,dini_Int(accFormat,"Gesundheit"));
PlayerPos[playerid][posX] = dini_Float(accFormat,"X");
PlayerPos[playerid][posY] = dini_Float(accFormat,"Y");
PlayerPos[playerid][posZ] = dini_Float(accFormat,"Z");
Spieler[playerid][level] = dini_Int(accFormat,"Level");
SetPlayerScore(playerid,dini_Int(accFormat,"Level"));
FirstSpawn[playerid] = true;
SendClientMessage(playerid,0xFFFFFFFF,"Du wurdest erfolgreich eingeloggt.");
}
else
{
ShowPlayerDialog(playerid,DIALOG_LOGIN,1,"Login","Account vorhanden! Bitte gib dein Passwort ein.","Weiter","Abbrechen");
SendClientMessage(playerid,0xFFFFFFFF,"Das Passwort war Falsch!");
}
}
}
case DIALOG_REG: // ID Registrieren
{
if(!strlen(inputtext))
{
ShowPlayerDialog(playerid,DIALOG_REG,1,"Registrieren","Account nicht vorhanden! Bitte gib ein Passwort an um dich zu registrieren.","Weiter","Abbrechen");
return SendClientMessage(playerid,0xFFFFFFFF,"Das Passwort ist zu kurz!");
}
dini_Create(accFormat);
dini_Set(accFormat,"Passwort",inputtext);
SetTimer("SaveAcc",5000,0);
SetPlayerScore(playerid,dini_Int(accFormat,"Level"));
dini_FloatSet(accFormat,"Gesundheit",100.0);
GivePlayerMoney(playerid,STARTGELD);
FirstSpawn[playerid] = false;
ShowPlayerDialog(playerid,DIALOG_LOGIN,1,"Login","Account erfolgreich erstellt! Bitte gib dein Passwort ein um dich einzuloggen.","Weiter","Abbrechen");
}
}
}
return 1;
}
Danach spawnt der Spieler... allerdings sehe ich in den Logs das der Spieler, quasi zweimal spawnt... also spawn->sterben->erneut spawn... und das Startgeld wird zweimal ausgegeben.
public OnPlayerSpawn(playerid)
{
new pname[MAX_PLAYERS],accFormat[128];
GetPlayerName(playerid,pname,sizeof pname);
format(accFormat,sizeof accFormat,"%s.datei",pname);
if(FirstSpawn[playerid] == true)
{
SetPlayerPos(playerid,PlayerPos[playerid][posX],PlayerPos[playerid][posY],PlayerPos[playerid][posZ]);
SetPlayerHealth(playerid,dini_Int(accFormat,"Gesundheit"));
FirstSpawn[playerid] = false;
}
else
{
SetPlayerPos(playerid, 2002.0732, -1965.3894, 16.6941);
SetPlayerHealth(playerid,100.0);
}
if (Spieler[playerid][tod] == 1)
{
SetPlayerPos(playerid, 1178.8776,-1323.7036,14.1418);
SendClientMessage(playerid,0xFFFFFFFF,"Du bist weggetreten und erst im Krankenhaus wieder aufgewacht.");
SendClientMessage(playerid,0xFFFFFFFF,"Du konntest gerade noch ins Leben zurückgerufen werden.");
SendClientMessage(playerid,0xFFFFFFFF,"Der Krankenhausaufenthalt kostet dich 3000$!");
GivePlayerMoney(playerid,-3000);
SetPlayerHealth(playerid,100.0);
Spieler[playerid][tod] = 0;
}
return 1;
}
Kann mir jemand folgen und evtl jemand helfen?