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

[INC] Смена HUD у оружия (Weapon Custom Hud)

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

Модератор: Chuvi

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

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

[INC] Смена HUD у оружия (Weapon Custom Hud)

Сообщение Polarhigh » 24 янв 2012, 22:19

Автор статьи: trofian
Автор плагина: trofian

Итак, относительно недавно нашли способ менять hud у оружия, так же hud патронов и т.п.
Этот плагин поможет избавиться от некоторой нудной работы, такой как поиск офсетов, добавления своих дополнительных функций и регистрирования команд типа register_clcmd("weapon_mygun", "switch_handler")

Сейчас всё объясню на примере тестового плагина, который меняет hud ножу
Прежде всего подключаем инклуд
[pawn]
  1. #include <hud>
[/pawn]

Далее удобнее определить константы нашего старого оружия и нового
[pawn]
  1. #define WEAPON_OLD "weapon_knife"

  2.  

  3. #define WEAPON_NEW1 "weapon_knife1"

  4. #define WEAPON_NEW2 "weapon_knife2"

  5. #define WEAPON_NEW3 "weapon_knife3"

  6. #define WEAPON_NEW4 "weapon_knife4"

  7. #define WEAPON_NEW5 "weapon_knife5"
[/pawn]

теперь в plugin_init() зарегистрируем все эти худы
[pawn]
  1. public plugin_init()

  2. {

  3. ...

  4.  n21_register_hud(WEAPON_OLD, WEAPON_NEW1)

  5.  n21_register_hud(WEAPON_OLD, WEAPON_NEW2)

  6.  n21_register_hud(WEAPON_OLD, WEAPON_NEW3)

  7.  n21_register_hud(WEAPON_OLD, WEAPON_NEW4)

  8.  n21_register_hud(WEAPON_OLD, WEAPON_NEW5)

  9. ...

  10. }
[/pawn]

так теперь необходимо закачать клиенту сам спрайт и специальные .txt файлы с именами наших новых ножей, т.е. мы должны настроить 5 файлов
Код: Выделить всё
weapon_knife1.txt
weapon_knife2.txt
weapon_knife2.txt
weapon_knife3.txt
weapon_knife5.txt


Cодержимое файлов можно посмотреть во вложении
Стоит отметить, что в 1 спрайт влезает до 5 худов оружий
[pawn]
  1. public plugin_precache()

  2. {

  3.  precache_generic("sprites/weapon_knife1.txt")

  4.  precache_generic("sprites/weapon_knife2.txt")

  5.  precache_generic("sprites/weapon_knife3.txt")

  6.  precache_generic("sprites/weapon_knife4.txt")

  7.  precache_generic("sprites/weapon_knife5.txt")

  8.  

  9.  precache_generic("sprites/custom_hud/640hud21.spr")

  10. }
[/pawn]

Чтоб мы могли всё это дело проверить зарегистрируем команды в plugin_init :
[pawn]
  1. register_clcmd("say /k1", "knife_1")

  2. register_clcmd("say /k2", "knife_2")

  3. register_clcmd("say /k3", "knife_3")

  4. register_clcmd("say /k4", "knife_4")

  5. register_clcmd("say /k5", "knife_5")

  6. register_clcmd("say /k6", "knife_old")
[/pawn]

Вот и сами функции:
[pawn]
  1. public knife_1(id)      n21_hud_change_to(id, WEAPON_OLD, WEAPON_NEW1)

  2. public knife_2(id)      n21_hud_change_to(id, WEAPON_OLD, WEAPON_NEW2)

  3. public knife_3(id)      n21_hud_change_to(id, WEAPON_OLD, WEAPON_NEW3)

  4. public knife_4(id)      n21_hud_change_to(id, WEAPON_OLD, WEAPON_NEW4)

  5. public knife_5(id)      n21_hud_change_to(id, WEAPON_OLD, WEAPON_NEW5)

  6. public knife_old(id)    n21_hud_change_to(id, WEAPON_OLD, WEAPON_OLD)
[/pawn]

Структура функции n21_hud_change_to
1 аргумент - id игрока
2 аргумент - имя оружия, худ которого мы меняем
3 аргумент - имя нового оружия

Такой вызов функции:
[pawn]
  1. n21_hud_change_to(id, "weapon_knife", "weapon_knife")
[/pawn]
вернёт стандартный худ указанного оружия

Таким образом в результате мы получаем такой тестовый плагин:
[pawn]
  1. #include <amxmodx>

  2. #include <hud>

  3.  

  4. #define PLUGIN  "Hud Test"

  5. #define AUTHOR  "trofian"

  6. #define VERSION "1.0"

  7.  

  8. #define WEAPON_OLD "weapon_knife"

  9.  

  10. #define WEAPON_NEW1 "weapon_knife1"

  11. #define WEAPON_NEW2 "weapon_knife2"

  12. #define WEAPON_NEW3 "weapon_knife3"

  13. #define WEAPON_NEW4 "weapon_knife4"

  14. #define WEAPON_NEW5 "weapon_knife5"

  15.  

  16. public plugin_precache()

  17. {

  18.         precache_generic("sprites/weapon_knife1.txt")

  19.         precache_generic("sprites/weapon_knife2.txt")

  20.         precache_generic("sprites/weapon_knife3.txt")

  21.         precache_generic("sprites/weapon_knife4.txt")

  22.         precache_generic("sprites/weapon_knife5.txt")

  23.        

  24.         precache_generic("sprites/custom_hud/640hud21.spr")

  25. }

  26.  

  27. public plugin_init()

  28. {

  29.         register_plugin(PLUGIN, VERSION, AUTHOR)

  30.        

  31.         n21_register_hud(WEAPON_OLD, WEAPON_NEW1)

  32.         n21_register_hud(WEAPON_OLD, WEAPON_NEW2)

  33.         n21_register_hud(WEAPON_OLD, WEAPON_NEW3)

  34.         n21_register_hud(WEAPON_OLD, WEAPON_NEW4)

  35.         n21_register_hud(WEAPON_OLD, WEAPON_NEW5)

  36.        

  37.         register_clcmd("say /k1", "knife_1")

  38.         register_clcmd("say /k2", "knife_2")

  39.         register_clcmd("say /k3", "knife_3")

  40.         register_clcmd("say /k4", "knife_4")

  41.         register_clcmd("say /k5", "knife_5")

  42.         register_clcmd("say /k6", "knife_old")

  43. }

  44.  

  45. public knife_1(id)      n21_hud_change_to(id, WEAPON_OLD, WEAPON_NEW1)

  46. public knife_2(id)      n21_hud_change_to(id, WEAPON_OLD, WEAPON_NEW2)

  47. public knife_3(id)      n21_hud_change_to(id, WEAPON_OLD, WEAPON_NEW3)

  48. public knife_4(id)      n21_hud_change_to(id, WEAPON_OLD, WEAPON_NEW4)

  49. public knife_5(id)      n21_hud_change_to(id, WEAPON_OLD, WEAPON_NEW5)

  50. public knife_old(id)    n21_hud_change_to(id, WEAPON_OLD, WEAPON_OLD)
[/pawn]

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

Важно понимать, что это всего лишь пример, это НЕ готовая реализация, вы можете использовать функции, которые предоставляет плагин, как угодно и где угодно, он всего лишь избавляет от рутины, логику работы вы продумываете сами, вас не заставляют придерживаться каких-то рамок.

Необходимо что бы плагин custom_hud.amxx был выше в списке plugins.ini плагинов использующих инклуд hud.inc

Хочу отметить что плагин custom_hud.amxx который есть в приложении подключить нужно обязательно!
Последний раз редактировалось Polarhigh 25 май 2013, 12:24, всего редактировалось 14 раз(а).
Аватара пользователя
Polarhigh
 
Сообщения: 1006
Зарегистрирован: 04 май 2010, 17:41
Благодарил (а): 131 раз.
Поблагодарили: 388 раз.
Опыт программирования: Больше трех лет

Re: [INC] Смена HUD у оружия (Weapon Custom Hud)

Сообщение Polarhigh » 17 мар 2013, 11:38

почему нельзя? рука не поднимается?
Аватара пользователя
Polarhigh
 
Сообщения: 1006
Зарегистрирован: 04 май 2010, 17:41
Благодарил (а): 131 раз.
Поблагодарили: 388 раз.
Опыт программирования: Больше трех лет

Re: [INC] Смена HUD у оружия (Weapon Custom Hud)

Сообщение vampir » 17 мар 2013, 12:19

У меня то не поднимется еще как, а вот у новичков нет.
P.s. Надо обновть тутор.
Прошу не тревожить на счет плагинов или дополнений в ZP. Я в инактиве!!!
Аватара пользователя
vampir
 
Сообщения: 625
Зарегистрирован: 02 авг 2010, 13:27
Откуда: Уфа
Благодарил (а): 138 раз.
Поблагодарили: 91 раз.
Языки программирования: Counter-Strike 1.6

Re: [INC] Смена HUD у оружия (Weapon Custom Hud)

Сообщение Polarhigh » 17 мар 2013, 12:39

я не понимаю в чем проблема просто и соответственно не могу обновить тутор)

Добавлено спустя 48 секунд:
кстати, ты мне то же говорил ранее в этой теме, что нужно обновить тутор, как оказалось проблема была не в моем плагине, может сейчас такая же ситуация?
Аватара пользователя
Polarhigh
 
Сообщения: 1006
Зарегистрирован: 04 май 2010, 17:41
Благодарил (а): 131 раз.
Поблагодарили: 388 раз.
Опыт программирования: Больше трех лет

Re: [INC] Смена HUD у оружия (Weapon Custom Hud)

Сообщение vampir » 17 мар 2013, 12:49

Тогда да я не понял до конца, тут тоже вроде как, покопаюсь и отпишусь.
Прошу не тревожить на счет плагинов или дополнений в ZP. Я в инактиве!!!
Аватара пользователя
vampir
 
Сообщения: 625
Зарегистрирован: 02 авг 2010, 13:27
Откуда: Уфа
Благодарил (а): 138 раз.
Поблагодарили: 91 раз.
Языки программирования: Counter-Strike 1.6

Пред.

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

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

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