Звук при падении гранаты на землю

Сообщения
18
Реакции
0
Есть плагин, в качетсве основы для предмета используется "weapon_smokegrenade" (поменять на другой нет возможности, т.к. занят слот).
При падении и касании об землю воспроизводится звук как у смок гранаты, а нужно чтобы был как у обычной хаешки.
 
Сообщения
53
Реакции
0
Помог
1 раз(а)
по сути это сделайте за меня )

тебе сюда Тык
27 Дек 2024
lionel142,

а так как обьяснил так и код дал ) у меня похожая проблема была делал для себя


Код:
// Author: Virtual Monarch
// Plugin for DODC (Dead OF Day Complex)

#include <amxmodx>
#include <fakemeta>
#include <hamsandwich>

#define PLUGIN "Custom Item Sound Changer"
#define VERSION "1.0"
#define AUTHOR "Virtual Monarch"

new const CUSTOM_ITEM_CLASSNAME[] = "weapon_smokegrenade"
new const CUSTOM_ITEM_MODEL[] = "models/dodc/w_smokegrenade.mdl" // Замените на модель вашего предмета

public plugin_init()
{
    register_plugin(PLUGIN, VERSION, AUTHOR)
    
    register_forward(FM_EmitSound, "fw_EmitSound")
    
    // Регистрируем событие создания предмета для установки кастомной модели
    RegisterHam(Ham_Spawn, "weapon_smokegrenade", "fw_ItemSpawn", 1)
}

public fw_ItemSpawn(entity)
{
    if (!is_valid_ent(entity))
        return HAM_IGNORED;
    
    // Устанавливаем кастомную модель для нашего предмета
    entity_set_model(entity, CUSTOM_ITEM_MODEL)
    
    return HAM_HANDLED;
}

public fw_EmitSound(entity, channel, const sample[], Float:volume, Float:attn, flags, pitch)
{
    if (!is_valid_ent(entity))
        return FMRES_IGNORED;
    
    // Проверяем, является ли звук тем, который мы хотим заменить
    if (equal(sample, "weapons/sg_explode.wav") || equal(sample, "weapons/grenade_hit1.wav"))
    {
        // Проверяем, является ли entity нашим кастомным предметом
        if (is_custom_item(entity))
        {
            // Воспроизводим звук HE гранаты вместо смок гранаты
            new bounce_sound[64]
            formatex(bounce_sound, charsmax(bounce_sound), "weapons/he_bounce-%d.wav", random_num(1, 3))
            emit_sound(entity, channel, bounce_sound, volume, attn, flags, pitch)
            return FMRES_SUPERCEDE;
        }
    }
    
    return FMRES_IGNORED;
}

bool:is_custom_item(entity)
{
    if (!is_valid_ent(entity))
        return false;
    
    static classname[32];
    entity_get_string(entity, EV_SZ_classname, classname, charsmax(classname));
    
    if (!equal(classname, CUSTOM_ITEM_CLASSNAME))
        return false;
    
    static model[128];
    entity_get_string(entity, EV_SZ_model, model, charsmax(model));
    
    return equal(model, CUSTOM_ITEM_MODEL);
}

public plugin_precache()
{
    precache_model(CUSTOM_ITEM_MODEL)
    precache_sound("weapons/he_bounce-1.wav")
    precache_sound("weapons/he_bounce-2.wav")
    precache_sound("weapons/he_bounce-3.wav")
}
 
Сообщения
18
Реакции
0
Код:
emit_sound(entity, channel, bounce_sound, volume, attn, flags, pitch)
У меня при такой команде воспроизводлся совершенно иной звук почему-то (Twelve в озвучке Фримена из ХЛ).
И в каталоке с КС нашел только один звук he_bounce-1.wav
В общем, получилось решить проблему таким способом:
Код:
public fw_EmitSound(entity, channel, const sample[], Float:volume, Float:attn, flags, pitch)
{
    if (!is_valid_ent(entity))
        return FMRES_IGNORED;
  
    // Проверяем, является ли звук тем, который мы хотим заменить
    if (equal(sample, "weapons/grenade_hit1.wav") || equal(sample, "weapons/grenade_hit2.wav") || equal(sample, "weapons/grenade_hit3.wav"))
    {
        // Проверяем, является ли entity нашим кастомным предметом
        if (is_custom_item(entity))
        {
            // Воспроизводим звук HE гранаты вместо смок гранаты
            emit_sound(entity, channel, "weapons/he_bounce-1.wav", volume, attn, 0, pitch)
            return FMRES_SUPERCEDE;
        }
    }
  
    return FMRES_IGNORED;
}


bool:is_custom_item(entity)
{
    if (!is_valid_ent(entity))
        return false;
      
    if (entity_get_int(entity, EV_INT_impulse) == rgd5_WEAPONKEY)
        return true;
  
    return false;
}
СПАСИБО !
 
Сообщения
53
Реакции
0
Помог
1 раз(а)
@lionel142,там под себя надо все поменять по звукам
а так по сути это действительно сделайте за меня называется )
 
Сообщения
18
Реакции
0
@lionel142,там под себя надо все поменять по звукам
а так по сути это действительно сделайте за меня называется )
Вы могли бы конечно просто обяснить: регистрируешь форвард для отлова звуковых событий FM_EmitSound . Проверяешь на соответствие смок гранате и твоего итема, затем воспроизводишь звук. Но вы дали готовый код, я его отредактировал под себя и проверил. Возможно кому-то пригодится, вот и поделился "как у меня получилось".
А за ваш код еще раз благодарю.
 

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

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