Награда за урон от гранаты

Статус
В этой теме нельзя размещать новые ответы.
Сообщения
941
Реакции
188
Помог
4 раз(а)
Всем привет. Нужна ваша помощь
Пытаюсь выдать награду за нанесение урона от гранаты, но ловлю краш сервера
Моя попытка

Отлавливал все в RG_CBasePlayer_TakeDamage

Код:
new ActiveItem = get_member(pevInflictor, m_pActiveItem);
new WeaponId = get_member(ActiveItem, m_iId);

if(ActiveItem != -1) {
    if(WeaponId != 29) {
        rg_add_account(pevAttacker, random_num(g_Cvars[CVAR_SURVIVOR_TAKEDAMAGE_RWD_MIN_MONEY], g_Cvars[CVAR_SURVIVOR_TAKEDAMAGE_RWD_MAX_MONEY]), AS_ADD);
    } else if(WeaponId == 29) {
        rg_add_account(pevAttacker, random_num(g_Cvars[CVAR_SURVIVOR_TAKEDAMAGE_KNIFE_RWD_MIN_MONEY], g_Cvars[CVAR_SURVIVOR_TAKEDAMAGE_KNIFE_RWD_MAX_MONEY]), AS_ADD);
    }

    if(bitsDamageType == DMG_GRENADE) {
        rg_add_account(pevAttacker, random_num(g_Cvars[CVAR_HUMAN_TAKEDAMAGE_GREANDE_RWD_MIN_MONEY], g_Cvars[CVAR_HUMAN_TAKEDAMAGE_GREANDE_RWD_MAX_MONEY]), AS_ADD);
    }
}
 
Сообщения
1,672
Реакции
1,497
Помог
24 раз(а)
Актив итем у аттакера должен браться.
 
  • Нравится
Реакции: Ayk
Сообщения
941
Реакции
188
Помог
4 раз(а)
fl0wer, Т.е get_member(pevAttacker, m_pActiveItem) ?
 
Сообщения
1,672
Реакции
1,497
Помог
24 раз(а)
BiZaJe, да.
19 Янв 2020
И условие с гранатой бы вынести.

Типа
if (граната)
{
}
else
{
new activeItem...
}
 
Сообщения
941
Реакции
188
Помог
4 раз(а)
fl0wer,
Код:
if(bitsDamageType == DMG_GRENADE) {
    rg_add_account(pevAttacker, random_num(g_Cvars[CVAR_HUMAN_TAKEDAMAGE_GREANDE_RWD_MIN_MONEY], g_Cvars[CVAR_HUMAN_TAKEDAMAGE_GREANDE_RWD_MAX_MONEY]), AS_ADD);
} else {
    new ActiveItem = get_member(pevAttacker, m_pActiveItem);
    new WeaponId = get_member(ActiveItem, m_iId);
                
    if(ActiveItem != -1) {
        if(WeaponId != 29) {
            rg_add_account(pevAttacker, random_num(g_Cvars[CVAR_SURVIVOR_TAKEDAMAGE_RWD_MIN_MONEY], g_Cvars[CVAR_SURVIVOR_TAKEDAMAGE_RWD_MAX_MONEY]), AS_ADD);
        } else if(WeaponId == 29) {
            rg_add_account(pevAttacker, random_num(g_Cvars[CVAR_SURVIVOR_TAKEDAMAGE_KNIFE_RWD_MIN_MONEY], g_Cvars[CVAR_SURVIVOR_TAKEDAMAGE_KNIFE_RWD_MAX_MONEY]), AS_ADD);
        }
    }
}
Вроде правильно вынес условие
 
Сообщения
1,672
Реакции
1,497
Помог
24 раз(а)
Код:
if (bitsDamageType & DMG_GRENADE)
{
    rg_add_account(pevAttacker, random_num(g_Cvars[CVAR_HUMAN_TAKEDAMAGE_GREANDE_RWD_MIN_MONEY], g_Cvars[CVAR_HUMAN_TAKEDAMAGE_GREANDE_RWD_MAX_MONEY]));
}
else
{
    new activeItem = get_member(pevAttacker, m_pActiveItem);

    if (!is_nullent(activeItem))
    {
        if (get_member(activeItem, m_iId) == WEAPON_KNIFE)
            rg_add_account(pevAttacker, random_num(g_Cvars[CVAR_SURVIVOR_TAKEDAMAGE_KNIFE_RWD_MIN_MONEY], g_Cvars[CVAR_SURVIVOR_TAKEDAMAGE_KNIFE_RWD_MAX_MONEY]));
        else
            rg_add_account(pevAttacker, random_num(g_Cvars[CVAR_SURVIVOR_TAKEDAMAGE_RWD_MIN_MONEY], g_Cvars[CVAR_SURVIVOR_TAKEDAMAGE_RWD_MAX_MONEY]));
    }
}
Скорее так. биты урона, ид пушки надо проверять после валидности активитем и на нож не через два условия проверять.
И 3 арг у адд_аккаунт по дефолту уже AS_ADD, можно не указывать.
 
Сообщения
941
Реакции
188
Помог
4 раз(а)
fl0wer, Все работает прекрасно :) Теперь понятно стало как отлавливать урон и убийство с гранаты.
Тему можно закрыть. Решение выше.
 
Статус
В этой теме нельзя размещать новые ответы.

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

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