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

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

Статьи или фрагменты кода для новичков и уже опытных скриптеров по 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: Меню ксо пушек

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

Плохая статья.
Делаю плагины (не сложные) на заказ.
Скайп: Akpo06aT
Аватара пользователя
Akpo6aT
 
Сообщения: 179
Зарегистрирован: 20 мар 2014, 19:12
Благодарил (а): 35 раз.
Поблагодарили: 26 раз.
Опыт программирования: Около 3 месяцев
Языки программирования: Counter-Strike 1.6

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

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

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

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

Сообщение Akpo6aT » 10 апр 2014, 15:20

grisha2429, Название темы
Меню ксо пушек
Следовательно:
1.Мы должны создать само меню из пушек, ну например вот [pawn]
  1. #include <amxmodx>

  2. #include <cso_weapons>

  3.  

  4. #define PLUGIN "[CSO] Weapon"

  5. #define VERSION "1.0"

  6. #define AUTHOR "Akpo6aT"

  7.  

  8. public plugin_init()

  9. {

  10.         register_plugin(PLUGIN, VERSION, AUTHOR)

  11.         register_clcmd("say /cso", "cso_weapon")

  12. }

  13.  

  14. public cso_weapon(id)

  15. {

  16.         new menu = menu_create("[\rCSO\y] Weapons", "cso_weapon_key")

  17.         menu_additem(menu, "Пушка \r[#1]", "1")

  18.         menu_additem(menu, "Пушка \r[#2]", "2")

  19.         menu_setprop(menu, MPROP_EXITNAME, "Выход")

  20.         menu_display(id, menu, 0)

  21.         return PLUGIN_HANDLED

  22. }

  23.  

  24. public cso_weapon_key(id, menu, item)

  25. {

  26.         if(item == MENU_EXIT || !is_user_alive(id))

  27.         {

  28.                 menu_destroy(menu)

  29.                 return PLUGIN_HANDLED

  30.         }

  31.        

  32.         new s_Data[6], s_Name[64], i_Access, i_Callback

  33.         menu_item_getinfo(menu, item, i_Access, s_Data, charsmax(s_Data), s_Name, charsmax(s_Name), i_Callback)

  34.        

  35.         new i_Key = str_to_num(s_Data)

  36.         switch(i_Key)

  37.         {

  38.                 case 1: give_m3(id)

  39.                 case 2: give_m200(id)

  40.         }

  41.         menu_destroy(menu)

  42.         return PLUGIN_HANDLED

  43. }
[/pawn]
2.Затем мы должны сделать инклуд с помощью которого мы привяжем плагин оружия к нашему меню, к примеру вот так: [pawn]
  1. native give_m200(index)

  2. native give_m3(index)
[/pawn]
3.Теперь в самом плагине оружия нужно добавит натив из инклуда, чтобы оружие выдавалось, к примеру: [pawn]
  1. public plugin_natives()

  2. {

  3.         register_native("give_m200", "give_m200", 1)

  4.         register_native("give_m3", "give_m3", 1)

  5. }
[/pawn]

public plugin_natives()

В 1 кавычках мы определяем функцию с помощью которой мы будет выдавать оружие в других плагинах, а во вторых кавычках мы вызываем public, в котором выдается оружие.

Ну и всё. Получилась компактная статья, без лишних и ненужных функций. Думаю тут всё понятно.
Делаю плагины (не сложные) на заказ.
Скайп: Akpo06aT
Аватара пользователя
Akpo6aT
 
Сообщения: 179
Зарегистрирован: 20 мар 2014, 19:12
Благодарил (а): 35 раз.
Поблагодарили: 26 раз.
Опыт программирования: Около 3 месяцев
Языки программирования: Counter-Strike 1.6

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

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

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

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

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

Зачем нужен ланг
Зачем форвард
Зачем автобинд
Зачем полностью плагин CSO оружия выкладывать
Зачем в плагинах CSO (которые ты выложил) #include <zombieplague> ведь данное оружие ставят на все моды, а не только на ZM
Делаю плагины (не сложные) на заказ.
Скайп: Akpo06aT
Аватара пользователя
Akpo6aT
 
Сообщения: 179
Зарегистрирован: 20 мар 2014, 19:12
Благодарил (а): 35 раз.
Поблагодарили: 26 раз.
Опыт программирования: Около 3 месяцев
Языки программирования: Counter-Strike 1.6

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

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

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

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

Сообщение Akpo6aT » 10 апр 2014, 17:16

grisha2429, Вопросы))

Добавлено спустя 29 секунд:
Я имел ввиду зачем ты это в данной статье используешь?
Зачем нужен ланг
Зачем форвард
Зачем автобинд
Зачем полностью плагин CSO оружия выкладывать
Зачем в плагинах CSO (которые ты выложил) #include <zombieplague> ведь данное оружие ставят на все моды, а не только на ZM
Делаю плагины (не сложные) на заказ.
Скайп: Akpo06aT
Аватара пользователя
Akpo6aT
 
Сообщения: 179
Зарегистрирован: 20 мар 2014, 19:12
Благодарил (а): 35 раз.
Поблагодарили: 26 раз.
Опыт программирования: Около 3 месяцев
Языки программирования: Counter-Strike 1.6

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

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

сколько людей столько мнений))

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

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

Сообщение emel-maks-va » 11 апр 2014, 15:37

Вам не кажется, что это не подходит для данной ветки форума? Я еще понимаю, если бы ты описал действие нативов и показал бы это на примере ксо меню. Тут же ты показываешь как делать ланги, добавлять пункты в меню итд.
Ну и если ты даже написал так, такое чувство, что ты писал про меню, а не добавление оружия в него. Например ты, можно сказать, самую главную строчку не пояснил, а просто написал в общем коде меню, что врят ли новичок заметит.
[pawn]
  1. native give_weapon_anaconda(id)
[/pawn]
И еще можно было бы пояснить, как сделать в плагине натив, если его нет.
Мод не продаю, заказы не принимаю, плагины не пишу, в кс не играю.
Аватара пользователя
emel-maks-va
 
Сообщения: 373
Зарегистрирован: 18 сен 2012, 21:32
Благодарил (а): 105 раз.
Поблагодарили: 88 раз.
Опыт программирования: Около 6 месяцев
Языки программирования: Counter-Strike 1.6
HTML
PHP
CSS

След.

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

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

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