Witam,
Może mi ktos powiedzieć co jest nie tak w tym zapisie? Chodzi oto, że niektórym użytkownikom usuwa punkty, które zdobyli (nie zawsze, ale czasem, zazwyczaj następnego dnia znikają)
Wszystko zapisuje normalnie, ale niektórym graczom po prostu znikają te punkty co jakiś czas (zerują się)
plugn_init
public plugin_init() { /* JAKIŚ TA KOD*/ g_SqlTuple = SQL_MakeDbTuple("HOST","LOGIN","HASŁO","NAZWA_BAZY") if(g_SqlTuple == Empty_Handle) set_fail_state("Nie mozna utworzyc uchwytu do polaczenia."); new iErr, szError[32]; new Handle:link = SQL_Connect(g_SqlTuple, iErr, szError, 31); if(link == Empty_Handle){ log_amx("Error (%d): %s", iErr, szError); set_fail_state("Brak polaczenia z baza danych"); } new Handle:query; query = SQL_PrepareQuery(link, "CREATE TABLE IF NOT EXISTS `BBB` ( \ `id` int(5) NOT NULL auto_increment, \ `nick` varchar(36) NOT NULL, \ `punkty` INT(11) NOT NULL DEFAULT 0, \ PRIMARY KEY (`id`) \ )"); SQL_Execute(query); SQL_FreeHandle(query); }
plugin_end
public plugin_end() SQL_FreeHandle(g_SqlTuple);
client_putinserver
public client_putinserver(id) { player_points[id] = 0; wczytane_dane[id] = false; get_user_name(id, gNick[id], 32); formatex(gQuery, charsmax(gQuery), "SELECT * FROM `BBB` WHERE `nick` = ^"%s^" ORDER BY `id` LIMIT 1", gNick[id]); new ids[1]; ids[0] = id; SQL_ThreadQuery(g_SqlTuple, "handleLoadData", gQuery, ids, 1); }
client_disconnect
public client_disconnect(id) { if(!wczytane_dane[id]) return; formatex(gQuery, charsmax(gQuery), "UPDATE `BBB` SET `punkty` = %d WHERE `nick` = ^"%s^"", player_points[id], gNick[id]); SQL_ThreadQuery(g_SqlTuple, "handleStandard", gQuery); player_points[id] = 0; }
Reszta
public handleLoadData(failstate, Handle:query, error[], errnum, data[], size){ if(failstate != TQUERY_SUCCESS){ log_amx("SQL Load error: %s",error); return; } new id = data[0]; if(!is_user_connected(id)) return; if(SQL_MoreResults(query)) { player_points[id] = SQL_ReadResult(query, 2); } else { formatex(gQuery, charsmax(gQuery), "INSERT INTO `BBB` (`nick`) VALUES (^"%s^")", gNick[id]); SQL_ThreadQuery(g_SqlTuple, "handleStandard", gQuery); } wczytane_dane[id] = true; } public handleStandard(failstate, Handle:query, error[], errnum, data[], size) { if(failstate != TQUERY_SUCCESS) { log_amx("SQL Insert error: %s",error); return; } }
Użytkownik Qes edytował ten post 13.09.2016 15:43