#include #include #include #include #include #include #include #include #define PLUGIN "Jail Menu" #define VERSION "1.0.6" #define AUTHOR "Cypis" new bool:menu_mikro, bool:menu_walka; new w_trakcie[33]; new g_menuPosition[33] new g_menuPlayers[33][32] new g_menuPlayersNum[33] new g_menuOption[33] #define MAX_CLCMDS 24 new g_coloredMenus new g_cstrike = 0 public plugin_natives() { set_module_filter("module_filter") set_native_filter("native_filter") } public plugin_init() { register_plugin(PLUGIN, VERSION, AUTHOR) register_event("Damage", "Damage", "b", "2!=0"); register_event("ResetHUD", "SpawnPlayer", "be") register_clcmd("+revision", "wlacz_rewizje"); register_clcmd("-revision", "wylacz_rewizje"); register_clcmd("say /menu", "MenuGraczy"); register_dictionary("common.txt") register_dictionary("admincmd.txt") register_dictionary("plmenu.txt") register_cvar("amx_teammenuspawn", "1") register_menucmd(register_menuid("Team Menu"), 1023, "actionTeamMenu") g_coloredMenus = colored_menus() if (module_exists("cstrike")) g_cstrike = 1 } public plugin_precache() { precache_sound("weapons/c4_disarm.wav"); precache_sound("weapons/c4_disarmed.wav"); } public SpawnPlayer(id) { w_trakcie[id] = 0; remove_task(5000+id); } public MenuGraczy(id) { if(!is_user_alive(id)) { MenuGraczaNieZywego(id); return PLUGIN_HANDLED; } switch(get_user_team(id)) { case 1: MenuGraczaTT(id); case 2: MenuGraczaCT(id); } return PLUGIN_HANDLED; } public MenuGraczaTT(id) { new menu = menu_create("Menu Wieznia:", "Handel_Menu"); menu_additem(menu, "Czapki", "3"); menu_additem(menu, "Kradnij Bron", "4"); menu_additem(menu, "Regulamin", "0"); menu_additem(menu, "Zasady Gier", "1"); menu_additem(menu, "Komendy", "2"); menu_setprop(menu, MPROP_EXITNAME, "Wyjdz"); menu_display(id, menu); } public MenuGraczaCT(id) { new menu = menu_create("Menu Straznika:", "Handel_Menu"); new cb = menu_makecallback("Menu_Callback"); menu_additem(menu, "Prowadz", "6", 1, cb); menu_additem(menu, "Przeszukaj Wieznia","5"); menu_additem(menu, "Otworz Cele", "7", 2, cb); menu_additem(menu, "Tryb Walki", "8", 3, cb); menu_additem(menu, "Mikro dla TT", "9", 3, cb); menu_additem(menu, "Zabawy", "10", 3, cb); menu_additem(menu, "Manager FD i Duszek","11", 3, cb); menu_additem(menu, "Przenies gracza","12", 3, cb); menu_additem(menu, "Regulamin", "0"); menu_additem(menu, "Zasady Gier", "1"); menu_additem(menu, "Komendy", "2"); menu_setprop(menu, MPROP_EXITNAME, "Wyjdz"); menu_display(id, menu); } public MenuGraczaNieZywego(id) { new menu = menu_create("Menu Widza:", "Handel_Menu"); menu_additem(menu, "Regulamin", "0"); menu_additem(menu, "Zasady Gier", "1"); menu_additem(menu, "Komendy", "2"); menu_setprop(menu, MPROP_EXITNAME, "Wyjdz"); menu_display(id, menu); } public Menu_Callback(id, menu, item) { static num[10], acces, callback; menu_item_getinfo(menu, item, acces, num, 9, _, _, callback); switch(acces) { case 1:{ if(jail_get_prowadzacy() || !jail_get_days()) { return ITEM_DISABLED; } } case 2:{ if(id != jail_get_prowadzacy() && jail_get_days()) { return ITEM_DISABLED; } } case 3:{ if(id != jail_get_prowadzacy()) { return ITEM_DISABLED; } } } return ITEM_ENABLED; } public Handel_Menu(id, menu, item) { if(item == MENU_EXIT) return; new num[10], acces, callback; menu_item_getinfo(menu, item, acces, num, 9, _, _, callback); switch(str_to_num(num)) { case 0: show_motd(id, "regulamin.txt", "Regulamin Serwera"); case 1: show_motd(id, "zasadygier.txt", "Zasady Gier"); case 2: show_motd(id, "komendy.txt", "Komendy"); case 3: client_cmd(id, "say /czapki"); case 4: { if(jail_get_prisoner_free(id) || jail_get_user_block(id)) return; new body, target; get_user_aiming(id, target, body, 50); if(target && get_user_team(target) == 1) { ColorChat(id, TEAM_COLOR, "^x04[PrisonBreak]^x03 Nie nacelowales na straznika"); return; } if(!is_user_alive(target)) return; new weapons = Jaki_Pistolet(target); if(!weapons) { ColorChat(id, TEAM_COLOR, "^x04[PrisonBreak]^x03 Straznik nie ma broni krotkiej"); return; } new weaponname[24]; get_weaponname(weapons, weaponname, 23); ham_strip_weapon(target, weapons, weaponname); give_item(id, weaponname); ColorChat(id, TEAM_COLOR, "^x04[PrisonBreak]^x03 Gratulacje - Ukradles bron"); } case 5: w_trakcie[id]? wylacz_rewizje(id): wlacz_rewizje(id); case 6:{ if(!jail_get_prowadzacy()) jail_set_prowadzacy(id); } case 7: jail_open_cele(); case 8: jail_set_prisoners_fight((menu_walka = !menu_walka), !menu_walka); case 9: jail_set_prisoners_micro((menu_mikro = !menu_mikro)); case 10: client_cmd(id, "say /zabawy"); case 11: MenuFreeday(id); case 12: cmdTeamMenu(id) } } public MenuFreeday(id) { new menu2 = menu_create("Manager FD i Duszek:", "Handel_ManagerFreeday"); menu_additem(menu2, "Daj Freeday"); menu_additem(menu2, "Daj Duszka^n"); menu_additem(menu2, "Zabierz Freeday"); menu_additem(menu2, "Zabierz Duszka"); menu_setprop(menu2, MPROP_EXITNAME, "Wyjdz"); menu_display(id, menu2); } public Handel_ManagerFreeday(id, menu, item) { if(item == MENU_EXIT) return; new acces, callback, data[3], iname[32]; menu_item_getinfo(menu, item, acces, data, 2, iname, 31, callback); replace(iname, 31, "^n", ""); new menu2 = menu_create(iname, (!item || item == 2)? "Handel_Menu_Freeday": "Handel_Menu_Duszek"); for(new i=1; i<=32; i++) { if(!is_user_alive(i) || cs_get_user_team(i) != CS_TEAM_T) continue; switch(item) { case 0,1:{ if(jail_get_prisoner_free(i) || jail_get_prisoner_ghost(i)) continue; } case 2:{ if(!jail_get_prisoner_free(i)) continue; } case 3:{ if(!jail_get_prisoner_ghost(i)) continue; } } new name[32]; get_user_name(i, name, 31); menu_additem(menu2, name, (!item || item == 1)? "1": "0"); } menu_setprop(menu2, MPROP_EXITNAME, "Wyjdz"); menu_display(id, menu2); } public Handel_Menu_Freeday(id, menu, item) { if(item == MENU_EXIT) return; new id2, callback, data[3], name[32]; menu_item_getinfo(menu, item, id2, data, 2, name, 31, callback); callback = data[0]-'0'; id2 = get_user_index(name); jail_set_prisoner_free(id2, bool:callback, false); new szName[2][32]; get_user_name(id, szName[0], 31); get_user_name(id2, szName[1], 31); ColorChat(0, TEAM_COLOR,"^x04[PrisonBreak] ^x03%s ^x01%s freedaya ^x03%s",szName[0], callback? "dal": "zabral",szName[1]); } public Handel_Menu_Duszek(id, menu, item) { if(item == MENU_EXIT) return; new id2, callback, data[3], name[32]; menu_item_getinfo(menu, item, id2, data, 2, name, 31, callback); callback = data[0]-'0'; id2 = get_user_index(name); jail_set_prisoner_ghost(id2, bool:callback, false); new szName[2][32]; get_user_name(id, szName[0], 31); get_user_name(id2, szName[1], 31); ColorChat(0, TEAM_COLOR,"^x04[PrisonBreak] ^x03%s ^x01%s duszka ^x03%s",szName[0], callback? "dal": "zabral",szName[1]); } public OnRemoveData(day) { menu_mikro = false; menu_walka = false; } public Handel_Menu_Widza(id, menu, item) { if(item == MENU_EXIT) return; switch(item) { case 0: show_motd(id, "regulamin.txt", "Regulamin Serwera"); case 1: show_motd(id, "zasadygier.txt", "Zasady Gier"); case 2: show_motd(id, "komendy.txt", "Komendy"); } } public wlacz_rewizje(id) { if(get_user_team(id) != 2 || !is_user_alive(id)) return PLUGIN_HANDLED; new body, target; get_user_aiming(id, target, body, 50); if(target && get_user_team(target) == 2) { ColorChat(id, TEAM_COLOR, "^x04[PrisonBreak]^x03 Nie nacelowales na wieznia"); return PLUGIN_HANDLED; } if(!is_user_alive(target)) return PLUGIN_HANDLED; if(jail_get_user_block(target)) return PLUGIN_HANDLED; jail_set_user_speed(id, 0.1); set_bartime(id, 5); set_bartime(target, 5); jail_set_user_speed(target, 0.1); w_trakcie[id] = target; w_trakcie[target] = id; set_task(5.0, "wylacz_rewizje", 5000+id); emit_sound(id, CHAN_WEAPON, "weapons/c4_disarm.wav", 1.0, ATTN_NORM, 0, PITCH_NORM); return PLUGIN_HANDLED; } public wylacz_rewizje(taskid) { new id = taskid; if(taskid > 32) id -= 5000; if(get_user_team(id) != 2 || !w_trakcie[id]) return PLUGIN_HANDLED; remove_task(id+5000); jail_set_user_speed(id, 250.0); set_bartime(id, 0); if(is_user_alive(w_trakcie[id])) { jail_set_user_speed(w_trakcie[id], 250.0); set_bartime(w_trakcie[id], 0); } if(taskid > 32) Pokaz_bronie(id); w_trakcie[w_trakcie[id]] = 0; w_trakcie[id] = 0; return PLUGIN_HANDLED; } public Pokaz_bronie(id) { if(!is_user_alive(id) || !is_user_alive(w_trakcie[id])) return; new weapons[32], numweapons, weaponname[32]; get_user_weapons(w_trakcie[id], weapons, numweapons); ColorChat(id, GREEN, "Znalazles:"); for(new i=0; i<%s><>^" transfer ^"%s<%d><%s><>^" (team ^"%s^")", name, get_user_userid(id), authid, name2, get_user_userid(player), authid2, g_menuOption[id] ? "TERRORIST" : "CT") if (get_cvar_num("amx_hideactivity")==1) { for (new a=1;a<=32;a++) { if (is_user_connected(a)) { if (get_user_flags(a) & ADMIN_RESERVATION) { client_print(a, print_chat, "%L", id, "ADMIN_TRANSF_2", name, name2, g_menuOption[id] ? "TERRORIST" : "CT") } } } } else { switch (get_cvar_num("amx_show_activity")) { case 2: client_print(0, print_chat, "%L", id, "ADMIN_TRANSF_2", name, name2, g_menuOption[id] ? "TERRORIST" : "CT") case 1: client_print(0, print_chat, "%L", id, "ADMIN_TRANSF_1", name2, g_menuOption[id] ? "TERRORIST" : "CT") } } if (g_cstrike) { if (is_user_alive(player)) { if(g_menuOption[id]==1) { cs_set_user_team(player, CS_TEAM_T) if (get_cvar_num("amx_teammenuspawn") > 0) spawn(player) } else { cs_set_user_team(player, CS_TEAM_CT) if (get_cvar_num("amx_teammenuspawn") > 0) spawn(player) } } else { if(g_menuOption[id]==1) { cs_set_user_team(player, CS_TEAM_T) cs_reset_user_model(player) } else { cs_set_user_team(player, CS_TEAM_CT) cs_reset_user_model(player) } } } displayTeamMenu(id, g_menuPosition[id]) } } return PLUGIN_HANDLED } displayTeamMenu(id, pos){ if (pos < 0) return get_players(g_menuPlayers[id], g_menuPlayersNum[id]) new menuBody[512] new b = 0 new i, iteam new name[32], team[4] new start = pos * 7 new ja[32] get_user_name (id, ja, 31) if (start >= g_menuPlayersNum[id]) start = pos = g_menuPosition[id] = 0 new len = format(menuBody, 511, g_coloredMenus ? "\y%L\R%d/%d^n\w^n" : "%L %d/%d^n^n", id, "TEAM_MENU", pos + 1, (g_menuPlayersNum[id] / 7 + ((g_menuPlayersNum[id] % 7) ? 1 : 0))) new end = start + 7 new keys = MENU_KEY_0|MENU_KEY_8 if (end > g_menuPlayersNum[id]) end = g_menuPlayersNum[id] for (new a = start; a < end; ++a) { i = g_menuPlayers[id][a] get_user_name(i, name, 31) if (g_cstrike) { iteam = _:cs_get_user_team(i) if (iteam == 1) { copy(team, 3, "TE") } else if (iteam == 2) { copy(team, 3, "CT") } else { get_user_team(i, team, 3) } } else { iteam = get_user_team(i, team, 3) } if ((iteam == (g_menuOption[id] ? 1 : 2)) || (access(i, ADMIN_IMMUNITY)&&(i!=id))) { ++b if (g_coloredMenus) len += format(menuBody[len], 511-len, "\d%d. %s\R%s^n\w", b, name, team) else len += format(menuBody[len], 511-len, "#. %s %s^n", name, team) } else { keys |= (1<