Статистика ( общая по патчам ), шт.
Два цвета крови у зомби
Два цвета крови у зомби
Автор / ы урока : Ku2zoff Просмотров : 2272 ( +1 ) Скачиваний : 0 Прислал / (а) : Streit Дата создания : 07.04.2011 20:54:13 Источник : http://www.hlfx.ru/forum Рейтинг : ( 0 ) Поделиться :
Имеются следующие переводы : |
русский |
Ну вот. Проведя несколько несложных мыслительных операций и запоров три файла zombie.cpp, я наконец-то устроил так, чтобы при попадании в разные части тела зомби спавнилась
разная по цвету кровь. Это реализованно в хл2: при стрельбе в голову(по крабу) с зомби брызжет зелёная кровь, а при стрельбе в тело - жёлтая в перемешку с красной. Чтобы у зомби в хл1 было нечто подобное надо открыть zombie.cpp и подключить туда новый заголовочный файл:
#include "extdll.h"
#include "util.h"
#include "cbase.h"
#include "monsters.h"
#include "schedule.h"
#include "weapons.h" //Для задекларирования функции SpawnBlood
Далее нужно добавить в описание класса CZombie новую строчку:
// No range attacks
BOOL CheckRangeAttack1 ( float flDot, float flDist ) { return FALSE; }
BOOL CheckRangeAttack2 ( float flDot, float flDist ) { return FALSE; }
int TakeDamage( entvars_t *pevInflictor, entvars_t *pevAttacker, float flDamage, int bitsDamageType );
void TraceAttack( entvars_t *pevAttacker, float flDamage, Vector vecDir, TraceResult *ptr, int bitsDamageType);//Это и будет рисовать кровь
Потом, ниже после void CZombie
HandleAnimEvent( MonsterEvent_t *pEvent ) воткните:
void CZombie::TraceAttack( entvars_t *pevAttacker, float flDamage, Vector vecDir, TraceResult *ptr, int bitsDamageType)
{
switch( ptr->iHitgroup)
{
case HITGROUP_CHEST://Грудь
case HITGROUP_STOMACH://Живот
case HITGROUP_LEFTLEG://Левая нога
case HITGROUP_RIGHTLEG://Правая нога
case HITGROUP_LEFTARM://Левая рука
case HITGROUP_RIGHTARM://Правая рука
case HITGROUP_GENERIC://Прочие хитгруппы
SpawnBlood(ptr->vecEndPos, BLOOD_COLOR_RED, flDamage * 5.0);// Спавнится красная кровь
break;
case HITGROUP_HEAD://Голова(Хедкраб)
SpawnBlood(ptr->vecEndPos, BLOOD_COLOR_YELLOW, flDamage * 5.0);// Спавнится жёлтая кровь
break;
}
CBaseMonster::TraceAttack( pevAttacker, flDamage, vecDir, ptr, bitsDamageType );
}
После этого надо изменить параметр m_bloodColor = BLOOD_COLOR_GREEN; в void CZombie
Spawn() на m_bloodColor = DONT_BLEED; чтобы не спавнилась жёлтая кровь по дефолту. На этом всё. Можно установить индивидуальный цвет крови для каждой хитгруппы, но как перевести цвет из RGB в халфовский формат цвета крови я не знаю, поэтому пока есть только два цвета.
ЗЫ. Сорри что немножко криво хитгруппы расписаны
Похожие 1. Создание нового оружия - В этом туторе не будет объяснено КАК сделать новое оружие, ибо для каждого оружия нужен свой код. Здесь просто будет приведена информация о тех нюансах без которых ваше оружие не будет работать 2. Разбираемся в коде пушки МР5 - По просьбам трудящихся коментирую код МР5 3. И снова наследование классов :) - Казалось бы тема наследования классов давно избита, ан нет всё ещё существуют вопросы, правда про чуть боле сложное наследование. 4. Quake strafing & DoD bobing styles - Вот от нечего делать я решил немножко изменить стиль игры в оригинальной хл. 5. Замедление игрока - Довольно забавно наблюдать, как игрок одинаково быстро бегает как с монтировкой в руках, так и с тяжелой базукой, хотя логичнее, что держа в руках сей девайс, он будет бегать медленнее 6. Мазлфлэш на брашах - Мазлфлэш на брашах 7. Переключение оружия a la HL2 - Мне не нравится, как переключается оружие в ХЛ. Может, кому-то и интересно тыкать по менюшкам худа, но мне больше нравится реализация переключения в Unreal RTN, Quake Mission Packs и HL2 8. Неработающие двери :) - Как сделать, чтоб двери не открывались, когда нет света и рядом с ними был индикатор (красн. зел.)
Вы не можете комментировать, т.к. вы не зарегистрированы.