[Help] Data Don't Save
#1

Hello , i added points system in my script but the players points don't save when he disconnect . Here is my code.

Admin can give them point by:
PHP код:
CMD:givepp(playeridparams[])
{
    
LoginCheck(playerid);
    if(
User[playerid][accountAdmin] >= 3)
    {
        new 
string[150], idamount;
        if(
sscanf(params"ui"idamount)) return SendClientMessage(playeridCOLOR_RED"USAGE: /givepp [playerid] [amount]");
        if(
id == INVALID_PLAYER_ID) return SendClientMessage(playerid, -1"» "red"Player not connected.");
        if(
User[id][accountLogged] == false) return SendClientMessage(playerid, -1"» "red"Player not logged in.");
        
format(string150"[PREMIUM POINTS] "red"%s has given %s [%d] Premium Points."GetName(playerid), GetName(id), amount);
        
SendAMessage(-1string);
        
format(string150""green"[PREMIUM POINTS] "white"You have received "grey"%d "white"premium points from an "red"admin"white"."amountUser[id][accountPP]+amount);
        
SendClientMessage(id, -1string);
        
format(string150"» You have given {%06x}%s "white"premium points of "grey"%d"white"."GetPlayerColor(id) >>> 8GetName(id), amount);
        
SendClientMessage(playerid, -1string);
        
format(string128"%s received %d Premium Points from %s."GetName(id), amountGetName(playerid));
        
Log("premium.txt"string);
        
User[id][accountPP] += amount;
        
SaveData(id);
    }
    else
    {
        
SendClientMessage(playerid, -1"» "red"You are not authorized to use this command.");
    }
    return 
1;

Following is the SaveData.
PHP код:
stock SaveData(playerid)
{
    new
        
Query[700]
    ;
    
format(Querysizeof(Query), "UPDATE `users` SET `IP` = '%s', `admin` = %d, `kills` = %d, `deaths` = %d, `score` = %d, `money` = %d, `warn` = %d, `mute` = %d, `mutesec` = %d, `cmute` = %d, `cmutesec` = %d, `jail` = %d, `jailsec` = %d, `hours` = %d, `minutes` = %d, `seconds` = %d WHERE `username` = '%s'",
            
User[playerid][accountIP],
            
User[playerid][accountAdmin],
            
User[playerid][accountKills],
            
User[playerid][accountDeaths],
            
User[playerid][accountScore],
            
User[playerid][accountCash],
            
User[playerid][accountWarn],
            
User[playerid][accountMuted],
            
User[playerid][accountMuteSec],
            
User[playerid][accountCMuted],
            
User[playerid][accountCMuteSec],
            
User[playerid][accountJail],
            
User[playerid][accountJailSec],
            
User[playerid][accountGame][2],
            
User[playerid][accountGame][1],
            
User[playerid][accountGame][0],
            
User[playerid][accountPP],
            
DB_Escape(User[playerid][accountName])
    );
    
db_query(DatabaseQuery);
    
db_free_result(db_query(DatabaseQuery));
    return 
1;

OnPlayerDisconnect.
PHP код:
if(User[playerid][accountLogged] == true)
    {
        
//Saves the statistics to the .db.
        
SaveData(playerid);
    } 
OnPlayerConnect
PHP код:
if(strcmp(fIPUser[playerid][accountIP], true) == 0)
            {
                
SendClientMessage(playerid, -1"You have been auto logged in.");
                
LoginPlayer(playerid);
            } 
Following is LoginPlayer code.
PHP код:
function:LoginPlayer(playerid)
{
    new
        
Query[900],
        
DBResult:Result,
        
string[128+40]
    ;
    
format(Querysizeof(Query), "SELECT * FROM `users` WHERE `username` = '%s'"DB_Escape(pName(playerid)));
    
Result db_query(DatabaseQuery);
    if(
db_num_rows(Result))
    {
        
db_get_field_assoc(Result"userid"Query7);
        
User[playerid][accountID] = strval(Query);
        
db_get_field_assoc(Result"score"Query20);
        
User[playerid][accountScore] = strval(Query);
        
SetPlayerScore(playeridUser[playerid][accountScore]);
        
db_get_field_assoc(Result"money"Query20);
        
User[playerid][accountCash] = strval(Query);
        
GivePlayerMoney(playeridUser[playerid][accountCash]);
        
db_get_field_assoc(Result"kills"Query20);
        
User[playerid][accountKills] = strval(Query);
        
db_get_field_assoc(Result"deaths"Query20);
        
User[playerid][accountDeaths] = strval(Query);
        
db_get_field_assoc(Result"admin"Query7);
        
User[playerid][accountAdmin] = strval(Query);
        
db_get_field_assoc(Result"joindate"Query150);
        
format(User[playerid][accountDate], 150"%s"Query);
        
db_get_field_assoc(Result"warn"Query5);
        
User[playerid][accountWarn] = strval(Query);
        
db_get_field_assoc(Result"mute"Query5);
        
User[playerid][accountMuted] = strval(Query);
        
db_get_field_assoc(Result"mutesec"Query8);
        
User[playerid][accountMuteSec] = strval(Query);
        
db_get_field_assoc(Result"cmute"Query6);
        
User[playerid][accountCMuted] = strval(Query);
        
db_get_field_assoc(Result"cmutesec"Query9);
        
User[playerid][accountCMuteSec] = strval(Query);
        
db_get_field_assoc(Result"jail"Query5);
        
User[playerid][accountJail] = strval(Query);
        
db_get_field_assoc(Result"jailsec"Query8);
        
User[playerid][accountJailSec] = strval(Query);
        
db_get_field_assoc(Result"hours"Query6);
        
User[playerid][accountGame][2] = strval(Query);
        
db_get_field_assoc(Result"minutes"Query8);
        
User[playerid][accountGame][1] = strval(Query);
        
db_get_field_assoc(Result"seconds"Query8);
        
User[playerid][accountGame][0] = strval(Query);
        
        
db_get_field_assoc(Result"premiumpoints"Query14);
        
User[playerid][accountPP] = strval(Query);
        
User[playerid][accountLogged] = true;
        if(
User[playerid][accountMuted] == 1)
        {
            
format(string200"PUNISHMENT: You have been muted from using the chat for %d seconds, You are muted the last time you logged out."User[playerid][accountMuteSec]);
            
SendClientMessage(playeridCOLOR_REDstring);
        }
        if(
User[playerid][accountCMuted] == 1)
        {
            
format(string200"PUNISHMENT: You have been muted from using the commands for %d seconds, You are muted the last time you logged out."User[playerid][accountCMuteSec]);
            
SendClientMessage(playeridCOLOR_REDstring);
        }
        
SendClientMessage(playeridCOLOR_YELLOW"SERVER: You have successfully logged in to the server.");
        if(
User[playerid][accountAdmin] >= 1)
        {
            
SendClientMessage(playerid, -1"You have logged into your administrative account, Good luck doing your duties.");
        }
        
PlayerPlaySound(playerid10570.00.00.0);
    }
    
db_free_result(Result);
    return 
1;

Reply
#2

pawn Код:
db_get_field_assoc(Result, "premiumpoints", Query, 14);
        User[playerid][accountPP] = strval(Query);
you use this on loading,
but you don't save "premiumpoints", or am I blind?
pawn Код:
format(Query, sizeof(Query), "UPDATE `users` SET `IP` = '%s', `admin` = %d, `kills` = %d, `deaths` = %d, `score` = %d, `money` = %d, `warn` = %d, `mute` = %d, `mutesec` = %d, `cmute` = %d, `cmutesec` = %d, `jail` = %d, `jailsec` = %d, `hours` = %d, `minutes` = %d, `seconds` = %d WHERE `username` = '%s'",
there is no "`premiumpoints`=%d" in this list, although you have added it to the parameter list


pawn Код:
User[playerid][accountIP],
            User[playerid][accountAdmin],
            User[playerid][accountKills],
            User[playerid][accountDeaths],
            User[playerid][accountScore],
            User[playerid][accountCash],
            User[playerid][accountWarn],
            User[playerid][accountMuted],
            User[playerid][accountMuteSec],
            User[playerid][accountCMuted],
            User[playerid][accountCMuteSec],
            User[playerid][accountJail],
            User[playerid][accountJailSec],
            User[playerid][accountGame][2],
            User[playerid][accountGame][1],
            User[playerid][accountGame][0],
            User[playerid][accountPP],   //HERE
            DB_Escape(User[playerid][accountName])
when changing a string, always be sure to add the format symbol (%d, %f, %i, %s, etc.) and the related variable at the right positions!
Reply
#3

I added it but it still don't work.
Reply
#4

Check out the debug log, you may get a hint.
Reply
#5

i added premiumpoints`=%d and also added SaveData(id) in /givepp but the server crashes now.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)