Пользователь
- Сообщения
- 6
- Реакции
- 0
Неверный раздел. Перенесено
Здравствуйте дорогие форумчане
Можете ли вы помочь в усовершенствовании плагина?
Обязательно ли использовать?
Т.к опыт в скриптинге невелик...
Прошу вашей помощи в разборе этой темы
Можете ли вы помочь в усовершенствовании плагина?
C++:
#include <amxmodx>
#include <engine>
#include <hamsandwich>
#include <reapi>
#include <zp50_items>
#define KOPTER_MODEL_P "models/zpe/weapon/pistol/kopter/p_kopter.mdl" // P модель
#define KOPTER_MODEL_V "models/zpe/weapon/pistol/kopter/v_kopter.mdl" // V модель
#define KOPTER_MODEL_W "models/zpe/weapon/pistol/kopter/w_kopter.mdl" // W модель
#define KOPTER_WEAPON_KEY 800 // Ключ для оружия
#define GetCostumWeapon(%1) (get_entvar(%1, var_impulse) == KOPTER_WEAPON_KEY) // Получаем ключ объект (оружия)
#define SetCostumWeapon(%1) set_entvar(%1, var_impulse, KOPTER_WEAPON_KEY) // Устанавливаем ключ для объекта (оружия)
// Анимации смотреть в HLMV
enum {
IDLE = 0,
SHOOT1,
SHOOT2,
SHOOT_EMPTY,
RELOAD,
DRAW
}
new g_weapon_kopter[33];
new g_ItemID;
public plugin_init()
{
register_plugin("[ZPE] Weapon: Kopter", "0.1", "ProSTo Zombie");
RegisterHam(Ham_Item_Deploy, "weapon_deagle", "HS_Item_Deploy", 1);
RegisterHookChain(RG_CWeaponBox_SetModel, "RC_SetWorldModel", 0);
g_ItemID = zp_items_register("ITEM_PISTOL_KOPTER", 0, 1);
}
public plugin_precache()
{
precache_model(KOPTER_MODEL_P);
precache_model(KOPTER_MODEL_V);
precache_model(KOPTER_MODEL_W);
}
public client_disconnected(id)
{
g_weapon_kopter[id] = false;
}
public zp_fw_items_select_pre(id, itemid, ignorecost)
{
if(itemid != g_ItemID)
{
return ZP_ITEM_AVAILABLE;
}
if(zp_core_is_zombie(id))
{
return ZP_ITEM_DONT_SHOW;
}
return ZP_ITEM_AVAILABLE;
}
public zp_fw_items_select_post(id, itemid, ignorecost)
{
if(itemid != g_ItemID)
{
return;
}
give_kopter(id);
}
public give_kopter(id)
{
new weapon_kopter = rg_give_custom_item(id, "weapon_deagle", GT_DROP_AND_REPLACE, KOPTER_WEAPON_KEY);
if(weapon_kopter > 0)
{
SetCostumWeapon(weapon_kopter);
UTIL_PlayWeaponAnimation(id, DRAW);
}
g_weapon_kopter[id] = true;
}
public HS_Item_Deploy(weapon_ent)
{
new id = get_member(weapon_ent, m_pPlayer);
if (!is_user_connected(id) || !GetCostumWeapon(weapon_ent))
{
return HAM_IGNORED;
}
if(!g_weapon_kopter[id])
{
return HAM_IGNORED;
}
set_entvar(id, var_viewmodel, KOPTER_MODEL_V);
set_entvar(id, var_weaponmodel, KOPTER_MODEL_P);
UTIL_PlayWeaponAnimation(id, DRAW);
return HAM_IGNORED;
}
public RC_SetWorldModel(const weaponbox, const model[])
{
new weapon = getWeaponBox(weaponbox);
if (weapon != NULLENT && GetCostumWeapon(weapon))
{
SetHookChainArg(2, ATYPE_STRING, KOPTER_MODEL_W);
}
return HC_CONTINUE;
}
stock UTIL_PlayWeaponAnimation(const id, const sequence)
{
set_entvar(id, var_weaponanim, sequence)
message_begin(MSG_ONE_UNRELIABLE, SVC_WEAPONANIM, .player = id);
write_byte(sequence);
write_byte(get_entvar(id, var_body));
message_end();
}
stock get_player(weapon)
{
return get_pdata_cbase(weapon, 41, 4)
}
stock getWeaponBox(const weaponbox)
{
for (new i = 0, weapon; i < MAX_ITEM_TYPES; i++)
{
weapon = get_member(weaponbox, m_WeaponBox_rgpPlayerItems, i);
if (!is_nullent(weapon))
{
return weapon;
}
}
return NULLENT;
}
Обязательно ли использовать?
FM_UpdateClientData
Т.к опыт в скриптинге невелик...
Прошу вашей помощи в разборе этой темы