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

wewewe

Пользователь
Регистрация
26 Янв 2018
Сообщения
57
Симпатии
0
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);
    }
}
 

Вложения

g52

Заблокированные
Пользователь
Регистрация
8 Июн 2018
Сообщения
367
Симпатии
54
  • Мне нравится
Симпатии: ifx

g52

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

georgeml

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

wewewe

Пользователь
Регистрация
26 Янв 2018
Сообщения
57
Симпатии
0
Код:
#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);
    }
}
Всё компилиться но на определеный флаг не дает нож. Замысел такой кто имеет флаг о у того другой нож[DOUBLEPOST=1552294398][/DOUBLEPOST]
wewewe, Незначительное предупреждение компилятора. Создавайте тему со списком модулей, плагинов или сразу обновите модуль hamsandwich и/или файл hamdata.ini
се обновлено я просто выровнял по другой строке. Но функцию не выполняет. какая то выдача не работает
 

wewewe

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

Vaqtincha

Разработчик
Регистрация
28 Янв 2018
Сообщения
575
Симпатии
365
Кодировку нормальную постав.
 

Vaqtincha

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

wewewe

Пользователь
Регистрация
26 Янв 2018
Сообщения
57
Симпатии
0
Vaqtincha, kapangaIII, Я себя нулем чуствую.(хотя наверное так и есть) Я переделал куча вариантов пытался проверку провести по другому но все равно не работает выдача на флаг. понимаю что ошибка в условии выдачи на флаг но как решить ума не приложу[DOUBLEPOST=1552329504][/DOUBLEPOST]я и RegisterHookChain пытался сделать от реапи но все равно.
 
K

kapangaIII

На данный момент у тебя нож доступен всем кроме того у кого есть флаг.[DOUBLEPOST=1552331595][/DOUBLEPOST]Добавь перед get_user_flags знак инвертирования, ~.
XOR
 

wewewe

Пользователь
Регистрация
26 Янв 2018
Сообщения
57
Симпатии
0
На данный момент у тебя нож доступен всем кроме того у кого есть флаг.[DOUBLEPOST=1552331595][/DOUBLEPOST]Добавь перед get_user_flags знак инвертирования, ~.
XOR
Я поставил но ничего. менял значения 1 на 0 и на true и на даеться с флагом о нож при респавне[DOUBLEPOST=1552332745][/DOUBLEPOST]
Код:
#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
Сообщения
57
Симпатии
0
надо будет полностью на реапи его написать если возможно. япочитал вроде можно. Кто нибудь поможет?
 

wewewe

Пользователь
Регистрация
26 Янв 2018
Сообщения
57
Симпатии
0
Подскажите как сюда добавить выдачу скина ножа при спавне
Код:
#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;
}
 
Сверху Снизу