AlliedModders

AlliedModders (https://forums.alliedmods.net/index.php)
-   Scripting Help (https://forums.alliedmods.net/forumdisplay.php?f=11)
-   -   Optimize this code (+SQL) (https://forums.alliedmods.net/showthread.php?t=94799)

Mlk27 06-15-2009 16:46

Optimize this code (+SQL)
 
This isn't my plugin I just cleaned up the code, add pcvar etc. I need you to futher optimize this plugin since the original author has pretty much abandoned his plugin

So anyone?

Code:
#include <amxmodx> #include <amxmisc> #include <sqlx> #define PLUGIN "ratemap" #define VERSION "0.9.6" #define AUTHOR "sTmN" new const TAG[] = "[RateMap]" new filename[256],parsedrate[2],mapname[30] new Handle:g_SqlTuple new g_Error[512] new ErrorCode,Handle:SqlConnection new cv_RateMap_sql, cv_RateMap_mode new cv_RateMap_host, cv_RateMap_user, cv_RateMap_pass, cv_RateMap_db new cv_RateMap_hostname new g_szRateMap_host[64], g_szRateMap_user[64], g_szRateMap_pass[64], g_szRateMap_db[64] new g_szRateMap_hostname[64], g_szRateMap_ip[15], g_szRateMap_port[8] public plugin_init() {     register_plugin(PLUGIN, VERSION, AUTHOR)     register_clcmd("say /rate","say_rate")     cv_RateMap_sql = register_cvar("rm_sql","1")     cv_RateMap_mode = register_cvar("rm_mode","1") // 1-steamid, 2-name, 3-ip     cv_RateMap_host = register_cvar("rm_host","localhost")     cv_RateMap_user = register_cvar("rm_user","username")     cv_RateMap_pass = register_cvar("rm_pass","password")     cv_RateMap_db = register_cvar("rm_db","database")     cv_RateMap_hostname = register_cvar("rm_hostname","Your Hostname")     get_pcvar_string(cv_RateMap_host, g_szRateMap_host, charsmax(g_szRateMap_host))     get_pcvar_string(cv_RateMap_user,g_szRateMap_user,charsmax(g_szRateMap_user))     get_pcvar_string(cv_RateMap_pass,g_szRateMap_pass,charsmax(g_szRateMap_pass))     get_pcvar_string(cv_RateMap_db,g_szRateMap_db,charsmax(g_szRateMap_db))     get_pcvar_string(cv_RateMap_hostname,g_szRateMap_hostname,charsmax(g_szRateMap_hostname))     get_cvar_string("ip",g_szRateMap_ip,charsmax(g_szRateMap_ip))     get_cvar_string("port",g_szRateMap_port,charsmax(g_szRateMap_port))     get_mapname(mapname,30)     get_configsdir(filename,255)     format(filename,charsmax(filename),"%s/rate",filename)     if(!get_pcvar_num(cv_RateMap_sql))     {         if(!dir_exists(filename))         {             mkdir(filename)             if(dir_exists(filename))             {                 format(filename,charsmax(filename),"%s/%s.ini",filename,mapname)                 new fp=fopen(filename,"w"); fclose(fp);                 return             }         }         else         {             format(filename,charsmax(filename),"%s/%s.ini",filename,mapname)             if(!file_exists(filename))             {                 new fp=fopen(filename,"w"); fclose(fp);                 return             }         }         server_print("# File created successfully.")     }     else     {         table_init();     } } public sql_connect() {     SqlConnection = SQL_Connect(g_SqlTuple,ErrorCode,g_Error,511)     if(SqlConnection == Empty_Handle)         set_fail_state(g_Error) } public table_init() {     g_SqlTuple = SQL_MakeDbTuple(g_szRateMap_host,g_szRateMap_user,g_szRateMap_pass,g_szRateMap_db)     sql_connect();     // tworzy tabele     new Handle:Query = SQL_PrepareQuery(SqlConnection,"CREATE TABLE IF NOT EXISTS rm_rates (steamid TEXT(32),nickname TEXT(32),ip TEXT(32),mapname TEXT(32),rate INT(11),g_szRateMap_ip TEXT(32))")     if(!SQL_Execute(Query))     {         SQL_QueryError(Query,g_Error,511)         set_fail_state(g_Error)     }     new Handle:Query2 = SQL_PrepareQuery(SqlConnection,"CREATE TABLE IF NOT EXISTS rm_servers (ip TEXT(32),g_szRateMap_hostname TEXT(32))")     if(!SQL_Execute(Query2))     {         SQL_QueryError(Query2,g_Error,511)         set_fail_state(g_Error)     }     server_print("# Connected to database succesfully.")     // dodaje serwer do tabeli 'server'     new Handle:Query3 = SQL_PrepareQuery(SqlConnection,"SELECT ip, hostname FROM rm_servers WHERE ip='%s:%s'",g_szRateMap_ip,g_szRateMap_port)     if(!SQL_Execute(Query3))     {         SQL_QueryError(Query3,g_Error,511)         set_fail_state(g_Error)     }     if(!SQL_MoreResults(Query3))     {         new Handle:Query4 = SQL_PrepareQuery(SqlConnection,"INSERT INTO rm_servers VALUES('%s:%s','%s')",g_szRateMap_ip,g_szRateMap_port,g_szRateMap_hostname)         if(!SQL_Execute(Query4))         {             SQL_QueryError(Query4,g_Error,511)             set_fail_state(g_Error)         }     }     else     {         new hostname_fromsql[60]         hostname_fromsql[0]=SQL_ReadResult(Query3,0)         if(!equal(hostname_fromsql,g_szRateMap_hostname))         {             new Handle:Query5 = SQL_PrepareQuery(SqlConnection,"UPDATE rm_servers SET hostname='%s' WHERE ip='%s:%s'",g_szRateMap_hostname,g_szRateMap_ip,g_szRateMap_port)             if(!SQL_Execute(Query5))             {                 SQL_QueryError(Query5,g_Error,511)                 set_fail_state(g_Error)             }         }     }     SQL_FreeHandle(SqlConnection) } public say_rate(id) {     new iMode = get_pcvar_num(cv_RateMap_mode)     new steamid[32], name[32], ip[32]     get_user_authid(id,steamid,31)     get_user_name(id,name,32)     get_user_ip(id,ip,32,1)     if(!get_pcvar_num(cv_RateMap_sql))     {         new readdata[128],txtlen         new parsedsteamid[32], parsedname[32], parsedip[32]         new pomocnik=0         new fsize = file_size(filename,1)         for (new line=0;line<=fsize;line++)         {             read_file(filename,line,readdata,127,txtlen)             parse(readdata,parsedsteamid,31,parsedrate,2,parsedname,31,parsedip,31)             // sprawdzanie rm_mode             switch(iMode)             {                 case 1:                 {                     if(equal(steamid,parsedsteamid))                     {                         fnGreenChat(id,"%s You already rated this map.",TAG)                         break                     }                     else                     {                         pomocnik=pomocnik+1                         if(pomocnik==fsize)                             ratemenu(id)                     }                 }                 case 2:                 {                     if(equal(name,parsedname))                     {                         fnGreenChat(id,"%s You already rated this map.",TAG)                         break                     }                     else                     {                         pomocnik=pomocnik+1                         if(pomocnik==fsize)                             ratemenu(id)                     }                 }                 case 3:                 {                     if(equal(ip,parsedip))                     {                         fnGreenChat(id,"%s You already rated this map.",TAG)                         break                     }                     else                     {                         pomocnik=pomocnik+1                         if(pomocnik==fsize)                             ratemenu(id)                     }                 }             }         }     }     else     {         switch(iMode)         {             case 1:             {                 // steamid                 sql_connect()                 new Handle:Query = SQL_PrepareQuery(SqlConnection,"SELECT steamid FROM rm_rates WHERE steamid='%s' AND mapname='%s'",steamid,mapname)                 if(!SQL_Execute(Query))                 {                     SQL_QueryError(Query,g_Error,511)                     set_fail_state(g_Error)                 }                 if(!SQL_MoreResults(Query))                     ratemenu(id)                 else                     fnGreenChat(id,"%s You already rated this map.",TAG)             }             case 2:             {                 // nickname                 sql_connect();                 new Handle:Query = SQL_PrepareQuery(SqlConnection,"SELECT nickname FROM rm_rates WHERE nickname='%s' AND mapname='%s'",name,mapname)                 if(!SQL_Execute(Query))                 {                     SQL_QueryError(Query,g_Error,511)                     set_fail_state(g_Error)                 }                 if(!SQL_MoreResults(Query))                     ratemenu(id)                 else                     fnGreenChat(id,"%s You already rated this map.",TAG)             }             case 3:             {                 // ip adress                 sql_connect();                 new Handle:Query = SQL_PrepareQuery(SqlConnection,"SELECT ip FROM rm_rates WHERE ip='%s' AND mapname='%s'",ip,mapname)                 if(!SQL_Execute(Query))                 {                     SQL_QueryError(Query,g_Error,511)                     set_fail_state(g_Error)                 }                 if(!SQL_MoreResults(Query))                     ratemenu(id)                 else                     fnGreenChat(id,"%s You already rated this map.",TAG)             }         }         SQL_FreeHandle(SqlConnection)     } } public ratemenu(id) {     new Temp[64]     format(Temp, 64, "Rate map:");     new menu = menu_create(Temp,"func_ratemenu")     format(Temp, 64, "Terrible");     menu_additem(menu, Temp,"1",0)     format(Temp, 64, "Poor");     menu_additem(menu, Temp,"2",0)     format(Temp, 64, "Average");     menu_additem(menu, Temp,"3",0)     format(Temp, 64, "Good");     menu_additem(menu, Temp,"4",0)     format(Temp, 64, "Perfect");     menu_additem(menu, Temp,"5",0)     menu_setprop(menu,MPROP_EXIT,MEXIT_ALL)     menu_display(id,menu,0) } public func_ratemenu(id,menu,item) {     if(item==MENU_EXIT)     {         menu_destroy(menu);         return PLUGIN_HANDLED     }     new data[6], iName[64]     new access, callback     menu_item_getinfo(menu, item, access, data,5, iName, 63, callback);     new key = str_to_num(data);     if(!get_pcvar_num(cv_RateMap_sql))     {         switch(key)         {             case 1: ratelocal(id,key);             case 2: ratelocal(id,key);             case 3: ratelocal(id,key);             case 4: ratelocal(id,key);             case 5: ratelocal(id,key);             case 6: ratelocal(id,key);         }     }     else     {         switch(key)         {             case 1: ratesql(id,key);             case 2: ratesql(id,key);             case 3: ratesql(id,key);             case 4: ratesql(id,key);             case 5: ratesql(id,key);             case 6: ratesql(id,key);         }     }     return PLUGIN_HANDLED } public ratelocal(id,key) {     new writedata[128], steamid[32], name[32], ip[32]     get_user_authid(id,steamid,31)     get_user_name(id,name,32)     get_user_ip(id,ip,32,1)     new ocenka[15]     num_to_str(key,ocenka,12)     formatex(writedata,127,"^"%s^" ^"%s^" ^"%s^" ^"%s^"",steamid,ocenka,name,ip)     write_file(filename,writedata)     switch(key)     {         case 1: format(ocenka, 15, "Terrible");         case 2: format(ocenka, 15, "Poor");         case 3: format(ocenka, 15, "Average");         case 4: format(ocenka, 15, "Good");         case 5: format(ocenka, 15, "Perfect");     }     fnGreenChat(0,"%s For %s, this map is %s.",TAG,name,ocenka) } public ratesql(id,key) {     new steamid[32],name[32],ip[32]     get_user_authid(id,steamid,32)     get_user_name(id,name,32)     get_user_ip(id,ip,32,1)     new rate[15]     num_to_str(key,rate,12)     sql_connect();     new Handle:Queries = SQL_PrepareQuery(SqlConnection,"INSERT INTO rm_rates VALUES('%s','%s','%s','%s','%s','%s:%s')",steamid,name,ip,mapname,rate,g_szRateMap_ip,g_szRateMap_port)     switch(key)     {         case 1: format(rate, 15, "Terrible");         case 2: format(rate, 15, "Poor");         case 3: format(rate, 15, "Average");         case 4: format(rate, 15, "Good");         case 5: format(rate, 15, "Perfect");     }     fnGreenChat(0,"%s For %s, this map is %s.",TAG,name,rate)     if(!SQL_Execute(Queries))     {         SQL_QueryError(Queries,g_Error,511)         set_fail_state(g_Error)     }     SQL_FreeHandle(SqlConnection) } fnGreenChat( plr, const message[], {Float,Sql,Result,_}:... ) {     static max_players, svc_saytext;     if(!max_players)    max_players = get_maxplayers( );     if(!svc_saytext)    svc_saytext = get_user_msgid( "SayText" );     static msg[192]; msg[0] = 0x04;     vformat( msg[1], sizeof msg - 2, message, 3 );     if(1 <= plr <= max_players)     {         message_begin( MSG_ONE, svc_saytext, { 0, 0, 0 }, plr );         write_byte( plr );         write_string( msg );         message_end( );     }     else if( plr == 0 )     {         for( new i = 1 ; i <= max_players ; i++ )         {             if( is_user_connected( i ) )             {                 message_begin( MSG_ONE, svc_saytext, { 0, 0, 0 }, i );                 write_byte( i );                 write_string( msg );                 message_end( );             }         }     }     return 1; }


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

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