Урон по игроку

Сообщения
34
Реакции
-1
Доброго времени суток. Помогите пожалуйста сделать так, чтобы CT не мог убить TT с ножа (не было урона)

Код:
RegisterHookChain(RG_CBasePlayer_TraceAttack, "CBasePlayer_TraceAttack");

public CBasePlayer_TraceAttack(const id, attacker, Float:flDamage, Float:vecDir[3], tracehandle, bitsDamageType)
{
    if(CurrentMode == DRM_GM_Hunter)
    {
        if(!is_user_connected(id) || !is_user_connected(attacker)) return HC_CONTINUE;
       
        if(get_member(id, m_iTeam) != TEAM_TERRORIST || get_member(attacker, m_iTeam) != TEAM_CT) return HC_CONTINUE;
       
        if(get_user_weapon(attacker) != CSW_KNIFE) return HC_CONTINUE;
       
        return HC_SUPERCEDE;
    }
   
    return HC_CONTINUE;
}
 
Сообщения
1,032
Реакции
828
Помог
10 раз(а)
Так у тебя проверки не верные, тебе надо сделать условие if( attacker( ct ) == id( tt ) to проверяем if( attacker ) == CSW_KNIFE ) то блочим
12 Сен 2019
А еще лучше наоборот, с начало проверить если атака с ножа а затем команды игроков, наверное.
 
Сообщения
34
Реакции
-1
Javekson,
Код:
public CBasePlayer_TraceAttack(const id, attacker, Float:flDamage, Float:vecDir[3], tracehandle, bitsDamageType)
{
    if(CurrentMode == DRM_GM_Hunter)
    {
        if(!is_user_connected(id) || !is_user_connected(attacker)) return HC_CONTINUE;
       
        if(get_user_weapon(attacker) == CSW_KNIFE)
        {
            if(get_member(attacker, m_iTeam) == get_member(id, m_iTeam)) return HC_SUPERCEDE;
        }
    }
   
    return HC_CONTINUE;
}
 
Сообщения
1,032
Реакции
828
Помог
10 раз(а)
Может быть так, плохо сейчас соображаю

C++:
RegisterHookChain( RG_CBasePlayer_TraceAttack, "CBasePlayer_TraceAttack", .post = true);

public CBasePlayer_TraceAttack( const id, const attacker )
{
    if( CurrentMode == DRM_GM_Hunter )
    {
        if( !is_user_connected( attacker ) ) return HC_CONTINUE;
        
        if( get_user_weapon( attacker ) == CSW_KNIFE )
        {
            if( get_member( attacker, m_iTeam ) == TEAM_CT %% get_member( id, m_iTeam ) == TEAM_TERRORIST )
            {
                return HC_SUPERCEDE;
            }
        }
    }
    
    return HC_CONTINUE;
}
12 Сен 2019
Damir, у тебя условие команда атакера равна команде жертвы, то есть если CT == CT или TT == TT
 
Сообщения
34
Реакции
-1
Javekson, а если мне надо реализовать "ТТ можно убить только попав в голову с ножа", то будет так:

Код:
    if(CurrentMode == DRM_GM_Knives)
    {
        if(!is_user_connected(attacker)) return HC_CONTINUE;
        
        if(get_user_weapon(attacker) == CSW_KNIFE)
        {
            if(get_member(attacker, m_iTeam) == TEAM_CT %% get_member(id, m_iTeam) == TEAM_TERRORIST)
            {
                if(get_member(attacker, m_LastHitGroup) != HITGROUP_HEAD) return HC_SUPERCEDE;
            }
        }
    }
    
    return HC_CONTINUE;
 
Сообщения
1,032
Реакции
828
Помог
10 раз(а)
Damir, мм, вроде не получится так, ласт группа работает при нанесении урона, то есть позднее, могу предположить, но может и ошибаюсь, наверное лучше так сделать, что бы не было крови как минимум.

Код:
if( get_tr2( iTraceHandle, TR_iHitgroup ) != HIT_HEAD )
{
    return HC_SUPERCEDE;
}
Код:
 public CBasePlayer_TraceAttack(const id, attacker, Float:flDamage, Float:vecDir[3], iTraceHandle, bitsDamageType)
соответственно
12 Сен 2019
ну и fakemeta следовательно подключить
 
Последнее редактирование:
Сообщения
1,032
Реакции
828
Помог
10 раз(а)
Damir, там хук RG_CBasePlayer_TakeDamage, можешь и в нем сделать, но кровь будет когда по голове бить будешь
12 Сен 2019
Damir, туплю уже, точнее не по голове, а по остальным участкам тела если будешь бить то будет кровь, не совсем будет понятно, что урон только по голове можно
 

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

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