Raised This Month: $ Target: $400
 0% 

mysql save


Post New Thread Reply   
 
Thread Tools Display Modes
Author Message
Debesėlis
Senior Member
Join Date: Aug 2008
Location: Lithuania
Old 12-29-2009 , 07:31   mysql save
Reply With Quote #1

PHP Code:
#include <nvault>
#include <sqlx>

new g_szAuth[33][35];
new 
g_szAuthID[33][35];
new 
g_szAuthIP[33][35];

new 
g_Vault;

public 
plugin_init( )
{
    
save_type register_cvar("amx_savetype""1"); // Save Xp to : 1 = MySQL, 0 = NVault.
    
savexp register_cvar("amx_save""0"); // Save Xp by : 2 = Name, 1 = SteamID, 0 = IP.

    
MySQLx_Init();
}

public 
plugin_end( )
{
    
nvault_close(g_Vault);
}

public 
client_connectid )
{
    
get_user_name(idg_szAuth[id], 34);
    
get_user_authid(idg_szAuthID[id], 34);
    
get_user_ip(idg_szAuthIP[id], 341);

    
LoadLevel(id);
}

public 
client_disconnectid )
{
    
SaveLevel(id);
}

public 
plugin_cfg( )
{
    
g_Vault nvault_open("mod");

    if ( 
g_Vault == INVALID_HANDLE )
        
set_fail_state("Error opening MOD nVault, file does not exist!");
}

public 
MySQLx_Init()
{
    if ( !
get_pcvar_num(p_Enabled) || !get_pcvar_num(save_type) )
        return;

    new 
szHost[64], szUser[32], szPass[32], szDB[128];
    
get_pcvar_string(mysqlx_hostszHostcharsmax(szHost));
    
get_pcvar_string(mysqlx_userszUsercharsmax(szUser));
    
get_pcvar_string(mysqlx_passszPasscharsmax(szPass));
    
get_pcvar_string(mysqlx_dbszDBcharsmax(szDB));
    
    
g_SqlTuple SQL_MakeDbTuple(szHostszUserszPassszDB);
    
    for(new 
0sizeof szTablesi++)
    {
        
SQL_ThreadQuery(g_SqlTuple"QueryCreateTable"szTables[i]);
    }
}

public 
QueryCreateTableiFailStateHandle:hQueryszError[], iErroriData[], iDataSizeFloat:fQueueTime 

    if ( 
iFailState == TQUERY_CONNECT_FAILED || iFailState == TQUERY_QUERY_FAILED 
    { 
        
log_amx("%s"szError); 
        
        return;
    } 
}

SaveLevel(id)

    if ( 
get_pcvar_num(savexp) == )
    {
        if ( !
get_pcvar_num(save_type) )
        {
            new 
szData[256];
            new 
szKey[64];
            
            
formatex(szKey63"%s-NAME"g_szAuth[id]);
            
formatex(szData255 "%i#%i#"PlayerLevel[id], PlayerXp[id]);
        
            
nvault_set(g_VaultszKeyszData);
        } else {    
            static 
szQuery[128]; 

            
formatex(szQuery127"REPLACE INTO `levels` (`player_id`, `player_level`, `player_xp`) VALUES ('%s', '%d', '%d');"g_szAuth[id], PlayerLevel[id], PlayerXp[id]);
        
            
SQL_ThreadQuery(g_SqlTuple"QuerySetData"szQuery);
        }
    }

    if ( 
get_pcvar_num(savexp) == )
    {
        if ( !
get_pcvar_num(save_type) )
        {
            new 
szData[256];
            new 
szKey[64];
            
            
formatex(szKey63"%s-ID"g_szAuthID[id]);
            
formatex(szData255 "%i#%i#"PlayerLevel[id], PlayerXp[id]);
        
            
nvault_set(g_VaultszKeyszData);
        } else {    
            static 
szQuery[128]; 

            
formatex(szQuery127"REPLACE INTO `levels` (`player_id`, `player_level`, `player_xp`) VALUES ('%s', '%d', '%d');"g_szAuthID[id] , PlayerLevel[id], PlayerXp[id]);
        
            
SQL_ThreadQuery(g_SqlTuple"QuerySetData"szQuery);
        }
    }

    if ( 
get_pcvar_num(savexp) == )
    {
        if ( !
get_pcvar_num(save_type) )
        {
            new 
szData[256];
            new 
szKey[64];
            
            
formatex(szKey63"%s-IP"g_szAuthIP[id]);
            
formatex(szData255"%i#%i#"PlayerLevel[id], PlayerXp[id]);
        
            
nvault_set(g_VaultszKeyszData);
        } else {
            static 
szQuery[128]; 

            
formatex(szQuery127"REPLACE INTO `levels` (`player_id`, `player_level`, `player_xp`) VALUES ('%s', '%d', '%d');"g_szAuthIP[id] , PlayerLevel[id], PlayerXp[id]);
        
            
SQL_ThreadQuery(g_SqlTuple"QuerySetData"szQuery);
        }
    }
}

LoadLevel(id)
{
    if ( 
get_pcvar_num(savexp) == )
    {
        if ( !
get_pcvar_num(save_type) )
        {
            new 
szData[256];
            new 
szKey[40];

            
formatex(szKey39"%s-NAME"g_szAuth[id]);

            
formatex(szData255"%i#%i#"PlayerLevel[id], PlayerXp[id]);
            
            
nvault_get(g_VaultszKeyszData255);

            
replace_all(szData255"#"" ");
            new 
xp[32], level[32];
            
parse(szDatalevel31xp31);
            
PlayerLevel[id] = str_to_num(level);
            
PlayerXp[id] = str_to_num(xp);
        } else {
            static 
szQuery[128], iData[1]; 
            
formatex(szQuery127"SELECT `player_level`, `player_xp` FROM `sdm_levels` WHERE (`player_id` = '%s');"g_szAuth[id]); 

            
iData[0] = id;
            
SQL_ThreadQuery(g_SqlTuple"QuerySelectData"szQueryiData1);
        }
    }

    if ( 
get_pcvar_num(savexp) == )
    {
        if ( !
get_pcvar_num(save_type) )
        {
            new 
szData[256];
            new 
szKey[40];

            
formatex(szKey39"%s-ID"g_szAuthID[id]);

            
formatex(szData255"%i#%i#"PlayerLevel[id], PlayerXp[id]);
            
            
nvault_get(g_VaultszKeyszData255);

            
replace_all(szData255"#"" ");
            new 
xp[32], level[32];
            
parse(szDatalevel31xp31);
            
PlayerLevel[id] = str_to_num(level);
            
PlayerXp[id] = str_to_num(xp);
        } else {
            static 
szQuery[128], iData[1]; 
            
formatex(szQuery127"SELECT `player_level`, `player_xp` FROM `sdm_levels` WHERE (`player_id` = '%s');"g_szAuthID[id]); 

            
iData[0] = id;
            
SQL_ThreadQuery(g_SqlTuple"QuerySelectData"szQueryiData1);
        }
    }

    if ( 
get_pcvar_num(savexp) == )
    {
        if ( !
get_pcvar_num(save_type) )
        {
            new 
szData[256];
            new 
szKey[40];

            
formatex(szKey39"%s-IP"g_szAuthIP[id]);

            
formatex(szData255"%i#%i#"PlayerLevel[id], PlayerXp[id]);
            
            
nvault_get(g_VaultszKeyszData255);

            
replace_all(szData 255"#"" ");
            new 
xp[32], level[32];
            
parse(szDatalevel31xp31);
            
PlayerLevel[id] = str_to_num(level);
            
PlayerXp[id] = str_to_num(xp);
        } else {
            static 
szQuery[128], iData[1]; 
            
formatex(szQuery127"SELECT `player_level`, `player_xp` FROM `sdm_levels` WHERE (`player_id` = '%s');"g_szAuthIP[id]);
    
            
iData[0] = id;
            
SQL_ThreadQuery(g_SqlTuple"QuerySelectData"szQueryiData1);
        }
    }
}

public 
QuerySelectDataiFailStateHandle:hQueryszError[], iErroriData[], iDataSizeFloat:fQueueTime )

    if ( 
iFailState == TQUERY_CONNECT_FAILED || iFailState == TQUERY_QUERY_FAILED )
    { 
        
log_amx("%s"szError);
        
        return;
    } else { 
        new 
id iData[0];
        
        new 
ColLevel SQL_FieldNameToNum(hQuery"player_level");
        new 
ColXp SQL_FieldNameToNum(hQuery"player_xp");
        
        while (
SQL_MoreResults(hQuery))
        {
            
PlayerLevel[id] = SQL_ReadResult(hQueryColLevel);
            
PlayerXp[id] = SQL_ReadResult(hQueryColXp);
                    
            
SQL_NextRow(hQuery);
        }
    }
}

public 
QuerySetDataiFailStateHandle:hQueryszError[], iErroriData[], iDataSizeFloat:fQueueTime 

    if ( 
iFailState == TQUERY_CONNECT_FAILED || iFailState == TQUERY_QUERY_FAILED 
    { 
        
log_amx("%s"szError); 
        
        return;
    }

I need that experience and level would be saved by name. When player change his name in server, level and experience will be reseted.

If player changes his name. last used nick xp would be saved. and when he changes it back. experience and level cames back.

And i got this error:
L 12/29/2009 - 01:40:47: [AMXX] Displaying debug trace (plugin "mod.amxx")
L 12/29/2009 - 01:40:47: [AMXX] Run time error 10: native error (native "nvault_close")
L 12/29/2009 - 01:40:47: [AMXX] [0] mod.sma::plugin_end (line 121)
L 12/29/2009 - 091:05: Start of error session.

Last edited by Debesėlis; 12-29-2009 at 14:57.
Debesėlis is offline
mart94
Junior Member
Join Date: Feb 2009
Old 12-29-2009 , 07:35   Re: mysql save
Reply With Quote #2

REPLACE INTO
?

In php is it Insert Into if you want new line and UPDATE `table` SET somerow="this" to update
mart94 is offline
Debesėlis
Senior Member
Join Date: Aug 2008
Location: Lithuania
Old 12-29-2009 , 07:41   Re: mysql save
Reply With Quote #3

Code:
formatex(szQuery, 127, "UPDATE `sdm_levels` SET player_level='%d', player_xp='%d';", PlayerLevel[id], PlayerXp[id]);
I change it... nothing change... When player change his name in server, gives last name level and experience.... why?

Last edited by Debesėlis; 12-29-2009 at 14:58.
Debesėlis is offline
xbatista
Veteran Member
Join Date: Mar 2008
Location: Lithuania
Old 12-30-2009 , 05:08   Re: mysql save
Reply With Quote #4

wait maybe a week,maybe I'll update gunxpmod saving on name ^_^
I'm super lazy now
__________________
xbatista is offline
Send a message via Skype™ to xbatista
Debesėlis
Senior Member
Join Date: Aug 2008
Location: Lithuania
Old 12-30-2009 , 05:41   Re: mysql save
Reply With Quote #5

i'll be waiting
Debesėlis is offline
Reply


Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -4. The time now is 04:06.


Powered by vBulletin®
Copyright ©2000 - 2024, vBulletin Solutions, Inc.
Theme made by Freecode