Skip to content

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

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

PluginCounter-Strike 1.6Views:42Comments:0
This page is not translated into English yet: the Russian text is shown.

Description

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

Сейчас всё объясню на примере тестового плагина, который меняет hud ножу.

Прежде всего подключаем инклуд
#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

Содержимое файлов примерно такое:

Pawn
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 файлы:

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 аргумент - имя нового оружия

Такой вызов функции:
n21_hud_change_to(id, "weapon_knife", "weapon_knife")
вернёт стандартный худ ножа, т.е. чтобы вернуть стандартный худ оружия, нужно его указать во 2 и 3 аргументах функции.

Таким образом в результате мы получаем такой тестовый плагин:

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)

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

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

Comments

No comments yet.

Related

Данный плагин добавляет костюмы для вашего сервера, модели сжаты в одну дабы не давить на лимит сервера. Так же возможно настроить его для ZombiePlague, для этого раскомментируйте код // #define ZP_SUPPORT в исходнике и скомпилируйте. Использование: /costumes - в чате чтоб открыть меню костюмов…

Pluginv0.6 [23.07.2012]

Плагин HL Weapon Physics

Добавляет физику в игру, что прибавит реалистичности на ваш сервер. Поддерживаемые моды: Half-Life, CStrike1.6, CZero (протестированы на работоспособность) win & linux Демонстрация: Внимание! Перед компиляцией не забываем размещать все файлы по директориям! Все настройки плагина находятся в…

Любителям червей посвящается! С этим плагином Вы сможете разместить специальные спауны, на которых будут сбрасываться ящики с различными бонусами (как в игре Worms 3D). Для вызова меню введите "say /wb_spawn_menu". Что входит в плагин: * Анимированные модели ящиков из игры Worms 3D * Возможность…