- Сообщения
- 5
- Реакции
- 0
- Баллы
- 1
Приветствую! Хочу выдать игроку кастомное оружие, но вот закрепить за данным оружием патроны 45 и в запасе 250 никак не выходит. Подходящего примера не нашел, подскажите пожалуйста способ реализации.
Код:
#include <amxmodx>
#include <fakemeta>
#include <hamsandwich>
#include <reapi>
new const g_szReferance[] = "weapon_ak47";
new const g_iWeaponID = 7634191;
/** iWeapon */
#define IsCustomItem(%0) (bool:(get_entvar(%0, var_impulse) == g_iWeaponID))
/** Cvar ---> */
#define MODEL_V_2 "models/v_golden_ak47.mdl"
#define MODEL_P_2 "models/p_golden_ak47.mdl"
#define MODEL_W_2 "models/w_golden_ak47.mdl"
/** <--- */
public plugin_init()
{
register_plugin("ak-47: Golden", "0.1", "unknown");
register_clcmd("say /akg", "ClCmd_GiveAk47Golden");
RegisterHam(Ham_Item_Deploy, g_szReferance, "HamHook_Item_Deploy_Post", true);
RegisterHookChain(RG_CWeaponBox_SetModel, "@CWeaponBox_SetModel_Pre");
}
public plugin_precache()
{
engfunc(EngFunc_PrecacheModel, MODEL_V_2);
engfunc(EngFunc_PrecacheModel, MODEL_P_2);
engfunc(EngFunc_PrecacheModel, MODEL_W_2);
}
public ClCmd_GiveAk47Golden(const pId)
{
if(!is_user_alive(pId))
return;
new iWeapon = rg_give_custom_item(pId, g_szReferance, GT_REPLACE, g_iWeaponID);
set_member(iWeapon, m_Weapon_iClip, 45);
//rg_set_user_bpammo(pId, g_szReferance, 250); // ???
}
@CWeaponBox_SetModel_Pre(const iWeaponBox)
{
new iEnt = func_GetWeaponBoxWeapon(iWeaponBox);
if(iEnt == NULLENT)
return HC_CONTINUE;
if(is_entity(iEnt) && get_entvar(iEnt, var_impulse) == g_iWeaponID)
SetHookChainArg(2, ATYPE_STRING, MODEL_W_2);
return HC_CONTINUE;
}
stock func_GetWeaponBoxWeapon(const iWeaponBox)
{
for (new i, iWeapon; i < MAX_ITEM_TYPES; i++)
{
iWeapon = get_member(iWeaponBox, m_WeaponBox_rgpPlayerItems, i);
if (!is_nullent(iWeapon)) return iWeapon;
}
return NULLENT;
}
public HamHook_Item_Deploy_Post(const iItem)
{
static pId;
if(CheckItem(iItem, pId))
{
set_entvar(pId, var_viewmodel, MODEL_V_2);
set_entvar(pId, var_weaponmodel, MODEL_P_2);
}
}
bool:CheckItem(const iItem, &iPlayer)
{
if(!IsCustomItem(iItem))
return false;
iPlayer = get_member(iItem, m_pPlayer);
return true;
}