Member
|
03-20-2011
, 08:19
Re: [MySQL] Strange problem with reconnect
|
#17
|
Quote:
Originally Posted by Sylwester
It's hard to say what is the problem without full code.
|
Here you are the latest attempt code:
First the variables:
PHP Code:
//MySQL Variables new Handle:Sql_Tuple, must_save[33]
Load and save:
PHP Code:
public mysql_connect() { Sql_Tuple = SQL_MakeStdTuple( ) if(Sql_Tuple == Empty_Handle) { set_fail_state( "MySQL Connection Problem" ) } SQL_ThreadQuery( Sql_Tuple, "create_table", "CREATE TABLE IF NOT EXISTS `mpum` ( nick VARCHAR(32) NOT NULL PRIMARY KEY, ptz INT(11) NOT NULL, speed INT(11) NOT NULL, gravity INT(11) NOT NULL, invisibility INT(11) NOT NULL, health INT(11) NOT NULL, armor INT(11) NOT NULL, idd INT(11) NOT NULL, iua INT(11) NOT NULL, iaf INT(11) NOT NULL, ip VARCHAR(15) NOT NULL );") }
public create_table(plFailState, Handle:myQuery, plError[ ], plErrorCode, plData[ ], plDataSize[ ], Float:plQueueTime) { switch(plFailState) { case TQUERY_CONNECT_FAILED: { log_amx("[MPUM] Ne uspqh da se svurja, za da suzdam tablicata! (%i): %s", plErrorCode, plError) } case TQUERY_QUERY_FAILED: { log_amx("[MPUM] Greshka sus zaqvkata za suzdavane na tablica! (%i): %s", plErrorCode, plError) } } }
public Load_MySql(id) { new Query[512], Data[10], Nick[32] get_user_name(id, Nick, 31) replace_all(Nick,31,"^"^^^"","6") replace_all(Nick,31,"*","8") replace_all(Nick,31,":","0") replace_all(Nick,31,"-","4") replace_all(Nick,31,"=","5") replace_all(Nick,31,">","7") replace_all(Nick,31,"<","1") replace_all(Nick,31,"?","3") replace_all(Nick,31,"'","2") Data[0] = id formatex(Query,charsmax(Query),"SELECT * FROM `mpum` WHERE (`mpum`.`nick` = '%s')", Nick) SQL_ThreadQuery(Sql_Tuple,"save_new_user", Query, Data, sizeof(Data)) }
public save_new_user(plFailState, Handle:myQuery, plError[ ], plErrorCode, plData[ ], plDataSize[ ], Float:plQueueTime) { switch(plFailState) { case TQUERY_CONNECT_FAILED: { log_amx("[MPUM] Ne uspqh da se svurja, za da dobavq nov igrach v tablicata! (%i): %s", plErrorCode, plError) } case TQUERY_QUERY_FAILED: { log_amx("[MPUM] Greshka sus zaqvkata za dobavqna na igrach v tablicata! (%i): %s", plErrorCode, plError) } } new id = plData[0] if(SQL_NumResults(myQuery) < 1) { new Nick[32], ip[15] get_user_name(id, Nick, charsmax(Nick)) replace_all(Nick,31,"^"^^^"","6") replace_all(Nick,31,"*","8") replace_all(Nick,31,":","0") replace_all(Nick,31,"-","4") replace_all(Nick,31,"=","5") replace_all(Nick,31,">","7") replace_all(Nick,31,"<","1") replace_all(Nick,31,"?","3") replace_all(Nick,31,"'","2") get_user_ip(id, ip, charsmax(ip), 0) new Query[512] formatex(Query, charsmax(Query), "INSERT INTO `mpum` (`nick` , `ptz` , `speed` , `gravity` , `invisibility` , `health` , `armor` , `idd` , `iua` , `iaf` , `ip`) VALUES('%s', '0', '0', '0', '0', '0', '0', '0', '0', '0', '%s');", Nick, ip) SQL_ThreadQuery(Sql_Tuple, "IgnoreHandle", Query) iPtz[id] = 0 for(new p=0;p<sizeof(power_name);p++) { power_level[id][p] = 0 } for(new i=0;i<sizeof(item_name);i++) { item_level[id][i] = 0 } } else { iPtz[id] = SQL_ReadResult(myQuery, 1) power_level[id][0] = SQL_ReadResult(myQuery, 2) power_level[id][1] = SQL_ReadResult(myQuery, 3) power_level[id][2] = SQL_ReadResult(myQuery, 4) power_level[id][3] = SQL_ReadResult(myQuery, 5) power_level[id][4] = SQL_ReadResult(myQuery, 6) item_level[id][0] = SQL_ReadResult(myQuery, 7) item_level[id][1] = SQL_ReadResult(myQuery, 8) item_level[id][2] = SQL_ReadResult(myQuery, 9) } must_save[id] = true return PLUGIN_HANDLED }
public save_user_information(id) { new Nick[32], ip[15] get_user_name(id, Nick, 31) replace_all(Nick,31,"^"^^^"","6") replace_all(Nick,31,"*","8") replace_all(Nick,31,":","0") replace_all(Nick,31,"-","4") replace_all(Nick,31,"=","5") replace_all(Nick,31,">","7") replace_all(Nick,31,"<","1") replace_all(Nick,31,"?","3") replace_all(Nick,31,"'","2") get_user_ip(id, ip, charsmax(ip), 0) new Query[512] formatex(Query, charsmax(Query), "UPDATE `mpum` SET ptz='%i', speed='%i', gravity='%i', invisibility='%i', health='%i', armor='%i', idd='%i', iua='%i', iaf='%i', ip='%s' WHERE nick='%s';", iPtz[id], power_level[id][0], power_level[id][1], power_level[id][2], power_level[id][3], power_level[id][4], item_level[id][0], item_level[id][1], item_level[id][2], ip, Nick) SQL_ThreadQuery(Sql_Tuple, "IgnoreHandle", Query) }
public IgnoreHandle(plFailState, Handle:myQuery, plError[ ], plErrorCode, plData[ ], plDataSize[ ], Float:plQueueTime) { SQL_FreeHandle(myQuery) return PLUGIN_HANDLED }
public plugin_end() { SQL_FreeHandle(Sql_Tuple) return PLUGIN_HANDLED }
Events:
PHP Code:
public client_putinserver(id) { iPtz[id] = 0 for(new p=0;p<sizeof(power_name);p++) { power_level[id][p] = 0 } for(new i=0;i<sizeof(item_name);i++) { item_level[id][i] = 0 } Load_MySql(id) }
public client_disconnect(id) { if(must_save[id]) { save_user_information(id) must_save[id] = false } iPtz[id] = 0 for(new p=0;p<sizeof(power_name);p++) { power_level[id][p] = 0 } for(new i=0;i<sizeof(item_name);i++) { item_level[id][i] = 0 } }
public client_infochanged(id) { new OldName[32], NewName[32] get_user_name(id, OldName, charsmax(OldName)) get_user_info(id, "name", NewName, charsmax(NewName)) if(!equali(OldName, NewName)) { replace_all(OldName,31,"^"^^^"","6") replace_all(OldName,31,"*","8") replace_all(OldName,31,":","0") replace_all(OldName,31,"-","4") replace_all(OldName,31,"=","5") replace_all(OldName,31,">","7") replace_all(OldName,31,"<","1") replace_all(OldName,31,"?","3") replace_all(OldName,31,"'","2") replace_all(NewName,31,"^"^^^"","6") replace_all(NewName,31,"*","8") replace_all(NewName,31,":","0") replace_all(NewName,31,"-","4") replace_all(NewName,31,"=","5") replace_all(NewName,31,">","7") replace_all(NewName,31,"<","1") replace_all(NewName,31,"?","3") replace_all(NewName,31,"'","2") new Query[512] formatex(Query, charsmax(Query), "UPDATE `mpum` SET ptz='%i', speed='%i', gravity='%i', invisibility='%i', health='%i', armor='%i', idd='%i', iua='%i', iaf='%i' WHERE nick='%s';", iPtz[id], power_level[id][0], power_level[id][1], power_level[id][2], power_level[id][3], power_level[id][4], item_level[id][0], item_level[id][1], item_level[id][2], OldName) SQL_ThreadQuery(Sql_Tuple, "IgnoreHandle", Query) iPtz[id] = 0 for(new p=0;p<sizeof(power_name);p++) { power_level[id][p] = 0 } for(new i=0;i<sizeof(item_name);i++) { item_level[id][i] = 0 } Load_MySql(id) } }
And in plugin_init:
PHP Code:
set_task(0.1, "mysql_connect")
This is the full code. I'll be very happy if you help me .
|
|