Hi ich habe ein kleines Problem und zwar hab ich nun mit SQL angefangen.
Hab jetzt Register und Login Script über Mysql. Das Problem ist das ich jetzt will das er die Position vom Spieler speichern soll.
Das klappt auch... allerdings nicht nach der Registrierung.
Und zwar wenn ich mich registriere dann erstellt er den Account auch in der Datenbank.
Bei Disconnect sollte er eigentlich Spielerdaten speichern. Das macht er aber nicht.
Wenn ich mich dann also nochmal einlogge, dann spawnt er bei Koordinaten 0.0.0 weil er dies ja aus der Datenbank ließt.
Wenn ich mich nun aber wieder auslogge, speichert er wiederum die daten und bei nexten login funzt alles wie gewünscht.
Hier mal mein script.
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
switch(dialogid)
{
case DIALOG_REGISTER:
{
if(response)
{
if(strlen(inputtext) == 0)
{
ShowPlayerDialog(playerid,DIALOG_REGISTER,DIALOG_STYLE_INPUT,"Register","Das angegebene Passwort war zu Kurtz...\nBitte Registrier dich jetzt mit einem Passwort:","Register","Abbrechen");
return 1;
}
else
{
CreateAccount(playerid, inputtext);
SetPVarInt(playerid,"Eingeloggt",1);
SetPVarInt(playerid,"FirstLogin",1);
return 1;
}
}
else
{
Kick(playerid);
}
}
case DIALOG_LOGIN:
{
if(response)
{
if(strlen(inputtext) == 0)
{
ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_INPUT,"Login","Das Angegebene Passwort war Falsch.\nBitte log dich jetzt mit dem richtigen Passwort ein:","Login","Abbrechen");
return 1;
}
else
{
new SpielerName[MAX_PLAYER_NAME];
GetPlayerName(playerid, SpielerName, MAX_PLAYER_NAME);
if(!strcmp(inputtext, mysql_ReturnPasswort(SpielerName), true))
{
SetPVarInt(playerid,"Eingeloggt",1);
LoadPlayer(playerid);
return 1;
}
else
{
ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_INPUT,"Login","Das war das Falsche Passwort.\nBitte log dich jetzt mit dem richtigen Passwort ein:","Login","Abbrechen");
return 1;
}
}
}
else
{
Kick(playerid);
}
}
}
return 1;
}
stock LoadPlayer(playerid)
{
if(IsPlayerConnected(playerid) && !IsPlayerNPC(playerid))
{
GetPlayerName(playerid, SpielerInfo[playerid][pName], MAX_PLAYER_NAME);
SpielerInfo[playerid][pLevel] = mysql_GetInt("accounts", "Level", "Name", SpielerInfo[playerid][pName]);
SpielerInfo[playerid][pGeld] = mysql_GetInt("accounts", "Geld", "Name", SpielerInfo[playerid][pName]);
SpielerInfo[playerid][pKills] = mysql_GetInt("accounts", "Kills", "Name", SpielerInfo[playerid][pName]);
SpielerInfo[playerid][pTode] = mysql_GetInt("accounts", "Tode", "Name", SpielerInfo[playerid][pName]);
SpielerInfo[playerid][pHealth] = mysql_GetFloat("accounts", "Health", "Name", SpielerInfo[playerid][pName]);
SetPVarFloat(playerid,"x", mysql_GetFloat("accounts", "XPos", "Name", SpielerInfo[playerid][pName]));
SetPVarFloat(playerid,"y", mysql_GetFloat("accounts", "YPos", "Name", SpielerInfo[playerid][pName]));
SetPVarFloat(playerid,"z", mysql_GetFloat("accounts", "ZPos", "Name", SpielerInfo[playerid][pName]));
}
return 1;
}
stock SavePlayer(playerid)
{
new Float:x, Float:y, Float:z;
GetPlayerPos(playerid, x, y, z);
if(IsPlayerConnected(playerid) && !IsPlayerNPC(playerid))
{
if(GetPVarInt(playerid,"Eingeloggt") == 1)
{
mysql_SetInt("accounts", "Level", SpielerInfo[playerid][pLevel], "Name", SpielerInfo[playerid][pName]);
mysql_SetInt("accounts", "Geld", SpielerInfo[playerid][pGeld], "Name", SpielerInfo[playerid][pName]);
mysql_SetInt("accounts", "Kills", SpielerInfo[playerid][pKills], "Name", SpielerInfo[playerid][pName]);
mysql_SetInt("accounts", "Tode", SpielerInfo[playerid][pTode], "Name", SpielerInfo[playerid][pName]);
mysql_SetFloat("accounts", "Health", SpielerInfo[playerid][pHealth], "Name", SpielerInfo[playerid][pName]);
mysql_SetFloat("accounts", "XPos", x, "Name", SpielerInfo[playerid][pName]);
mysql_SetFloat("accounts", "YPos", y, "Name", SpielerInfo[playerid][pName]);
mysql_SetFloat("accounts", "ZPos", z, "Name", SpielerInfo[playerid][pName]);
}
}
return 1;
}
public OnPlayerDisconnect(playerid, reason)
{
if(GetPVarInt(playerid,"Firstlogin") == 1)
{
SavePlayer(playerid);
DeletePVar(playerid,"Eingeloggt");
DeletePVar(playerid,"FirstLogin");
}
else
{
SavePlayer(playerid);
DeletePVar(playerid,"Eingeloggt");
}
return 1;
}
public OnPlayerSpawn(playerid)
{
if(GetPVarInt(playerid,"FirstLogin") == 1)
{
SetPlayerPos(playerid, 1214.3566, -930.1499, 42.6638);
}
else
{
SetPlayerPos(playerid, GetPVarFloat(playerid, "x"), GetPVarFloat(playerid, "y"), GetPVarFloat(playerid,"z"));
}
return 1;
}
Kann mir denn niemand weiterhelfen?