N'abnd leute!
Ich hab ein "kleines" Problem, das Login funzt net richtig. Nun der Ablauf vom Login:
OnPlayerConnect
new sqlaccountstatus = MySQLCheckAccount(plname);
if(sqlaccountstatus != 0)
{
gPlayerAccount[playerid] = 1;
Registriert[playerid] = 1;
PlayerInfo[playerid][pSQLID] = sqlaccountstatus;
ShowPlayerDialog(playerid,LogPWDialog,DIALOG_STYLE_INPUT,"Einloggen","Account gefunden.\nBitte gib dein Passwort ein:","Einloggen","Abbrechen");
return 1;
}
else
{
gPlayerAccount[playerid] = 0;
Registriert[playerid] = 0;
return 1;
}
DAS funktioniert schon mal richtig, also wenn ich nen Account hab, kann ich mich einloggen, wenn ich keinen hab, dann würde ich zur Skinauswahl kommen und könnte mich dann registrieren.
Login Dialog:
if(dialogid == LogPWDialog)
{
if(response == 0)
{
SendClientMessage(playerid,COLOR_RED,"Ohne Login kannst du hier nicht spielen!");
Kick(playerid);
return 0;
}
if(response == 1)
{
MySQLLogin(playerid,inputtext);
}
}
Klappt auch, wenn ich auf Abbrechen klicke, dann flieg ich vom Server.
Wenn ich ein Passwort eingebe, allerdings das falsche, dann werde ich gespawnt und kann mich registrieren?!
OnPlayerRequestClass:
if(gPlayerLogged[playerid] == 1)
{
gTeam[playerid] = PlayerInfo[playerid][pTeam];
SetSpawnInfo(playerid, PlayerInfo[playerid][pTeam], PlayerInfo[playerid][pNormalSkin], PlayerInfo[playerid][pPos_x], PlayerInfo[playerid][pPos_y], PlayerInfo[playerid][pPos_z], 1.0, -1, -1, -1, -1, -1, -1);
SpawnPlayer(playerid);
}
else
{
gTeam[playerid] = 3;
PlayerInfo[playerid][pTeam] = 3;
PlayerInfo[playerid][pNormalSkin] = 264;
SetPlayerInterior(playerid,0);
new rand = random(sizeof(StandardSpawns));
PlayerInfo[playerid][pPos_x] = StandardSpawns[rand][0];
PlayerInfo[playerid][pPos_y] = StandardSpawns[rand][1];
PlayerInfo[playerid][pPos_z] = StandardSpawns[rand][2];
SendClientMessage(playerid, COLOR_GREEN, "Melde dich im Forum (forum.amigos-roleplay.de) fuer einen anderen Skin!");
SetSpawnInfo(playerid, PlayerInfo[playerid][pTeam], PlayerInfo[playerid][pNormalSkin], PlayerInfo[playerid][pPos_x], PlayerInfo[playerid][pPos_y], PlayerInfo[playerid][pPos_z], 1.0, -1, -1, -1, -1, -1, -1);
SpawnPlayer(playerid);
}
return 1;
Das funktioniert mit dem Login und dem Registrieren schon, nur werd ich gespawnt, wenn ich ein falsches Passwort eingebe..
MySQLPlayerLogin:
MySQLCheck();
new data[256],playername[MAX_PLAYER_NAME],string[256],sqlid;
GetPlayerName(playerid, playername, sizeof(playername));
PlayerInfo[playerid][pSQLID] = MySQLCheckAccount(playername);
mysql_query("SELECT * FROM user");
mysql_store_result();
while(mysql_fetch_row_data())
{
mysql_fetch_field("ID",data);sqlid=strval(data);
if(sqlid == PlayerInfo[playerid][pSQLID])
{
mysql_fetch_field("Password",data);
if(!strcmp(data,MD5_Hash(password),false))
{
//login Zeugs
}
else
{
gPlayerLogTries[playerid] += 1;
if(gPlayerLogTries[playerid] == 2) { SendClientMessage(playerid, COLOR_RED, "Noch 2-Mal das Passwort falsch eingeben, und du wirst gebannt!"); }
if(gPlayerLogTries[playerid] == 3) { SendClientMessage(playerid, COLOR_RED, "Noch 1-Mal das Passwort falsch eingeben, und du wirst gebannt!"); }
if(gPlayerLogTries[playerid] == 4)
{
new year,month,day;
getdate(year, month, day);
SendClientMessage(playerid, COLOR_RED, "Wir haben dich gewarnt, du wurdest gebannt!");
PlayerInfo[playerid][pAdmin] = PlayerInfo[playerid][pLevel];
PlayerInfo[playerid][pLevel] = -999;
format(string, sizeof(string), "Login: %s wurde gebannt, Grund: 4 fehlgeschlagene Loginversuche (%d/%d/d%)", playername, day, month, year);
//BanLog(string);
Ban(playerid);
return 1;
}
ShowPlayerDialog(playerid,LogPWDialog,DIALOG_STYLE_INPUT,"Falsches Passwort","Bitte gib dein korrektes Passwort ein:","Einloggen","Abbrechen");
return 1;
}
}
}
return 0;
Ich weiss auch nicht, vorher hat es immer gut funktioniert, aber seit wir keine Skinwahl mehr drin haben (OnPlayerRequestClass), gehts irgendwie nicht mehr.. hat das iwie nen zusammenhang?
Kann jemand helfen?
MFG
edit: also, es geht immernoch nicht. sobald ich reinkomme und das passwort falsch eingebe, werde ich gespawnt und kann mich registrieren, warum das?! oder muss ich das dann iwie wieder abfangen?