так что я в этом фиговом уроке покажу некоторым людям как создать менюшку с ксо оружиями и само собой как привязать его к каждому из оружеек.
итак для этого урока нам понадобятся: голова осьминога, рог носорога, сумка кенгуру , щепотка соли и конечно же миксер от компании BORK|
начну с самой менюшки, многих тонкостей писать не буду, напишу самое главное:
плагин менюшки:
[pawn]
- #include <amxmodx>
- #include <amxmisc>
- #include <fun>
- #include <fakemeta>
- #include <cstrike>
- new iPlayerWeapon[33]
- new g_Round
- new g_Forward
- native give_weapon_anaconda(id)
- public plugin_init()
- {
- register_event("HLTV", "RoundStart", "a", "1=0", "2=0")
- register_event("TextMsg", "GameCommencing", "a", "2=#Game_will_restart_in", "2=#Game_Commencing")
- g_Forward = CreateMultiForward("set_user_zpweapon", ET_CONTINUE, FP_CELL, FP_CELL)
- register_clcmd("weaponmenu_new", "MainMenu")
- register_dictionary("wm.txt")
- }
- public client_authorized(id)
- {
- client_cmd(id, "bind ^"F3^" ^"weaponmenu_new^"")
- }
- public MainMenu(id)
- {
- if(!(get_user_flags(id) & ADMIN_LEVEL_H))
- {
- ChatColor(id, "%L", id, "WM_NOACCEESS")
- return PLUGIN_HANDLED
- }
- if(g_Round <= 1)
- {
- ChatColor(id, "%L", id, "WM_NOROUND")
- return PLUGIN_HANDLED
- }
- if(iPlayerWeapon[id])
- {
- ChatColor(id, "%L", id, "WM_ALREADY")
- return PLUGIN_HANDLED
- }
- if(!is_user_alive(id))
- {
- ChatColor(id, "%L", id, "WM_NOALIVE")
- return PLUGIN_HANDLED
- }
- new szTitle[512]
- new szItem[512]
- formatex(szTitle, charsmax( szTitle ), "%L", id, "WM_MAINMENU_TITLE")
- new iMenu = menu_create(szTitle, "MainMenu_handler" )
- formatex(szItem, charsmax( szItem ), "%L", id, "WM_MAINMENU_ITEM_1")
- menu_additem(iMenu, szItem, "1", 0)
- formatex(szItem, charsmax( szItem ), "%L", id, "WM_MAINMENU_ITEM_2")
- menu_additem(iMenu, szItem, "2", 0)
- formatex(szItem, charsmax( szItem ), "%L", id, "WM_MAINMENU_ITEM_3")
- menu_additem(iMenu, szItem, "3", 0)
- formatex(szItem, charsmax( szItem ), "%L", id, "WM_MAINMENU_ITEM_4")
- menu_additem(iMenu, szItem, "4", 0)
- formatex(szItem, charsmax( szItem ), "%L", id, "WM_MAINMENU_ITEM_5")
- menu_additem(iMenu, szItem, "5", 0)
- menu_setprop(iMenu, MPROP_EXIT, MEXIT_ALL )
- menu_setprop(iMenu, MPROP_NEXTNAME, "Далее")
- menu_setprop(iMenu, MPROP_BACKNAME, "Назад")
- menu_setprop(iMenu, MPROP_EXITNAME, "Выход")
- menu_display(id, iMenu, 0)
- return PLUGIN_HANDLED
- }
- public MainMenu_handler(id, iMenu, iItem)
- {
- if(iItem == MENU_EXIT)
- {
- menu_destroy( iMenu )
- return PLUGIN_HANDLED
- }
- new szData[6], szName[64], iAccess, iCallback
- menu_item_getinfo(iMenu, iItem, iAccess, szData, charsmax( szData ), szName, charsmax( szName ), iCallback)
- new iKey = str_to_num( szData )
- iPlayerWeapon[id] = true
- GiveItem(id)
- new iReturn
- ExecuteForward(g_Forward, iReturn, id, iKey)
- give_weapon_anaconda(id)
- ChatColor(id, "%L", id, "WM_WEAPON_SET", szName)
- menu_destroy( iMenu )
- return PLUGIN_HANDLED
- }
- public GiveItem(id)
- {
- give_item(id, "weapon_hegrenade")
- give_item(id, "weapon_smokegrenade")
- give_item(id, "weapon_flashbang")
- give_item(id, "weapon_flashbang")
- cs_set_user_armor(id, 100, CS_ARMOR_VESTHELM)
- if(get_user_team(id) == 2)
- {
- give_item(id, "item_thighpack")
- }
- }
- public RoundStart()
- {
- ++g_Round
- new iPlayers[32]
- new iPlayer, iNum
- get_players(iPlayers, iNum)
- for(new i; i < iNum;i++)
- {
- iPlayer = iPlayers[i]
- if(!is_user_connected(iPlayer))
- continue
- iPlayerWeapon[iPlayer] = false
- }
- }
- public GameCommencing()
- {
- g_Round = 0
- }
- stock ChatColor(const id, const input[], any:...)
- {
- new count = 1, players[32]
- static msg[191]
- vformat(msg, 190, input, 3)
- replace_all(msg, 190, "!g", "^4")
- replace_all(msg, 190, "!y", "^1")
- replace_all(msg, 190, "!t", "^3")
- if (id) players[0] = id; else get_players(players, count, "ch")
- {
- for (new i = 0; i < count; i++)
- {
- if (is_user_connected(players[i]))
- {
- message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, players[i]);
- write_byte(players[i]);
- write_string(msg);
- message_end();
- }
- }
- }
- }
Итак мы в нем
1.создали мульти форвард-функцию
[pawn]
- g_Forward = CreateMultiForward("set_user_zpweapon", ET_CONTINUE, FP_CELL, FP_CELL)
2.сделали бинд на менюшку
[pawn]
- public client_authorized(id)
- {
- client_cmd(id, "bind ^"F3^" ^"weaponmenu^"")
- }
3.создаем директорию ланг файла
[pawn]
- register_dictionary("wm.txt")
4. регистрируем команду для выдачи оружия
[pawn]
- register_clcmd("weaponmenu", "MainMenu")
5.создаем пункты меню
[pawn]
- formatex(szTitle, charsmax( szTitle ), "%L", id, "WM_MAINMENU_TITLE")
- new iMenu = menu_create("Меню оружие", "MainMenu_handler" )
- formatex(szItem, charsmax( szItem ), "%L", id, "WM_MAINMENU_ITEM_1")
- menu_additem(iMenu, szItem, "1", 0)
- formatex(szItem, charsmax( szItem ), "%L", id, "WM_MAINMENU_ITEM_2")
- menu_additem(iMenu, szItem, "2", 0)
- formatex(szItem, charsmax( szItem ), "%L", id, "WM_MAINMENU_ITEM_3")
- menu_additem(iMenu, szItem, "3", 0)
- formatex(szItem, charsmax( szItem ), "%L", id, "WM_MAINMENU_ITEM_4")
- menu_additem(iMenu, szItem, "4", 0)
- formatex(szItem, charsmax( szItem ), "%L", id, "WM_MAINMENU_ITEM_5")
- menu_additem(iMenu, szItem, "5", 0)
если захотите добавить еще, все очень просто
[pawn]
- formatex(szItem, charsmax( szItem ), "%L", id, "WM_MAINMENU_ITEM_6")
- menu_additem(iMenu, szItem, "6", 0)
-----------------------------------
чтобы вашы пункты меню соответствовали оружиям из других плагинов cso
нам понадобиться всего на всего
[pawn]
- public set_user_zpweapon(id, iNum)
- {
- if(iNum == 1)
- {
- give_m24(id)//не забываем изменять ее согласно тому оружию, что у вас в плагине
- }
- }
-----------------------------------
и конечно же содержимое файла wm.txt
[pawn]
- [en]
- WM_NOACCEESS = !y[ !gWeaponMenu !y]У !tвас !gнедостаточно прав
- WM_NOROUND = !y[ !gWeaponMenu !y]В !t1 !gраунде !yбрать оружие !gнельзя
- WM_ALREADY = !y[ !gWeaponMenu !y]Вы !tуже !gбрали !yоружие в этом !gраунде!
- WM_NOALIVE = !y[ !gWeaponMenu !y]Вы !tмертвы!!!
- WM_MAINMENU_TITLE = Выберите оружие
- WM_MAINMENU_ITEM_1 = m24
- WM_MAINMENU_ITEM_2 = mg3
- WM_MAINMENU_ITEM_3 = xm8
- WM_MAINMENU_ITEM_4 = guitar
- WM_MAINMENU_ITEM_5 = thompson
- WM_WEAPON_SET = !y[ !gWeaponMenu !y]Вы !tвзяли !g%s
- [ru]
- WM_NOACCEESS = !y[ !gWeaponMenu !y]У !tвас !gнедостаточно прав
- WM_NOROUND = !y[ !gWeaponMenu !y]В !t1 !gраунде !yбрать оружие !gнельзя
- WM_ALREADY = !y[ !gWeaponMenu !y]Вы !tуже !gбрали !yоружие в этом !gраунде!
- WM_NOALIVE = !y[ !gWeaponMenu !y]Вы !tмертвы!!!
- WM_MAINMENU_TITLE = Выберите оружие
- WM_MAINMENU_ITEM_1 = m24
- WM_MAINMENU_ITEM_2 = mg3
- WM_MAINMENU_ITEM_3 = xm8
- WM_MAINMENU_ITEM_4 = guitar
- WM_MAINMENU_ITEM_5 = thompson
- WM_WEAPON_SET = !y[ !gWeaponMenu !y]Вы !tвзяли !g%s
не судите строго, первая большая статья, если есть замечания, с радостью же приму к сведению