Статистика: Добавлено lisovoy1337 — 28 окт 2025, 21:50
#include <amxmodx>
#include <fakemeta>
#include <hamsandwich>
#include <cs_ham_bots_api>
#include <cstrike>
#define isPlayer(%1) (1 <= %1 <= 32)
new g_szFallSound[3][] =
{
"player/pl_fallpain1.wav",
"player/pl_fallpain2.wav",
"player/pl_fallpain3.wav"
}
new g_szDrownSound[3][] =
{
"player/pl_drown1.wav",
"player/pl_drown2.wav",
"player/pl_drown3.wav"
}
new g_szPainSound[7][] =
{
"player/pl_pain1.wav",
"player/pl_pain2.wav",
"player/pl_pain3.wav",
"player/pl_pain4.wav",
"player/pl_pain5.wav",
"player/pl_pain6.wav",
"player/pl_pain7.wav"
}
// Звуки хэдшотов
new g_szHeadshotSound[3][] =
{
"player/headshot1.wav",
"player/headshot2.wav",
"player/headshot3.wav"
}
new g_szHeadshotHelmetSound[] = "player/bhit_helmet-1.wav"
new g_iPlayerFlags[MAX_PLAYERS + 1]
new g_iPlayerLastHitgroup[MAX_PLAYERS + 1]
public plugin_precache()
{
for ( new i = 0; i < 3; i ++ )
precache_sound(g_szFallSound[i])
for ( new i = 0; i < 3; i ++ )
precache_sound(g_szDrownSound[i])
for ( new i = 0; i < 5; i ++ )
precache_sound(g_szPainSound[i])
// Прекеш звуков хэдшотов
for ( new i = 0; i < 3; i ++ )
precache_sound(g_szHeadshotSound[i])
precache_sound(g_szHeadshotHelmetSound)
}
public plugin_init()
{
register_plugin("Damage Sound", "1.1", "RedSMURF")
RegisterHamPlayer(Ham_TakeDamage, "fwdTakeDamage", 0)
RegisterHamBots(Ham_TakeDamage, "fwdTakeDamage", 0)
RegisterHamPlayer(Ham_TraceAttack, "fwdTraceAttack", 0)
RegisterHamBots(Ham_TraceAttack, "fwdTraceAttack", 0)
register_forward(FM_EmitSound, "fwdEmitSound", 0)
}
public fwdTraceAttack(iEnt, iAttacker, Float:fDamage, Float:fDir[3], tracehandle, iDamageBits)
{
if (!isPlayer(iEnt))
return HAM_IGNORED
g_iPlayerLastHitgroup[iEnt] = get_tr2(tracehandle, TR_iHitgroup)
return HAM_IGNORED
}
public fwdTakeDamage(iEnt, iInflictor, iAttacker, Float:fDamage, iDamageBits)
{
g_iPlayerFlags[iEnt] |= iDamageBits
return HAM_IGNORED
}
public fwdEmitSound(iEnt, iChan, szSample[])
{
if ( !isPlayer(iEnt)
|| !g_iPlayerFlags[iEnt] )
return FMRES_IGNORED
new szSample[32]
if ( g_iPlayerFlags[iEnt] & DMG_FALL )
{
copy(szSample, charsmax(szSample), g_szFallSound[random(3)])
}
else if ( g_iPlayerFlags[iEnt] & DMG_DROWN )
{
copy(szSample, charsmax(szSample), g_szDrownSound[random(3)])
}
else if ( g_iPlayerFlags[iEnt] & DMG_BULLET )
{
// Проверяем, был ли это хэдшот (HIT_HEAD = 1)
if (g_iPlayerLastHitgroup[iEnt] == HIT_HEAD)
{
// Проверяем наличие шлема через CsArmorType
new CsArmorType:armorType
cs_get_user_armor(iEnt, armorType)
if (armorType == CS_ARMOR_VESTHELM)
{
// Со шлемом
copy(szSample, charsmax(szSample), g_szHeadshotHelmetSound)
}
else
{
// Без шлема
copy(szSample, charsmax(szSample), g_szHeadshotSound[random(3)])
}
}
else
{
// Обычное попадание в тело
copy(szSample, charsmax(szSample), g_szPainSound[random(7)])
}
// Сбрасываем hitgroup после обработки
g_iPlayerLastHitgroup[iEnt] = 0
}
g_iPlayerFlags[iEnt] = 0
engfunc(EngFunc_EmitSound, iEnt, CHAN_VOICE, szSample, VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
return FMRES_SUPERCEDE
}
//правильно:
for ( new i = 0; i < 7; i ++ )
precache_sound(g_szPainSound[i])Статистика: Добавлено pro_z — 28 окт 2025, 00:01
#include <amxmodx>
#include <fakemeta>
#include <hamsandwich>
#include <cs_ham_bots_api>
#include <cstrike>
#define isPlayer(%1) (1 <= %1 <= 32)
new g_szFallSound[3][] =
{
"player/pl_fallpain1.wav",
"player/pl_fallpain2.wav",
"player/pl_fallpain3.wav"
}
new g_szDrownSound[3][] =
{
"player/pl_drown1.wav",
"player/pl_drown2.wav",
"player/pl_drown3.wav"
}
new g_szPainSound[7][] =
{
"player/pl_pain1.wav",
"player/pl_pain2.wav",
"player/pl_pain3.wav",
"player/pl_pain4.wav",
"player/pl_pain5.wav",
"player/pl_pain6.wav",
"player/pl_pain7.wav"
}
// Звуки хэдшотов
new g_szHeadshotSound[3][] =
{
"player/headshot1.wav",
"player/headshot2.wav",
"player/headshot3.wav"
}
new g_szHeadshotHelmetSound[] = "player/bhit_helmet-1.wav"
new g_iPlayerFlags[MAX_PLAYERS + 1]
new g_iPlayerLastHitgroup[MAX_PLAYERS + 1]
public plugin_precache()
{
for ( new i = 0; i < 3; i ++ )
precache_sound(g_szFallSound[i])
for ( new i = 0; i < 3; i ++ )
precache_sound(g_szDrownSound[i])
for ( new i = 0; i < 5; i ++ )
precache_sound(g_szPainSound[i])
// Прекеш звуков хэдшотов
for ( new i = 0; i < 3; i ++ )
precache_sound(g_szHeadshotSound[i])
precache_sound(g_szHeadshotHelmetSound)
}
public plugin_init()
{
register_plugin("Damage Sound", "1.1", "RedSMURF")
RegisterHamPlayer(Ham_TakeDamage, "fwdTakeDamage", 0)
RegisterHamBots(Ham_TakeDamage, "fwdTakeDamage", 0)
RegisterHamPlayer(Ham_TraceAttack, "fwdTraceAttack", 0)
RegisterHamBots(Ham_TraceAttack, "fwdTraceAttack", 0)
register_forward(FM_EmitSound, "fwdEmitSound", 0)
}
public fwdTraceAttack(iEnt, iAttacker, Float:fDamage, Float:fDir[3], tracehandle, iDamageBits)
{
if (!isPlayer(iEnt))
return HAM_IGNORED
g_iPlayerLastHitgroup[iEnt] = get_tr2(tracehandle, TR_iHitgroup)
return HAM_IGNORED
}
public fwdTakeDamage(iEnt, iInflictor, iAttacker, Float:fDamage, iDamageBits)
{
g_iPlayerFlags[iEnt] |= iDamageBits
return HAM_IGNORED
}
public fwdEmitSound(iEnt, iChan, szSample[])
{
if ( !isPlayer(iEnt)
|| !g_iPlayerFlags[iEnt] )
return FMRES_IGNORED
new szSample[32]
if ( g_iPlayerFlags[iEnt] & DMG_FALL )
{
copy(szSample, charsmax(szSample), g_szFallSound[random(3)])
}
else if ( g_iPlayerFlags[iEnt] & DMG_DROWN )
{
copy(szSample, charsmax(szSample), g_szDrownSound[random(3)])
}
else if ( g_iPlayerFlags[iEnt] & DMG_BULLET )
{
// Проверяем, был ли это хэдшот (HIT_HEAD = 1)
if (g_iPlayerLastHitgroup[iEnt] == HIT_HEAD)
{
// Проверяем наличие шлема через CsArmorType
new CsArmorType:armorType
cs_get_user_armor(iEnt, armorType)
if (armorType == CS_ARMOR_VESTHELM)
{
// Со шлемом
copy(szSample, charsmax(szSample), g_szHeadshotHelmetSound)
}
else
{
// Без шлема
copy(szSample, charsmax(szSample), g_szHeadshotSound[random(3)])
}
}
else
{
// Обычное попадание в тело
copy(szSample, charsmax(szSample), g_szPainSound[random(7)])
}
// Сбрасываем hitgroup после обработки
g_iPlayerLastHitgroup[iEnt] = 0
}
g_iPlayerFlags[iEnt] = 0
engfunc(EngFunc_EmitSound, iEnt, CHAN_VOICE, szSample, VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
return FMRES_SUPERCEDE
}
Статистика: Добавлено OffTheVoid — 27 окт 2025, 15:32
#include <amxmodx>
#include <fakemeta>
#include <hamsandwich>
#include <cs_ham_bots_api>
#include <cstrike>
#define isPlayer(%1) (1 <= %1 <= 32)
new g_szFallSound[3][] =
{
"player/pl_fallpain1.wav",
"player/pl_fallpain2.wav",
"player/pl_fallpain3.wav"
}
new g_szDrownSound[3][] =
{
"player/pl_drown1.wav",
"player/pl_drown2.wav",
"player/pl_drown3.wav"
}
new g_szPainSound[5][] =
{
"player/pl_pain2.wav",
"player/pl_pain4.wav",
"player/pl_pain5.wav",
"player/pl_pain6.wav",
"player/pl_pain7.wav"
}
// Звуки хэдшотов
new g_szHeadshotSound[] = "player/headshot1.wav"
new g_szHeadshotHelmetSound[] = "player/headshot2.wav"
new g_iPlayerFlags[MAX_PLAYERS + 1]
new g_iPlayerLastHitgroup[MAX_PLAYERS + 1]
public plugin_precache()
{
for ( new i = 0; i < 3; i ++ )
precache_sound(g_szFallSound[i])
for ( new i = 0; i < 3; i ++ )
precache_sound(g_szDrownSound[i])
for ( new i = 0; i < 5; i ++ )
precache_sound(g_szPainSound[i])
// Прекеш звуков хэдшотов
precache_sound(g_szHeadshotSound)
precache_sound(g_szHeadshotHelmetSound)
}
public plugin_init()
{
register_plugin("Damage Sound", "1.1", "RedSMURF")
RegisterHamPlayer(Ham_TakeDamage, "fwdTakeDamage", 0)
RegisterHamBots(Ham_TakeDamage, "fwdTakeDamage", 0)
RegisterHamPlayer(Ham_TraceAttack, "fwdTraceAttack", 0)
RegisterHamBots(Ham_TraceAttack, "fwdTraceAttack", 0)
register_forward(FM_EmitSound, "fwdEmitSound", 0)
}
public fwdTraceAttack(iEnt, iAttacker, Float:fDamage, Float:fDir[3], tracehandle, iDamageBits)
{
if (!isPlayer(iEnt))
return HAM_IGNORED
g_iPlayerLastHitgroup[iEnt] = get_tr2(tracehandle, TR_iHitgroup)
return HAM_IGNORED
}
public fwdTakeDamage(iEnt, iInflictor, iAttacker, Float:fDamage, iDamageBits)
{
g_iPlayerFlags[iEnt] |= iDamageBits
return HAM_IGNORED
}
public fwdEmitSound(iEnt, iChan, szSample[])
{
if ( !isPlayer(iEnt)
|| !g_iPlayerFlags[iEnt] )
return FMRES_IGNORED
new szSample[32]
if ( g_iPlayerFlags[iEnt] & DMG_FALL )
{
copy(szSample, charsmax(szSample), g_szFallSound[random(3)])
}
else if ( g_iPlayerFlags[iEnt] & DMG_DROWN )
{
copy(szSample, charsmax(szSample), g_szDrownSound[random(3)])
}
else if ( g_iPlayerFlags[iEnt] & DMG_BULLET )
{
// Проверяем, был ли это хэдшот (HIT_HEAD = 1)
if (g_iPlayerLastHitgroup[iEnt] == HIT_HEAD)
{
// Проверяем наличие шлема через CsArmorType
new CsArmorType:armorType
cs_get_user_armor(iEnt, armorType)
if (armorType == CS_ARMOR_VESTHELM)
{
// Со шлемом
copy(szSample, charsmax(szSample), g_szHeadshotHelmetSound)
}
else
{
// Без шлема
copy(szSample, charsmax(szSample), g_szHeadshotSound)
}
}
else
{
// Обычное попадание в тело
copy(szSample, charsmax(szSample), g_szPainSound[random(5)])
}
// Сбрасываем hitgroup после обработки
g_iPlayerLastHitgroup[iEnt] = 0
}
g_iPlayerFlags[iEnt] = 0
engfunc(EngFunc_EmitSound, iEnt, CHAN_VOICE, szSample, VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
return FMRES_SUPERCEDE
}
Статистика: Добавлено pro_z — 26 окт 2025, 22:34
#include <amxmodx>
#include <fakemeta>
#include <hamsandwich>
#include <cs_ham_bots_api>
#define isPlayer(%1) (1 <= %1 <= 32)
new g_szFallSound[3][] =
{
"player/pl_fallpain1.wav",
"player/pl_fallpain2.wav",
"player/pl_fallpain3.wav"
}
new g_szDrownSound[3][] =
{
"player/pl_drown1.wav",
"player/pl_drown2.wav",
"player/pl_drown3.wav"
}
new g_szPainSound[5][] =
{
"player/pl_pain2.wav",
"player/pl_pain4.wav",
"player/pl_pain5.wav",
"player/pl_pain6.wav",
"player/pl_pain7.wav"
}
new g_iPlayerFlags[MAX_PLAYERS + 1]
public plugin_precache()
{
for ( new i = 0; i < 3; i ++ )
precache_sound(g_szFallSound[i])
for ( new i = 0; i < 3; i ++ )
precache_sound(g_szDrownSound[i])
for ( new i = 0; i < 5; i ++ )
precache_sound(g_szPainSound[i])
}
public plugin_init()
{
register_plugin("Damage Sound", "1.0", "RedSMURF")
RegisterHamPlayer(Ham_TakeDamage, "fwdTakeDamage", 0)
RegisterHamBots(Ham_TakeDamage, "fwdTakeDamage", 0)
register_forward(FM_EmitSound, "fwdEmitSound", 0)
}
public fwdTakeDamage(iEnt, iInflictor, iAttacker, Float:fDamage, iDamageBits)
{
g_iPlayerFlags[iEnt] |= iDamageBits
return HAM_IGNORED
}
public fwdEmitSound(iEnt, iChan, szSample[])
{
if ( !isPlayer(iEnt)
|| !g_iPlayerFlags[iEnt] )
return FMRES_IGNORED
new szSample[32]
if ( g_iPlayerFlags[iEnt] & DMG_FALL ) copy(szSample, charsmax(szSample), g_szFallSound[random(3)])
else if ( g_iPlayerFlags[iEnt] & DMG_DROWN ) copy(szSample, charsmax(szSample), g_szDrownSound[random(3)])
else if ( g_iPlayerFlags[iEnt] & DMG_BULLET ) copy(szSample, charsmax(szSample), g_szPainSound[random(5)])
g_iPlayerFlags[iEnt] = 0
engfunc(EngFunc_EmitSound, iEnt, CHAN_VOICE, szSample, VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
return FMRES_SUPERCEDE
} Статистика: Добавлено OffTheVoid — 25 окт 2025, 16:46
#include <amxmodx>
#include <hamsandwich>
#include <fakemeta>
public plugin_init()
{
register_plugin("Train No Damage", "1.0", "Author");
RegisterHam(Ham_Blocked, "func_train", "Ham_TrainBlocked_Post", 1);
}
public Ham_TrainBlocked_Post(iEnt, id)
{
if(!is_user_alive(id) || !pev_valid(iEnt))
return HAM_IGNORED;
set_pev(iEnt, pev_solid, SOLID_NOT);
set_task(0.1, "RestoreSolid", iEnt);
return HAM_HANDLED;
}
public RestoreSolid(iEnt)
{
if(pev_valid(iEnt))
set_pev(iEnt, pev_solid, SOLID_BSP);
}
Статистика: Добавлено pro_z — 22 окт 2025, 20:13
public Hook_Think(Ent)
{
if(!pev_valid(Ent))
return HAM_IGNORED;
if(!native_zl_zmclassic_valid(Ent) && !native_zl_zmdeimos_valid(Ent) && !native_zl_zmghost_valid(Ent) && !native_zl_zmheal_valid(Ent) && !native_zl_zmwitch_valid(Ent) && !native_zl_zmbig_valid(Ent) && !native_zl_zmhound_valid(Ent))
return HAM_IGNORED;
if(pev(Ent, pev_deadflag) == DEAD_DYING)
return HAM_IGNORED;
if(!is_user_alive(iTarget))
{
iTarget = zl_player_random();
set_pev(Ent, pev_nextthink, get_gametime() + 0.2);
return HAM_HANDLED;
}
if(pev(Ent, pev_fuser1) == 500.0)
{
set_pev(Ent, pev_fuser1, 0.0);
Anim(Ent, 4, 1.0);
}
static Float:Origin[3], Float:eOrigin[3], Float:Angle[3], Float:Vector[3];
pev(iTarget, pev_origin, Origin);
pev(Ent, pev_origin, eOrigin);
xs_vec_sub(Origin, eOrigin, Vector);
vector_to_angle(Vector, Angle);
Angle[0] = 0.0;
Angle[2] = 0.0;
xs_vec_normalize(Vector, Vector);
xs_vec_mul_scalar(Vector, Speed, Vector);
static Float:plus_coord;
plus_coord = get_cvar_float("plus_coord");
if(Vector[2] > 0.0)
{
Vector[2] = plus_coord;
}
else
{
Vector[2] -= 500.0;
}
set_pev(Ent, pev_velocity, Vector);
set_pev(Ent, pev_angles, Angle);
set_pev(Ent, pev_nextthink, get_gametime() + 0.2);
return HAM_HANDLED;
}
Статистика: Добавлено pro_z — 22 окт 2025, 20:12