[TUT 5.0]Добовление звука pain с выводом в ini файл


[TUT 5.0]Добовление звука pain с выводом в ini файл

[TUT 5.0]Добовление звука pain с выводом в ini файл

Нужно ли вам это решайте сами.
Пример будет показан на классик зомби.

1.Добавляем инкуды, если их нет.

#include
#include
#include
#include
#include

2.Добавляем define.

#define SOUND_MAX_LENGTH 64
#define TASK_IDLE_SOUNDS 100
#define ID_IDLE_SOUNDS (taskid – TASK_IDLE_SOUNDS)

3.Добавляем константы.


new const ZP_SETTINGS_FILE[] = \”zp_zombieclasses.ini\”

new const sound_zombieclass1_pain[][] = { \”zombie_plague/zombie_pain1.wav\” }
new Array:g_sound_zombieclass1_pain

zp_zombieclasses.ini – это файл в который будет сохранятся звук.

4.Регистрируем форвард либо в plugin_init, либо в plugin_precache.

egister_forward(FM_EmitSound, \”fw_EmitSound\”)

5.В plugin_precache пишем следующий код.

new sound[SOUND_MAX_LENGTH]

g_sound_zombieclass1_pain = ArrayCreate(SOUND_MAX_LENGTH, 1)

amx_load_setting_string_arr(ZP_SETTINGS_FILE, \”Classic Zombie\”, \”ZOMBIE PAIN\”, g_sound_zombieclass1_pain)

if (ArraySize(g_sound_zombieclass1_pain) == 0)
{
for (index = 0; index < sizeof sound_zombieclass1_pain; index++)
ArrayPushString(g_sound_zombieclass1_pain, sound_zombieclass1_pain[index])

// Save to external file
amx_save_setting_string_arr(ZP_SETTINGS_FILE, \”Classic Zombie\”, \”ZOMBIE PAIN\”, g_sound_zombieclass1_pain)
}

for (index = 0; index < ArraySize(g_sound_zombieclass1_pain); index++)
{
ArrayGetString(g_sound_zombieclass1_pain, index, sound, charsmax(sound))
precache_sound(sound)
}

Classic Zombie – это название отделала можете писать любой, но лучше писать название класса.

6.Добавляем этот где нибудь в конце.

public fw_EmitSound(id, channel, const sample[], Float:volume, Float:attn, flags, pitch)
{
// Replace these next sounds for zombies only
if (!is_user_connected(id) || !zp_core_is_zombie(id))
return FMRES_IGNORED;

static sound[SOUND_MAX_LENGTH]

if(zp_class_zombie_get_current(id) == g_ZombieClassID)
{
if (sample[7] == \’b\’ && sample[8] == \’h\’ && sample[9] == \’i\’ && sample[10] == \’t\’)
{
ArrayGetString(g_sound_zombieclass1_pain, random_num(0, ArraySize(g_sound_zombieclass1_pain) – 1), sound, charsmax(sound))
emit_sound(id, channel, sound, volume, attn, flags, pitch)
return FMRES_SUPERCEDE;
}
}
return FMRES_IGNORED;
}

Заместо g_ZombieClassID пишите свое id класса.

7.Отключаем дефолтные звуки зомби в cfg файле, там есть квар.

8.Идем в zp50_zombie_sounds.sma вытаскиваем следующий код из под квара

if (sample[7] == \’b\’ && sample[8] == \’h\’ && sample[9] == \’i\’ && sample[10] == \’t\’)
{
// Nemesis Class loaded?
if (LibraryExists(LIBRARY_NEMESIS, LibType_Library) && zp_class_nemesis_get(id))
{
ArrayGetString(g_sound_nemesis_pain, random_num(0, ArraySize(g_sound_nemesis_pain) – 1), sound, charsmax(sound))
emit_sound(id, channel, sound, volume, attn, flags, pitch)
return FMRES_SUPERCEDE;
}}

Это нужно чтобы работал звук pain у немезиды.

9.Потом идете в zp_zombieclasses.ini
И видите

[Classic Zombie]
NAME = Classic Zombie
INFO = =Balanced=
MODELS = zombie_source
CLAWMODEL = models/zombie_plague/v_knife_zombie.mdl
HEALTH = 1800
SPEED = 0.75
GRAVITY = 1.00
KNOCKBACK = 1.00
ZOMBIE PAIN = zombie_plague/zombie_pain1.wav , zombie_plague/zombie_pain2.wav , zombie_plague/zombie_pain3.wav , zombie_plague/zombie_pain4.wav , zombie_plague/zombie_pain5.wav

P.S Вам придется дописать весь выше написанный код во все ваши зомби классы.


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


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