AlliedModders

AlliedModders (https://forums.alliedmods.net/index.php)
-   Scripting Help (https://forums.alliedmods.net/forumdisplay.php?f=11)
-   -   SQL define (https://forums.alliedmods.net/showthread.php?t=172182)

Tonda 11-16-2011 15:46

SQL define
 
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 }
*/ 



All times are GMT -4. The time now is 08:32.

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