Этот плагин поможет избавиться от некоторой нудной работы, такой как поиск оффсетов, добавления своих дополнительных функций и регистрирования команд типа register_clcmd(“weapon_mygun”, “switch_handler”)
Сейчас всё объясню на примере тестового плагина, который меняет hud ножу.
Прежде всего подключаем инклуд
#include <hud>
Теперь для удобства определим константы нашего старого оружия и нового
#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() зарегистрируем все эти худы
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
Содержимое файлов примерно такое:
2 weapon 640 custom_hud/640hud21 0 45 170 45 weapon_s 640 custom_hud/640hud21 0 45 170 45
общий формат такой
<тип> <разрешение> <спрайт> <смещение_по_X> <смещение_по_Y> <ширина> <высота>
Тип может быть следующий: weapon, weapon_s, ammo, ammo2, autoaim, crosshair, zoom, zoom_aim.
Теперь нужно закачать игроку спрайты и .txt файлы:
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 :
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)
Структура функции n21_hud_change_to
1 аргумент – id игрока
2 аргумент – имя оружия, худ которого мы меняем
3 аргумент – имя нового оружия
Такой вызов функции:
n21_hud_change_to(id, "weapon_knife", "weapon_knife")
вернёт стандартный худ ножа, т.е. чтобы вернуть стандартный худ оружия, нужно его указать во 2 и 3 аргументах функции.
Таким образом в результате мы получаем такой тестовый плагин:
#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)
Важно понимать, что это всего лишь пример, это НЕ готовая реализация, вы можете использовать функции, которые предоставляет плагин, как угодно и где угодно, он всего лишь избавляет от рутины, логику работы вы продумываете сами, вас не заставляют придерживаться каких-то рамок.
Необходимо что бы плагин custom_hud.amxx был выше в списке plugins.ini плагинов использующих инклуд hud.inc
Плагин custom_hud.amxx подключить нужно обязательно!
Sorry, the comment form is closed at this time.