
Одна из последующей серии статей затрагивающих \”трансформацию\” из ZP4.3 в ZP5.0
Вступление:
Первые две просьбы поступили с просьбой написать статью как переписывать плагины из ZP4.3 для ZP5.0, собственно, разработчики данных модов позаботились об этом и создали поддержку плагинов из ZP4.3 и Biohazard для ZP5.0, но, видимо, раз люди просят, значит им это нужно, и поэтому я написал эту статью.
Поскольку это не определенно обособленная тема касающегося маленького круга нативов и форвардов в ZP5.0, а конкретно, что бы переписывать плагины нужно будет знать все нативы и форварды в ZP5.0, в 1 урок это будет глупо все изучать, поэтому я разбил все уроки на темы определенные(зомби Классы, Экстра вещи, дополнения и т.д.), сегодня, я поясню как переписывать зомби классы
\”Путь\” урока:
1.Объясняю нативы и форварды
2.Наглядно переписываю 1 класс
Быстро пройдемся по всем нативам и форвардам из \”zp50_class_zombie.inc\”
1.Возвращает ID(индекс) текущего зомби класса
native zp_class_zombie_get_current(id)
id - индекс игрока
2.Возвращает ID(индекс) зомби класса выбранного игроком на следующее заражение
native zp_class_zombie_get_next(id)
id - индекс игрока
3. Назначает зомби класс игроку на следующее заражение(по ID(индексу))
native zp_class_zombie_set_next(id, classid)
id - индекс игрока
classid - индекс зомби класса
4. Возвращает максимальное количество жизней(указывается при регистрации зомби класса)для определенного зомби класса
native zp_class_zombie_get_max_health(id, classid)
id - индекс игрока
classid - индекс зомби класса
5.Регистрирует зомби класс
native zp_class_zombie_register(const name[], const description[], health, Float:speed, Float:gravity)
const name[] - Название зомби класса в меню
const descriptionp[] - Описание зомби класса в меню
health - максимальное количество жизней
Float:speed - скорость
Float:gravity - гравитация
6. Регистрирует модель зомби класса
native zp_class_zombie_register_model(classid, const model[])
classid - индекс зомби класса
const model[] - короткое название модели(расположение в папке player, например, если модель лежит по директории "cstrike/model/player/zombie/zombie.mdl", то просто пишите "zombie"
7. Регистрирует модель рук зомби класса
native zp_class_zombie_register_claw(classid, const clawmodel[])
classid - индекс зомби класса
const clawmodel[] - полное название или директория где лежит эта модель
8. Регистрирует собственный отскок для зомби класса
native zp_class_zombie_register_kb(classid, Float:knockback)
classid - индекс зомби класса
Float:knockback - дробное значение отскока
9. Получает ID(индекс) зомби класса по его истинному названию(то, которые было записано в исходник)
native zp_class_zombie_get_id(const real_name[])
const real_name[] - название зомби класса
10. Получает название зомби класса по его ID
native zp_class_zombie_get_name(classid, name[], len)
classid - индекс зомби класса
name[] - Массив, куда будет записываться это название
len - длина
11. Получает истинное название зомби класса по его ID
native zp_class_zombie_get_real_name(classid, real_name[], len)
classid - индекс зомби класса
real_name[] - Массив, куда будет записываться это название
len - длина
12.Получает описание зомби класса по его ID
native zp_class_zombie_get_desc(classid, description[], len)
classid - индекс зомби класса
description[] - Массив, куда будет записываться описание
len - длина
12. Получает собственный отскок зомби класса по его ID
native Float:zp_class_zombie_get_kb(classid)
classid - индекс зомби класса
13.Получает количество зарегистрированных зомби классов
native zp_class_zombie_get_count()
14. Показывает меню с доступными зомби классами игроку
native zp_class_zombie_show_menu(id)
id - индекс игрока
15.Позволяет дописывать дополнительные текст в названии зомби класса(то может быть счетчик количества зомби классов или еще что-либо)
Примечание: используйте это в select pre forward(момент перед выбором класса)
native zp_class_zombie_menu_text_add(const text[])
const text[] - добавляемый текст
16. Момент перед выбором зомби класса, позволяет сделать некие доп. функции
В ZP5.0 для этого форварда добавлены следующие возвращающие значения
* - ZP_CLASS_AVAILABLE (Позволяет выбрать зомби класс)
* - ZP_CLASS_NOT_AVAILABLE (зомби класс становится серым цветом и он недоступен)
* - ZP_CLASS_DONT_SHOW (зомби класс исчезает из меню, попросту не показывается)
forward zp_fw_class_zombie_select_pre(id, classid)
id - индекс игрока
classid - индекс зомби класса
17.Вызывается после того, как игрок выбрал зомби класс
forward zp_fw_class_zombie_select_post(id, classid)
id - индекс игрока
classid - индекс зомби класса
Вот так вот, и это только 1 инклюд касающийся зомби классов
Сейчас я наглядно и с комментариями перепишу класс Heal, класс не новый, вот ссылка на него
Zombie Mod
Изначально отключите инклюд \”zombieplague\” и подключите \”zp50_class_zombie\”, \”zp50_core\” и \”zp50_class_nemesis\”
Cразу идем к public plugin_precache, там видим следующее:
public plugin_precache()
{
g_zclass_heal = zp_register_zombie_class(zclass_name, zclass_info, zclass_model, zclass_clawmodel, zclass_health, zclass_speed, zclass_gravity, zclass_knockback)
precache_sound(heal_sound)
}
Далее пишем следующее:
g_zclass_heal = zp_class_zombie_register(zclass_name, zclass_info, zclass_health, zclass_speed, zclass_gravity)//Регистрируем основу зомби класса
zp_class_zombie_register_kb(g_zclass_heal, zclass_knockback)//Регистрация отскока
zp_class_zombie_register_model(g_zclass_heal, zclass_model)//Регистрация модели
zp_class_zombie_register_claw(g_zclass_heal, zclass_clawmodel)//Регистрация модели рук
Прочитав мои объяснения выше, вы сможете понять данные строки
И заменяем
g_zclass_heal = zp_register_zombie_class(zclass_name, zclass_info, zclass_model, zclass_clawmodel, zclass_health, zclass_speed, zclass_gravity, zclass_knockback)
на вышеуказанный код.
Идем к public
zp_user_infected_post(id, infector)
Сразу же заменяем это на
zp_core_infect_post(id, infector)
Данный форвард является аналогом \”zp_user_infected_post\”, мы это позже пройдем, наверное
Замечаем натив
zp_get_user_zombie_class(id)
, он из ZP4.3 и он получает индекс зомби класса по индексу игрока, меняем его на
zp_class_zombie_get_current(id)
Далее во всем плагине лучше сразу заменить
zp_get_user_zombie
на
zp_core_is_zombie
и
zp_get_user_nemesis
на
zp_class_nemesis_get
А так же , как я и раньше сказал,
zp_get_user_zombie_class
на
zp_class_zombie_get_current
.
На 45 строке видим следующее содержание
if((pev(id, pev_health) < float(zp_get_zombie_maxhealth(id))) && (last_use[id] + 20.0 <= get_gametime()))
Поскольку в ZP5.0 максимальное здоровье определяется для отдельно взятых классов зомби и нужно индекс зомби класса ввести, то делаем так, меняем
zp_get_zombie_maxhealth()
на
native zp_class_zombie_get_max_health(id, g_zclass_heal)
Точно так же мы меняем наш натив на аналог из ZP5.0 на 49 строке.
Вроде все, класс переписан, быть честным, я утомился что-то с этим классом.
Я мог где-то ошибиться, описаться, или у меня могло быть не правильное суждение, так что, по-желанию, поправьте меня, если что.
Не спрашивайте к чему тут такая картинка. Много писанины вышло, надеюсь, что хоть кому-то помог
Еще раз повторюсь, что делал данную статью только из-за того, что попросили 2 человека, возможно, кому-то еще нужно будет