Участник
Пользователь
- Сообщения
- 92
- Реакции
- 23
Здравствуйте, ищу плагин, который воспроизводит звук атакующему, если он попал в голову. Именно попал
#include <amxmodx>
#include <reapi>
#define SOUND "misc/miscstats/headshot.wav"
public plugin_precache()
{
precache_sound(SOUND);
RegisterHookChain(RG_CBasePlayer_Killed, "eventKilled", true);
}
public eventKilled(const this, pevAttacker, iGib)
{
if(get_member(this, m_bHeadshotKilled))
{
rg_send_audio(0, SOUND);
}
}
Phantom попал != убилесли он попал в голову
public CBasePlayer_TraceAttack(iVictim, iAttacker, Float:flDamage, Float:vecDir[3], tracehandle, bitsDamageType)
{
if(IsSetBit(g_aPlayerSettings[MODE_HEADSHOT], iAttacker))
{
return (get_tr2(tracehandle, TR_iHitgroup) != HIT_HEAD && get_user_weapon(iAttacker) != CSW_KNIFE) ? HC_SUPERCEDE : HC_CONTINUE;
}
return HC_CONTINUE;
}
RegisterHam( Ham_TraceAttack, "player", "CBasePlayer_TraceAttack", .post = false );
RegisterHookChain(RG_CBasePlayer_TraceAttack, "CBasePlayer_TraceAttack", .post = false);
#include <amxmodx>
#include <fakemeta>
#include <hamsandwich>
#define VERSION "0.0.1"
#define PLUGIN "No HeadShot"
public plugin_init()
{
register_plugin(PLUGIN, VERSION, "ConnorMcLeod")
RegisterHam(Ham_TraceAttack, "player", "CBasePlayer_TraceAttack")
}
public CBasePlayer_TraceAttack( id, eAttacker, Float:flDamage, Float:vecDir[3], ptrTraceResult /* , bitsDamageType */)
{
new Float:flTakeDamage
pev(id, pev_takedamage, flTakeDamage)
if( flTakeDamage == DAMAGE_NO )
{
// game gonna do same check, no need to let it be
return HAM_SUPERCEDE
}
if( get_tr2(ptrTraceResult, TR_iHitgroup) == HIT_HEAD )
{
set_tr2(ptrTraceResult, TR_iHitgroup, HIT_CHEST)
return HAM_HANDLED
}
return HAM_IGNORED
}
как "спойлер" и "код" сделать на форуме
Да, это основа для отрабатывания функции..post влияет на что-то?
Конкретно в данном примере ReAPI не обязателен, однако рекомендую к использованию.ReApi лучше?
Игра собирается заблокировать получение урона, не важно из за чего. Так что нужно завершить фукнцию.// game gonna do same check, no need to let it be return HAM_SUPERCEDE
#include <amxmodx>
#include <fakemeta>
#include <reapi>
new const sound[] = "player/bhit_helmet-1.wav";
public plugin_init()
{
register_plugin("Get Headshot", "0.1", "Grusha :D")
RegisterHookChain(RG_CBasePlayer_TraceAttack, "CBasePlayer_TraceAttack", .post = false);
}
public plugin_precache()
precache_sound(sound)
public CBasePlayer_TraceAttack( iVictim, iAttacker, Float:flDamage, Float:vecDir[3], ptrTraceResult /* , bitsDamageType */)
{
new Float:flTakeDamage
pev(iVictim, pev_takedamage, flTakeDamage)
if(flTakeDamage == DAMAGE_NO) // game gonna do same check, no need to let it be
return HC_SUPERCEDE
if(get_tr2(ptrTraceResult, TR_iHitgroup) == HIT_HEAD)
client_cmd(iAttacker, "spk %s", sound);
return HC_CONTINUE;
}
Есть на реапи версия. В 4 строке указываете путь до своего аудиофайла:
C++:
stock PlaySound(index, szSound[])
{
static msgSendAudio;
if(msgSendAudio || (msgSendAudio = get_user_msgid("SendAudio")))
{
static players[32], pnum;
get_players(players, pnum, "ch");
for(new i; i < pnum; i++)
{
message_begin(MSG_ONE_UNRELIABLE, msgSendAudio, .player = players);
write_byte(players);
write_string(szSound);
write_short(PITCH_NORM);
message_end();
}
}
}
native rg_send_audio(const index, const sample[], const pitch = PITCH_NORM)