Offline |
|
|
Csatlakozott:2013.01.15. 19:04 Hozzászólások:407 Megköszönt másnak: 17 alkalommal Megköszönték neki: 176 alkalommal
|
MYSQL adatbázisba mentés: #include <amxmodx> #include <sqlx> #define PLUGIN "New Plug-In" #define VERSION "1.0" #define AUTHOR "Demon" #pragma semicolon 1 #define VIP_JOG "o" new const SQL_INFO[][] = { "", // HOST "", // USERNAME "", // PASSWORD "" // DATABASE }; new const TABLE[] = "online_time"; new Handle:g_SqlTuple; new online_time[33], connect_time[33]; public plugin_init() { register_plugin(PLUGIN, VERSION, AUTHOR); } public client_putinserver(id) { online_time[id] = connect_time[id] = 0; if(!is_user_bot(id) && !is_user_hltv(id)) { connect_time[id] = get_user_time(id, 1); Load(id); } } public client_disconnect(id) { if(!is_user_bot(id) && !is_user_hltv(id)) Update(id); } public calc_user_otime(id) { online_time[id] += (get_user_time(id, 1) - connect_time[id]); } public Load(id) { new Query[128], Data[1], name[32]; Data[0] = id; get_user_name(id, name, 31); formatex(Query, charsmax(Query), "SELECT * FROM `%s` WHERE username = ^"%s^";", TABLE, name); SQL_ThreadQuery(g_SqlTuple, "QuerySelectData", Query, Data, 1); } public QuerySelectData(FailState, Handle:Query, Error[], Errcode, Data[], DataSize, Float:Queuetime) { if(FailState == TQUERY_CONNECT_FAILED || FailState == TQUERY_QUERY_FAILED) { log_amx("%s", Error); return; } else { new id = Data[0]; if(SQL_NumRows(Query) > 0) { online_time[id] = SQL_ReadResult(Query, SQL_FieldNameToNum(Query, "online_time")); if(!(get_user_flags(id) & ADMIN_KICK)) { if(online_time[id] >= (4 * 3600)) // 4 ora set_user_flags(id, read_flags("c")); else if(online_time[id] >= (2 * 3600)) // 2 ora set_user_flags(id, read_flags(VIP_JOG)); } } else Save(id); } } public Save(id) { new Query[128], name[32]; get_user_name(id, name, 31); formatex(Query, sizeof(Query) - 1,"INSERT INTO `%s` (`username`, `online_time`) VALUES ('%s','0');", TABLE, name); SQL_ThreadQuery(g_SqlTuple, "QuerySetData", Query); } public Update(id) { new Query[128], name[32]; get_user_name(id, name, 31); calc_user_otime(id); formatex(Query, sizeof(Query) - 1,"UPDATE `%s` SET `online_time`='%d' WHERE `username` = '%s';", TABLE, online_time[id], name); SQL_ThreadQuery(g_SqlTuple, "QuerySetData", Query); } public QuerySetData(FailState, Handle:Query, Error[], Errcode, Data[], DataSize, Float:Queuetime) { if(FailState == TQUERY_CONNECT_FAILED || FailState == TQUERY_QUERY_FAILED) { log_amx("%s", Error); return; } } public plugin_cfg() { static Query[2000]; g_SqlTuple = SQL_MakeDbTuple(SQL_INFO[0],SQL_INFO[1],SQL_INFO[2],SQL_INFO[3]); formatex(Query, sizeof(Query) - 1,"CREATE TABLE IF NOT EXISTS `%s` (`username` varchar(32) NOT NULL, `online_time` INT(11) NOT NULL,`id` INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY);", TABLE); SQL_ThreadQuery(g_SqlTuple,"createTableThread", Query); } public createTableThread(FailState, Handle:Query, Error[], Errcode, Data[], DataSize, Float:Queuetime) { if(FailState == TQUERY_CONNECT_FAILED) set_fail_state("Nem tudtam csatlakozni az adatbazishoz."); else if(FailState == TQUERY_QUERY_FAILED) set_fail_state("Query Error"); if(Errcode) log_amx("Hibat dobtam: %s",Error); } public plugin_end() { SQL_FreeHandle(g_SqlTuple); }
Fájlba mentés: #include <amxmodx> #include <amxmisc> #define PLUGIN "New Plug-In" #define VERSION "1.0" #define AUTHOR "Demon" #pragma semicolon 1 #define VIP_JOG "o" new online_time[33], connect_time[33]; public plugin_init() { register_plugin(PLUGIN, VERSION, AUTHOR); } public client_putinserver(id) { online_time[id] = connect_time[id] = 0; if(!is_user_bot(id) && !is_user_hltv(id)) { connect_time[id] = get_user_time(id, 1); Load(id); } } public client_disconnect(id) { if(!is_user_bot(id) && !is_user_hltv(id)) Save(id); } public calc_user_otime(id) { online_time[id] += (get_user_time(id, 1) - connect_time[id]); } public Save(id) { new file[200]; get_configsdir(file, 199); format(file, 199, "%s/played_time.ini", file); if (!file_exists(file)) write_file(file, "; Jatszott ido masodpercben"); new pFile, linetoadd[128]; pFile = fopen(file, "rt"); if(pFile) { new sName[32], sName2[32], bool:Found; get_user_name(id, sName, 31); new Line[192], Lines; calc_user_otime(id); while(!feof(pFile) && !Found) { fgets(pFile, Line, 191); if(Line[0] == ';' || !strlen(Line)) { Lines++; continue; } parse(Line, sName2, 31); if(equal(sName, sName2)) { formatex(linetoadd, 127, "^"%s^" ^"%d^"", sName, online_time[id]); write_file(file, linetoadd, Lines); Found = true; break; } Lines++; } if(!Found) { formatex(linetoadd, 127, "^"%s^" ^"%d^"", sName, online_time[id]); write_file(file, linetoadd); } fclose(pFile); } return PLUGIN_HANDLED; } public Load(id) { new file[200]; get_configsdir(file, 199); format(file, 199, "%s/played_time.ini", file); if (!file_exists(file)) return PLUGIN_HANDLED; new pFile; pFile = fopen(file, "rt"); if(pFile) { new Line[192]; new sName[32], sName2[32], sTime[8]; get_user_name(id, sName, 31); while(!feof(pFile)) { fgets(pFile, Line, 191); if(Line[0] == ';' || strlen(Line) < 10) continue; parse(Line, sName2, 31, sTime, 7); if(equal(sName, sName2)) { online_time[id] = str_to_num(sTime); if(!(get_user_flags(id) & ADMIN_KICK)) { if(online_time[id] >= (4 * 3600)) // 4 ora set_user_flags(id, read_flags("c")); else if(online_time[id] >= (2 * 3600)) // 2 ora set_user_flags(id, read_flags(VIP_JOG)); } break; } } fclose(pFile); } return PLUGIN_HANDLED; }
Csatlakozáskor ellenőrzi, hogy van-e a játékosnak elegendő játszott ideje, ha van kiossza neki a megfelelő jogot.
Ők köszönték meg demon nek ezt a hozzászólást: koko.988 (2016.04.22. 14:36) |
|
|