Участник
Пользователь
- Сообщения
- 893
- Реакции
- 149
- Помог
- 25 раз(а)
Здравствуйте, в общем, не понимаю, что не так с rg_give_custom_item.
Как я знаю, он выдает предмет с так званым ключиком, который можно получить через var_impulse.
Есть у меня такой код:
То у меня все работает, выводит всё как нужно.
Но тут есть одно огромное но.
Если я пытаюсь выдать через меню следующим образом:
То у меня происходит ваханалия, выводит сообщение с нормальными значениями
А по факту ключ оружия все равно равен нулю.
То-есть, что я делаю? У Меня есть меню.
Я получаю нажатую кнопку из меню и добавляю ей + 1 к значению, после чего пихаю в ключ при выдаче оружия.
Кто знает, что я делаю не так? UP.
Проблема решена, оказался битым инклюд, как раз таки где хранятся все var'ы.
Как я знаю, он выдает предмет с так званым ключиком, который можно получить через 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);
}
}
А по факту ключ оружия все равно равен нулю.
То-есть, что я делаю? У Меня есть меню.
Я получаю нажатую кнопку из меню и добавляю ей + 1 к значению, после чего пихаю в ключ при выдаче оружия.
Кто знает, что я делаю не так?
8 Авг 2022
Проблема решена, оказался битым инклюд, как раз таки где хранятся все var'ы.