Поиск Не умереть от ножа в спину

Сообщения
30
Реакции
-1
Обратите внимание, если вы хотите заключить сделку с этим пользователем, он заблокирован
Ищу плагин на хнс сервер, чтобы когда правой кнопкой режешь в спину противнику он не умирал, а снималось хп как при обычном ударе в живот ПКМ
Еще чтобы в голову нельзя было убить с одного удара ножом ПКМ
 
Сообщения
702
Реакции
54
Theon1y, попробуй как-то так:

Код:
#include <amxmodx>
#include <reapi>

public plugin_init() {
    register_plugin("For HNS", "0.0.1", "ThePhoenix");

    RegisterHookChain(RG_CBasePlayer_TakeDamage, "CBasePlayer_TakeDamage_Pre", 0);
}

public CBasePlayer_TakeDamage_Pre(const victim, inflictor, attacker, Float:flDamage)
{  
    if (!is_user_alive(attacker))
        return HC_CONTINUE;
   
    if(victim < 1 || victim > MaxClients)
        return HC_CONTINUE;

    if(attacker < 1 || attacker > MaxClients)
        return HC_CONTINUE;

    if(attacker == victim)
        return HC_CONTINUE;

    if(get_member(attacker, m_iTeam) == get_member(victim, m_iTeam))
        return HC_CONTINUE;

    if(get_entvar(attacker, var_button) & IN_ATTACK2)
    {
        SetHookChainArg(4, ATYPE_FLOAT, 55.0);
        SetHookChainReturn(ATYPE_INTEGER, 1);
    }
   
    if(get_member(attacker, m_LastHitGroup) == HITGROUP_HEAD)
    {
        SetHookChainArg(4, ATYPE_FLOAT, 55.0);
        SetHookChainReturn(ATYPE_INTEGER, 1);
    }
   
    return HC_CONTINUE;
}
 

d3m37r4

111111
Сообщения
1,449
Реакции
1,175
Помог
10 раз(а)
if(get_entvar(attacker, var_button) & IN_ATTACK2) { SetHookChainArg(4, ATYPE_FLOAT, 55.0); SetHookChainReturn(ATYPE_INTEGER, 1); }
А где проверка позиции аттакера? Нужен хук trace attack.
Ну и посмотри в сурсах регейма, как урон с лкм расчитывается, чтобы вот этого не было:
SetHookChainArg(4, ATYPE_FLOAT, 55.0);
12 Июл 2020
В этой проверке:
if (!is_user_alive(attacker)) return HC_CONTINUE;
Уже содержится это:
if(attacker < 1 || attacker > MaxClients) return HC_CONTINUE;
12 Июл 2020
Насчет проверки убийства со спины, смотрите плагин для книфе серверов старый какой-то train killer или как-то так.
 

d3m37r4

111111
Сообщения
1,449
Реакции
1,175
Помог
10 раз(а)
Сообщения
702
Реакции
54
SNauPeR, не предлагайте людям чушь от Скальпеля, буду благодарен :)
 

d3m37r4

111111
Сообщения
1,449
Реакции
1,175
Помог
10 раз(а)
Сообщения
702
Реакции
54
d3m37r4, ну да, про спину забыл :pardon:
p.s. а где там сурсы регейма смотреть? на гите?
 
Сообщения
315
Реакции
104
Помог
2 раз(а)
ThePhoenix,
Если для вас это чушь, потому что НЕТ ИСХОДНОГО КОДА - ничем вам не могу помочь) Я этим плагином сам пользовался, когда у меня был свой Knife сервер. Полезная вещь, на самом деле
d3m37r4, да я в курсе, в описании по ссылке, что я прикрепил об этом сразу говорится)
 
Сообщения
702
Реакции
54
SNauPeR, для меня чушь - покупать плагины, аналоги которых, лежат в паблике..
 
Сообщения
315
Реакции
104
Помог
2 раз(а)
ThePhoenix,
Не все скриптеры. Мне проще заказать (купить плагин), и ДЕНЬГОЙ помочь людям, которые имеют доход с написания кода.
 
Сообщения
702
Реакции
54
SNauPeR, причём тут скриптеры? Я говорю о том, что покупать плагины без исходного кода - дурость, когда можно скачать бесплатно их аналоги
 
Сообщения
315
Реакции
104
Помог
2 раз(а)
ThePhoenix,
Скальпель написал свои платные плагины ДО ТОГО, как появились бесплатные аналоги его плагинов (не всех, думаю, но большинства таки точно). Скриптеры - при том, что можно САМОМУ ДОПИСАТЬ неактульный 2010года плагин и не покупать платный аналог Скальпеля 2020 года, к примеру
 
Сообщения
702
Реакции
54
d3m37r4, чёт не могу найти var_ который надо получать и проверять, чтобы определить, что удар был в спину. В Tracke Attack нашёл хитбоксы, но о спине там, чтобы шла речь, не увидел
 
Сообщения
2,143
Реакции
1,225
Помог
44 раз(а)
d3m37r4, чёт не могу найти var_ который надо получать и проверять, чтобы определить, что удар был в спину. В Tracke Attack нашёл хитбоксы, но о спине там, чтобы шла речь, не увидел
Такого нет. Нужно трейсом реализовывать проверку. Так же и в геймлибе сделано.
 
Сообщения
702
Реакции
54
Minni, так, а где там в трейсе то, положение игрока?) Я нашёл только хитбоксы
 
Сообщения
2,143
Реакции
1,225
Помог
44 раз(а)
Код:
func_IsAttackInBack(pVictim, pAttacker) {
    static Float:vecSrc[3],
    Float:vecAngles[3],
    Float:vecForward[3],
    Float:vecAttackDir[3];

    func_GetCenter(pVictim, vecSrc);
    func_GetCenter(pAttacker, vecAttackDir);

    xs_vec_sub(vecAttackDir, vecSrc, vecAttackDir);
    xs_vec_normalize(vecAttackDir, vecAttackDir);

    get_entvar(pVictim, var_angles, vecAngles);

    engfunc(EngFunc_MakeVectors, vecAngles);

    global_get(glb_v_forward, vecForward);

    xs_vec_mul_scalar(vecAttackDir, -1.0, vecAttackDir);

    return (xs_vec_dot(vecForward, vecAttackDir) > 0.3) ? 1 : 0;
}

func_GetCenter(pPlayer, Float:vecSrc[3]) {
    new Float:vecAbsMax[3], Float:vecAbsMin[3];
    get_entvar(pPlayer, var_absmax, vecAbsMax);
    get_entvar(pPlayer, var_absmin, vecAbsMin);
   
    xs_vec_add(vecAbsMax, vecAbsMin, vecSrc);
    xs_vec_mul_scalar(vecSrc, 0.5, vecSrc);
}
Ну и в каком-то тейкдемедж проверяй:

Код:
if(func_IsAttackInBack(pVictim, iInflictor)) {
    // ...
}
 

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

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