Raised This Month: $ Target: $400
 0% 

SQL define


Post New Thread Reply   
 
Thread Tools Display Modes
Author Message
Tonda
Senior Member
Join Date: Aug 2009
Old 11-16-2011 , 15:46   SQL define
Reply With Quote #1

Hi, i need save stats to SQL like top15 ... i have this code, but how can i define database connect ? Please help ..

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

new Handle:g_SqlTuple
new bool:g_HasSaved[33]

public 
plugin_init()
{
        
register_event("DeathMsg""event_death""a")
}

public 
plugin_cfg()
{
        
g_SqlTuple SQL_MakeStdTuple()
        
        if (
g_SqlTuple == Empty_Handle)
                
log_amx("Invalid SQL info.")
        else
        {
                new 
errcodeerror[128]
                new 
Handle:db SQL_Connect(g_SqlTupleerrcodeerror127)
                
                if (
db == Empty_Handle)
                        
log_amx("Could not connect to SQL: %s"error)
                else
                {
                        new 
Handle:query SQL_PrepareQuery(db,
                                
"CREATE TABLE IF NOT EXISTS player_stats \
                                (name VARCHAR(32) NOT NULL, \
                                steamid VARCHAR(35) NOT NULL PRIMARY KEY, \
                                kills INT(11) NOT NULL, \
                                deaths INT(11) NOT NULL);"
                                
)
                        
                        if (!
SQL_Execute(query))
                        {
                                
SQL_QueryError(queryerror127)
                                
log_amx("Query error for create table: %s"error)
                        }
                        else
                                
state sql_enabled
                        
                        SQL_FreeHandle
(query)
                        
                        new 
players[32], num
                        get_players
(playersnum"ch")
                        
                        for (new 
0numi++)
                        {
                                
handle_player_connect(dbplayers[i])
                        }
                        
                        
SQL_FreeHandle(db)
                }
        }
}

handle_player_connect(Handle:dbid)
{
        if (
g_HasSaved[id])
                return;
        
        new 
steamid[35]
        
get_user_authid(idsteamid34)
        
        new 
Handle:query SQL_PrepareQuery(db"SELECT * FROM player_stats WHERE steamid = ^"%s^";"steamid)
        
        if (!
SQL_Execute(query))
        {
                new 
error[128]
                
SQL_QueryError(queryerror127)
                
log_amx("Query error for select player stats: %s"error)
        }
        else if (
SQL_NumResults(query))
        {
                
SQL_FreeHandle(query)
                
                new 
name[32]
                
get_user_name(idname31)
                
                
query SQL_PrepareQuery(db"UPDATE player_stats SET name = ^"%s^" WHERE steamid = ^"%s^";"namesteamid)
                
                if (!
SQL_Execute(query))
                {
                        new 
error[128]
                        
SQL_QueryError(queryerror127)
                        
log_amx("Query error for update player name: %s"error)
                }
                
                
g_HasSaved[id] = true
        
}
        else
        {
                
SQL_FreeHandle(query)
                
                new 
name[32]
                
get_user_name(idname31)
                
                
query SQL_PrepareQuery(db"INSERT INTO player_stats (name, steamid, kills, deaths) VALUES (^"%s^", ^"%s^", 0, 0);"namesteamid)
                
                if (!
SQL_Execute(query))
                {
                        new 
error[128]
                        
SQL_QueryError(queryerror127)
                        
log_amx("Query error for insert player: %s"error)
                }
                else
                        
g_HasSaved[id] = true
        
}
        
        
SQL_FreeHandle(query)
}

public 
client_putinserver(id) <> { }
public 
client_putinserver(id) <sql_enabled>
{
        if (
g_HasSaved[id])
                return;
        
        new 
errcodeerror[128]
        new 
Handle:db SQL_Connect(g_SqlTupleerrcodeerror127)
        
        if (
db == Empty_Handle)
                return;
        
        
handle_player_connect(dbid)
        
        
SQL_FreeHandle(db);
}

public 
client_disconnect(id)
{
        
g_HasSaved[id] = false
}

public 
client_infochanged(id) <> { }
public 
client_infochanged(id) <sql_enabled>
{
        new 
oldname[32], newname[32]
        
get_user_name(idoldname31)
        
get_user_info(id"name"newname31)
        
        if (!
equal(oldnamenewname) && g_HasSaved[id])
        {
                new 
errcodeerror[128]
                new 
Handle:db SQL_Connect(g_SqlTupleerrcodeerror127)
                
                if (
db == Empty_Handle)
                        return;
                
                new 
steamid[35]
                
get_user_authid(idsteamid34)
                
                new 
Handle:query SQL_PrepareQuery(db"UPDATE player_stats SET name = ^"%s^" WHERE steamid = ^"%s^";"newnamesteamid)
                
                if (!
SQL_Execute(query))
                {
                        
SQL_QueryError(queryerror127)
                        
log_amx("Query error for update player in client_putinserver(): %s"error)
                }
                
                
SQL_FreeHandle(query);
                
                
SQL_FreeHandle(db);
        }
}

public 
event_death() <> { }
public 
event_death() <sql_enabled>
{
        new 
killer read_data(1)
        new 
victim read_data(2)
        
        
save_stats(killer"kills"1)
        
save_stats(victim"deaths"1)
}

save_stats(idstat[], addvalue)
{
        if (
is_user_connected(id) && g_HasSaved[id])
        {
                new 
errcodeerror[128]
                new 
Handle:db SQL_Connect(g_SqlTupleerrcodeerror127)
                
                if (
db == Empty_Handle)
                        return;
                
                new 
steamid[35]
                
get_user_authid(idsteamid34)
                
                new 
Handle:query SQL_PrepareQuery(db"UPDATE player_stats SET %s = %s + %i WHERE steamid = ^"%s^";"statstataddvaluesteamid)
                
                if (!
SQL_Execute(query))
                {
                        
SQL_QueryError(queryerror127)
                        
log_amx("Query error for update player stat: %s"error)
                }
                
                
SQL_FreeHandle(query);
                
                
SQL_FreeHandle(db);
        }
}
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang11274\\ f0\\ fs16 \n\\ par }
*/ 

Last edited by Tonda; 11-16-2011 at 15:46.
Tonda 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 08:32.


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