[ZP4.3] Как добавить в зомби класс все сразу


[ZP4.3] Как добавить в зомби класс все сразу

[ZP4.3] Как добавить в зомби класс все сразу

[ZP4.3] Как добавить в зомби класс все сразу

[ZP4.3] Как добавить в зомби класс все сразу

Автор статьи :

Felix_Font

В данной статье я разскажу вам как добавить в зомби класс все нужное (звуки pain , death , infect , модель джамп гранаты ) , звуки ударов я думаю зто будет слишком потомучто достать их очень трудно….

И так поехалы
Внимание !!! Перед тем как вы начнете читать данную статью , я рекомндую читать ее из текстового блакнота в связи с тем что сайт не поддерживает правильно код и некоторые символы и буквы не будут присуствовать , что может вызвать неисправность класса!
Качаем текстовую версию в файле и читаем в редакторе Notepad ++ или amxxstudio в крайном случае akel pade.


Скачать :
statya_v_blaknote.rar

p.s. в файле также будуть соблюдаться все отступы что на 100% гарантирует отсуствие \”warning 217\”.

Небольшое правило :

 Показать / Скрыть текст


0. Открываем .sma (исходник) зомби класса . Добавляем / изменяем инклюды . И приводим их к такому виду :

#include
#include
#include
#include
#include
#include
#include

— точно незнаю какие , потому написал все :D
p.s. если вы их не видите, а вы 100% их невидите то зто означает что нужно читать из файла!

И если у вас нету что-то типо \”new g_zclass_name\” то добавляем!

1. Ищем примерно такие строки :

new const zclass_name[] = { \”Name\” }
new const zclass_info[] = { \”[ Info ]\” }
new const zclass_model[] = { \”zm_model\” }
new const zclass_clawmodel[] = { \”v_model.mdl\” }
const zclass_health = 2000
const zclass_speed = 280
const Float:zclass_gravity = 0.69
const Float:zclass_knockback = 0.32

Гдето между нимы добавляем следущее :

new KNOCKBOMB_NAME[] = \”models/путь/модель.mdl\”

Далее после зтого всего добавляем :

new const g_name_infect_sound[][] =
{
\”путь/звук-заражения_01.wav\” ,
\”путь/звук-заражения_02.wav\”
}
new const pain_name_sound[] = \”путь/pain_01.wav\” // Pain звук (01)
new const pain_name_sound2[] = \”путь/pain_02.wav\” // Pain звук (02)
new const death_name_sound[] = \”путь/die_01.wav\” // Звук когда зомби умирает (01)
new const death_name_sound2[] = \”путь/die_02.wav\” // Звук когда зомби умирает (02)

Получиться примерно так :

 Показать / Скрыть текст

3. Далее в \”plugin_init\” добавляем :

register_event(\”CurWeapon\”,\”handle_gun\”,\”be\”,\”1=1\”)
RegisterHam(Ham_TakeDamage, \”player\”, \”CPlayer__TakeDamage\”);
register_forward(FM_EmitSound, \”fw_EmitSound\”)

4. Далее в \”plugin_precache()\” (если нету создаем) добавляем :

precache_sound(pain_name_sound[0])
precache_sound(pain_name_sound2[0])
new i
for(i = 0 ; i < sizeof g_name_infect_sound ; i++) precache_sound(g_name_infect_sound[i])
precache_sound(death_name_sound[0])
precache_sound(death_name_sound2[0])
precache_model(KNOCKBOMB_NAME)

Получиться примерно так :

 Показать / Скрыть текст

5. Ищем public zp_user_infected_post который должен выглядить вот так :
public zp_user_infected_post(id, infector) – ( если нету добавляем)
Если что-то не так меняем как выше.

И пишем в него примерно такое :


if(zp_get_user_zombie(id) && zp_get_user_zombie_class(id) == g_zclass_name && !zp_get_user_nemesis(id))
{
emit_sound(id, CHAN_VOICE, g_name_infect_sound[random(sizeof g_name_infect_sound)], VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
}

6. После функции \”public zp_user_infected_post(id, infector)\” добавляем функцию :

public CPlayer__TakeDamage(id, iVictim, iInflictor, iAttacker, Float:flDamage, bitsDamage)

И пишем в нее :

if (zp_get_user_zombie_class(id) == g_zclass_name && zp_get_user_zombie(id) && !zp_get_user_nemesis(id) && !zp_get_user_survivor(id))
{
new rand = random_num(1,2)
switch(rand)
{
case 1: emit_sound(id, CHAN_WEAPON, pain_name_sound[0], 1.0, ATTN_NORM, 0, PITCH_LOW)
case 2: emit_sound(id, CHAN_WEAPON, pain_name_sound2[0], 1.0, ATTN_NORM, 0, PITCH_LOW)
}
}

7. Добавляем функцию \”public handle_gun(id)\” после \”public CPlayer__TakeDamage\”

И в ней пишем :

new weap = get_user_weapon(id)

if(weap == CSW_FLASHBANG && zp_get_user_zombie_class(id) == g_zclass_name && zp_get_user_zombie(id))
{
entity_set_string(id, EV_SZ_viewmodel, KNOCKBOMB_NAME)
}
else if(weap == CSW_SMOKEGRENADE && zp_get_user_zombie_class(id) == g_zclass_name && zp_get_user_zombie(id))
{
entity_set_string(id, EV_SZ_viewmodel, KNOCKBOMB_NAME)
}
return PLUGIN_HANDLED

8. И последний пункт , после функции \”public handle_gun(id)\” добавляем функцию :

public fw_EmitSound(id, channel, const sample[], Float:volume, Float:attn, flags, pitch)

И в нее пишем :

if(!is_user_connected(id))
return FMRES_HANDLED;

if (sample[0] == \’h\’ && sample[1] == \’o\’ && sample[2] == \’s\’ && sample[3] == \’t\’ && sample[4] == \’a\’ && sample[5] == \’g\’ && sample[6] == \’e\’)
return FMRES_SUPERCEDE;

if(zp_get_user_zombie(id) && zp_get_user_zombie_class(id) == g_zclass_name && !zp_get_user_nemesis(id))
{
if (sample[7] == \’d\’ && ((sample[8] == \’i\’ && sample[9] == \’e\’) || (sample[8] == \’e\’ && sample[9] == \’a\’)))
{
emit_sound(id, CHAN_WEAPON, death_name_sound[0], 1.0, ATTN_NORM, 0, PITCH_LOW)
}
}
return FMRES_IGNORED;

Вот что у нас получилось в общем (рабочий пример) :

 Показать / Скрыть текст

В статье возможни мелкие ошибки , потому если вы их увидите то не нужно сразу бежать ставить \”-\” в статью и писать коммент бредо статья , а просто нужно подправить…
————————————————————————–
Для теста своей статьи я взял полностю чистый зомби класс от Blackcat\’a
[attachment=8866]
После чего добавил в него код что я написал в статье ( ну и конешно подправил пути к файлам )
[attachment=8864]
И после зтого всего я засунул его к компилятор и получил .amxx файл без варнингов и протестил данный плагин на Zombie Plague 4.3 FIX 5a , весь код отлично работает , и все звуки проигровались!

p.s. выше сказаным я хотел сказать что если после зтой статьи у вас не работает или не комплиться класc зто означает что у вас руки из ж*пы !


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


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