Правильная замена моделей гранат в моде ZP 5.0

Сообщения
14
Реакции
9
Добрый вечер всем.
Хотелось бы конкретнее узнать как правильно заменить модели гранат в моде ZP 5.0
Пробовал два варианта решения
1 - Через Ham_Item_Deploy
2 - CurWeapon
C++:
#include <amxmodx>
#include <hamsandwich>
#include <reapi>
#include <zp50_items>
#include <zp50_grenade_fire>

#define GRENADE_ID  200
#define IsCustomGrenade(%0) bool:(get_entvar(%0, var_impulse) == GRENADE_ID)

new const g_szGrenadeName[] = "weapon_hegrenade"

new const g_szGrenadeVmodel[] = "models/zm_cso/weapons/grenade_cartfrag/v_cartfrag.mdl"
new const g_szGrenadePmodel[] = "models/zm_cso/weapons/grenade_cartfrag/p_cartfrag.mdl"

new g_Item_ID

new g_has_bomb[33]

public plugin_init()
{
    register_plugin("[ZP] Weapon: Cartfrag", "0.1", "EPIDEMIC")
    RegisterHam(Ham_Item_Deploy, g_szGrenadeName, "RG_Ham_Item_Deploy", true)

    g_Item_ID = zp_items_register("ITEM_CART", 20, 2, 1, 5, 0)

}

public plugin_precache()
{
    precache_model(g_szGrenadeVmodel)
    precache_model(g_szGrenadePmodel)
}

public zp_fw_items_select_post(id, iItem_ID)
{
    // This is not our item
    if (iItem_ID != g_Item_ID)
    {
        return;
    }

    if(iItem_ID == g_Item_ID)
    {
        g_has_bomb[id] = 1
        rg_give_item(id, "weapon_hegrenade");
    }

}

public zp_fw_grenade_fire_pre(id)
{
    return PLUGIN_HANDLED
}

public RG_Ham_Item_Deploy(iWeapon)
{
    if(!IsCustomGrenade(iWeapon))
    {
        return HAM_IGNORED
    }

    static id
    id = get_member(iWeapon, m_pPlayer)

    if(get_user_weapon(id) == CSW_HEGRENADE && g_has_bomb[id])
    {
        set_entvar(id, var_viewmodel, g_szGrenadeVmodel)
        set_entvar(id, var_weaponmodel, g_szGrenadePmodel)
    }

    return HAM_IGNORED
}

C++:
#include <amxmodx>
#include <fakemeta>
#include <reapi>
#include <zp50_items>
#include <zp50_grenade_fire>

new const g_szGrenadeVmodel[] = "models/zm_cso/weapons/grenade_cartfrag/v_cartfrag.mdl"
new const g_szGrenadePmodel[] = "models/zm_cso/weapons/grenade_cartfrag/p_cartfrag.mdl"

new g_Item_ID

new g_has_bomb[33]

public plugin_init()
{
    register_plugin("[ZP] Weapon: Cartfrag", "0.1", "EPIDEMIC")
    register_event("CurWeapon", "Event_CurWeapon", "be", "1=1");

    g_Item_ID = zp_items_register("ITEM_CART", 20, 2, 1, 5, 0)

}

public plugin_precache()
{
    precache_model(g_szGrenadeVmodel)
    precache_model(g_szGrenadePmodel)
    register_clcmd("weapon_firebomb", "Hook_Select")
}

public Hook_Select(id){
    engclient_cmd(id, "weapon_hegrenade")
    return PLUGIN_HANDLED
}

public zp_fw_items_select_post(id, iItem_ID)
{
    // This is not our item
    if (iItem_ID != g_Item_ID)
    {
        return;
    }

    if(iItem_ID == g_Item_ID)
    {
        g_has_bomb[id] = 1
        rg_give_item(id, "weapon_hegrenade");
    }

}

public zp_fw_grenade_fire_pre(id)
{
    return PLUGIN_HANDLED
}

public Event_CurWeapon(id)
{
    if (!is_user_alive(id))
        return
    
    if(get_user_weapon(id) == CSW_HEGRENADE && g_has_bomb[id])
    {
        set_entvar(id, var_viewmodel, g_szGrenadeVmodel)
        set_entvar(id, var_weaponmodel, g_szGrenadePmodel)
        
    }
}


Через Ham_Item_Deploy модели вовсе не менялись, а через CurWeapon модели без проблем меняются
Может кто подскажет или объяснит как можно заменить модели не применяя CurWeapon?
 
Сообщения
594
Реакции
350
Предупреждения
1
Помог
9 раз(а)
Код:
    if(!IsCustomGrenade(iWeapon))
    {
        return HAM_IGNORED
    }
?
 
Сообщения
594
Реакции
350
Предупреждения
1
Помог
9 раз(а)
Код:
public RG_Ham_Item_Deploy(iWeapon)
{
    static id
    id = get_member(iWeapon, m_pPlayer)

       if(!g_has_bomb[id])
    {
        return;
    }

    set_entvar(id, var_viewmodel, g_szGrenadeVmodel)
    set_entvar(id, var_weaponmodel, g_szGrenadePmodel)
}
 
Сообщения
14
Реакции
9
steelzzz, И никаким магическим способом не сработал код(
Т.Е вообще не понимаю как сменить модель у гранат без CurWeapon
Может есть какие-то идеи?
 
Сообщения
584
Реакции
1,006
Помог
18 раз(а)
Zerada, где код попыток?
 
Сообщения
14
Реакции
9
Mistrick, Выше прикладывал к посту, дальше вставлял предложенный вариант
 
Сообщения
584
Реакции
1,006
Помог
18 раз(а)
Zerada, нам экстрасенсов и пару шаманов вызывать, чтобы узнать как вы вставили код?
 
Сообщения
14
Реакции
9
Mistrick,
C++:
#include <amxmodx>
#include <hamsandwich>
#include <reapi>
#include <cs_weap_models_api>
#include <zp50_items>
#include <zp50_grenade_fire>

new const g_szGrenadeName[] = "grenade"

new const g_szGrenadeVmodel[] = "models/zm_cso/weapons/grenade_cartfrag/v_cartfrag.mdl"
new const g_szGrenadePmodel[] = "models/zm_cso/weapons/grenade_cartfrag/p_cartfrag.mdl"

new g_Item_ID

new g_has_bomb[33]

public plugin_init()
{
    register_plugin("[ZP] Weapon: Cartfrag", "0.1", "EPIDEMIC")
    RegisterHam(Ham_Item_Deploy, g_szGrenadeName, "RG_Ham_Item_Deploy", true)

    g_Item_ID = zp_items_register("ITEM_CART", 20, 2, 1, 5, 0)

}

public plugin_precache()
{
    precache_model(g_szGrenadeVmodel)
    precache_model(g_szGrenadePmodel)
    register_clcmd("weapon_firebomb", "Hook_Select")
}

public Hook_Select(id){
    engclient_cmd(id, "weapon_hegrenade")
    return PLUGIN_HANDLED
}

public zp_fw_items_select_post(id, iItem_ID)
{
    // This is not our item
    if (iItem_ID != g_Item_ID)
    {
        return;
    }

    if(iItem_ID == g_Item_ID)
    {
        g_has_bomb[id] = 1
        rg_give_item(id, "weapon_hegrenade");
    }

}

public zp_fw_grenade_fire_pre(id)
{
    return PLUGIN_HANDLED
}

public RG_Ham_Item_Deploy(iWeapon)
{
    static id
    id = get_member(iWeapon, m_pPlayer)

    if(!g_has_bomb[id])
    {
        return;
    }

    set_entvar(id, var_viewmodel, g_szGrenadeVmodel)
    set_entvar(id, var_weaponmodel, g_szGrenadePmodel)
}
9 Авг 2019
Mistrick, нашел косяк....
9 Авг 2019
Тему можно закрывать. Код приложил как решении
C++:
#include <amxmodx>
#include <hamsandwich>
#include <reapi>
#include <cs_weap_models_api>
#include <zp50_items>
#include <zp50_grenade_fire>

new const g_szGrenadeName[] = "weapon_hegrenade"

new const g_szGrenadeVmodel[] = "models/zm_cso/weapons/grenade_cartfrag/v_cartfrag.mdl"
new const g_szGrenadePmodel[] = "models/zm_cso/weapons/grenade_cartfrag/p_cartfrag.mdl"

new g_Item_ID

new g_has_bomb[33]

public plugin_init()
{
    register_plugin("[ZP] Weapon: Cartfrag", "0.1", "EPIDEMIC")
    RegisterHam(Ham_Item_Deploy, g_szGrenadeName, "RG_Ham_Item_Deploy", true)

    g_Item_ID = zp_items_register("ITEM_CART", 20, 2, 1, 5, 0)

}

public plugin_precache()
{
    precache_model(g_szGrenadeVmodel)
    precache_model(g_szGrenadePmodel)
    register_clcmd("weapon_firebomb", "Hook_Select")
}

public Hook_Select(id){
    engclient_cmd(id, "weapon_hegrenade")
    return PLUGIN_HANDLED
}

public zp_fw_items_select_post(id, iItem_ID)
{
    // This is not our item
    if (iItem_ID != g_Item_ID)
    {
        return;
    }

    if(iItem_ID == g_Item_ID)
    {
        g_has_bomb[id] = 1
        rg_give_item(id, "weapon_hegrenade");
    }

}

public zp_fw_grenade_fire_pre(id)
{
    return PLUGIN_HANDLED
}

public RG_Ham_Item_Deploy(iWeapon)
{
    static id
    id = get_member(iWeapon, m_pPlayer)

    if(!g_has_bomb[id])
    {
        return;
    }

    set_entvar(id, var_viewmodel, g_szGrenadeVmodel)
    set_entvar(id, var_weaponmodel, g_szGrenadePmodel)
}
 
Сообщения
594
Реакции
350
Предупреждения
1
Помог
9 раз(а)
Zerada, и в чем была ошибка?
 

Пользователи, просматривающие эту тему

Сейчас на форуме нет ни одного пользователя.
Сверху Снизу