Автор плагина: trofian
Итак, относительно недавно нашли способ менять hud у оружия, так же hud патронов и т.п.
Этот плагин поможет избавиться от некоторой нудной работы, такой как поиск офсетов, добавления своих дополнительных функций и регистрирования команд типа register_clcmd("weapon_mygun", "switch_handler")
Сейчас всё объясню на примере тестового плагина, который меняет hud ножу
Прежде всего подключаем инклуд
[pawn]
- #include <hud>
Далее удобнее определить константы нашего старого оружия и нового
[pawn]
- #define WEAPON_OLD "weapon_knife"
- #define WEAPON_NEW1 "weapon_knife1"
- #define WEAPON_NEW2 "weapon_knife2"
- #define WEAPON_NEW3 "weapon_knife3"
- #define WEAPON_NEW4 "weapon_knife4"
- #define WEAPON_NEW5 "weapon_knife5"
теперь в plugin_init() зарегистрируем все эти худы
[pawn]
- public plugin_init()
- {
- ...
- n21_register_hud(WEAPON_OLD, WEAPON_NEW1)
- n21_register_hud(WEAPON_OLD, WEAPON_NEW2)
- n21_register_hud(WEAPON_OLD, WEAPON_NEW3)
- n21_register_hud(WEAPON_OLD, WEAPON_NEW4)
- n21_register_hud(WEAPON_OLD, WEAPON_NEW5)
- ...
- }
так теперь необходимо закачать клиенту сам спрайт и специальные .txt файлы с именами наших новых ножей, т.е. мы должны настроить 5 файлов
- Код: Выделить всё
weapon_knife1.txt
weapon_knife2.txt
weapon_knife2.txt
weapon_knife3.txt
weapon_knife5.txt
Cодержимое файлов можно посмотреть во вложении
Стоит отметить, что в 1 спрайт влезает до 5 худов оружий
[pawn]
- public plugin_precache()
- {
- precache_generic("sprites/weapon_knife1.txt")
- precache_generic("sprites/weapon_knife2.txt")
- precache_generic("sprites/weapon_knife3.txt")
- precache_generic("sprites/weapon_knife4.txt")
- precache_generic("sprites/weapon_knife5.txt")
- precache_generic("sprites/custom_hud/640hud21.spr")
- }
Чтоб мы могли всё это дело проверить зарегистрируем команды в plugin_init :
[pawn]
- register_clcmd("say /k1", "knife_1")
- register_clcmd("say /k2", "knife_2")
- register_clcmd("say /k3", "knife_3")
- register_clcmd("say /k4", "knife_4")
- register_clcmd("say /k5", "knife_5")
- register_clcmd("say /k6", "knife_old")
Вот и сами функции:
[pawn]
- public knife_1(id) n21_hud_change_to(id, WEAPON_OLD, WEAPON_NEW1)
- public knife_2(id) n21_hud_change_to(id, WEAPON_OLD, WEAPON_NEW2)
- public knife_3(id) n21_hud_change_to(id, WEAPON_OLD, WEAPON_NEW3)
- public knife_4(id) n21_hud_change_to(id, WEAPON_OLD, WEAPON_NEW4)
- public knife_5(id) n21_hud_change_to(id, WEAPON_OLD, WEAPON_NEW5)
- public knife_old(id) n21_hud_change_to(id, WEAPON_OLD, WEAPON_OLD)
Структура функции n21_hud_change_to
1 аргумент - id игрока
2 аргумент - имя оружия, худ которого мы меняем
3 аргумент - имя нового оружия
Такой вызов функции:
[pawn]
- n21_hud_change_to(id, "weapon_knife", "weapon_knife")
вернёт стандартный худ указанного оружия
Таким образом в результате мы получаем такой тестовый плагин:
[pawn]
- #include <amxmodx>
- #include <hud>
- #define PLUGIN "Hud Test"
- #define AUTHOR "trofian"
- #define VERSION "1.0"
- #define WEAPON_OLD "weapon_knife"
- #define WEAPON_NEW1 "weapon_knife1"
- #define WEAPON_NEW2 "weapon_knife2"
- #define WEAPON_NEW3 "weapon_knife3"
- #define WEAPON_NEW4 "weapon_knife4"
- #define WEAPON_NEW5 "weapon_knife5"
- public plugin_precache()
- {
- precache_generic("sprites/weapon_knife1.txt")
- precache_generic("sprites/weapon_knife2.txt")
- precache_generic("sprites/weapon_knife3.txt")
- precache_generic("sprites/weapon_knife4.txt")
- precache_generic("sprites/weapon_knife5.txt")
- precache_generic("sprites/custom_hud/640hud21.spr")
- }
- public plugin_init()
- {
- register_plugin(PLUGIN, VERSION, AUTHOR)
- n21_register_hud(WEAPON_OLD, WEAPON_NEW1)
- n21_register_hud(WEAPON_OLD, WEAPON_NEW2)
- n21_register_hud(WEAPON_OLD, WEAPON_NEW3)
- n21_register_hud(WEAPON_OLD, WEAPON_NEW4)
- n21_register_hud(WEAPON_OLD, WEAPON_NEW5)
- register_clcmd("say /k1", "knife_1")
- register_clcmd("say /k2", "knife_2")
- register_clcmd("say /k3", "knife_3")
- register_clcmd("say /k4", "knife_4")
- register_clcmd("say /k5", "knife_5")
- register_clcmd("say /k6", "knife_old")
- }
- public knife_1(id) n21_hud_change_to(id, WEAPON_OLD, WEAPON_NEW1)
- public knife_2(id) n21_hud_change_to(id, WEAPON_OLD, WEAPON_NEW2)
- public knife_3(id) n21_hud_change_to(id, WEAPON_OLD, WEAPON_NEW3)
- public knife_4(id) n21_hud_change_to(id, WEAPON_OLD, WEAPON_NEW4)
- public knife_5(id) n21_hud_change_to(id, WEAPON_OLD, WEAPON_NEW5)
- public knife_old(id) n21_hud_change_to(id, WEAPON_OLD, WEAPON_OLD)
Во вложении приложены необходимые файлы, о настройке .txt файлов будет информация чуть позже, хотя вы можете сами изучить hud.txt и сделать по анологии свои файлы
Важно понимать, что это всего лишь пример, это НЕ готовая реализация, вы можете использовать функции, которые предоставляет плагин, как угодно и где угодно, он всего лишь избавляет от рутины, логику работы вы продумываете сами, вас не заставляют придерживаться каких-то рамок.
Необходимо что бы плагин custom_hud.amxx был выше в списке plugins.ini плагинов использующих инклуд hud.inc
Хочу отметить что плагин custom_hud.amxx который есть в приложении подключить нужно обязательно!