KinD | Дата: Четверг, 07.03.2013, 00:52 | Сообщение # 2 |
- Сообщения: 1148
- Награды: 22
- Замечания:
|
Код #include <amxmodx> #pragma tabsize 0 #define BAN_FILE "addons/amxmodx/configs/ban_list.ini" new Array:Name_ban; // Ник new Array:STEAM_ID_ban; // STEAM_ID new Array:IP_ban; // IP new Array:Reason; // Причина new Count = 0 new reason_ban[33];
new const REASON[][] = { "ВХ", "Speed Hack", "Идиот", "Аим", "Выйти из меню" }
public plugin_init() { register_plugin("New ban system", "1.0", "daywer") register_clcmd("ban_me","banan") register_clcmd("ban_menu","show_ban_menu") set_task(0.1,"load_ban") }
public show_ban_menu(id) { if(!is_user_connected(id)) return; if(!(get_user_flags(id) & ADMIN_LEVEL_H)) return; new title_msg[125] if(reason_ban[id]==4) { formatex(title_msg,charsmax(title_msg),"Выбрать игрока") } else { formatex(title_msg,charsmax(title_msg),"Выбрать игрока ^nПричина : %s ",REASON[reason_ban[id]]) } new Menu = menu_create(title_msg, "ban_handler") new Players[32], i_Num, Player
new name[50], s_Player[10]
get_players(Players, i_Num)
for (new i; i < i_Num; i++) { new msg_additem[70] Player = Players [i]get_user_name(Player, name, charsmax(name)) num_to_str(Player, s_Player, charsmax(s_Player)) if(get_user_flags(Player) & ADMIN_IMMUNITY) formatex(msg_additem,charsmax(msg_additem),"\r[Имунитет]%s",name) else formatex(msg_additem,charsmax(msg_additem),"\w%s",name) if(id !=Player) menu_additem(Menu, msg_additem, s_Player, 0) } new msg[75] if(reason_ban [id]== 4) { formatex(msg,charsmax(msg),"%s",REASON[reason_ban[id]]) } else { formatex(msg,charsmax(msg),"%s",REASON[reason_ban[id]+1]) } client_print(id,print_chat,"You display menu") menu_setprop(Menu, MPROP_EXITNAME, msg) menu_display(id, Menu, 0) }
public ban_handler(id, menu, item) { if (item == MENU_EXIT) { if(reason_ban[id]==4) { reason_ban [id]= 0; menu_destroy( menu ); return PLUGIN_HANDLED } else { reason_ban [id]+= 1; show_ban_menu(id) } }
new s_Data[6], s_Name[64], i_Access, i_Callback menu_item_getinfo(menu, item, i_Access, s_Data, charsmax(s_Data), s_Name, charsmax(s_Name), i_Callback)
new Player = str_to_num(s_Data)
if(!is_user_connected(Player)) return PLUGIN_HANDLED; if (is_user_connected(Player)) { if(get_user_flags(Player) & ADMIN_IMMUNITY) { client_print(id,print_chat,"У данного игрока имунитет!") } else { ban_player(Player,REASON[reason_ban[id]]) } }
menu_destroy(menu) return PLUGIN_HANDLED }
public plugin_precache() { Name_ban = ArrayCreate(128, 1); STEAM_ID_ban = ArrayCreate(128, 1); IP_ban = ArrayCreate(128, 1); Reason = ArrayCreate(128, 1); }
public banan(id) { new msg[100] formatex(msg,charsmax(msg),"Аим") ban_player(id,msg) }
public client_connect( id ) { new name[46],ip[23],steam_id[40]; get_user_ip(id, ip, 22,1) get_user_name(id,name,45) get_user_authid(id,steam_id,39) for (new i = 0; i < Count; i++) { new Ban_name[46],Ban_ip[23],Ban_steam_id[40],Reas[70]; ArrayGetString(Name_ban,i, Ban_name, charsmax(Ban_name)); ArrayGetString(STEAM_ID_ban,i, Ban_steam_id, charsmax(Ban_steam_id)); ArrayGetString(IP_ban,i, Ban_ip, charsmax(Ban_ip)); if(equali(name,Ban_name)) { ArrayGetString(Reason,i, Reas, charsmax(Reas)); server_cmd("kick #%d ^"%s^"", get_user_userid(id),Reas) break; } if(equali(Ban_steam_id,steam_id)) { ArrayGetString(Reason,i, Reas, charsmax(Reas)); server_cmd("kick #%d ^"%s^"", get_user_userid(id),Reas) break; } if(equali(Ban_ip,ip)) { ArrayGetString(Reason,i, Reas, charsmax(Reas)); server_cmd("kick #%d ^"%s^"", get_user_userid(id),Reas) break; } } reason_ban [id]= 0; }
stock ban_player(index,reason[]) { if(!is_user_connected(index)) return new name[46],ip[23],steam_id[40]; get_user_ip(index, ip, 22,1) get_user_name(index,name,45) get_user_authid(index,steam_id,39) new msg[250] formatex(msg,charsmax(msg),"^"%s^" ^"%s^" ^"%s^" ^"%s^"",name,steam_id,ip,reason) write_file(BAN_FILE,msg,-1) server_cmd("amx_ban #%d 1 ^"Reason: %s!^"", get_user_userid(index),reason) set_task(10.0,"load_ban") } public load_ban() { new File=fopen(BAN_FILE,"r"); new Counts = 0 if (File) { new Text[1024]; new Name[44]; new STEAM_ID[40] new IP[40] new Reasons[100] while (!feof(File)) { fgets(File,Text,sizeof(Text)-1); trim(Text); if (Text[0]==';') { continue; } Name[0]=0; parse(Text,Name,sizeof(Name)-1,STEAM_ID,charsmax(STEAM_ID),IP,charsmax(IP),Reasons,charsmax(Reasons)) ArrayPushString(Name_ban, Name); ArrayPushString(STEAM_ID_ban, STEAM_ID); ArrayPushString(IP_ban, IP); ArrayPushString(Reason, Reasons);
Counts++; } Count = Counts fclose(File); } } Бан идет по 3 параметрам(если любое совпадает,то игрок не зайдет).
Skype:daywerok
|
|
| |
240SX | Дата: Четверг, 07.03.2013, 00:55 | Сообщение # 3 |
- Сообщения: 21
- Награды: 0
- Замечания:
|
Самое действенное amx_slap ___НИК УТЫРКА___ в каждом начале раунда. Результат: Утырок просто сидит и глядит как другие играют,ну может грозить задосить серв,но тут можно ему и гадости понаговорить. Добавлено (07.03.2013, 00:55) --------------------------------------------- А еще если ваш сервер не находится в мониторинге,вы можете установить себе ломалку CS,но учтите,что многие мониторинги запрещяют этот метод.
|
|
| |