player positions not loading
#1

Hi

The player positions get saved correctly in the Mysql server, but for some odd reason it does not like loading them back to where they were, instead just loads them to a default position. I have even checked with the "/save" command. OnPlayerRequestClass also has the setspawninfo to see if that would change anything, but it did not.

Here is my saving script(for position):
PHP код:
stock SavePlayerPos(playerid)
{
    new 
query[500], Float:posXFloat:posYFloat:posZ;
    
GetPlayerPos(playeridposXposYposZ);
    
format(querysizeof(query), "UPDATE `accounts` SET `playerX` = '%f', `playerY` = '%f', `playerZ` = '%f' WHERE `playerName` = '%s'"posXposYposZplayerInfo[playerid][playerName]);
    
mysql_tquery(Databasequery);

Here is the loading script:
PHP код:
stock LoadPlayerStats(playerid)
{
        new 
query[200], name[24];
        
GetPlayerName(playeridname24);
        
format(querysizeof(query), "SELECT * FROM `accounts` WHERE `playerName` = '%e' LIMIT 1"name);
          
mysql_tquery(Databasequery);
          
cache_get_value_int(0"playerAdmin"playerInfo[playerid][playerAdmin]);
        
cache_get_value_int(0"playerMod"playerInfo[playerid][playerMod]);
        
cache_get_value_int(0"playerHelper"playerInfo[playerid][playerHelper]);
        
cache_get_value_int(0"playerLevel"playerInfo[playerid][playerLevel]);
        
cache_get_value_int(0"playerCash"playerInfo[playerid][playerCash]);
        
cache_get_value_name_float(0"playerX"playerInfo[playerid][playerX]);
        
cache_get_value_name_float(0"playerY"playerInfo[playerid][playerY]);
        
cache_get_value_name_float(0"playerZ"playerInfo[playerid][playerZ]);
          
          
SetPlayerScore(playeridplayerInfo[playerid][playerLevel]);
          
GivePlayerMoney(playeridplayerInfo[playerid][playerCash]);
        
SetSpawnInfo(playerid0,0,playerInfo[playerid][playerX],playerInfo[playerid][playerY], playerInfo[playerid][playerZ], 00000,0,0);
        
printf("player loaded.");

Reply
#2

So I realised that it was not selecting the players username as it was using the %e statement. I changed it to %s and it now selects it however still does not load their positions. And yes they are saved as floats.

PHP код:
[12:31:31] [joinyllo has joined the server (0:127.0.0.1)
[
12:31:31player loaded.
[
12:31:31SELECT FROM `accountsWHERE `playerName` = 'yllo' LIMIT 1
[12:31:46Player saved.
[
12:31:46] [partyllo has left the server (0:1
Reply
#3

Quote:
Originally Posted by GRiMMREAPER
Посмотреть сообщение
You should also free the query results with mysql_free_result().
mysql_free_result() its deleted for so long time, thats from old times, also seems he use mysql_tquery which no need to free the result, result will be freed automatic

PHP код:
 stock LoadPlayerStats(playerid

        new 
query[200], name[24], Cacheresult
        
GetPlayerName(playeridname24); 
        
format(querysizeof(query), "SELECT * FROM `accounts` WHERE `playerName` = '%e' LIMIT 1"name); 
        
result mysql_query(Databasequery); 
        if(
cache_num_rows())
        {
            
cache_get_value_int(0"playerAdmin"playerInfo[playerid][playerAdmin]); 
            
cache_get_value_int(0"playerMod"playerInfo[playerid][playerMod]); 
            
cache_get_value_int(0"playerHelper"playerInfo[playerid][playerHelper]); 
            
cache_get_value_int(0"playerLevel"playerInfo[playerid][playerLevel]); 
            
cache_get_value_int(0"playerCash"playerInfo[playerid][playerCash]); 
            
cache_get_value_name_float(0"playerX"playerInfo[playerid][playerX]); 
            
cache_get_value_name_float(0"playerY"playerInfo[playerid][playerY]); 
            
cache_get_value_name_float(0"playerZ"playerInfo[playerid][playerZ]); 
        }
           
        
SetPlayerScore(playeridplayerInfo[playerid][playerLevel]); 
        
GivePlayerMoney(playeridplayerInfo[playerid][playerCash]); 
        
SetSpawnInfo(playerid0,0,playerInfo[playerid][playerX],playerInfo[playerid][playerY], playerInfo[playerid][playerZ], 00000,0,0); 
        
cache_delete(result);
        
printf("player loaded."); 

This is if you want the result from the select query in same function(unless you gonna use mysql_tquery_inline). mysql_tquery send a threaded query so the mysql_tquery require a callback in which you gonna load the data recived from the select query
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)