Статистика по очкам ( Общая )
Здесь я вам расскажу, как можно перекрасить пули в Half-Life1 и приведу свой пример
Как перекрасить пули в ХЛ
Здесь я вам расскажу, как можно перекрасить пули в Half-Life1 и приведу свой пример
Автор / ы урока : MZK Просмотров : 2152 ( +1 ) Скачиваний : 34 Прислал / (а) : SlaY_61 Дата создания : 01.08.2011 18:29:40 Рейтинг : ( 5 ) Поделиться :
Имеются следующие переводы : |
русский |
Здесь я вам расскажу, как можно перекрасить пули в Half-Life1 и приведу свой пример. Дело в том, что мой пример - не лучшая реализация и я считаю, можно сделать и получше. Советую использовать лишь алгоритм, а саму реализацию писать самостоятельно.
Всё, как ни странно будем делать в серверной части
Первым делом напишем саму функцию для прорисовки пули - писать её будим как УТИЛ-функцию, то есть сейчас откроем файл utill.cpp и в свободном месте между аналогичными пишем вот это (это как раз та часть, какую вы можете свободно менять на свой вкус):
void MyTracer ( const Vector &start, const Vector &end )
{
MESSAGE_BEGIN( MSG_BROADCAST, SVC_TEMPENTITY );
WRITE_BYTE( TE_BEAMPOINTS );
WRITE_COORD( start.x );
WRITE_COORD( start.y );
WRITE_COORD( start.z );
WRITE_COORD( end.x );
WRITE_COORD( end.y );
WRITE_COORD( end.z );
WRITE_SHORT( g_sModelIndexFireSpot );
WRITE_BYTE( 0 ); // frame start
WRITE_BYTE( 2 ); // framerate
WRITE_BYTE( 1 ); // life
WRITE_BYTE( 3 ); // width
WRITE_BYTE( 0 ); // noise
int rndC;
rndC = RANDOM_LONG( 125, 255 );
WRITE_BYTE( rndC ); // R, g, b
WRITE_BYTE( rndC ); // r, G, b
WRITE_BYTE( rndC ); // r, g, B
WRITE_BYTE( 255 ); // brightness
WRITE_BYTE( RANDOM_LONG(1,10) ); // speed
MESSAGE_END();
}
Думаю нет необходимости объяснять еще раз, что это…
Так, теперь зайдём в util.h найдём аналогичные и напишем туда:
extern void MyTracer( const Vector &start, const Vector &end);
Теперь зайдём на weapons.h и запищем среди аналогичных строк:
extern DLL_GLOBAL short g_sModelIndexFireSpot;
Это мы объявили спрайт для пуль - можете определить свой или просто использовать существующий
теперь откроем weapons.cpp: g_sModelIndexFireSpot = PRECACHE_MODEL ("sprites/fire_spot.spr");// flame, for explode fx and bullet tracers - это мы загрузили спрайт, опять же - это на ваше усмотрение.
Теперь поднимемся выше, к самому началу файла а среди аналогичных запишем:
DLL_GLOBAL short g_sModelIndexFireSpot;
Всё!!!! теперь приступим уже к подстановке нашей функции в правильные места…
Найдём функцию CBaseEntity::FireBullets и после default: пишем вместо мессаги вот это:
MyTracer( vecTracerSrc, tr.vecEndPos );
Теперь заходим в следующюю функцию FireBulletsPlayer И пишем вместо всего, что есть между // make bullet trails и ближайщей } вот это:MyTracer( vecSrc, tr.vecEndPos );
Компилируем и наслаждаемся! будут ошибки - пишите смело, может просто я чего забыл написать….
Похожие 1. Исходный код ножа - weapon_knife (Нож) с двумя режимами атаки: Slash и Stab. 2. Новые типы патронов - Каждый хоть раз добавлял в Хл новое оружие но ему не нравилось, что оно или слишком мощно стреляет или слишком слабо. 3. Как адаптировать код к модели - Допустим, вы сделали новую модель для автомата MP5, но порядок и кол-во анимаций не сходятся. 4. Добавление новых классов для монстр - Мы будем добавлять новый класс Блэк Опс из Оппосинг Форс 5. Спрыгивающий Headcrab - Наверняка каждый, кто поиграл в Half-Life2 хотел, чтобы хедкрабы спрыгивали с зомбяков и в первом Half-Life 6. Динамическое освещение - этой статье будет описан способ добавления динамических вспышек света, которые можно использовать для еффекта молнии 7. Цвет спрайтов HUD - Итак, как же сменить цвет спрайтов в HUD-системе 8. Как сделать вортигонта из HL1 другом - Моя первая статья 9. Создание сценариев - Для создания сценариев (aka скриптов) в Half-Life существуют две энтити: scripted_sequence и scripted_sentence. Первая отвечает за движения, выполняемые монстром/персонажем, будь то ходьба, бег, нажатие кнопки, тряска автомата с газировкой или почёсывание подбородка. Вторая служит для того, чтобы персонаж произнес какую-то фразу. При этом его голова повернётся в сторону слушателя, и рот будет открываться в соответствии с амплитудой звука.
Вы не можете комментировать, т.к. вы не зарегистрированы.