Четверг, 21.11.2024, 16:13
Crazy Arts DoAm
                Вы вошли как Гость | Группа Гости |  RSS Приветствую Вас Гость
Главная | Каталог статей | Мой профиль | Выход | Регистрация | Вход
Меню сайта

Наши друзья
HLDM RMF TeaM HLBase Half-Life Страйдеры Half-Life: Confession Все для игр VALVE

Форма входа

Категории раздела
HL SDK [9]
Всё о ХЛ СДК
HL Source SDK [2]
Всё о кодинге под Сойсом
Маппинг HL [0]
Маппинг CS [1]
Маппинг под соусом(HL2, CSS, ....) [2]
Моделинг [0]
Текстуринг [0]
Серверы [2]

Поиск

Мини-чат

Наш опрос
Что вам здесь нужно?
Всего ответов: 19
Хотите видеть ещё опросы?
Пишите в Предложения в форуме

Главная » Статьи » Наши статейки » HL SDK

Как перекрасить пули в ХЛ
Здесь я вам расскажу, как можно перекрасить пули в 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;

Всё!!!! теперь приступим уже к подстановке нашей функции в правильные места...
Зайдём в combat.cpp
Найдём функцию CBaseEntity::FireBullets и после default: пишем вместо мессаги вот это:
MyTracer( vecTracerSrc, tr.vecEndPos );
Теперь заходим в следующюю функцию FireBulletsPlayer И пишем вместо всего, что есть между // make bullet trails и ближайщей } вот это:MyTracer( vecSrc, tr.vecEndPos );
Вот вроде бы и все
Компилируем и  наслаждаемся! будут ошибки - пишите смело, может просто я чего забыл написать....
Вот спрайт для пуль - скачать
Категория: HL SDK | Добавил: Админко (03.04.2010) | Автор: MZK
Просмотров: 1445 | Рейтинг: 0.0/0 |
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Инфа
Привет: Гость

Сообщения:

Гость, мы рады вас видеть. Пожалуйста зарегистрируйтесь или авторизуйтесь!

Статистика

Онлайн всего: 4
Гостей: 4
Юзеров: 0

GeoIP

Наши баннеры

Сайт CrazyArts

[ Получить код баннера]

Copyright CrazyArts © 2024 This site is using individual dizigne called CombineDiz, made by MadKing, CrazyArts in 2009 year