
В данной новости статья о том как приделать зомби звук
В моей прошлой новости была просьба приделать звуки зомби на основе классического зомби, мод – Zombie Plague 5.0
Начнем вот обычный зомби класс
для начала сделаем звук IDlE
для этого мы в начала плагина вписываем
#define TASK_IDLE 100
это нам позже пригодится
далее создаем forward который отслеживает момент заражения
public zp_fw_core_infect_post(id)
в него вписываем
remove_task(id+TASK_IDLE_SOUNDS) if (zp_core_is_zombie(id) && zp_class_zombie_get_current(id) == g_ZombieClassID) set_task(random_float(50.0, 70.0), "zombie_idle_sounds", id+TASK_IDLE_SOUNDS, _, _, "b")
далее создаем
public zombie_idle_sounds(taskid)
в него вписываем
new id = taskid - TASK_IDLE emit_sound(ID_IDLE_SOUNDS, CHAN_VOICE, sound_play, 1.0, ATTN_NORM, 0, PITCH_NORM)
где sound_play вписываем свой const[] sound
и еще
создаем данный forward, он отслеживает момент когда игрок стал человеком, и сразу вписываем в него
public zp_fw_core_cure_post(id, attacker) remove_task(id+TASK_IDLE_SOUNDS)
Далее делаем звук заражения.В уже нами созданным zp_fw_core_infect_post(id)
вписываем
if(zp_core_is_zombie(id) && zp_class_zombie_get_current(id) == g_ZombieClassID) emit_sound(ID_IDLE_SOUNDS, CHAN_VOICE, sound_play, 1.0, ATTN_NORM, 0, PITCH_NORM)
далее делаем звуки: Pain, Fail, Miss Slash, Miss Wall, Die, Hit Normal, Hit Stab.
они все делаются в 1 forward`e, на мой взгляд удобнее так сделать, чем например отслеживать моменты когда он умрет или когда он будет кричать от боли и т.д.
вобщем в public plugin_init()
регистрируем forward
register_forward(FM_EmitSound, "fw_EmitSound")
далее создаем его и его функцию тоже создаем
public fw_EmitSound(id, channel, const sample[], Float:volume, Float:attn, flags, pitch) if (!is_user_connected(id) || !zp_core_is_zombie(id) && zp_class_zombie_get_current(id) == g_ZombieClassID) return FMRES_IGNORED; if (sample[7] == 'b' && sample[8] == 'h' && sample[9] == 'i' && sample[10] == 't')//Pain emit_sound(id, channel, sound, volume, attn, flags, pitch) return FMRES_SUPERCEDE; if (sample[7] == 'd' && ((sample[8] == 'i' && sample[9] == 'e') || (sample[8] == 'e' && sample[9] == 'a')))//DIe emit_sound(id, channel, sound, volume, attn, flags, pitch) return FMRES_SUPERCEDE; if (sample[10] == 'f' && sample[11] == 'a' && sample[12] == 'l' && sample[13] == 'l')//Fail emit_sound(id, channel, sound, volume, attn, flags, pitch) return FMRES_SUPERCEDE; if (sample[8] == 'k' && sample[9] == 'n' && sample[10] == 'i') if (sample[14] == 's' && sample[15] == 'l' && sample[16] == 'a') // Miss Slash emit_sound(id, channel, sound, volume, attn, flags, pitch) return FMRES_SUPERCEDE; if (sample[14] == 'h' && sample[15] == 'i' && sample[16] == 't') // Hit if (sample[17] == 'w') // Miss Wall emit_sound(id, channel, sound, volume, attn, flags, pitch) return FMRES_SUPERCEDE; else // Hit Normal emit_sound(id, channel, sound, volume, attn, flags, pitch) return FMRES_SUPERCEDE; if (sample[14] == 's' && sample[15] == 't' && sample[16] == 'a') // Hit Stab emit_sound(id, channel, sound, volume, attn, flags, pitch) return FMRES_SUPERCEDE; return FMRES_IGNORED;
в коде я подписал где какой тип звука где sound вписывайте свой const[] sound, а еще переменная g_ZombieClassID это переменная нашего зомби класса, так что меняйте ее на свою.
P.S.Извините конечно что я ничего не объяснил,тут только код дан, просто устал.