Скриптер
Участник
Пользователь
- Сообщения
- 654
- Реакции
- 560
- Помог
- 9 раз(а)
Думаю все знают о нем (урон только по голову). В отличии аналогов тут не блочится трейс (те брызги крови останутся хД) как просили здесь Only HS без блокировки крови
Версия с выбором (ReAPI или hamsandwich/fakemeta):
Версия с выбором (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
}
Вложения
-
1.6 KB Просмотры: 148
Последнее редактирование модератором: