Увеличить урон при попадании в голову

Статус
В этой теме нельзя размещать новые ответы.
Сообщения
678
Реакции
56
Помог
16 раз(а)
Обратите внимание, если вы хотите заключить сделку с этим пользователем, он заблокирован
Javekson, Ну по поводу попаданий, чисто в голову, то это чисто только так.
Код:
#include <amxmodx>
#include <fakemeta>
#include <reapi>

public plugin_init()
{
    register_plugin("Only HS", "0.1", "unnamed")
    RegisterHookChain(RG_CBasePlayer_TraceAttack, "CBasePlayer_TraceAttack_Pre")
}

public CBasePlayer_TraceAttack_Pre(victim, attacker, Float:dmg, Float:dir[3], tr, dmgbit)
{
    return (get_tr2(tr, TR_iHitgroup) != HIT_HEAD) ? HC_BREAK : HC_CONTINUE
}
 
Сообщения
374
Реакции
47
Помог
6 раз(а)
Я пробовал
C++:
#include <amxmodx>
#include <hamsandwich>
#include <fakemeta>

#define PLUGIN      "DAMAGE FACTOR"
#define VERSION     "0.2"
#define AUTHOR      "DEVV"

public plugin_init()
{
        register_plugin(PLUGIN, VERSION, AUTHOR);
        RegisterHam(Ham_TraceAttack, "player", "Forward_TraceAttack");
}

public Forward_TraceAttack(id, attacker, Float:dmg, Float:dir[3], tr, dmgbit)
{
        if(get_tr2(tr, TR_iHitgroup) == HIT_HEAD)
            if(get_user_weapon(attacker) == CSW_KNIFE)
                SetHamParamFloat(4, dmg * 6);
}
в том числе и варианты с выше. Есть какой ни будь другой способ изменить демедж?
 
Сообщения
494
Реакции
341
Помог
11 раз(а)
DEVV, в чём проблемы с двумя предоставленными вариантами?
 
Сообщения
494
Реакции
341
Помог
11 раз(а)
DEVV, касательно этого кода:
Код:
public Forward_TraceAttack(id, attacker, Float:dmg, Float:dir[3], tr, dmgbit)
{
        if(get_tr2(tr, TR_iHitgroup) == HIT_HEAD)
            if(get_user_weapon(attacker) == CSW_KNIFE)
                SetHamParamFloat(4, dmg * 6);
}
Здесь урон - 3 аргумент функции, а не 4.
Код:
SetHamParamFloat(4, dmg * 6);
->
Код:
SetHamParamFloat(3, dmg * 6);
 
Сообщения
893
Реакции
149
Помог
25 раз(а)
C++:
#include <AmxModX>
#include <ReAPI>

public plugin_init() {
    RegisterHookChain(RG_CBasePlayer_TakeDamage, "@CBasePlayer_TakeDamage_Pre", .post = false);
}

@CBasePlayer_TakeDamage_Pre(pVictim, iIflictor, pAttacker, Float:flDamage, iBits) {
    new iActiveItem = get_member(pAttacker, m_pActiveItem);
        
    if(get_member(pVictim, m_LastHitGroup) == HIT_HEAD && get_member(iActiveItem, m_iId) == CSW_KNIFE) {
        SetHookChainArg(4, ATYPE_FLOAT, flDamage * 10.0);
    }
}
Держи, все работает как нужно, проверял.
 
Сообщения
374
Реакции
47
Помог
6 раз(а)
Спасибо огромное bizon ImmortalAmxx Komap и другим участникам форума которые помогли. Проблема решена.

DEVV, касательно этого кода:
Код:
public Forward_TraceAttack(id, attacker, Float:dmg, Float:dir[3], tr, dmgbit)
{
        if(get_tr2(tr, TR_iHitgroup) == HIT_HEAD)
            if(get_user_weapon(attacker) == CSW_KNIFE)
                SetHamParamFloat(4, dmg * 6);
}
Здесь урон - 3 аргумент функции, а не 4.
Код:
SetHamParamFloat(4, dmg * 6);
->
Код:
SetHamParamFloat(3, dmg * 6);
Действительно, после этого всё заработало. Спасибо!
C++:
#include <AmxModX>
#include <ReAPI>

public plugin_init() {
    RegisterHookChain(RG_CBasePlayer_TakeDamage, "@CBasePlayer_TakeDamage_Pre", .post = false);
}

@CBasePlayer_TakeDamage_Pre(pVictim, iIflictor, pAttacker, Float:flDamage, iBits) {
    new iActiveItem = get_member(pAttacker, m_pActiveItem);
     
    if(get_member(pVictim, m_LastHitGroup) == HIT_HEAD && get_member(iActiveItem, m_iId) == CSW_KNIFE) {
        SetHookChainArg(4, ATYPE_FLOAT, flDamage * 10.0);
    }
}
Держи, все работает как нужно, проверял.
Пробовал тоже, всё работает. Спасибо!
 
Статус
В этой теме нельзя размещать новые ответы.

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

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