RSSy MYGO.pl Opublikowano Październik 29, 2021 o 17:52 RSSy Udostępnij Opublikowano Październik 29, 2021 o 17:52 can someone change this plugin to store info in a ini. file instead nvault? Spoiler PHP Code: /* Plugin generated by AMXX-Studio */ #include <amxmodx> #include <amxmisc> #include <nvault> #include <cstrike> #include <hamsandwich> #define PLUGIN "[JB] CT BAN" #define VERSION "1.3" #define AUTHOR "Natsheh" #define TASK_UNBANCT 876542 #define ADMIN_FLAG ADMIN_BAN #define set_flag(%1,%2) (%1 |= (1<<(%2&31))) #define remove_flag(%1,%2) (%1 &= ~(1<<(%2&31))) #define check_flag(%1,%2) (%1 & (1<<(%2&31))) new g_itemid; new g_CTBanned; new g_vault; public plugin_init() { register_plugin(PLUGIN, VERSION, AUTHOR) register_concmd("jb_banct", "concmd_banct", ADMIN_FLAG, "Ban a client from CT!"); RegisterHam(Ham_Spawn, "player", "fw_player_respawn_post", 1); register_clcmd("jb_banctmenu", "menuselected", ADMIN_FLAG, "Opens the ctban menu"); g_vault = nvault_open("jailbreak_ctban"); if(g_vault == INVALID_HANDLE) { set_fail_state("Error opening nVault!"); } } public plugin_end() { nvault_close(g_vault); } public fw_player_respawn_post(id) { if(get_user_team(id) == TEAM_GUARDS && check_flag(g_CTBanned,id)) { jointeam_ct(id) } } jointeam_ct(id) { new sAuthid[32]; get_user_authid(id, sAuthid, 31) engclient_cmd(id, "jointeam", "1") cs_set_user_team(id, CS_TEAM_T, CS_T_TERROR); if(is_user_alive(id)) user_kill(id); new sValue[64], timestmp; nvault_lookup(g_vault, sAuthid, sValue, charsmax(sValue), timestmp) new iValue = str_to_num(sValue); if(iValue) { Transfer_seconds(((iValue + timestmp) - get_systime()), sValue, charsmax(sValue)) cprint_chat(id, _, "^3Sorry^4, ^1But you are ^4banned ^1from the CT! ^3(^4Ban Lift : %s^3)", sValue) } else cprint_chat(id, _, "^3Sorry^4, ^1But you are ^4banned ^1from the CT! ^3(^4Ban Lift : Never^3)") } public client_putinserver(id) { if(is_user_bot(id)) return; check_CTBanned(id); } public client_disconnect(id) { if(is_user_bot(id)) return; if(task_exists(id+TASK_UNBANCT)) remove_task(id+TASK_UNBANCT) } check_CTBanned(id) { new sAuthid[32], sValue[16], iTimestamp; get_user_authid(id, sAuthid, charsmax(sAuthid)) if(nvault_lookup(g_vault, sAuthid, sValue, charsmax(sValue), iTimestamp)) { new iValue = str_to_num(sValue); if(!iValue) { set_flag(g_CTBanned,id); return; } new length = ((iTimestamp + iValue) - get_systime()); if( length <= 0 ) { nvault_remove(g_vault, sAuthid) } else { set_task(float(length), "task_unBanCT", id+TASK_UNBANCT) set_flag(g_CTBanned,id); return; } } remove_flag(g_CTBanned,id); } public task_unBanCT(const taskid) { new id = taskid - TASK_UNBANCT; new sAuthid[32]; get_user_authid(id, sAuthid, charsmax(sAuthid)) nvault_remove(g_vault, sAuthid) cprint_chat(id, _, "You are no longer banned from the CT!") new sName[32]; get_user_name(id, sName, charsmax(sName)) remove_flag(g_CTBanned,id); new players[32], pnum; get_players(players, pnum, "ch"); for(new i, player; i < pnum; i++) { player = players[i]; if(id != player) cprint_chat(player, _, "^4%s ^1is no longer ^3banned ^1from the CT!", sName) } remove_task(taskid); } public concmd_banct(id, level, cid) { if(!cmd_access(id, level, cid, 2)) return 1; new sTarget[32]; read_argv(1, sTarget, charsmax(sTarget)) new player = cmd_target(id, sTarget, CMDTARGET_NO_BOTS | CMDTARGET_OBEY_IMMUNITY); if(!player) return 1; new sLength[64]; read_argv(2, sLength, charsmax(sLength)) new iLength = str_to_num(sLength); if(iLength < 0 || !is_str_num(sLength)) { console_print(id, "Please add a positive length time (inSecond's) Or 0 - for permanent!") return 1; } new sAuthid[64]; get_user_authid(player, sAuthid, charsmax(sAuthid)) new bool:is_CTBanned = check_flag(g_CTBanned,player) ? true:false if(!is_CTBanned) { set_flag(g_CTBanned,player) nvault_set(g_vault, sAuthid, sLength) if(iLength > 0) { set_task(float(iLength), "task_unBanCT", player+TASK_UNBANCT) Transfer_seconds(iLength, sAuthid, charsmax(sAuthid)) } if(get_user_team(player) == TEAM_GUARDS) { jointeam_ct(player) } } else { remove_flag(g_CTBanned,player); nvault_remove(g_vault, sAuthid) } is_CTBanned = check_flag(g_CTBanned,player) ? true:false new sName[32], sAdminname[32]; get_user_name(id, sAdminname, charsmax(sAdminname)) get_user_name(player, sName, charsmax(sName)) formatex(sLength, charsmax(sLength), "^4Ban Lift: %s ", iLength ? sAuthid:"Never") cprint_chat(0, _, "^4%s ^1has been %s ^1from the CT %s^1By ADMIN ^3%s!", sName, is_CTBanned ? "^3Banned":"^4unBanned", is_CTBanned ? sLength:"", sAdminname) formatex(sLength, charsmax(sLength), " LENGTH: %s", iLength ? sAuthid:"Permanent") log_amx("ADMIN %s HAS %s %s FROM THE CT%s!", sAdminname, is_CTBanned ? "^3Banned":"^4unBanned", sName, is_CTBanned ? sLength:"") return 1; } public menuselected(id) { if(!(get_user_flags(id) & ADMIN_FLAG)) { cprint_chat(id, _, "you have no access to use this menu!") return; } CTBan_show_menu(id) } public CTBan_show_menu(id) { new menu = menu_create("~[ CT Ban ]~ Choose a player!", "CTBan_menu_handler") new players[32], pnum; get_players(players, pnum, "ch") for(new i,player, sText[64], sPName[32]; i < pnum; i++) { player = players[i]; get_user_name(player, sPName, charsmax(sPName)) if(get_user_flags(player) & ADMIN_IMMUNITY) formatex(sText, charsmax(sText), "\r* \d%s", sPName) else formatex(sText, charsmax(sText), "%s%s", check_flag(g_CTBanned,player) ? "\r":"\w", sPName) num_to_str(player, sPName, charsmax(sPName)) menu_additem(menu, sText, sPName, 0) } menu_display(id, menu) } Transfer_seconds(Seconds, string[], len) { if(Seconds < 0) return 0; new hours = floatround(Seconds / 3600.0, floatround_floor), iLen Seconds -= hours * 3600; new sString[64] if(hours) { iLen = formatex(sString, charsmax(sString), "%d Hour%s, ", hours, hours > 1 ? "s":""); } new minutes = floatround(Seconds / 60.0, floatround_floor); Seconds -= minutes * 60; if(minutes) { iLen += formatex(sString[iLen], charsmax(sString), "%d Minute%s, ", minutes, minutes > 1 ? "s":""); } iLen += formatex(sString[iLen], charsmax(sString), "%d Second%s.", Seconds, Seconds > 1 ? "s":""); copy(string, len, sString); return 1; } public CTBan_menu_handler(id, menu, item) { if(item == MENU_EXIT) { menu_destroy(menu) return; } new paccess, sData[16], Callback; menu_item_getinfo(menu, item, paccess, sData, charsmax(sData), "", 0, Callback) // destroying the menu after we got what we need! menu_destroy(menu) new player = str_to_num(sData); if(!is_user_connected(player)) { client_print(id, print_center, "The Player is not connected!") CTBan_show_menu(id) return; } if(get_user_flags(player) & ADMIN_IMMUNITY) { client_print(id, print_center, "The Player has immunity!") CTBan_show_menu(id) return; } client_cmd(id, "jb_banct ^"#%d^" ^"0^"", get_user_userid(player)) set_task(0.5, "CTBan_show_menu", id) } Przeczytaj cały wpis Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi