Wrong spawn position
#1

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.
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(playeridpNamesizeof(pName));
    
mysql_format(MHandlequerysizeof(query), "SELECT * FROM `character` WHERE `Username` = '%e' LIMIT 1"pName);
    
mysql_tquery(MHandlequery"OnCharacterCheck""i"playerid);
    return 
1;
}
forward OnCharacterCheck(playerid);
public 
OnCharacterCheck(playerid){
    new 
rowsszFieldName[MAX_PLAYER_NAME];
    
cache_get_row_count(rows); 
    for(new 
row 0row rowsrow++){
        
cache_get_value_name(row"Username"szFieldName);
        if(!
strcmp(szFieldNameGetPlayerNameEx(playerid))){
            
cache_get_value_name(row"Password"Character[playerid][Password]);
            
cache_get_value_name(row"Username"Character[playerid][Username]);
            
System_Scm(playeridCOLOR_YELLOW"LOGIN""This account has been registered.");
            
ShowPlayerDialog(playeridDIALOG_LOGINDIALOG_STYLE_PASSWORD"Login""Fill your password""Ok""Cancel");
            return 
1;
        }
    }
    
System_Scm(playeridCOLOR_YELLOW"REGISTER""You can register.");
    
ShowPlayerDialog(playeridDIALOG_REGISTERDIALOG_STYLE_PASSWORD"REGISTRATION""Fill your password""Ok""Cancel");
    return 
1;
}
public 
OnDialogResponse(playeriddialogidresponselistiteminputtext[]){
    switch(
dialogid){
        case 
DIALOG_REGISTER:{
            if(!
responseKick(playerid);
            if(
strlen(inputtext) < || strlen(inputtext) > 129) return System_Scm(playeridCOLOR_RED"ERROR""Password must be at least 5 words."), ShowPlayerDialog(playeridDIALOG_REGISTERDIALOG_STYLE_PASSWORD"Register""Fill your password""Ok""Cancel");
            new 
query[512];
            
TogglePlayerSpectating(playeridtrue);
            
WP_Hash(Character[playerid][Password], 129inputtext);
            
mysql_format(MHandlequerysizeof(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(MHandlequery"OnCharacterRegister""i"playerid);
        }
    return 
1;
}
forward OnCharacterRegister(playerid);
public 
OnCharacterRegister(playerid){
    
GetPlayerName(playeridCharacter[playerid][Username], MAX_PLAYER_NAME);
    
SetSpawnInfo(playerid0Character[playerid][Skin], Character[playerid][posX], Character[playerid][posY], Character[playerid][posZ], Character[playerid][posA], 000000);
    
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(playeridCharacter[playerid][Skin]);
    
SetPlayerMoney(playeridCharacter[playerid][Money]);
    
SetPlayerScore(playeridCharacter[playerid][Level]);
    
//SetPlayerPos(playerid, Character[playerid][posX], Character[playerid][posY], Character[playerid][posZ]);
    // SetPlayerFacingAngle(playerid, Character[playerid][posA]);
    
SetPlayerHealth(playeridCharacter[playerid][Health]);
    
SetPlayerArmour(playeridCharacter[playerid][Armour]);
    
GetPlayerIp(playeridCharacter[playerid][IP], 16);
    
CreateCharacterNameTag(playerid); 
    
SetPlayerColor(playeridCOLOR_WHITE);
    
TogglePlayerClock(playerid,1);
    return 
1;

Please help me.
Reply
#2

Have you made sure you defined Character[playerid][posZ] as a float, Please show us the enum and the loading system you have for your playing accounts
Reply
#3

Quote:
Originally Posted by JessThompson
Посмотреть сообщение
Have you made sure you defined Character[playerid][posZ] as a float, Please show us the enum and the loading system you have for your playing accounts
This is my enum:
PHP код:
enum cInfo
{
    
Username[MAX_PLAYER_NAME],
    
Password[129],
    
Skin,
    
Sex,
    
IP[16],
    
Level,
    
Money,
    
Age,
    
Float:posX,
    
Float:posY,
    
Float:posZ,
    
Float:posA,
    
Float:Health,
    
Float:Armour,
    
Admin,
    
Helper,
    
SecretKey
}; 
And about the spawn position, I have fixed it myself. But when the player register, they spawn at the place I set and they always die from 5 - 7 times and then they don't die anymore.
This is my callback after the player is registered.
PHP код:
forward OnCharacterRegister(playerid);
public 
OnCharacterRegister(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][posX] = 1642.2721
    
Character[playerid][posY] = -2334.2493;
    
Character[playerid][posZ] = -2.6797;
    
Character[playerid][posA] = 1.1255;
    
GetPlayerName(playeridCharacter[playerid][Username], MAX_PLAYER_NAME);
    
SetSpawnInfo(playerid0Character[playerid][Skin], Character[playerid][posX], Character[playerid][posY], Character[playerid][posZ], Character[playerid][posA], -1, -1, -1, -1, -1, -1);
    
SetTimerEx("SpawnCharacter"500false"i"playerid);
    
gCharacterLogged{playerid} = 1;
    
SaveCharacterInfo(playerid);
    return 
1;

You see that, I have set the player health is 100, and then I set a timer named SpawnCharacter.
PHP код:
forward SpawnCharacter(playerid);
public 
SpawnCharacter(playerid){
    
SpawnPlayer(playerid);
    return 
1;

And when the player spawn, I use the function SetCharacterSpawn like this.
PHP код:
public OnPlayerSpawn(playerid)
{
    if(!
gCharacterLogged{playerid})
    {
        
System_Scm(playeridCOLOR_RED"ERROR""Ban chua dang nhap!");
        
Kick(playerid);
        return 
1;
    }
    
gCharacterLogged{playerid} = 1;
    
SetCharacterSpawn(playerid);
    
TogglePlayerClock(playerid,1);
    return 
1;
}
SetCharacterSpawn(playerid){
    
//if(IsPlayerConnected(playerid)){
        
SetPlayerSkin(playeridCharacter[playerid][Skin]);
        
SetPlayerInterior(playerid0);
        
SetPlayerVirtualWorld(playerid0);
        
SetPlayerMoney(playeridCharacter[playerid][Money]);
        
SetPlayerScore(playeridCharacter[playerid][Level]);
        
/*SetPlayerPos(playerid, Character[playerid][posX], Character[playerid][posY], Character[playerid][posZ]);
        SetPlayerFacingAngle(playerid, Character[playerid][posA]);*/
        
SetPlayerHealth(playeridCharacter[playerid][Health]);
        
SetPlayerArmour(playeridCharacter[playerid][Armour]);
        
GetPlayerIp(playeridCharacter[playerid][IP], 16);
        
CreateCharacterNameTag(playerid); 
        
SetPlayerColor(playeridCOLOR_WHITE);
    
//}
    
return 1;

I'm just learning MySQL, can somebody help me?
Reply
#4

It seems like I have set all of the variables of the player after they registering, then I spawn them and load their variables but all of their variables is 0.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)