backedtracked
Пользователь
- Регистрация
- 26 Мар 2019
- Сообщения
- 57
- Симпатии
- 3
- Amx Mod X
- AMXX 1.8.2
- Ошибка
-
Код:error 017: undefined symbol "menu_addblank2"
- Исходник
-
Код:C++:
#include <amxmodx> #include <amxmisc> #include <cstrike> #include <fun> #include <fakemeta_util> #include <hamsandwich> #include <colorchat> #define PLUGIN "IDEAL VIP" #define VERSION "3 c xepoM]" #define AUTHOR "15% oT Ba/lePa" #define GOLD //Золотое оружие он/офф #define TAB_SHOW //VIP в scoreboard #define AUTO_ARMOR //автовыдача гранат и аммуниции в начале раунда #define AUTO_PISTOLS //авто-меню пистолетов, если не выбран в наборе //#define AUTO_WEAPMENU //випменю в начале раунда #define vip_flag ADMIN_LEVEL_B //флаг випа или кого там надо... #define c_round 3 //с какого раунда доступно меню #define c_health 5 //+здоровья за 1 килл #define c_health_head 10 //+здоровья за 1 килл в башню #define c_health_max 100 //максимум здоровья для випа (зря бабки платил что-ли) #define c_money 500 //+баксов за 1 килл #define c_money_head 800 //+баксов за 1 килл в голову #define VIP_TAG (1<<2) #define m_LastHitGroup 75 #if defined GOLD #define MAX_ITEM_TYPES 6 #define m_linux_entity 4 #define m_pPlayer 41 #define m_pActiveItem 373 #define DMG_VALUE 1.3 //множитель урона #define linuxdiff 5 new const m_rgpPlayerItems[MAX_ITEM_TYPES] = {34, 35, ...} new V_AK[] = "models/gold/v_ak47_gold.mdl" new P_AK[] = "models/gold/p_ak47_gold.mdl" new W_AK[] = "models/gold/w_ak47_gold.mdl" new V_M4[] = "models/gold/v_m4a1_gold.mdl" new P_M4[] = "models/gold/p_m4a1_gold.mdl" new W_M4[] = "models/gold/w_m4a1_gold.mdl" new V_AWP[] = "models/gold/v_awp_gold.mdl" new P_AWP[] = "models/gold/p_awp_gold.mdl" new W_AWP[] = "models/gold/w_awp_gold.mdl" #endif new bool:g_map_valid = false new bool:g_vip_allow[33] = true new bool:g_haveGold[33] = false static g_Round, g_SecondWeap[33], g_SecondHave[33], g_buyTime, set_SecCase, i_Menu, g_maxPlayers public plugin_init() { register_plugin(PLUGIN, VERSION, AUTHOR) register_message(get_user_msgid("ScoreAttrib"), "msgScoreAttrib") register_event("HLTV", "round_start", "a", "1=0", "2=0") register_event("TextMsg", "round_restart", "a", "2=#Game_will_restart_in","2=#Game_Commencing") RegisterHam(Ham_Killed, "player", "player_killed", 1) RegisterHam(Ham_Spawn, "player", "player_spawn", 1) RegisterHam(Ham_TakeDamage, "player", "fw_TakeDamage") register_clcmd("say /vipmenu", "main_menu") register_clcmd("say_team /vipmenu", "main_menu") register_clcmd("vipmenu", "main_menu") g_maxPlayers = get_maxplayers() new szPrefixMap[][] = {"de_", "cs_", "css_","as_"} new map[32]; get_mapname(map, charsmax(map)); for(new i; i < sizeof szPrefixMap; i++) { if(containi(map, szPrefixMap[i]) != -1) g_map_valid = true } #if defined GOLD RegisterHam(Ham_Item_Deploy, "weapon_ak47", "deploy_weapon", 1) RegisterHam(Ham_Item_Deploy, "weapon_m4a1", "deploy_weapon", 1) RegisterHam(Ham_Item_Deploy, "weapon_awp", "deploy_weapon", 1) register_forward(FM_SetModel, "set_model", 1) #endif } #if defined GOLD public plugin_precache() { precache_model (V_AK) precache_model (P_AK) precache_model (W_AK) precache_model (V_M4) precache_model (P_M4) precache_model (W_M4) precache_model (V_AWP) precache_model (P_AWP) precache_model (W_AWP) } #endif public client_putinserver(id) { g_SecondWeap[id] = 0 new name[32]; get_user_name(id, name, 31) if(get_user_flags(id) & ADMIN_BAN) return client_print_color(0, 0, "^4[VIP] ^1На сервер зашел ^4Администратор ^3%s", name) if(get_user_flags(id) & ADMIN_LEVEL_H) return client_print_color(0, 0, "^4[VIP] ^1На сервер зашел ^4ВИП игрок ^3%s", name) return PLUGIN_HANDLED } public client_disconnected(id) { g_SecondHave[id] = 0 g_SecondWeap[id] = 0 g_haveGold[id] = false } public round_start() { g_Round++ g_buyTime = get_systime() } public round_restart() g_Round = 0 public player_spawn(Player) { if(!g_map_valid || !user_admin(Player)) return 1 g_vip_allow[Player] = true if(is_user_alive(Player)) { task_funk(Player) #if defined AUTO_WEAPMENU if(g_Round >= c_round) main_menu(Player) #endif } return 1 } public task_funk(id) { #if defined AUTO_ARMOR if(cs_get_user_team(id) == CS_TEAM_CT) cs_set_user_defuse(id, 1, 255, 255, 0,_,0) cs_set_user_armor(id, 100, CS_ARMOR_VESTHELM) cs_set_user_armor(id, 100, CS_ARMOR_KEVLAR) give_item(id, "weapon_hegrenade") give_item(id, "weapon_flashbang") give_item(id, "weapon_flashbang") give_item(id, "weapon_smokegrenade") #endif #if defined AUTO_PISTOLS if(g_SecondHave[id]) return 1 Give_Second_Weapon(id, g_SecondWeap[id]) #endif return 0 } public main_menu(id) { if(!user_admin(id)) return client_print_color(id, 0, "^1[^4VIP^1] ^3У вас нет доступа для открытия этого меню!") if(!g_map_valid) return client_print_color(id, 0, "^1[^4VIP^1] ^1На данной карте Оружейка недоступна!") if(!is_user_alive(id)) return client_print_color(id, 0, "^1[^4VIP^1] ^3Зачем мертвому оружие?))") if(g_Round < c_round) return client_print_color(id, 0, "^1[^4VIP^1] ^3Оружейная комната доступна с %d-го раунда!", c_round) if(!g_vip_allow[id] || get_systime() > (g_buyTime + 20)) return client_print_color(id, 0, "^1[^4VIP^1] ^3Вип меню недоступно! Ждите нового раунда.") new s_Title[128], s_Pistol[32], szMenuMulti[64] switch(g_SecondWeap[id]) { case 0: s_Pistol = "NONE" case 1: s_Pistol = "Deagle" case 2: s_Pistol = "Usp" case 3: s_Pistol = "Glock" } formatex(s_Title, charsmax(s_Title), "\r ВИП стоит кучу денег: ") i_Menu = menu_create(s_Title, "main_handler", 1); formatex(szMenuMulti, charsmax(szMenuMulti), "\y%s \d+ Гранаты + \rM4A1", s_Pistol) menu_additem(i_Menu, szMenuMulti, "1", 0) formatex(szMenuMulti, charsmax(szMenuMulti), "\y%s \d+ Гранаты + \rAK47", s_Pistol) menu_additem(i_Menu, szMenuMulti, "2", 0) formatex(szMenuMulti, charsmax(szMenuMulti), "\y%s \d+ Гранаты + \rAWP", s_Pistol) menu_additem(i_Menu, szMenuMulti, "3", 0) formatex(szMenuMulti, charsmax(szMenuMulti), "\y%s \d+ Гранаты + \rFAMAS", s_Pistol) menu_additem(i_Menu, szMenuMulti, "4", 0) formatex(szMenuMulti, charsmax(szMenuMulti), "\y%s \d+ Гранаты + \rSCOUT", s_Pistol) menu_additem(i_Menu, szMenuMulti, "5", 0) menu_addblank(i_Menu, 0) formatex(szMenuMulti, charsmax(szMenuMulti), "\yИзменить \rпистолет \yв наборе") menu_additem(i_Menu, szMenuMulti, "6", 0) menu_addblank(i_Menu, 0) #if defined GOLD formatex(szMenuMulti, charsmax(szMenuMulti), "\yЗолотое оружие") menu_additem(i_Menu, szMenuMulti, "7", 0) #endif menu_setprop(i_Menu, MPROP_EXITNAME, "Выход") return menu_display(id, i_Menu, 0) } public main_handler(id, menu, item) { if(item == MENU_EXIT) return menu_destroy(menu) new s_Data[6], s_Name[60], 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) if(1 <= i_Key <= 5) { g_vip_allow[id] = false g_haveGold[id] = false } switch(i_Key) { case 1: DropWeapons(id, 1, "weapon_m4a1", CSW_M4A1, 90) case 2: DropWeapons(id, 1, "weapon_ak47", CSW_AK47, 90) case 3: DropWeapons(id, 1, "weapon_awp", CSW_AWP, 30) case 4: DropWeapons(id, 1, "weapon_famas", CSW_FAMAS, 90) case 5: DropWeapons(id, 1, "weapon_scout", CSW_SCOUT, 90) case 6: { set_SecCase = 6 sec_WpnMenu(id) } case 7: GoldMenu(id) } return menu_destroy(menu) } public sec_WpnMenu(id) { i_Menu = menu_create("\rПистолет для набора", "sec_WpnMenu_handler") menu_additem(i_Menu, "\yDeagle", "1", 0) menu_additem(i_Menu, "\yUsp", "2", 0) menu_additem(i_Menu, "\yGlock", "3", 0) menu_display(id, i_Menu, 0) } public sec_WpnMenu_handler(id, menu, item) { if(item == MENU_EXIT) return PLUGIN_HANDLED new s_Data[6], s_Name[60], 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) g_SecondWeap[id] = i_Key g_SecondHave[id] = true menu_destroy(menu) return Give_Second_Weapon(id, g_SecondWeap[id]) } #if defined GOLD public GoldMenu(id) { i_Menu = menu_create("\yВау!)) Золотишечко", "GoldMenu_handler") menu_additem(i_Menu, "\yЗолотой \wМ4А1", "1", 0) menu_additem(i_Menu, "\yЗолотой \wАК-47", "2", 0); menu_additem(i_Menu, "\yЗолотой \wMagnum AWP", "3", 0) menu_addblank2(i_Menu) menu_setprop(i_Menu, MPROP_EXITNAME, "\yВыход") menu_display(id, i_Menu, 0) } public GoldMenu_handler(id, menu, item) { if(item == MENU_EXIT) return menu_destroy(menu) new cmd[3], access, callback menu_item_getinfo(menu, item, access, cmd, 2,_,_, callback) if(item != MENU_EXIT) { g_vip_allow[id] = false g_haveGold[id] = true } new i_Key = str_to_num(cmd) switch (i_Key) { case 1: DropWeapons(id, 1, "weapon_m4a1", CSW_M4A1, 90) case 2: DropWeapons(id, 1, "weapon_ak47", CSW_AK47, 90) case 3: DropWeapons(id, 1, "weapon_awp", CSW_AWP, 30) case 4: main_menu(id) } return menu_destroy(menu) } public deploy_weapon(ent) { static id; id = get_pdata_cbase(ent, m_pPlayer, m_linux_entity) static wpn; wpn = pev(ent, pev_iuser1) if(!wpn) return if(!user_admin(id)) { static weap_name[32] get_weaponname(wpn, weap_name, charsmax(weap_name)) engclient_cmd(id, "drop", weap_name) client_print_color(id, 0, "^1[^4VIP^1] ^3Это оружие доступно только ВИП игрокам!") return } switch(wpn) { case CSW_AK47: { set_pev(id, pev_viewmodel2, V_AK) set_pev(id, pev_weaponmodel2, P_AK) } case CSW_M4A1: { set_pev(id, pev_viewmodel2, V_M4) set_pev(id, pev_weaponmodel2, P_M4) } case CSW_AWP: { set_pev(id, pev_viewmodel2, V_AWP) set_pev(id, pev_weaponmodel2, P_AWP) } } } public set_model(ent, model[]) { if(!pev_valid(ent)) return static classname[10]; pev(ent, pev_classname, classname, charsmax(classname)) if(!equal(classname, "weaponbox")) return static drop for(new i = 0 ; i < MAX_ITEM_TYPES; i++) { drop = get_pdata_cbase(ent, m_rgpPlayerItems[i], m_linux_entity) if(drop < 1) continue break } if(drop < 1) return static wpn; wpn = pev(drop, pev_iuser1) if(!wpn) return switch(wpn) { case CSW_AK47: engfunc(EngFunc_SetModel, ent, W_AK) case CSW_M4A1: engfunc(EngFunc_SetModel, ent, W_M4) case CSW_AWP: engfunc(EngFunc_SetModel, ent, W_AWP) } } public fw_TakeDamage(victim, inflictor, attacker, Float:damage) { if(!attacker || attacker > g_maxPlayers) return HAM_IGNORED static ent; ent = get_pdata_cbase(attacker, m_pActiveItem, linuxdiff) static wpn; wpn = pev(ent, pev_iuser1) if(!wpn) return HAM_IGNORED SetHamParamFloat(4, damage * DMG_VALUE) return HAM_IGNORED } #endif public player_killed(victim, killer, corpse) { if(user_admin(victim)) { g_SecondHave[victim] = false g_haveGold[victim] = false return } if(user_admin(victim)) { if(is_user_alive(killer)) { static p_Health; p_Health = get_user_health(killer) static p_Money; p_Money = cs_get_user_money(killer) if(get_pdata_int(victim, m_LastHitGroup) == HIT_HEAD) { set_user_health(killer, p_Health + c_health_head) if(p_Health > c_health_max) set_user_health(killer, c_health_max) cs_set_user_money(killer, p_Money + c_money_head) } else { set_user_health(killer, p_Health + c_health) if(p_Health > c_health_max) set_user_health(killer, c_health_max) cs_set_user_money(killer, p_Money + c_money) } } } } #if defined TAB_SHOW public msgScoreAttrib(const MsgId, const MsgType, const MsgDest) { if(user_admin(get_msg_arg_int(1)) && !get_msg_arg_int(2)) set_msg_arg_int(2, ARG_BYTE, VIP_TAG) } #endif stock bool: user_admin(const id) { if(!is_user_connected(id)) return false if(get_user_flags(id) & vip_flag) return true return false } Give_Second_Weapon(id, wpnHave) { switch(wpnHave) { case 0: sec_WpnMenu(id) case 1: DropWeapons(id, 2, "weapon_deagle", CSW_DEAGLE, 35) case 2: DropWeapons(id, 2, "weapon_usp", CSW_USP, 100) case 3: DropWeapons(id, 2, "weapon_glock18", CSW_GLOCK18, 120) } if(set_SecCase == 6) { set_SecCase = 0 main_menu(id) } return 1 } DropWeapons(id, wpnType, wpnName[], wpnID, iAmmo) { #define PRIMARY_WEAPON ((1<<CSW_SCOUT)|(1<<CSW_XM1014)|(1<<CSW_MAC10)|(1<<CSW_AUG)|(1<<CSW_UMP45)|\ (1<<CSW_SG550)|(1<<CSW_GALIL)|(1<<CSW_FAMAS)|(1<<CSW_AWP)|(1<<CSW_MP5NAVY)|(1<<CSW_M249)|(1<<CSW_M3)|\ (1<<CSW_M4A1)|(1<<CSW_TMP)|(1<<CSW_G3SG1)|(1<<CSW_SG552)|(1<<CSW_AK47)|(1<<CSW_P90)) #define SECONDARY_WEAPON ((1<<CSW_USP)|(1<<CSW_GLOCK18)|(1<<CSW_ELITE)|(1<<CSW_FIVESEVEN)|(1<<CSW_P228)|(1<<CSW_DEAGLE)) new weapons[32], num, i get_user_weapons(id, weapons, num) switch(wpnType) { case 1: wpnType = PRIMARY_WEAPON case 2: wpnType = SECONDARY_WEAPON } static weap_name[32] for(i = 0; i < num; i++) { if(wpnType & (1<<weapons[i])) { get_weaponname(weapons[i], weap_name, sizeof weap_name - 1) if(!equali(weap_name, wpnName)) engclient_cmd(id, "drop", weap_name) } } #if defined GOLD if(g_haveGold[id]) { static ent; ent = fm_give_item(id, wpnName) if(!pev_valid(ent)) return set_pev(ent, pev_iuser1, wpnID) cs_set_user_bpammo(id, wpnID, iAmmo) deploy_weapon(ent) engclient_cmd(id, wpnName) return } #endif fm_give_item(id, wpnName) cs_set_user_bpammo(id, wpnID, iAmmo) }