Raised This Month: $ Target: $400
 0% 

mysql save


  
 
 
Thread Tools Display Modes
Prev Previous Post   Next Post Next
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
 



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