Raised This Month: $12 Target: $400
 3% 

SQLx still giving packet loss


Post New Thread Reply   
 
Thread Tools Display Modes
Author Message
Sputnik53
Senior Member
Join Date: Jun 2005
Old 11-30-2008 , 08:52  
Reply With Quote #1

PHP Code:
#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <csx>
#include <hamsandwich>
#include <sqlx>

#define PLUGIN "customrank"
#define VERSION "1.00"
#define AUTHOR "Kyto"
#define MINPLAYERS 2

#pragma semicolon 1

// Server values
new startptspts_killpts_headshot;
new 
pts_bomb_plantpts_bomb_explode;
new 
pts_bomb_defuse_attemptpts_bomb_defuse;
new 
pts_hostage_rescue_attemptpts_hostage_rescue;
new 
mpts_deathmpts_teamkillmpts_hostagekill;
new 
Handle:sql_tuplesql_error[512];

public 
plugin_init() {
    
register_plugin(PLUGINVERSIONAUTHOR);
    
register_cvar("customrank",VERSION,FCVAR_SERVER|FCVAR_SPONLY|FCVAR_UNLOGGED);

    
set_task(0.5,"sql_init");
}

stock set_stats(id,const statsd[], hs 0) {
    new 
Handle:querysql[256];
    new 
steamid[33];
    
get_user_authid(id,steamid,32);
    new 
ErrorCode,Handle:SqlConnection SQL_Connect(sql_tuple,ErrorCode,sql_error,511);

    new 
value[33];
    
format(value,32,statsd);
    if(
SqlConnection == Empty_Handle) {
        
set_fail_state(sql_error);
    }
    
format(sql,255,"SELECT %s FROM crank_stats WHERE steamid='%s'"valuesteamid);
    
query SQL_PrepareQuery(SqlConnection,sql);
    if(!
SQL_Execute(query)) {
        
server_print("%s :: MySQL query failed, stopping plugin"PLUGIN);
        
SQL_QueryError(query,sql_error,511);
        
set_fail_state(sql_error);
    }
    new 
data[33];
    
SQL_ReadResult(query,0,data,32);
    
SQL_FreeHandle(query);
    new 
newpoints;
    
newpoints str_to_num(data)+1;
    
format(sql,255,"UPDATE crank_stats SET %s = %d WHERE steamid='%s'"valuenewpointssteamid);
    
query SQL_PrepareQuery(SqlConnection,sql);
    if(!
SQL_Execute(query)) {
        
server_print("%s :: MySQL query failed, stopping plugin"PLUGIN);
        
SQL_QueryError(query,sql_error,511);
        
set_fail_state(sql_error);
    }
    
SQL_FreeHandle(query);
    if(
hs) {
        
format(value,32,"%s_hs",value);
        
format(sql,255,"SELECT %s FROM crank_stats WHERE steamid='%s'"valuesteamid);
        
query SQL_PrepareQuery(SqlConnection,sql);
        if(!
SQL_Execute(query)) {
            
server_print("%s :: MySQL query failed, stopping plugin"PLUGIN);
            
SQL_QueryError(query,sql_error,511);
            
set_fail_state(sql_error);
        }
        new 
data[33];
        
SQL_ReadResult(query,0,data,32);
        
SQL_FreeHandle(query);
        new 
newpoints;
        
newpoints str_to_num(data)+1;
        
format(sql,255,"UPDATE crank_stats SET %s = %d WHERE steamid='%s'"valuenewpointssteamid);
        
query SQL_PrepareQuery(SqlConnection,sql);
        if(!
SQL_Execute(query)) {
            
server_print("%s :: MySQL query failed, stopping plugin"PLUGIN);
            
SQL_QueryError(query,sql_error,511);
            
set_fail_state(sql_error);
        }
        
SQL_FreeHandle(query);
    }
    
SQL_FreeHandle(SqlConnection);
}

public 
give_points(id,points,take) {
    new 
Handle:querysql[256];
    new 
steamid[33];
    
get_user_authid(id,steamid,32);
    new 
ErrorCode,Handle:SqlConnection SQL_Connect(sql_tuple,ErrorCode,sql_error,511);

    if(
SqlConnection == Empty_Handle) {
        
set_fail_state(sql_error);
    }
    
format(sql,255,"SELECT points FROM crank_stats WHERE steamid='%s'"steamid);
    
query SQL_PrepareQuery(SqlConnection,sql);
    if(!
SQL_Execute(query)) {
        
server_print("%s :: MySQL query failed, stopping plugin"PLUGIN);
        
SQL_QueryError(query,sql_error,511);
        
set_fail_state(sql_error);
    }
    new 
data[33];
    
SQL_ReadResult(query,0,data,32);
    
SQL_FreeHandle(query);
    new 
newpoints;
    if(
take) {
        
newpoints str_to_num(data)-points;
    } else {
        
newpoints str_to_num(data)+points;
    }
    
format(sql,255,"UPDATE crank_stats SET points=%d WHERE steamid='%s'"newpointssteamid);
    
query SQL_PrepareQuery(SqlConnection,sql);
    if(!
SQL_Execute(query)) {
        
server_print("%s :: MySQL query failed, stopping plugin"PLUGIN);
        
SQL_QueryError(query,sql_error,511);
        
set_fail_state(sql_error);
    }
    
SQL_FreeHandle(query);
    
SQL_FreeHandle(SqlConnection);
}

public 
client_authorized(id) {
    new 
steamid[33], name[33];
    
get_user_authid(id,steamid,32);
    
get_user_name(id,name,32);
    
replace_all(name,32,"'","\'");
    
replace_all(name,32,"^"","\^"");
    
authorized[id] = true;

    
//if num of rows by steamid > 0 read stats data, else create row
    
new ErrorCode,Handle:SqlConnection SQL_Connect(sql_tuple,ErrorCode,sql_error,511);

    if(
SqlConnection == Empty_Handle) {
        
set_fail_state(sql_error);
    }

    new 
sql[256];
    
format(sql,255,"SELECT * FROM crank_rank WHERE steamid='%s'",steamid);
    new 
rows sql_results(SqlConnection,sql);
    if(
rows == 0) {
        new 
Handle:queryHandle:query2;
        new 
sql[128];
        
format(sql,127,"INSERT INTO crank_rank (id, steamid, name, namelist) VALUES (NULL, '%s', '%s', '%s,')"steamidnamename);
        new 
sql2[128];
        
format(sql2,127,"INSERT INTO crank_stats (steamid, points) VALUES ('%s', %d)"steamid1000);
        
query SQL_PrepareQuery(SqlConnection,sql);
        
query2 SQL_PrepareQuery(SqlConnection,sql2);
        if(!
SQL_Execute(query) || !SQL_Execute(query2)) {
            
server_print("%s :: MySQL query failed, stopping plugin"PLUGIN);
            
SQL_QueryError(query,sql_error,511);
            
set_fail_state(sql_error);
        }
        
SQL_FreeHandle(query);
        
SQL_FreeHandle(query2);
    }
    
SQL_FreeHandle(SqlConnection);
}

public 
sql_init() {
    new 
host[64], user[64], pass[64], db[64];

    
get_cvar_string("amx_sql_host"host63);
    
get_cvar_string("amx_sql_user"user63);
    
get_cvar_string("amx_sql_pass"pass63);
    
get_cvar_string("amx_sql_db"db63);

    
sql_tuple SQL_MakeDbTuple(hostuserpassdb);
    new 
ErrorCodeHandle:SqlConnection SQL_Connect(sql_tuple,ErrorCode,sql_error,511);

    if(
SqlConnection == Empty_Handle) {
        
server_print("%s :: MySQL connection failed"PLUGIN);
        
set_fail_state(sql_error);
    } else {
        
server_print("%s :: MySQL connection succesful"PLUGIN);
    }

    
// Get the rank settings
    
server_print("%s :: Loading settings"PLUGIN);
    new 
Handle:query;
    
query SQL_PrepareQuery(SqlConnection,"SELECT * FROM crank_settings");
    if(!
SQL_Execute(query)) {
        
server_print("%s :: MySQL query failed, stopping plugin"PLUGIN);
        
SQL_QueryError(query,sql_error,511);
        
set_fail_state(sql_error);
    }
    
server_print("- POINTS -");
    new 
data[33];
    
SQL_ReadResult(query,0,data,32);
    
startpts str_to_num(data);
    
server_print("Start: %d"startpts);
    
SQL_ReadResult(query,1,data,32);
    
pts_kill str_to_num(data);
    
server_print("Kill: %d"pts_kill);
    
SQL_ReadResult(query,2,data,32);
    
pts_headshot str_to_num(data);
    
server_print("Headshot: %d"pts_headshot);
    
SQL_ReadResult(query,3,data,32);
    
pts_bomb_plant str_to_num(data);
    
server_print("Bomb plant: %d"pts_bomb_plant);
    
SQL_ReadResult(query,4,data,32);
    
pts_bomb_explode str_to_num(data);
    
server_print("Bomb explode: %d"pts_bomb_explode);
    
SQL_ReadResult(query,5,data,32);
    
pts_bomb_defuse_attempt str_to_num(data);
    
server_print("Bomb defuse attempt: %d"pts_bomb_defuse_attempt);
    
SQL_ReadResult(query,6,data,32);
    
pts_bomb_defuse str_to_num(data);
    
server_print("Bomb defuse: %d"pts_bomb_defuse);
    
SQL_ReadResult(query,7,data,32);
    
pts_hostage_rescue_attempt str_to_num(data);
    
server_print("Hostage rescue attempt: %d"pts_hostage_rescue_attempt);
    
SQL_ReadResult(query,8,data,32);
    
pts_hostage_rescue str_to_num(data);
    
server_print("Hostage rescue: %d"pts_hostage_rescue);
    
SQL_ReadResult(query,9,data,32);
    
mpts_death str_to_num(data);
    
server_print("Death: %s%d""-"mpts_death);
    
SQL_ReadResult(query,10,data,32);
    
mpts_teamkill str_to_num(data);
    
server_print("Teamkill: %s%d""-"mpts_teamkill);
    
SQL_ReadResult(query,11,data,32);
    
mpts_hostagekill str_to_num(data);
    
server_print("Hostagekill: %s%d""-"mpts_hostagekill);
    
server_print("- OTHER -");

    
SQL_FreeHandle(query);
    
SQL_FreeHandle(SqlConnection);
    
server_print("%s :: Settings loaded"PLUGIN);
}

stock sql_results(Handle:con,const sql[], cols 0) {
    new 
Handle:queryresult;
    
query SQL_PrepareQuery(con,sql);
    if(!
SQL_Execute(query)) {
        
server_print("%s :: MySQL query failed, stopping plugin"PLUGIN);
        
SQL_QueryError(query,sql_error,511);
        
set_fail_state(sql_error);
    }
    if(
cols == 1) {
        
result SQL_NumColumns(query);
    } else {
        
result SQL_NumResults(query);
    }
    
SQL_FreeHandle(query);
    return 
result;
}

public 
plugin_end() {
    
SQL_FreeHandle(sql_tuple);

Yeah I thought SQLx got rid of the packet loss problem, but seems I'm still getting it. Then I realised I have to use Threaded Querying and ran into a problem. How do I convert this to use threaded querying?


EDIT:
To put it simple, could someone give me a working example on using Threaded Querying? Hawk's example is somehow complex - I see queries in many places and no idea how to run one simple query.

EDIT: Sorry it's not two weeks, I will not bump this anymore. Just needed to clear out the actual point of the topic. =)

Last edited by YamiKaitou; 12-05-2008 at 14:47.
Sputnik53 is offline
Old 11-30-2008, 14:40
Sputnik53
This message has been deleted by Exolent[jNr]. Reason: Don't bump until 2 weeks have passed since last post.
Arkshine
AMX Mod X Plugin Approver
Join Date: Oct 2005
Old 12-05-2008 , 14:54   Re: SQLx still giving packet loss
Reply With Quote #2

What about to take a look in Amxbans plugin ? It should help you.
__________________
Arkshine is offline
Reply



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 18:19.


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