AlliedModders

AlliedModders (https://forums.alliedmods.net/index.php)
-   Scripting Help (https://forums.alliedmods.net/forumdisplay.php?f=11)
-   -   mysql save (https://forums.alliedmods.net/showthread.php?t=113679)

Debesėlis 12-29-2009 07:31

mysql save
 
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 - 09:31:05: Start of error session.

mart94 12-29-2009 07:35

Re: mysql save
 
REPLACE INTO
?

In php is it Insert Into if you want new line and UPDATE `table` SET somerow="this" to update

Debesėlis 12-29-2009 07:41

Re: mysql save
 
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?

xbatista 12-30-2009 05:08

Re: mysql save
 
wait maybe a week,maybe I'll update gunxpmod saving on name ^_^
I'm super lazy now :bacon:

Debesėlis 12-30-2009 05:41

Re: mysql save
 
i'll be waiting :D


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

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