Этот плагин поможет избавиться от некоторой нудной работы, такой как поиск оффсетов, добавления своих дополнительных функций и регистрирования команд типа 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.