Неверная выдача кастом ножа на awp_india

Статус
В этой теме нельзя размещать новые ответы.
Сообщения
486
Реакции
89
Помог
5 раз(а)
Ошибка
Не выдаёт кастомный нож
ОС
Linux
Amx Mod X
1.9.0
Билд
last
ReGamedll
last
Версия Metamod
last
Список метамодулей
-
Список плагинов
-
Автор плагина
-
Версия плагина
-
Исходный код
-
Добрый вечер. Наткнулся на проблему на картах awp_india (india2 and etc), именно на этих картах не выдается кастомный нож (подчеркну, что только на индиях такая проблема), ReHLDS, ReGameDLL last versions, может кто сталкивался? Читал, что в ReGameDLL пофиксили баг с выдачей, но что-то странно..
Код:
#include <amxmodx>
#include <reapi>

#pragma semicolon 1

new const PLUGIN_NAME[] = "Custom Weapon: Knife";
new const PLUGIN_VERSION[] = "1.1";
new const PLUGIN_AUTHOR[] = "Dev-CS";

new const CONFIG_NAME[] = "custom_weapon_knife";

#define IsUserValid(%0) (1 <= %0 <= MaxClients)

// Режим DEBUG. Раскомментировать если нужно включить команду для выдачи оружия
//#define DEBUG

// Уникальный ID (impulse) для оружия
#define WEAPON_UID 111

// ID оружия (берётся из файла cssdk_const.inc из enum WeaponIdType)
#define WEAPON_ID WEAPON_KNIFE

// Является ли оружие нашим кастомным
#define IsCustomWeapon(%0) bool:(get_entvar(%0, var_impulse) == WEAPON_UID)

new const g_szModelV[] = "models/energo/v_knife.mdl";    // Модель "v_"
new const g_szModelP[] = "models/energo/p_knife.mdl";    // Модель "p_"

#if defined DEBUG
// Команда для выдачи оружия
new const g_szGiveWeaponCmd[] = "give_knife";
#endif

// Название оружия
new const g_szWeaponName[] = "weapon_knife";

new Float:g_iWeaponDamage;
new g_szFlag[32];

public plugin_init()
{
    register_plugin(PLUGIN_NAME, PLUGIN_VERSION, PLUGIN_AUTHOR);

#if defined DEBUG
    register_clcmd(g_szGiveWeaponCmd, "func_CmdGiveWeapon");
#endif

    RegisterHookChain(RG_CBasePlayerWeapon_DefaultDeploy, "CBasePlayerWeapon_DefaultDeploy_Pre", false);

    bind_pcvar_string(create_cvar(
        .name = "flag_knife",
        .string = "t",
        .flags = FCVAR_NONE,
        .description = fmt("%L", LANG_SERVER, "DESC_FLAG")),
        g_szFlag, charsmax(g_szFlag));

    bind_pcvar_float(create_cvar(
        .name = "damage_knife",
        .string = "1.2",
        .flags = FCVAR_NONE,
        .description = fmt("%L", LANG_SERVER, "DESC_DAMAGE"),
        .has_min = true,
        .min_val = 0.0,
        .has_max = false,
        .max_val = 0.0),
        g_iWeaponDamage);
   
    AutoExecConfig(true, CONFIG_NAME);
}

public plugin_natives()
    register_native("give_custom_weapon_knife", "__give_custom_weapon_knife");

public plugin_precache()
{
    precache_model(g_szModelV);
    precache_model(g_szModelP);
}

public CBasePlayerWeapon_DefaultDeploy_Pre(iWeapon, viewModel[], playerModel[])
{
    if(is_nullent(iWeapon))
        return HC_CONTINUE;

    if(IsCustomWeapon(iWeapon))
    {
        SetHookChainArg(2, ATYPE_STRING, g_szModelV);
        SetHookChainArg(3, ATYPE_STRING, g_szModelP);
    }

    return HC_CONTINUE;
}


public func_CmdGiveWeapon(id)
{
    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(g_iWeaponDamage)
    {
        set_member(iWeapon, m_Weapon_flBaseDamage, Float:get_member(iWeapon, m_Weapon_flBaseDamage) * g_iWeaponDamage);
        set_member(iWeapon, m_Knife_flStabBaseDamage, Float:get_member(iWeapon, m_Knife_flStabBaseDamage) * g_iWeaponDamage);
        set_member(iWeapon, m_Knife_flSwingBaseDamage, Float:get_member(iWeapon, m_Knife_flSwingBaseDamage) * g_iWeaponDamage);
        set_member(iWeapon, m_Knife_flSwingBaseDamage_Fast, Float:get_member(iWeapon, m_Knife_flSwingBaseDamage_Fast) * g_iWeaponDamage);
    }

    return PLUGIN_HANDLED;
}

public __give_custom_weapon_knife(iPlugin, iParams)
{
    enum { player = 1 };

    new id = get_param(player);

    if(!IsUserValid(id))
        abort(AMX_ERR_NATIVE, "Player out of range (%i)", id);

    func_CmdGiveWeapon(id);
}
14 Май 2022
Выдача происходит нативом
 
В этой теме было размещено решение! Перейти к решению.
Сообщения
1,293
Реакции
2,295
Помог
57 раз(а)

вот где в регейме вызывается game_playerspawn
получается Spawn начало - OnSpawnEquip где дали кастомный нож (нативно) - Spawn конец где FireTargets на game_playerspawn. Далее смотрим скрины и делаем вывод, что ножик наш кастомный отбирается. и на его место выдаётся обычный.

Скриншот 017.jpgСкриншот 018.jpgСкриншот 019.jpg
14 Май 2022
WILL_BE на будущее, все поля нужно заполнять правильно. И выдача в плагине нативная, кто ж его (кроме меня) знает когда дёргается натив.
 
Статус
В этой теме нельзя размещать новые ответы.

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

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