Все вопросы по скриптингу для AMXX, помощь в редактировании плагинов.
Модераторы: Subb98, liFe iS GoOD
Правила форума
1. Запрещено материться и оскорблять других участников форума.
2. Запрещен флуд, оффтоп, дабл постинг во всех разделах форума, кроме раздела "Болтовня".
3. Запрещено взламывать сайт/форум или наносить любой вред проекту.
4. Запрещено рекламировать другие ресурсы.
5. Запрещено создавать темы без информативного названия. Название темы должно отображать ее смысл.
В данном разделе форума разрешено создавать темы, касающие только скриптинга для AMX Mod X.
Правила при создании новой темы:
1. При вставке кода плагина необходимо использовать тег [code=php].
2. Любые изображения должны быть загружены, как вложения к вашему сообщению.
3. При описании проблемы или запросе на помощь в редактировании плагина обязательно выкладывайте исходник sma плагина.
OffTheVoid » 25 окт 2025, 16:46
Может кто знает как внести звуки хэдшотов (в шлеме и без) обратно в код?
- Код: Выделить всё
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
-
- Сообщения: 2
- Зарегистрирован: 25 окт 2025, 16:18
- Благодарил (а): 2 раз.
- Поблагодарили: 0 раз.
- Языки программирования: Я ничего не знаю
-
pro_z » 26 окт 2025, 22:34
- Код: Выделить всё
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 )
{
if (g_iPlayerLastHitgroup[iEnt] == HIT_HEAD)
{
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)])
}
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
-
- Сообщения: 6
- Зарегистрирован: 06 янв 2012, 11:28
- Благодарил (а): 0 раз.
- Поблагодарили: 2 раз.
OffTheVoid » 27 окт 2025, 15:32
Спасибо, протестил, работает
Добавлю в кредиты со следующим апдейтом
Изменил только pl_pain с пяти до семи, headshot с 1 до 3 и со шлемом на bhit_helmet1
- Код: Выделить всё
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 )
{
if (g_iPlayerLastHitgroup[iEnt] == HIT_HEAD)
{
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)])
}
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
-
- Сообщения: 2
- Зарегистрирован: 25 окт 2025, 16:18
- Благодарил (а): 2 раз.
- Поблагодарили: 0 раз.
- Языки программирования: Я ничего не знаю
-
pro_z » 28 окт 2025, 00:01
OffTheVoid писал(а):Спасибо, протестил, работает
Добавлю в кредиты со следующим апдейтом
Изменил только pl_pain с пяти до семи, headshot с 1 до 3 и со шлемом на bhit_helmet1
- Код: Выделить всё
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 )
{
if (g_iPlayerLastHitgroup[iEnt] == HIT_HEAD)
{
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)])
}
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
}
Всё правильно?
Цикл прекеша g_szPainSound должен идти до 7, а не до 5:
- Код: Выделить всё
for ( new i = 0; i < 7; i ++ )
precache_sound(g_szPainSound[i])
-

pro_z
-
- Сообщения: 6
- Зарегистрирован: 06 янв 2012, 11:28
- Благодарил (а): 0 раз.
- Поблагодарили: 2 раз.
Вернуться в Скриптинг
Кто сейчас на конференции
Сейчас этот форум просматривают: Bing [Bot], Majestic-12 [Bot] и гости: 4