Главная » Статьи » Скриптинг/ Статьи/ Мануалы

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


Автор статьи: trofian
Автор плагина: trofian
Источник: amx-x.ru

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

Code
#include <hud>


Далее удобнее определить константы нашего старого оружия и нового

Code
#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() зарегестрируем все эти худы

Code
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 файлов

Code
weapon_knife1.txt
weapon_knife2.txt
weapon_knife2.txt
weapon_knife3.txt
weapon_knife5.txt


Cодержимое файлов можно посмотреть во вложении
Стоит отметить, что в 1 спрайт влезает до 5 худов оружий

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 :

Code
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")


Вот и сами функции:

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

Такой вызов функции:

Code
n21_hud_change_to(id, "weapon_knife", "weapon_knife")


вернёт стандартный худ указанного оружия

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

Code
#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)


Пример и все файлы скачать можно ниже
Категория: Скриптинг/ Статьи/ Мануалы | Добавил: Administrator(ZO) (28.01.2012)
Просмотров: 726 | Рейтинг: 0.0/0
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Вверх