03.03.2017, 04:31
I'm making a login & register MySQL system, and when the player register, it always spawn wrong although I set the player's spawn position correctly.
Please help me.
PHP код:
public OnPlayerConnect(playerid){
Character[playerid][Level] = 1;
Character[playerid][Money] = 10000;
Character[playerid][Health] = 100;
Character[playerid][Armour] = 0;
Character[playerid][Admin] = 0;
Character[playerid][Helper] = 0;
Character[playerid][SecretKey] = EOS; // End Of String, clear this string
Character[playerid][posX] = 1685.7357; // This is player spawn position
Character[playerid][posY] = 2333.7434;
Character[playerid][posZ] = -2.6797;
Character[playerid][posA] = 1.1255;
loginAttempt[playerid] = 0;
SetPVarInt(playerid, "FirstConnection", 1);
return 1;
}
public OnPlayerRequestSpawn(playerid){ // When the player click 'spawn' button, I will check their account.
CreateCharacterTextDraws(playerid);
CheckAccountConnection(playerid);
return 0;
}
CheckAccountConnection(playerid){
new pName[MAX_PLAYER_NAME], query[512];
GetPlayerName(playerid, pName, sizeof(pName));
mysql_format(MHandle, query, sizeof(query), "SELECT * FROM `character` WHERE `Username` = '%e' LIMIT 1", pName);
mysql_tquery(MHandle, query, "OnCharacterCheck", "i", playerid);
return 1;
}
forward OnCharacterCheck(playerid);
public OnCharacterCheck(playerid){
new rows, szFieldName[MAX_PLAYER_NAME];
cache_get_row_count(rows);
for(new row = 0; row < rows; row++){
cache_get_value_name(row, "Username", szFieldName);
if(!strcmp(szFieldName, GetPlayerNameEx(playerid))){
cache_get_value_name(row, "Password", Character[playerid][Password]);
cache_get_value_name(row, "Username", Character[playerid][Username]);
System_Scm(playerid, COLOR_YELLOW, "LOGIN", "This account has been registered.");
ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "Login", "Fill your password", "Ok", "Cancel");
return 1;
}
}
System_Scm(playerid, COLOR_YELLOW, "REGISTER", "You can register.");
ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_PASSWORD, "REGISTRATION", "Fill your password", "Ok", "Cancel");
return 1;
}
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]){
switch(dialogid){
case DIALOG_REGISTER:{
if(!response) Kick(playerid);
if(strlen(inputtext) < 5 || strlen(inputtext) > 129) return System_Scm(playerid, COLOR_RED, "ERROR", "Password must be at least 5 words."), ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_PASSWORD, "Register", "Fill your password", "Ok", "Cancel");
new query[512];
TogglePlayerSpectating(playerid, true);
WP_Hash(Character[playerid][Password], 129, inputtext);
mysql_format(MHandle, query, sizeof(query), "INSERT INTO `character` (`Username`, `Password`, `Level`, `Money`, `IP`, `posX`, `posY`, `posZ`, `posA`, `Health`, `Armour`, `Admin`, `Helper`, `SecretKey`, `Skin`, `Age`) VALUES ('%e', SHA1('%e'), 1, 10000, '%e', %f, %f, %f, %f, 100.0, 0.0, %d, %d, '', %d, %d)",
GetPlayerNameEx(playerid), Character[playerid][Password], Character[playerid][IP], Character[playerid][posX], Character[playerid][posY], Character[playerid][posZ], Character[playerid][posA], Character[playerid][Admin], Character[playerid][Helper], Character[playerid][Skin], Character[playerid][Age]);
mysql_tquery(MHandle, query, "OnCharacterRegister", "i", playerid);
}
return 1;
}
forward OnCharacterRegister(playerid);
public OnCharacterRegister(playerid){
GetPlayerName(playerid, Character[playerid][Username], MAX_PLAYER_NAME);
SetSpawnInfo(playerid, 0, Character[playerid][Skin], Character[playerid][posX], Character[playerid][posY], Character[playerid][posZ], Character[playerid][posA], 0, 0, 0, 0, 0, 0);
SpawnPlayer(playerid); // I will spawn the player with the above positions and then go to the public OnPlayerSpawn.
SaveCharacterInfo(playerid);
return 1;
}
public OnPlayerSpawn(playerid)
{
SetPlayerSkin(playerid, Character[playerid][Skin]);
SetPlayerMoney(playerid, Character[playerid][Money]);
SetPlayerScore(playerid, Character[playerid][Level]);
//SetPlayerPos(playerid, Character[playerid][posX], Character[playerid][posY], Character[playerid][posZ]);
// SetPlayerFacingAngle(playerid, Character[playerid][posA]);
SetPlayerHealth(playerid, Character[playerid][Health]);
SetPlayerArmour(playerid, Character[playerid][Armour]);
GetPlayerIp(playerid, Character[playerid][IP], 16);
CreateCharacterNameTag(playerid);
SetPlayerColor(playerid, COLOR_WHITE);
TogglePlayerClock(playerid,1);
return 1;
}