Only headshot

Сообщения
678
Реакции
579
Предупреждения
8
Помог
9 раз(а)
Думаю все знают о нем (урон только по голову). В отличии аналогов тут не блочится трейс (те брызги крови останутся хД) как просили здесь Only HS без блокировки крови

Версия с выбором (ReAPI или hamsandwich/fakemeta):
Код:
#define USE_REAPI_VERSION


#include <amxmodx>

#if defined USE_REAPI_VERSION
    #include <reapi>
    #define HitHead(%1)                     (get_member(%1, m_LastHitGroup) == HITGROUP_HEAD)
    #define RETURN_CONTINUE                    HC_CONTINUE
    #define RETURN_SUPERCEDE                 HC_SUPERCEDE
    #define SET_RESULT_INTEGER(%1)             SetHookChainReturn(ATYPE_INTEGER, %1)
#else
    #include <hamsandwich>
    #include <fakemeta>
    const m_LastHitGroup = 75
    #define HitHead(%1)                     (get_pdata_int(%1, m_LastHitGroup) == HIT_HEAD)
    #define RETURN_CONTINUE                    HAM_IGNORED
    #define RETURN_SUPERCEDE                 HAM_SUPERCEDE
    #define SET_RESULT_INTEGER(%1)             SetHamReturnInteger(%1)
#endif

#define PL_VERSION              "0.0.2"

#define IsPlayer(%1)            (1 <= (%1) <= g_iMaxPlayers)

new g_iMaxPlayers

public plugin_init()
{
    register_plugin("[ReAPI] Only HeadShot", PL_VERSION, "Vaqtincha")

#if defined USE_REAPI_VERSION
    RegisterHookChain(RG_CBasePlayer_TakeDamage, "CBasePlayer_TakeDamage", .post = false)
#else
    #if !defined Ham_Item_GetItemInfo
        RegisterHamPlayer(Ham_TakeDamage, "CBasePlayer_TakeDamage", .Post = false) // ham 183
    #else
        RegisterHam(Ham_TakeDamage, "player", "CBasePlayer_TakeDamage", .Post = false)
    #endif
#endif

    g_iMaxPlayers = get_maxplayers()
}

public CBasePlayer_TakeDamage(const pPlayer, const pevInflictor, const pevAttacker, const Float:flDamage, const bitsDamageType)
{
    if(!IsPlayer(pevAttacker) || !(bitsDamageType & DMG_BULLET))
        return RETURN_CONTINUE
    
    if(pevAttacker == pevInflictor && !HitHead(pPlayer) && get_user_weapon(pevAttacker) != CSW_KNIFE)
    {
        SET_RESULT_INTEGER(false)
        return RETURN_SUPERCEDE
    }
    
    return RETURN_CONTINUE
}
 

Вложения

Последнее редактирование модератором:

hajimura

Е777КХ05
Сообщения
290
Реакции
228
Помог
6 раз(а)
Может быть, лучше исходник выложить под тегом?
 
Сообщения
678
Реакции
579
Предупреждения
8
Помог
9 раз(а)
Phantom, Да выложите!
 

ssx

Сообщения
295
Реакции
86
Различия reapi версии и от SISA (с c-s.net.ua)
1. не дергает игрока если попадать не в голову
2. В другом плагине у меня в register_event("Damage", "fwd_damage", "b", "2!0", "3=0") перестало выводить в какую часть тела попал .

Так понял эти две проблемки из-за блокировки урона?
Как пофиксить ?
 
Сообщения
678
Реакции
579
Предупреждения
8
Помог
9 раз(а)
ssx, те ты про моего плагина ?
 
Сообщения
678
Реакции
579
Предупреждения
8
Помог
9 раз(а)
Прекращена поддержка данного плагина!
 
Сообщения
106
Реакции
-4
Vaqtincha, Как сделать? У меня не работает
Код:
register_clcmd( "onlyhs" , "onlyhs" );

@onlyhs( id ){
   
    only_hs[ id ]    =    !only_hs[ id ];
   
    return;
}

@client_connect( id ){
    only_hs[ id ] = false;
}
1 Дек 2021
Вод не магу понят Это правильно или нет?

Код:
if(!IsPlayer(pevAttacker) || !only_hs[ pevAttacker ] || !(bitsDamageType & DMG_BULLET))
 

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

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