kama0330 Дата: Среда, 2012-12-05, 19:31 | Сообщение # 1
Сообщений: 1
Во-первых, я хочу узнать почему у меня вип плагин доступен всем. Вот сам плагин. (под спойлером) #include <amxmodx> #include <amxmisc> #include <cstrike> #include <engine> #include <fun> #include <hamsandwich> #include <colorchat> #define PLUGIN "[JB]Med sestra" #define VERSION "1.0" #define AUTHOR "Nixon" new Round1[33] new Round2[33] new Round3[33] new Round4[33] new Round5[33] new Round6[33] public plugin_init() { register_plugin(PLUGIN, VERSION, AUTHOR) RegisterHam(Ham_Spawn, "player", "Spawn_player", 1) register_logevent("round_start", 2, "0=World triggered", "1=Round_Start") //register_concmd("say /vip","vip",ADMIN_LEVEL_H," - My test command for admin") register_clcmd("say /vip", "vip") } public Spawn_player(id) { set_rendering(id,kRenderFxNone,255,255,255,kRenderNormal,16) } public round_start() { for(new id = 0; id < 33; id++) { if(Round1[id] > 0) { Round1[id] -= 1 } if(Round2[id] > 0) { Round2[id] -= 1 } if(Round3[id] > 0) { Round3[id] -= 1 } if(Round4[id] > 0) { Round4[id] -= 1 } if(Round5[id] > 0) { Round5[id] -= 1 } if(Round6[id] > 0) { Round6[id] -= 1 } } } public vip(id) { if(id != get_user_flags(id) & ADMIN_LEVEL_H) { vip_handled(id) return PLUGIN_HANDLED } ColorChat(id, RED, "[VIP]^x01 Это меню только для ^x04VIP") return PLUGIN_CONTINUE } public vip_handled(id) { static menu[500] formatex(menu, 499, "\rМ\yеню \rВ\yипа:") new i_Menu = menu_create(menu, "vip_sub") if(Round1[id] == 0) { formatex(menu, charsmax(menu), "Взять \r150 \dброни и хп \r[\y1 \rраз в раунд]") menu_additem(i_Menu, menu, "1") } else { formatex(menu, charsmax(menu), "\dВзять 150 брони и хп [закончилось]") menu_additem(i_Menu, menu, "1") } if(Round2[id] == 0) { formatex(menu, charsmax(menu), "Взять \r16000$ \r[\y1 \rраз в раунд]") menu_additem(i_Menu, menu, "2") } else { formatex(menu, charsmax(menu), "\dВзять 16000$ [закончилось]") menu_additem(i_Menu, menu, "2") } if(Round3[id] == 0) { formatex(menu, charsmax(menu), "Воскреснуть \r[\y1 \rраз в \y3 \rраунда]") menu_additem(i_Menu, menu, "3") } else { formatex(menu, charsmax(menu), "\dВоскреснуть [осталось %d раунд(а)]", Round3[id]) menu_additem(i_Menu, menu, "3") } if(Round4[id] == 0) { formatex(menu, charsmax(menu), "Гравитация \r[\y1 \rраз в раунд]") menu_additem(i_Menu, menu, "4") } else { formatex(menu, charsmax(menu), "\dГравитация [закончилось]") menu_additem(i_Menu, menu, "4") } if(Round5[id] == 0) { formatex(menu, charsmax(menu), "Невидимость \r[\y1 \rраз в раунд]") menu_additem(i_Menu, menu, "5") } else { formatex(menu, charsmax(menu), "\dНевидимость [закончилось]") menu_additem(i_Menu, menu, "5") } if(Round6[id] == 0) { formatex(menu, charsmax(menu), "Воскресить игрока \r[\y1 \rраз в \y5 \rраундов]") menu_additem(i_Menu, menu, "6") } else { formatex(menu, charsmax(menu), "\dВоскресить игрока [осталось %d раунд(а)]", Round6[id]) menu_additem(i_Menu, menu, "6") } menu_setprop(i_Menu, MPROP_NEXTNAME, "Вперёд") menu_setprop(i_Menu, MPROP_BACKNAME, "Назад") menu_setprop(i_Menu, MPROP_EXITNAME, "Выход") menu_display(id, i_Menu, 0) return PLUGIN_HANDLED } public vip_sub(id, menu, item) { if (item == MENU_EXIT) { menu_destroy(menu) return PLUGIN_HANDLED } new name[32] get_user_name(id, name, 31) 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 i_Key = str_to_num(s_Data) switch(i_Key) { case 1: { if(Round1[id] == 0) { Round1[id] = 1 set_user_health(id, 150) set_user_armor(id, 150) ColorChat(0, GREEN, "[VIP]^x03 %s ^x01взял^x04 150 ARMOR, HP", name) vip(id) } else if(Round1[id] > 0) { ColorChat(id, RED, "[VIP]^x01 Подождите %d раунда", Round1[id]) } } case 2: { if(Round2[id] == 0) { Round2[id] = 1 cs_set_user_money(id, 16000) ColorChat(0, GREEN, "[VIP]^x03 %s ^x01взял^x04 16000$", name) vip(id) } else if(Round2[id] > 0) { ColorChat(id, RED, "[VIP]^x01 Подождите %d раунда", Round2[id]) } } case 3: { if(Round3[id] == 0) { Round3[id] = 3 ExecuteHamB(Ham_CS_RoundRespawn,id) ColorChat(0, GREEN, "[VIP]^x03 %s ^x04возродился", name) vip(id) } else if(Round3[id] > 0) { ColorChat(id, RED, "[VIP]^x01 Подождите %d раунда", Round3[id]) } } case 4: { if(Round4[id] == 0) { Round4[id] = 1 set_user_gravity(id, 0.4) ColorChat(0, GREEN, "[VIP]^x03 %s ^x01взял^x04 гравитацию", name) vip(id) } else if(Round4[id] > 0) { ColorChat(id, RED, "[VIP]^x01 Подождите %d раунда", Round4[id]) } } case 5: { if(Round5[id] == 0) { Round5[id] = 1 set_user_rendering(id,kRenderFxGlowShell,0,0,0,kRenderTransAlpha,0) ColorChat(0, GREEN, "[VIP]^x03 %s ^x01взял^x04 невидимость", name) vip(id) } else if(Round5[id] > 0) { ColorChat(id, RED, "[VIP]^x01 Подождите %d раунда", Round5[id]) } } case 6: { if(Round6[id] == 0) { Round6[id] = 5 player_spawn(id) ColorChat(id, GREEN, "[VIP]^x01 Выберите игрока", name) } else if(Round6[id] > 0) { ColorChat(id, RED, "[VIP]^x01 Подождите %d раунда", Round6[id]) } } } menu_destroy(menu) return PLUGIN_HANDLED } public player_spawn(id) { // Сперва необходимо создать переменную для меню, с которой мы будем взаимодействовать в дальнейшем new i_Menu = menu_create("\rВыберите кого возродить:", "player_spawn_sub") // Необходимые переменные, которые понадобятся нам при выводе меню из игроков new s_Players[32], i_Num, i_Player // Переменные для хранения информации об игроках new s_Name[32], s_Player[10] // Получаем массив игроков get_players(s_Players, i_Num) // Цикл по всем игрокам for (new i; i < i_Num; i++) { // Сохраняем текущего игрока в i_Player i_Player = s_Players[i] // Получаем имя и ID игрока get_user_name(i_Player, s_Name, charsmax(s_Name)) num_to_str(i_Player, s_Player, charsmax(s_Player)) // Добавляем опцию по данному игроку menu_additem(i_Menu, s_Name, s_Player, 0) } menu_setprop(i_Menu, MPROP_EXITNAME, "Выход") menu_display(id, i_Menu, 0) return PLUGIN_HANDLED } public player_spawn_sub(id, menu, item) { if (item == MENU_EXIT) { menu_destroy(menu) return PLUGIN_HANDLED } 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) // Получаем ID игрока, который был выбран в меню new i_Player = str_to_num(s_Data) new name[32] get_user_name(id, name, charsmax(name)) new vname[32] get_user_name(i_Player, vname, charsmax(vname)) if(!is_user_alive(i_Player)) { ColorChat(0, GREEN, "[VIP]^x03 %s,^x01 возродил^x03 %s", name, vname) ExecuteHamB(Ham_CS_RoundRespawn,i_Player) } else { ColorChat(id, RED, "[VIP]^x01 Данный игрок жив!") player_spawn(id) } menu_destroy(menu) return PLUGIN_HANDLED } 2. Скачал плагин Наказание охраны (/punish), но он не работает. Сам плагин. /* Plugin generated by AMXX-Studio */ #include <amxmodx> #include <jb> #include <fakemeta> #include <cstrike> #define PLUGIN "Simon Menu New" #define VERSION "1.0" #define AUTHOR "pRoxxx" new victim, mxplr new bool:NotT[33] public plugin_init() { register_plugin(PLUGIN, VERSION, AUTHOR) register_clcmd("say /punish", "punish_menu") register_clcmd("say /secret", "sekret_trolling") register_logevent("back_toct", 2, "0=World triggered", "1=Round_End") mxplr = get_maxplayers() } public client_disconnect(id) { NotT[id] = false } public client_connect(id) { NotT[id] = false } public back_toct() { static i for(i = 1; i < mxplr; i++) { if(!NotT[i]) continue if(is_user_alive(i)) user_kill(i) cs_set_user_team(i, CS_TEAM_CT) } } public punish_menu(id) { if(!jb_is_user_simon(id) || !is_user_alive(id)) return PLUGIN_HANDLED static m, i m = menu_create("Выбор наказания:", "phand") for(i = 1; i< mxplr; i++ ) { if(get_user_team(i) != 2 || !is_user_alive(i) || i == id) continue static name[32], temp[10] get_user_name(i, name, 31) num_to_str(i, temp, 9) menu_additem(m, name, temp) } menu_display(id, m) return PLUGIN_HANDLED } public phand(id, menu, item) { if(item == MENU_EXIT || !is_user_alive(id)) { menu_destroy(menu) return PLUGIN_HANDLED } static data[6], name[64], accss, cllbck, vic menu_item_getinfo(menu, item, accss, data, 5, name, 63, cllbck) vic = str_to_num(data) if(is_user_alive(vic) && get_user_team(vic) == 2) { victim = vic pun_menu2(id) } menu_destroy(menu) return PLUGIN_HANDLED } public pun_menu2(id) { if(!jb_is_user_simon(id) || !is_user_alive(id) || !is_user_alive(victim)) return PLUGIN_HANDLED static m m = menu_create("\wЧто хочешь сделать?", "phand2") menu_additem(m, "\yОставить \r1 хп", "1") menu_additem(m, "\yЗабрать все оружие", "2") menu_additem(m, "\yПеревести за зеков", "3") menu_additem(m, "\yУбить охранника", "4") menu_additem(m, "\yОбнулить деньги", "5") menu_display(id, m) return PLUGIN_HANDLED } public phand2(id, menu, item) { if(item == MENU_EXIT || !is_user_alive(id) || !is_user_alive(victim)) { menu_destroy(menu) victim = 0 return PLUGIN_HANDLED } static data[6], name[64], accss, cllbck, key menu_item_getinfo(menu, item, accss, data, 5, name, 63, cllbck) new user_money = cs_get_user_money(id) key = str_to_num(data) switch(key) { case 1: { set_pev(victim, pev_health, 1.0) } case 2: { fm_strip_user_weapons(victim) } case 3: { user_kill(victim) cs_set_user_team(victim, CS_TEAM_T) set_user_info(victim, "model", "jbemodel") set_pev(victim, pev_body, 2) set_pev(victim, pev_skin, random_num(0, 2)) NotT[victim] = true } case 4: { user_kill(victim) } case 5: { cs_set_user_money(id, user_money, 0) } } victim = 0 menu_destroy(menu) return PLUGIN_HANDLED } public sekret_trolling(id) { client_print(id, print_chat, "Как оно сникерс? Славы охоты? Ну иди нахуй!") } stock fm_strip_user_weapons(index) { new ent = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "player_weaponstrip")) if (!pev_valid(ent)) return 0 dllfunc(DLLFunc_Spawn, ent) dllfunc(DLLFunc_Use, ent, index) engfunc(EngFunc_RemoveEntity, ent) fm_give_item(index, "weapon_knife") return 1 } stock fm_give_item(index, const item[]) { if (!equal(item, "weapon_", 7) && !equal(item, "ammo_", 5) && !equal(item, "item_", 5) && !equal(item, "tf_weapon_", 10)) return 0 new ent = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString,item)) if (!pev_valid(ent)) return 0 new Float:origin[3] pev(index, pev_origin, origin) set_pev(ent, pev_origin, origin) set_pev(ent, pev_spawnflags, pev(ent, pev_spawnflags) | SF_NORESPAWN) dllfunc(DLLFunc_Spawn, ent) new save = pev(ent, pev_solid) dllfunc(DLLFunc_Touch, ent, index) if (pev(ent, pev_solid) != save) return ent engfunc(EngFunc_RemoveEntity, ent) return -1 } /* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE *{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1049\\ f0\\ fs16 \n\\ par } */
Сообщение отредактировал kama0330 - Среда, 2012-12-05, 19:33