30.10.2012, 14:57
Hey I am making a login and register system with MySQL and when I think it was done I get more problems, one is that my data is not being split into my enum here is the enum and the query to load user stats:
Enum:
And here is the code that handles loading user stats:
And here is where the dialog is show to the player:
and
The user check query:
Many thanks, Connor (Howelley)
Enum:
pawn Код:
enum pInfo
{
pUsername,
pPassword,
pSex,
pAge,
pOrigin,
pWarns,
pMoney,
pLevel,
pVIP,
pAdmin,
pTester,
pKills,
pDeaths,
pMuted,
pJailed,
pBanned,
Float:pPosX,
Float:pPosY,
Float:pPosZ,
pJob,
pFaction,
pRank,
pModel
}
new PlayerInfo[MAX_PLAYERS][pInfo];
pawn Код:
public OnPlayerLogin(playerid)
{
new query[1000];
new username[MAX_PLAYER_NAME];
GetPlayerName(playerid, username, sizeof(username));
mysql_store_result();
if(mysql_num_rows() != 0)
{
if(mysql_fetch_row_format(query, "|"))
{
sscanf(query,"e<p<|>s[24]s[32]iiiiiiiiiiiiiifffiiii>", PlayerInfo[playerid]);
new str[80];
format(str, sizeof(str),"Welcome %s, you have been loged to your account, your admin rank is: %i",username, PlayerInfo[playerid][pAdmin]);
SendClientMessage(playerid, COLOR_BLUE, str);
SetPlayerInterior(playerid, 0);
SetPlayerVirtualWorld(playerid, 0);
if(PlayerInfo[playerid][pPosX] != 0 && PlayerInfo[playerid][pPosY] != 0 && PlayerInfo[playerid][pPosZ] != 0)
{
SetPlayerPos(playerid, PlayerInfo[playerid][pPosX], PlayerInfo[playerid][pPosY], PlayerInfo[playerid][pPosZ]);
}
SpawnPlayer(playerid);
}
}
else
{
ShowPlayerDialog(playerid,LOGIN_DIALOG,DIALOG_STYLE_PASSWORD,"SpectralRP: Login.","Wrong password:","Login","Cancel");
}
}
pawn Код:
stock LoginPlayer(playerid, pass[])
{
new query[1000], username[MAX_PLAYER_NAME];
GetPlayerName(playerid, username, sizeof(username));
format(query, sizeof(query),"SELECT * FROM `Users` WHERE Username = '%s' AND password = md5('%s')",username, pass);
mysql_function_query(dbconnect, query, false, "OnPlayerLogin", "");
}
pawn Код:
case LOGIN_DIALOG:
{
if(!response)
{
SendClientMessage(playerid, COLOR_LIGHTRED,"You need to be logged in!");
Kick(playerid);
}
LoginPlayer(playerid, inputtext);
}
case REGISTER_DIALOG:
{
if(!response)
{
SendClientMessage(playerid, COLOR_LIGHTRED,"You need to be logged in!");
Kick(playerid);
}
new query[512], username[MAX_PLAYER_NAME];
GetPlayerName(playerid, username, sizeof(username));
format(query, sizeof(query),"INSERT INTO `Users` (Username,Password) VALUES ('%s',md5('%s'))",username, inputtext);
mysql_function_query(dbconnect, query, false, "OnQueryFinish", "");
ShowPlayerDialog(playerid,LOGIN_DIALOG,DIALOG_STYLE_PASSWORD,"SpectralRP: Login","Enter your password below to login:","Login","Cancel");
}
pawn Код:
public UserCheck(playerid)
{
mysql_store_result();
if(mysql_num_rows() == 0)
{
ShowPlayerDialog(playerid,REGISTER_DIALOG,DIALOG_STYLE_PASSWORD,"SpectralRP: Register","Enter your password below to register:","Register","Cancel");
}
else
{
ShowPlayerDialog(playerid,LOGIN_DIALOG,DIALOG_STYLE_PASSWORD,"SpectralRP: Login","Enter your password below to login","Login","Cancel");
}
mysql_free_result();
return 1;
}
pawn Код:
public OnPlayerConnect(playerid)
{
InitFly(playerid);
new Query[512], name[MAX_PLAYER_NAME];
GetPlayerName(playerid, name, sizeof(name));
format(Query, sizeof(Query), "SELECT * FROM `Users` WHERE Username='%s'", name);
mysql_function_query(dbconnect, Query, false, "UserCheck", "");
return 1;
}