Mam pytanie jak zapisać czas gracza do zmiennej a potem jak go odczytać z tej zmiennej ?
Zrobiłem taki kod od razu z zapisem mysql
Do bazy zapisuje ,tworzy tabelke itp ale jak wbijam na serwer zeruje mi się zmienna Czas_Gracza[id]
Oto moje wypociny
Spoiler
/* Plugin generated by AMXX-Studio */ #include <amxmodx> #include <cstrike> #include <colorchat> #include <sqlx> #define PLUGIN "Czas_Online" #define VERSION "1.0" #define AUTHOR "speedkill" #define prefix "Online_Time" new chce[33] new Czas_Gracza[33] //sql new name[64]; new Handle:g_SqlTuple; new bool:WczytaneDane[33] = {false}; public plugin_init() { register_plugin(PLUGIN, VERSION, AUTHOR) register_clcmd("say /on_time","on") register_clcmd("say /off_time","off") set_task(90.0,"info",_,_,_,"b") register_clcmd("say /zmienna","test") register_cvar("amx_time_host", "localhost") register_cvar("amx_time_user", "root") register_cvar("amx_time_pass", "root") register_cvar("amx_time_db", "db") set_task(1.0, "polacz") } public polacz() { new Host[32], User[32], Pass[32], DB[32] get_cvar_string("amx_time_host", Host, 31) get_cvar_string("amx_time_user", User, 31) get_cvar_string("amx_time_pass", Pass, 31) get_cvar_string("amx_time_db", DB, 31) g_SqlTuple = SQL_MakeDbTuple(Host,User,Pass,DB) new error, szError[128] new Handle:hConn = SQL_Connect(g_SqlTuple,error,szError, 127) if(error){ log_amx("Error: %s", szError) return; } new Handle:Queries = SQL_PrepareQuery(hConn,"CREATE TABLE IF NOT EXISTS `Times` (name VARCHAR(64) NOT NULL, czas INT(10) NOT NULL DEFAULT 0, PRIMARY KEY(name))") SQL_Execute(Queries) SQL_FreeHandle(Queries) SQL_FreeHandle(hConn) } public client_connect(id) { Czas_Gracza[id] = 0 WczytaneDane[id] = false load(id) } public client_disconnect( id ) { save(id) } public plugin_end() { SQL_FreeHandle(g_SqlTuple); } public client_putinserver(id) { set_task(1.0,"Czas",id,_,_,"b"); } public Czas(id) { if(chce[id]) { if(cs_get_user_team(id) == CS_TEAM_CT || cs_get_user_team(id) == CS_TEAM_T) { new x new sekundy new minuty new godziny x = getPlayedTime(id) sekundy = x%60 minuty = x/60 godziny = x/(60*60) set_hudmessage(127, 255, 127, 0.5, 0.1, 0, 6.0, 1.0) show_hudmessage(id, "%d:%d:%d",godziny,minuty,sekundy) } } } public on(id) { ColorChat(id,NORMAL,"^x03[^x04%s^x03]^x04 Wlaczyles Pokazywanie Czasu.",prefix) chce[id] = true } public off(id) { ColorChat(id,NORMAL,"^x03[^x04%s^x03]^x04 Wylaczyles Pokazywanie Czasu.",prefix) chce[id] = false } public info() { switch(random_num(1, 2)) { case 1: { ColorChat(0,GREEN,"^x04[^x03%s^x04]^x04 Cos Cos Cos <img src='https://amxx.pl/public/style_emoticons/<#EMO_DIR#>/biggrin.png' class='bbc_emoticon' alt=':D' />",prefix) } case 2: { ColorChat(0,GREEN,"^x04[^x03%s^x04]^x03 say /off_time - Wylaczenie Pokazywania sie czasu ^x04||^x03 say /on_time Wlaczenie Pokazywania sie czasu",prefix) } } } public test(id) { ColorChat(id,NORMAL,"^x03[^x04%s^x03]^x04 Zmienna wynosi %d.",prefix,getPlayedTime(id)) } //Z deathrun_stats <img src='https://amxx.pl/public/style_emoticons/<#EMO_DIR#>/tongue.png' class='bbc_emoticon' alt=':P' /> getPlayedTime(id){ return Czas_Gracza[id] + get_user_time(id, 1); } //Koniec z deargrun_stats public load(id) { new name[64], szTemp[512]; get_user_name(id, name, 63); replace_all(name, 63, "'", "\'"); replace_all(name, 63, "`", "\`"); new data[1]; data[0] = id; formatex(szTemp,charsmax(szTemp),"SELECT * FROM `Times` WHERE `name` = '%s'", name); SQL_ThreadQuery(g_SqlTuple,"register_client",szTemp, data, sizeof(data)); } public register_client(failstate, Handle:query, error[],errcode, data[], datasize) { if(failstate != TQUERY_SUCCESS){ log_amx("<Query> Error: %s", error); return; } new id = data[0]; if(!is_user_connected(id) && !is_user_connecting(id)) return; if(SQL_NumRows(query)) { SQL_ReadResult(query,SQL_FieldNameToNum(query,"name"), name, 63); Czas_Gracza[id] = SQL_ReadResult(query, SQL_FieldNameToNum(query,"czas")); WczytaneDane[id] = true; } else { new name[64]; get_user_name(id, name, 63); replace_all(name, 63, "'", "\'"); replace_all(name, 63, "`", "\`"); new szTemp[512], data[1]; data[0] = id; formatex(szTemp,charsmax(szTemp),"INSERT INTO `Times` (`name`, `czas`) VALUES ('%s','%d')", name, getPlayedTime(id)); SQL_ThreadQuery(g_SqlTuple,"IgnoreHandleInsert",szTemp,data, 1); } } public save(id) { if(!WczytaneDane[id]) { load(id); return PLUGIN_HANDLED; } new szTemp[512]; new name[64]; get_user_name(id, name, 63); replace_all(name, 63, "'", "\'"); replace_all(name, 63, "`", "\`"); formatex(szTemp,charsmax(szTemp),"UPDATE `Times` SET `czas` = '%d' WHERE `name` = '%s'",getPlayedTime(id), name); SQL_ThreadQuery(g_SqlTuple,"IgnoreHandleSave",szTemp); return PLUGIN_CONTINUE; } public IgnoreHandleInsert(failstate, Handle:query, error[], errnum, data[], size){ if(failstate != TQUERY_SUCCESS){ log_amx("<Query> Error: %s", error); return; } WczytaneDane[data[0]] = true; } public IgnoreHandleSave(failstate, Handle:query, error[], errnum, data[], size){ if(failstate != TQUERY_SUCCESS){ log_amx("<Query> Error: %s", error); return; } }
Jakby ktoś mógł napisać gdzie jest błąd
Z góry dziękuje </Query></Query></Query></sqlx></colorchat></cstrike></amxmodx>
Użytkownik speedkill123 edytował ten post 19.11.2011 10:09