[TUT]Sounds


[TUT]Sounds

В данной новости статья о том как приделать зомби звук

[TUT]Sounds

В моей прошлой новости была просьба приделать звуки зомби на основе классического зомби, мод – 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.Извините конечно что я ничего не объяснил,тут только код дан, просто устал.


Комментарии:


Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Zombie-Mod.com — крупнейший игровой портал по Counter Strike