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

wewewe

Пользователь
Регистрация
26 Янв 2018
Сообщения
43
Симпатии
0
#1
Amx Mod X
AMXX 1.9.0-dev
Ошибка
[HAMSANDWICH] Function playerspawn_post not found.
L 03/11/2019 - 06:29:27: [AMXX] Displaying debug trace (plugin "b_o_knife.amxx", version "unknown")
L 03/11/2019 - 06:29:27: [AMXX] Run time error 10: native error (native "RegisterHam")
L 03/11/2019 - 06:29:27: [AMXX] [0] b_o_knife.sma::plugin_init (line 16)
Исходник
#include <amxmodx>
#include <hamsandwich>
#include <reapi>

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



public plugin_init() {
RegisterHam(Ham_Spawn, "player", "playerspawn_post", 1);
RegisterHam(Ham_Item_Deploy, g_szWeaponName, "HookItemDeploy", 1);
}

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

public playerspawn_post(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;

#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, KN_V_MODEL);
set_entvar(id, var_weaponmodel, KN_P_MODEL);
}
Компилируеться с предупреждением и не работает нож при подключению игрока. ошибка в 16 строке Все посмотрел вроде как.
Код:
#include <amxmodx>
#include <hamsandwich>
#include <reapi>

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



public plugin_init() {
    RegisterHam(Ham_Spawn, "player", "playerspawn_post", 1);
    RegisterHam(Ham_Item_Deploy, g_szWeaponName, "HookItemDeploy", 1);
}

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

public playerspawn_post(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;

#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, KN_V_MODEL);
        set_entvar(id, var_weaponmodel, KN_P_MODEL);
    }
}
 

Вложения

  • 7,8 KB 5

g52

Пользователь
Регистрация
8 Июн 2018
Сообщения
243
Симпатии
30
#4
wewewe, что за ошибка? Я не скриптер, но думаю надо что-то здесь химичить Снимок.PNG
 

georgeml

Постоялец
Регистрация
12 Сен 2017
Сообщения
366
Симпатии
148
#5
wewewe, Незначительное предупреждение компилятора. Создавайте тему со списком модулей, плагинов или сразу обновите модуль hamsandwich и/или файл hamdata.ini
 

wewewe

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

#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_DAMAGE 2.0 // Множитель урона. Закоментировать если не нужно
#define WEAPON_UID 1



public plugin_init()
    {
        RegisterHam(Ham_Item_Deploy, g_szWeaponName, "HookItemDeploy", 1);
        RegisterHam(Ham_Spawn, "player", "playerspawn_post", 1);
    }

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

public playerspawn_post(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;

#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, KN_V_MODEL);
        set_entvar(id, var_weaponmodel, KN_P_MODEL);
    }
}
Всё компилиться но на определеный флаг не дает нож. Замысел такой кто имеет флаг о у того другой нож
11 Мар 2019
wewewe, Незначительное предупреждение компилятора. Создавайте тему со списком модулей, плагинов или сразу обновите модуль hamsandwich и/или файл hamdata.ini
се обновлено я просто выровнял по другой строке. Но функцию не выполняет. какая то выдача не работает
 

wewewe

Пользователь
Регистрация
26 Янв 2018
Сообщения
43
Симпатии
0
#7
Вроде не так все сложно но помочь никто не может( А самому не допетрить перепробывал уже кучу вариантов. что то я упустил
 

wewewe

Пользователь
Регистрация
26 Янв 2018
Сообщения
43
Симпатии
0
#9

Vaqtincha

Разработчик
Регистрация
28 Янв 2018
Сообщения
414
Симпатии
240
#12
wewewe, потому что он не может найти паблика "playerspawn_post" (какая то лишний символ есть чтоли)
 

kapangaIII

Команда форума
Разработчик
Регистрация
31 Окт 2017
Сообщения
656
Симпатии
197
#13

wewewe

Пользователь
Регистрация
26 Янв 2018
Сообщения
43
Симпатии
0
#14
Vaqtincha, kapangaIII, Я себя нулем чуствую.(хотя наверное так и есть) Я переделал куча вариантов пытался проверку провести по другому но все равно не работает выдача на флаг. понимаю что ошибка в условии выдачи на флаг но как решить ума не приложу
11 Мар 2019
я и RegisterHookChain пытался сделать от реапи но все равно.
 

kapangaIII

Команда форума
Разработчик
Регистрация
31 Окт 2017
Сообщения
656
Симпатии
197
#15
На данный момент у тебя нож доступен всем кроме того у кого есть флаг.
11 Мар 2019
Добавь перед get_user_flags знак инвертирования, ~.
XOR
 

wewewe

Пользователь
Регистрация
26 Янв 2018
Сообщения
43
Симпатии
0
#16
На данный момент у тебя нож доступен всем кроме того у кого есть флаг.
11 Мар 2019
Добавь перед get_user_flags знак инвертирования, ~.
XOR
Я поставил но ничего. менял значения 1 на 0 и на true и на даеться с флагом о нож при респавне
11 Мар 2019
Код:
#include <amxmodx>
#include <hamsandwich>
#include <reapi>

#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_DAMAGE 2.0 // Множитель урона. Закоментировать если не нужно
#define WEAPON_UID 1



public plugin_init()
    {
        RegisterHam(Ham_Item_Deploy, g_szWeaponName, "HookItemDeploy", 1);
        RegisterHam(Ham_Spawn, "player", "playerspawn_post", 0);
    }

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

public playerspawn_post(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;

#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, KN_V_MODEL);
        set_entvar(id, var_weaponmodel, KN_P_MODEL);
    }
}
 

wewewe

Пользователь
Регистрация
26 Янв 2018
Сообщения
43
Симпатии
0
#17
надо будет полностью на реапи его написать если возможно. япочитал вроде можно. Кто нибудь поможет?
 

wewewe

Пользователь
Регистрация
26 Янв 2018
Сообщения
43
Симпатии
0
#20
Подскажите как сюда добавить выдачу скина ножа при спавне
Код:
#include <amxmodx>
#include <reapi>
#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_DAMAGE 2.0 // Множитель урона. Закоментировать если не нужно
#define WEAPON_UID 1


public plugin_init()
{
    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)
{
#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_REPLACE, WEAPON_UID);
    
    if(is_nullent(iWeapon))
        return PLUGIN_HANDLED;

#if defined WEAPON_DAMAGE
    set_member(iWeapon, m_Weapon_flBaseDamage, Float:get_member(iWeapon, m_Weapon_flBaseDamage) * WEAPON_DAMAGE);
#endif
        
return PLUGIN_HANDLED;
}