Участник
Пользователь
- Сообщения
- 78
- Реакции
- 7
Приветствую всех. Я сегодня попробовал написать свой первый небольшой плагин (ну почти, не считая мелких поделок 5-летней давности), хотел бы его показать и задать несколько вопросов. Изначально писал с использованием fakemeta и древнего способа ловли и дополнения сообщения, пока в поисках примеров и описаний на форумах не наткнулся на аналоги из reapi, решил все переписать, а пару строк почти что скопировать и вставить. Смыслю пока в этом немного, поэтому вопросы будут тупые.
Задача: Убрать прицел, если игрок достал нож. Если нож убран - прицел должен появиться.
Вопросы у меня такие:
1) В аргументах двух set_member применяются символы "&" и "|", что они означают в данных местах?
2) Изначально я планировал отключить прицел не только на ножах, но и на гранатах, однако, с моими знаниями это будет еще три вызова деплоя и три вызова холстера с последующей кучей повторяющегося кода. Есть ли возможность зарегистрировать один деплой и холстер сразу на четыре weapon_ent? Или, может, есть более подходящие аналоги?
3) Хотелось бы узнать, возможно ли как-либо еще оптимизировать или дополнить код? Что-либо поменять на аналоги из reapi?
Если кто-нибудь ответит на что-либо, буду рад.
Задача: Убрать прицел, если игрок достал нож. Если нож убран - прицел должен появиться.
Код:
#include <amxmodx>
#include <hamsandwich>
#include <reapi>
#define PLUGIN "ZP Crosshair"
#define VERSION "0.1"
#define AUTHOR "Ash Fever"
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)
RegisterHam(Ham_Item_Deploy, "weapon_knife", "Knife_Deploy_Post", 1);
RegisterHam(Ham_Item_Holster, "weapon_knife", "Knife_Holster_Post", 1);
}
public Knife_Deploy_Post(weapon_ent)
{
new id;
id = get_member(weapon_ent, m_pPlayer);
if(!is_entity(weapon_ent))
return HAM_IGNORED;
if(!is_entity(id))
return HAM_IGNORED;
set_member(id, m_iHideHUD, get_member(id, m_iHideHUD) | HIDEHUD_CROSSHAIR);
return HAM_IGNORED;
}
public Knife_Holster_Post(weapon_ent)
{
new id;
id = get_member(weapon_ent, m_pPlayer);
if(!is_entity(weapon_ent))
return HAM_IGNORED;
if(!is_entity(id))
return HAM_IGNORED;
set_member(id, m_iHideHUD, get_member(id, m_iHideHUD) & ~HIDEHUD_CROSSHAIR);
return HAM_IGNORED;
}
Вопросы у меня такие:
1) В аргументах двух set_member применяются символы "&" и "|", что они означают в данных местах?
2) Изначально я планировал отключить прицел не только на ножах, но и на гранатах, однако, с моими знаниями это будет еще три вызова деплоя и три вызова холстера с последующей кучей повторяющегося кода. Есть ли возможность зарегистрировать один деплой и холстер сразу на четыре weapon_ent? Или, может, есть более подходящие аналоги?
3) Хотелось бы узнать, возможно ли как-либо еще оптимизировать или дополнить код? Что-либо поменять на аналоги из reapi?
Если кто-нибудь ответит на что-либо, буду рад.