rg_give_custom_item + var_impulse.

Сообщения
893
Реакции
149
Помог
25 раз(а)
Здравствуйте, в общем, не понимаю, что не так с rg_give_custom_item.
Как я знаю, он выдает предмет с так званым ключиком, который можно получить через var_impulse.

Есть у меня такой код:
C++:
new iWeapon = rg_give_custom_item(iPlayer, "weapon_deagle", 22);
...
// Дальше, в деплое хама я получаю этот самый ключ.
RegisterHam(Ham_Item_Deploy, "weapon_deagle", "@Item_DeployPost, .Post = true);
...
@Item_DeployPost(iWeapon)
{
    new iPlayer = get_member(iWeapon, m_pPlayer);
    client_print(iPlayer, print_chat, "%i", get_entvar(iWeapon, var_impulse)
}
То у меня все работает, выводит всё как нужно.

Но тут есть одно огромное но.

Если я пытаюсь выдать через меню следующим образом:

C++:
@Menu_Handler_Item(pPlayer, iMenu, iItem) {
    if(iItem == MENU_EXIT) {
        menu_destroy(iMenu);
        return PLUGIN_HANDLED;
    }

    new aData[ArrayDataItem], iNeedRound, iTotalRound, iAccess, szData[64];
    menu_item_getinfo(iMenu, iItem, iAccess, szData, charsmax(szData));

    new iKey = str_to_num(szData);

    ArrayGetArray(g_aVipData, iKey, aData);

    iNeedRound = str_to_num(aData[ITEM_ROUND_ACCESS]);
    iTotalRound = get_member_game(m_iTotalRoundsPlayed) + 1;

    if(iTotalRound < iNeedRound) {
        client_print_color(pPlayer, print_team_default, "%l %l", "VIP_TAG", "NEED_ROUND", iNeedRound);
        return PLUGIN_HANDLED;
    }

    @GiveUserWeapon(pPlayer, iKey, iKey + 1);
    client_print(pPlayer, print_chat, "iKey: %i | Impulse: %i", iKey, iKey + 1);

    return PLUGIN_HANDLED;

@GiveUserWeapon(pPlayer, iItem, iWeaponKey) {
    new aData[ArrayDataItem], iAmmo, iBpAmmo, Float:CustomDamage;
    ArrayGetArray(g_aVipData, iItem, aData);

    iAmmo = str_to_num(aData[ITEM_AMMO]);
    iBpAmmo = str_to_num(aData[ITEM_BPAMMO]);

    CustomDamage = aData[ITEM_DAMAGE] != EOS ? str_to_float(aData[ITEM_DAMAGE]) : 1.0;

    UTIL_GiveUserCustomWeapon(pPlayer, aData[ITEM_NAME], GiveType:str_to_num(aData[ITEM_GIVE_TYPE]), iWeaponKey, iAmmo, iBpAmmo, CustomDamage);
}

// Сам сток:
stock UTIL_GiveUserCustomWeapon(pPlayer, szWeapon[], GiveType:iType, iWeaponKey, iAmmo = 0, iBpAmmo = 0, Float:flDamage = 1.0) {
    new iWeapon = rg_give_custom_item(pPlayer, fmt("weapon_%s", szWeapon), GiveType:iType, iWeaponKey);

    if(is_nullent(iWeapon))
        return;
   
    new WeaponIdType:iWeaponID = get_member(iWeapon, m_iId);

    if(iAmmo)
        rg_set_user_ammo(pPlayer,iWeaponID,iAmmo);
   
    if(iBpAmmo)
        rg_set_user_bpammo(pPlayer,iWeaponID,iBpAmmo);
       
    if(flDamage > 1.0) {
        new iActiveItem = get_member(pPlayer, m_pActiveItem);
       
        if(get_member(iActiveItem, m_iId) == WEAPON_M4A1) {
            set_member(iWeapon, m_M4A1_flBaseDamageSil, Float:get_member(iWeapon, m_M4A1_flBaseDamageSil) * flDamage);
        }
        else if(get_member(iActiveItem, m_iId) == WEAPON_USP) {
            set_member(iWeapon, m_USP_flBaseDamageSil, Float:get_member(iWeapon, m_USP_flBaseDamageSil) * flDamage);
        }
        else if(get_member(iActiveItem, m_iId) == WEAPON_FAMAS) {
            set_member(iWeapon, m_Famas_flBaseDamageBurst, Float:get_member(iWeapon, m_Famas_flBaseDamageBurst) * flDamage);
        }
        else set_member(iWeapon, m_Weapon_flBaseDamage, Float:get_member(iWeapon, m_Weapon_flBaseDamage) * flDamage);
    }
}
То у меня происходит ваханалия, выводит сообщение с нормальными значениями
1659918036282.png
А по факту ключ оружия все равно равен нулю.

То-есть, что я делаю? У Меня есть меню.
Я получаю нажатую кнопку из меню и добавляю ей + 1 к значению, после чего пихаю в ключ при выдаче оружия.

Кто знает, что я делаю не так?
8 Авг 2022
UP.
Проблема решена, оказался битым инклюд, как раз таки где хранятся все var'ы.
 

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

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