Русское сообщество по скриптингу

Меню ксо пушек

Статьи или фрагменты кода для новичков и уже опытных скриптеров по AMXX.

Модератор: Chuvi

Правила форума
1. Запрещено материться и оскорблять других участников форума.
2. Запрещен флуд, оффтоп, дабл постинг во всех разделах форума, кроме раздела "Болтовня".
3. Запрещено взламывать сайт/форум или наносить любой вред проекту.
4. Запрещено рекламировать другие ресурсы.
5. Запрещено создавать темы без информативного названия. Название темы должно отображать ее смысл.

В данном разделе форума разрешено создавать темы, касающие только обучающему материалу по AMX Mod X.

Меню ксо пушек

Сообщение grisha2429 » 10 апр 2014, 00:04

Итак поговорил с Evil Coderom,он сказал, если напишу интересную статью, он уберет с меня одно предупреждение.
так что я в этом фиговом уроке покажу некоторым людям как создать менюшку с ксо оружиями и само собой как привязать его к каждому из оружеек.
итак для этого урока нам понадобятся: голова осьминога, рог носорога, сумка кенгуру , щепотка соли и конечно же миксер от компании BORK|
начну с самой менюшки, многих тонкостей писать не буду, напишу самое главное:
плагин менюшки:
[pawn]
  1.  

  2. #include <amxmodx>

  3. #include <amxmisc>

  4. #include <fun>

  5. #include <fakemeta>

  6. #include <cstrike>

  7.  

  8.  

  9. new iPlayerWeapon[33]

  10.  

  11. new g_Round

  12. new g_Forward

  13.  

  14. native give_weapon_anaconda(id)

  15.  

  16. public plugin_init()

  17. {

  18.  

  19.         register_event("HLTV", "RoundStart", "a", "1=0", "2=0")

  20.         register_event("TextMsg", "GameCommencing", "a", "2=#Game_will_restart_in", "2=#Game_Commencing")

  21.  

  22.         g_Forward = CreateMultiForward("set_user_zpweapon", ET_CONTINUE, FP_CELL, FP_CELL)

  23.  

  24.         register_clcmd("weaponmenu_new", "MainMenu")

  25.         register_dictionary("wm.txt")

  26. }

  27.  

  28. public client_authorized(id)

  29. {

  30.         client_cmd(id, "bind ^"F3^" ^"weaponmenu_new^"")

  31. }

  32.  

  33. public MainMenu(id)

  34. {

  35.         if(!(get_user_flags(id) & ADMIN_LEVEL_H))

  36.         {

  37.                 ChatColor(id, "%L", id, "WM_NOACCEESS")

  38.                 return PLUGIN_HANDLED

  39.         }

  40.  

  41.         if(g_Round <= 1)

  42.         {

  43.                 ChatColor(id, "%L", id, "WM_NOROUND")

  44.                 return PLUGIN_HANDLED

  45.         }

  46.  

  47.         if(iPlayerWeapon[id])

  48.         {

  49.                 ChatColor(id, "%L", id, "WM_ALREADY")

  50.                 return PLUGIN_HANDLED

  51.         }

  52.  

  53.         if(!is_user_alive(id))

  54.         {

  55.                 ChatColor(id, "%L", id, "WM_NOALIVE")

  56.                 return PLUGIN_HANDLED

  57.         }

  58.  

  59.         new szTitle[512]

  60.         new szItem[512]

  61.  

  62.         formatex(szTitle, charsmax( szTitle ), "%L", id, "WM_MAINMENU_TITLE")

  63.         new iMenu = menu_create(szTitle, "MainMenu_handler" )

  64.  

  65.         formatex(szItem, charsmax( szItem ), "%L", id, "WM_MAINMENU_ITEM_1")

  66.         menu_additem(iMenu, szItem, "1", 0)

  67.  

  68.         formatex(szItem, charsmax( szItem ), "%L", id, "WM_MAINMENU_ITEM_2")

  69.         menu_additem(iMenu, szItem, "2", 0)

  70.  

  71.         formatex(szItem, charsmax( szItem ), "%L", id, "WM_MAINMENU_ITEM_3")

  72.         menu_additem(iMenu, szItem, "3", 0)

  73.  

  74.         formatex(szItem, charsmax( szItem ), "%L", id, "WM_MAINMENU_ITEM_4")

  75.         menu_additem(iMenu, szItem, "4", 0)

  76.  

  77.         formatex(szItem, charsmax( szItem ), "%L", id, "WM_MAINMENU_ITEM_5")

  78.         menu_additem(iMenu, szItem, "5", 0)

  79.  

  80.         menu_setprop(iMenu, MPROP_EXIT, MEXIT_ALL )

  81.         menu_setprop(iMenu, MPROP_NEXTNAME, "Далее")

  82.         menu_setprop(iMenu, MPROP_BACKNAME, "Назад")

  83.         menu_setprop(iMenu, MPROP_EXITNAME, "Выход")

  84.  

  85.         menu_display(id, iMenu, 0)

  86.         return PLUGIN_HANDLED

  87. }

  88.  

  89. public MainMenu_handler(id, iMenu, iItem)

  90. {

  91.         if(iItem == MENU_EXIT)

  92.         {

  93.                 menu_destroy( iMenu )

  94.                 return PLUGIN_HANDLED

  95.         }

  96.  

  97.         new szData[6], szName[64], iAccess, iCallback

  98.         menu_item_getinfo(iMenu, iItem, iAccess, szData, charsmax( szData ), szName, charsmax( szName ), iCallback)

  99.  

  100.         new iKey = str_to_num( szData )

  101.  

  102.         iPlayerWeapon[id] = true

  103.         GiveItem(id)

  104.  

  105.         new iReturn

  106.         ExecuteForward(g_Forward, iReturn, id, iKey)

  107.  

  108.         give_weapon_anaconda(id)

  109.         ChatColor(id, "%L", id, "WM_WEAPON_SET", szName)

  110.  

  111.         menu_destroy( iMenu )

  112.         return PLUGIN_HANDLED

  113. }

  114.  

  115. public GiveItem(id)

  116. {

  117.         give_item(id, "weapon_hegrenade")

  118.         give_item(id, "weapon_smokegrenade")

  119.         give_item(id, "weapon_flashbang")

  120.         give_item(id, "weapon_flashbang")

  121.  

  122.         cs_set_user_armor(id, 100, CS_ARMOR_VESTHELM)

  123.  

  124.         if(get_user_team(id) == 2)

  125.         {

  126.                 give_item(id, "item_thighpack")

  127.         }

  128. }

  129.  

  130. public RoundStart()

  131. {

  132.         ++g_Round

  133.  

  134.         new iPlayers[32]

  135.         new iPlayer, iNum

  136.  

  137.         get_players(iPlayers, iNum)

  138.  

  139.         for(new i; i < iNum;i++)

  140.         {

  141.                 iPlayer = iPlayers[i]

  142.  

  143.                 if(!is_user_connected(iPlayer))

  144.                         continue

  145.  

  146.                 iPlayerWeapon[iPlayer] = false

  147.         }

  148. }

  149.  

  150. public GameCommencing()

  151. {

  152.         g_Round = 0

  153. }

  154.  

  155. stock ChatColor(const id, const input[], any:...)

  156. {

  157.         new count = 1, players[32]

  158.         static msg[191]

  159.         vformat(msg, 190, input, 3)

  160.        

  161.         replace_all(msg, 190, "!g", "^4")

  162.         replace_all(msg, 190, "!y", "^1")

  163.         replace_all(msg, 190, "!t", "^3")

  164.        

  165.         if (id) players[0] = id; else get_players(players, count, "ch")

  166.         {

  167.                 for (new i = 0; i < count; i++)

  168.                 {

  169.                         if (is_user_connected(players[i]))

  170.                         {

  171.                                 message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, players[i]);

  172.                                 write_byte(players[i]);

  173.                                 write_string(msg);

  174.                                 message_end();

  175.                         }

  176.                 }

  177.         }

  178. }

  179.  
[/pawn]
Итак мы в нем
1.создали мульти форвард-функцию
[pawn]
  1. g_Forward = CreateMultiForward("set_user_zpweapon", ET_CONTINUE, FP_CELL, FP_CELL)
[/pawn]
2.сделали бинд на менюшку
[pawn]
  1. public client_authorized(id)

  2. {

  3.         client_cmd(id, "bind ^"F3^" ^"weaponmenu^"")

  4. }
[/pawn]
3.создаем директорию ланг файла
[pawn]
  1.         register_dictionary("wm.txt")
[/pawn]

4. регистрируем команду для выдачи оружия
[pawn]
  1.         register_clcmd("weaponmenu", "MainMenu")
[/pawn]

5.создаем пункты меню
[pawn]
  1. formatex(szTitle, charsmax( szTitle ), "%L", id, "WM_MAINMENU_TITLE")

  2.         new iMenu = menu_create("Меню оружие", "MainMenu_handler" )

  3.  

  4.         formatex(szItem, charsmax( szItem ), "%L", id, "WM_MAINMENU_ITEM_1")

  5.         menu_additem(iMenu, szItem, "1", 0)

  6.  

  7.         formatex(szItem, charsmax( szItem ), "%L", id, "WM_MAINMENU_ITEM_2")

  8.         menu_additem(iMenu, szItem, "2", 0)

  9.  

  10.         formatex(szItem, charsmax( szItem ), "%L", id, "WM_MAINMENU_ITEM_3")

  11.         menu_additem(iMenu, szItem, "3", 0)

  12.  

  13.         formatex(szItem, charsmax( szItem ), "%L", id, "WM_MAINMENU_ITEM_4")

  14.         menu_additem(iMenu, szItem, "4", 0)

  15.  

  16.         formatex(szItem, charsmax( szItem ), "%L", id, "WM_MAINMENU_ITEM_5")

  17.         menu_additem(iMenu, szItem, "5", 0)
[/pawn]
если захотите добавить еще, все очень просто
[pawn]
  1.         formatex(szItem, charsmax( szItem ), "%L", id, "WM_MAINMENU_ITEM_6")

  2.         menu_additem(iMenu, szItem, "6", 0)
[/pawn]
-----------------------------------
чтобы вашы пункты меню соответствовали оружиям из других плагинов cso
нам понадобиться всего на всего
[pawn]
  1. public set_user_zpweapon(id, iNum)

  2. {

  3.         if(iNum == 1)

  4.         {

  5.                 give_m24(id)//не забываем изменять ее согласно тому оружию, что у вас в плагине

  6.         }

  7. }
[/pawn]
-----------------------------------
и конечно же содержимое файла wm.txt
[pawn]
  1. [en]

  2. WM_NOACCEESS = !y[ !gWeaponMenu !y]У !tвас !gнедостаточно прав

  3. WM_NOROUND = !y[ !gWeaponMenu !y]В !t1 !gраунде !yбрать оружие !gнельзя

  4. WM_ALREADY = !y[ !gWeaponMenu !y]Вы !tуже !gбрали !yоружие в этом !gраунде!

  5. WM_NOALIVE = !y[ !gWeaponMenu !y]Вы !tмертвы!!!

  6.  

  7. WM_MAINMENU_TITLE = Выберите оружие

  8. WM_MAINMENU_ITEM_1 = m24

  9. WM_MAINMENU_ITEM_2 = mg3

  10. WM_MAINMENU_ITEM_3 = xm8

  11. WM_MAINMENU_ITEM_4 = guitar

  12. WM_MAINMENU_ITEM_5 = thompson

  13.  

  14. WM_WEAPON_SET = !y[ !gWeaponMenu !y]Вы !tвзяли !g%s

  15.  

  16. [ru]

  17. WM_NOACCEESS = !y[ !gWeaponMenu !y]У !tвас !gнедостаточно прав

  18. WM_NOROUND = !y[ !gWeaponMenu !y]В !t1 !gраунде !yбрать оружие !gнельзя

  19. WM_ALREADY = !y[ !gWeaponMenu !y]Вы !tуже !gбрали !yоружие в этом !gраунде!

  20. WM_NOALIVE = !y[ !gWeaponMenu !y]Вы !tмертвы!!!

  21.  

  22. WM_MAINMENU_TITLE = Выберите оружие

  23. WM_MAINMENU_ITEM_1 = m24

  24. WM_MAINMENU_ITEM_2 = mg3

  25. WM_MAINMENU_ITEM_3 = xm8

  26. WM_MAINMENU_ITEM_4 = guitar

  27. WM_MAINMENU_ITEM_5 = thompson

  28.  

  29. WM_WEAPON_SET = !y[ !gWeaponMenu !y]Вы !tвзяли !g%s
[/pawn]

не судите строго, первая большая статья, если есть замечания, с радостью же приму к сведению
Последний раз редактировалось grisha2429 10 апр 2014, 20:01, всего редактировалось 1 раз.
Матфея 22:37-39 Иисус сказал ему: "возлюби Господа Бога твоего всем сердцем твоим, и всею душею твоею, и всем разумением твоим": Сия есть первая и наибольшая заповедь; Вторая же подобная ей: "возлюби ближнего твоего, как самого себя"
Аватара пользователя
grisha2429
 
Сообщения: 633
Зарегистрирован: 14 июл 2013, 17:19
Забанен
Благодарил (а): 156 раз.
Поблагодарили: 75 раз.
Опыт программирования: Около 3 месяцев
Языки программирования: Counter-Strike 1.6

Re: Меню ксо пушек

Сообщение gyxoBka » 25 апр 2014, 17:17

[spoiler]grisha2429 хотел написать статью, чтобы снляи предупреждение, а на деле получил бан :bravo:[/spoiler]
Ню-ню-ню, не пишите мне в ЛС ху*ню.
В ЛС не помогаю и не просите.
Аватара пользователя
gyxoBka
Скриптер
 
Сообщения: 888
Зарегистрирован: 29 янв 2012, 18:03
Благодарил (а): 239 раз.
Поблагодарили: 249 раз.
Опыт программирования: Больше трех лет

Re: Меню ксо пушек

Сообщение straus » 25 апр 2014, 18:53

да срал я на тебя!
могу помочь в скриптинге.
п.с.
кто бы мне помог))
Аватара пользователя
straus
 
Сообщения: 62
Зарегистрирован: 13 фев 2014, 10:38
Забанен
Благодарил (а): 17 раз.
Поблагодарили: 15 раз.
Опыт программирования: Около 3 месяцев
Языки программирования: Counter-Strike 1.6

Re: Меню ксо пушек

Сообщение sa1me » 25 апр 2014, 20:04

GaMeRs писал(а):
Yukki писал(а):меню из старой системы

В данной "статье" используется новая система.

Не заметил... Каюсь.
Аватара пользователя
sa1me
 
Сообщения: 361
Зарегистрирован: 07 апр 2014, 20:51
Откуда: pfnAddToFullPack
Благодарил (а): 174 раз.
Поблагодарили: 177 раз.
Опыт программирования: Меньше недели

Пред.

Вернуться в Статьи / фрагменты кода

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 9