Сompiler нож не выдаеться.

Flymic24

Пользователь
Регистрация
15 Июн 2017
Сообщения
85
Симпатии
43
Пол
Мужской
1. У ножа нету m_Weapon_flBaseDamage, соответственно так урон изменить не выйдет
2. Зачем выдавать нож каждый спавн ? В Ham_Deploy Pre на ноже, делай проверку на нужный флаг игроку и меняй модельку
 

wewewe

Пользователь
Регистрация
26 Янв 2018
Сообщения
57
Симпатии
0
1. У ножа нету m_Weapon_flBaseDamage, соответственно так урон изменить не выйдет
2. Зачем выдавать нож каждый спавн ? В Ham_Deploy Pre на ноже, делай проверку на нужный флаг игроку и меняй модельку
Сделал но не выдает, не мог бы ты поправить меня
Код:
#include <amxmodx>
#include <reapi>
#include <hamsandwich>
#pragma semicolon 1

#define ACCESS_FLAG ADMIN_LEVEL_C // Флаг которому доступно оружие. Закоментировать чтобы было доступно всем
#define WEAPON_ID  WEAPON_KNIFE
new const KN_V_MODEL[] = "models/Gold_b_o/v_knife.mdl";
new const KN_P_MODEL[] = "models/Gold_b_o/p_knife.mdl";
new const g_szWeaponName[] = "weapon_knife";
#define WEAPON_UID 1


public plugin_init()
{
    RegisterHam(Ham_Item_Deploy, g_szWeaponName, "HookItemDeploy", 1);
    RegisterHookChain(RG_CBasePlayer_Spawn, "RG_Spawn_Post", 1);
}

public plugin_precache() {
    precache_model(KN_V_MODEL);
    precache_model(KN_P_MODEL);
}

public RG_Spawn_Post(id,const weapon)
{
#if defined ACCESS_FLAG
    if (~get_user_flags(id) & ACCESS_FLAG) {
        return PLUGIN_HANDLED;
    }
#endif   
    
    if(!is_user_alive(id))
        return PLUGIN_HANDLED;
    
    if(is_user_connected(id) && get_user_team(id) == 1) {
        rg_give_custom_item(id, "g_szWeaponName", GT_DROP_AND_REPLACE, WEAPON_UID);
    }

    new iWeapon = rg_give_custom_item(id, g_szWeaponName, GT_DROP_AND_REPLACE, WEAPON_UID);
    
    if(is_nullent(iWeapon))
        return PLUGIN_HANDLED;
        
    return PLUGIN_HANDLED;
}

public HookItemDeploy(const weapon) {
    if (get_entvar(weapon, var_impulse) == WEAPON_UID) {
        new id = get_member(weapon, m_pPlayer);
        set_entvar(id, var_viewmodel, KN_V_MODEL);
        set_entvar(id, var_weaponmodel, KN_P_MODEL);
    }
}
 

Flymic24

Пользователь
Регистрация
15 Июн 2017
Сообщения
85
Симпатии
43
Пол
Мужской
Код:
#include <amxmodx>
#include <reapi>
#include <hamsandwich>

#pragma semicolon 1

#define ACCESS_FLAG        ADMIN_LEVEL_C    // Флаг которому доступно оружие. Закоментировать чтобы было доступно всем

new const KN_V_MODEL[] = "models/Gold_b_o/v_knife.mdl";
new const KN_P_MODEL[] = "models/Gold_b_o/p_knife.mdl";

public plugin_init()
{
    RegisterHam(Ham_Item_Deploy, "weapon_knife", "HookItemDeploy", 1);
}

public plugin_precache() {
    precache_model(KN_V_MODEL);
    precache_model(KN_P_MODEL);
}

public HookItemDeploy(const weapon) {
    new id = get_member(weapon, m_pPlayer);
    
    if (!(get_user_flags(id) & ACCESS_FLAG)) {
        return HAM_IGNORED;
    }
    
    set_entvar(id, var_viewmodel, KN_V_MODEL);
    set_entvar(id, var_weaponmodel, KN_P_MODEL);
    
    return HAM_IGNORED;
}
 

wewewe

Пользователь
Регистрация
26 Янв 2018
Сообщения
57
Симпатии
0
Код:
#include <amxmodx>
#include <reapi>
#include <hamsandwich>

#pragma semicolon 1

#define ACCESS_FLAG        ADMIN_LEVEL_C    // Флаг которому доступно оружие. Закоментировать чтобы было доступно всем

new const KN_V_MODEL[] = "models/Gold_b_o/v_knife.mdl";
new const KN_P_MODEL[] = "models/Gold_b_o/p_knife.mdl";

public plugin_init()
{
    RegisterHam(Ham_Item_Deploy, "weapon_knife", "HookItemDeploy", 1);
}

public plugin_precache() {
    precache_model(KN_V_MODEL);
    precache_model(KN_P_MODEL);
}

public HookItemDeploy(const weapon) {
    new id = get_member(weapon, m_pPlayer);
   
    if (!(get_user_flags(id) & ACCESS_FLAG)) {
        return HAM_IGNORED;
    }
   
    set_entvar(id, var_viewmodel, KN_V_MODEL);
    set_entvar(id, var_weaponmodel, KN_P_MODEL);
   
    return HAM_IGNORED;
}
Оказалось что я кучу всего впихнул а надо было всего то условия переписать под HookItem Спасибо . А вот еще вопрос дамаг поставить тоже через хук? я другого способа как там и не знаю. через дефайн
 

Flymic24

Пользователь
Регистрация
15 Июн 2017
Сообщения
85
Симпатии
43
Пол
Мужской
Урон изменяй в Ham_TakeDamage или же Ham_TraceAttack, в сети полно примеров
 

wewewe

Пользователь
Регистрация
26 Янв 2018
Сообщения
57
Симпатии
0
Flymic24,
Код:
RegisterHam(Ham_TakeDamage, "player", "KnifeDamage");
 
public KnifeDamage(victim, inflictor, attacker, Float:damage) {
   if(!attacker || inflictor != attacker || victim == attacker || !is_user_connected(attacker)) return HAM_IGNORED;
   if(get_user_weapon(attacker) == CSW_KNIFE) {
      SetHamParamFloat(4, damage + 100.0);
   }
   return HAM_IGNORED;
}
[DOUBLEPOST=1552462205][/DOUBLEPOST]Так будет нормально[DOUBLEPOST=1552463026][/DOUBLEPOST]
Урон изменяй в Ham_TakeDamage или же Ham_TraceAttack, в сети полно примеров
Самое интересное я поставил этот код то у обычного ножа тоже дамаг вырос))
 

Flymic24

Пользователь
Регистрация
15 Июн 2017
Сообщения
85
Симпатии
43
Пол
Мужской
Нужна ещё проверка что у attacker, есть флаг доступа к такому ножу

Код:
if(get_user_flags(attacker) & ACCESS_FLAG && get_user_weapon(attacker) == CSW_KNIFE)
 

wewewe

Пользователь
Регистрация
26 Янв 2018
Сообщения
57
Симпатии
0
Нужна ещё проверка что у attacker, есть флаг доступа к такому ножу

Код:
if(get_user_flags(attacker) & ACCESS_FLAG && get_user_weapon(attacker) == CSW_KNIFE)
Есть один нюанс через минуты 2 игры пропадает чудо нож. а становиться обычный помогает только перезаход.
 

Flymic24

Пользователь
Регистрация
15 Июн 2017
Сообщения
85
Симпатии
43
Пол
Мужской
Проверяйте и контролируйте наличие у игрока флага:
#define ACCESS_FLAG ADMIN_LEVEL_C // Флаг которому доступно оружие.
В данном варианте вё зависит от его наличия. Если есть - то будет "супер нож", если нету - будет обычный

*Может конфликтовать с плагинами ножей или чем то подобным (если есть)
 

wewewe

Пользователь
Регистрация
26 Янв 2018
Сообщения
57
Симпатии
0
Проверяйте и контролируйте наличие у игрока флага:
#define ACCESS_FLAG ADMIN_LEVEL_C // Флаг которому доступно оружие.
В данном варианте вё зависит от его наличия. Если есть - то будет "супер нож", если нету - будет обычный

*Может конфликтовать с плагинами ножей или чем то подобным (если есть)
Я думаю что возможно проверял на модельки котораю уже задействована. я проверю на отдельной
 

wewewe

Пользователь
Регистрация
26 Янв 2018
Сообщения
57
Симпатии
0
Flymic24, Тут немного не по теме но просто посмотри пожалуста почему не работает дамаг. на одном работает а на другом нет все реапи и метамод последнии одинаковые. из за чего может не работать дамаг на оружии все остальное работает.
Код:
#include <amxmodx>
#include <hamsandwich>
#include <reapi>

#define ACCESS_FLAG ADMIN_LEVEL_F // Флаг которому доступно оружие. Закоментировать чтобы было доступно всем
#define WEAPON_ID  WEAPON_USP
new const US_V_MODEL[] = "models/CUSTOM_GUNS/v_usp.mdl";
new const US_P_MODEL[] = "models/CUSTOM_GUNS/p_usp.mdl";
new const g_szWeaponName[] = "weapon_usp";
#define WEAPON_DAMAGE 2.0 // Множитель урона. Закоментировать если не нужно
#define WEAPON_CLIP 20 // Количество патронов в обойме. Закоментировать если количество по умолчанию
#define WEAPON_UID 1


public plugin_init() {
    register_clcmd("stusp", "cmdGoldenM4");
    RegisterHam(Ham_Item_Deploy, g_szWeaponName, "HookItemDeploy", 1);
}

public plugin_precache() {
    precache_model(US_V_MODEL);
    precache_model(US_P_MODEL);
}

public cmdGoldenM4(id)
{
#if defined ACCESS_FLAG
    if (~get_user_flags(id) & ACCESS_FLAG) {
        return PLUGIN_HANDLED;
    }
#endif   
    
    if(!is_user_alive(id))
        return PLUGIN_HANDLED;

    new iWeapon = rg_give_custom_item(id, g_szWeaponName, GT_DROP_AND_REPLACE, WEAPON_UID);

    if(is_nullent(iWeapon))
        return PLUGIN_HANDLED;

    rg_set_user_bpammo(id, WEAPON_ID, 35);
#if defined WEAPON_CLIP
        rg_set_iteminfo(iWeapon, ItemInfo_iMaxClip, WEAPON_CLIP);
        rg_set_user_ammo(id, WEAPON_ID, WEAPON_CLIP);
#endif

#if defined WEAPON_DAMAGE
    set_member(iWeapon, m_Weapon_flBaseDamage, Float:get_member(iWeapon, m_Weapon_flBaseDamage) * WEAPON_DAMAGE);
    #if WEAPON_ID == WEAPON_M4A1
    set_member(iWeapon, m_M4A1_flBaseDamageSil, Float:get_member(iWeapon, m_M4A1_flBaseDamageSil) * WEAPON_DAMAGE);
    #elseif WEAPON_ID == WEAPON_USP
    set_member(iWeapon, m_USP_flBaseDamageSil, Float:get_member(iWeapon, m_USP_flBaseDamageSil) * WEAPON_DAMAGE);
    #elseif WEAPON_ID == WEAPON_FAMAS
    set_member(iWeapon, m_Famas_flBaseDamageBurst, Float:get_member(iWeapon, m_Famas_flBaseDamageBurst) * WEAPON_DAMAGE);
    #endif
#endif

return PLUGIN_HANDLED;
}

public HookItemDeploy(const weapon) {
    if (get_entvar(weapon, var_impulse) == WEAPON_UID) {
        new id = get_member(weapon, m_pPlayer);
        set_entvar(id, var_viewmodel, US_V_MODEL);
        set_entvar(id, var_weaponmodel, US_P_MODEL);
    }
}
 

Flymic24

Пользователь
Регистрация
15 Июн 2017
Сообщения
85
Симпатии
43
Пол
Мужской
Странно, для тестов сделал так:
Код:
public plugin_init()
{
    register_clcmd("get_custome", "func_2");
}

#define WEAPON_UID        98595895894844     // Должен быть уникальным и никак не совпадать с другими оружиями
#define WEAPON_DAMAGE    5.0

public func_2(id)    {
    new iWeapon = rg_give_custom_item(id, "weapon_usp", GT_DROP_AND_REPLACE, WEAPON_UID);
    
    set_member(iWeapon, m_Weapon_flBaseDamage, Float:get_member(iWeapon, m_Weapon_flBaseDamage) * WEAPON_DAMAGE);
    set_member(iWeapon, m_USP_flBaseDamageSil, Float:get_member(iWeapon, m_USP_flBaseDamageSil) * WEAPON_DAMAGE);
}
Дамаг работает, всё отлично (и с глушителем и без него)
 
Сверху Снизу