2DFX (Секция RW)

Материал из GTAModding.ru
Перейти к: навигация, поиск
Секция RenderWare
2dfx
0x0253F2F8


2dfx - одна из секции в RW. В GTA SA используется для расположения света, эффектов частиц и прочего. Предыдущие игры серии (а также GTA 4) использует 2dfx в IDE файлах.


Содержание

Заголовок

Секция 2dfx начинается с 4рёх байта DWORD, в котором указана информация о количестве используемых записей в данной секции.

Записи

Заголовок состоит из 20 байтов.

0x00 | float[3] offset // Координаты вектора (xyz)
0x0C | DWORD    type   // Тип 2DFX
0x10 | DWORD    size   // Размер данных

Тип 0 - Источник света

Этот тип используется, чтобы создать источник света. Размер может составлять 76 или 80 байт.

  • При размере 76 байт
0x00 | BYTE[4] color                   // Цвет. Значение alpha обычно равно 200
0x04 | float   coronaFarClip           // Дистанция видимости короны
0x08 | float   pointlightRange         // Радиус точечного источника света (повершиноое освещение моделей, у которых отсутсвует прелит)
0x0C | float   coronaSize              // Размер короны (высота = ширина)
0x10 | float   shadowSize              // Размер тени (высота = ширина)
0x14 | BYTE    coronaShowMode          // Тип отображения короны (1-13)
0x15 | BYTE    coronaEnableReflection  // Включить отражение короны на мокром асфальте
0x16 | BYTE    coronaFlareType         // Тип бликов для короны (0-1-2)
0x17 | BYTE    shadowColorMultiplier   // Интенсивность тени
0x18 | BYTE    flags1                  // Набор флагов 1
0x19 | char    coronaTexName[24]       // Название текстуры короны в particle.txd
0x31 | char    shadowTexName[24]       // Название текстуры тени в particle.txd
0x49 | BYTE    shadowZDistance         // Максимальное расстояние для отрисовки тени
0x4A | BYTE    flags2                  // Набор флагов 2
0x4B | BYTE    padding
  • При размере 80 байт
0x00 | BYTE[4] color                   // Цвет. Значение alpha обычно равно 200
0x04 | float   coronaFarClip           // Дистанция видимости короны
0x08 | float   pointlightRange         // Радиус точечного источника света (повершиноое освещение моделей, у которых отсутсвует прелит)
0x0C | float   coronaSize              // Размер короны (высота = ширина)
0x10 | float   shadowSize              // Размер тени (высота = ширина)
0x14 | BYTE    showMode                // Тип отображения (1-13)
0x15 | BYTE    coronaEnableReflection  // Включить отражение короны на мокром асфальте
0x16 | BYTE    coronaFlareType         // Тип бликов для короны (0-1-2)
0x17 | BYTE    shadowColorMultiplier   // Интенсивность тени
0x18 | BYTE    flags1                  // Набор флагов 1
0x19 | char    coronaTexName[24]       // Название текстуры короны в particle.txd
0x31 | char    shadowTexName[24]       // Название текстуры тени в particle.txd
0x49 | BYTE    shadowZDistance         // Максимальное расстояние для отрисовки тени
0x4A | BYTE    flags2                  // Набор флагов 2
0x4B | BYTE[3] viewVector              // Вектор (xyz) определяет, из какой стороны видно источник света (xyz). Используется игрой только при включенном флаге CHECK_VIEW_VECTOR
0x4E | BYTE[2] padding

Набор флагов 1 (flags1)

  1 CORONA_CHECK_OBSTACLES            // Если между короной и камерой есть какие-либо обьекты, корона отрисована не будет
  2 FOG_TYPE                          // Определяет тип тумана для точечного источника света
  4 FOG_TYPE                          // Определяет тип тумана для точечного источника света
  8 WITHOUT_CORONA                    // Не создавать корону
 16 CORONA_ONLY_AT_LONG_DISTANCE      // Корону видно только издалека
 32 AT_DAY                            // Работает днём
 64 AT_NIGHT                          // Работает ночью
128 BLINKING1                         // Мигает (почти незаметно)

Набор флагов 2 (flags2)

 1 CORONA_ONLY_FROM_BELOW             // Корону видно только снизу (когда высота позиции камеры меньше высоты источника света)
 2 BLINKING2                          // Мигает (очень быстро)
 4 UDPDATE_HEIGHT_ABOVE_GROUND        // Обновлять значение дистанции от короны до земли (используется для создания отражения короны)
 8 CHECK_VIEW_VECTOR                  // Работает только если камера занимает определённую позицию (вектор lookDirection)
16 BLINKING3                          // Мигает (рандомно)

Типы отображения (showMode)

 0 DEFAULT
 1 RANDOM_FLASHING
 2 RANDOM_FLASHIN_ALWAYS_AT_WET_WEATHER
 3 LIGHTS_ANIM_SPEED_4X               // Используется на модели 10 green bottles. Огни поочередно включаются-выключаются.
 4 LIGHTS_ANIM_SPEED_2X               // Используется на небоскребах в San Fierro
 5 LIGHTS_ANIM_SPEED_1X
 6
 7 TRAFFICLIGHT
 8 TRAINCROSSLIGHT
 9                                    // Не работает (источник света постоянно выключен)
10 AT_RAIN_ONLY                       // Включается только в дождливую погоду
11                                    // 5с - вкл., 5с - выкл.
12                                    // 6с - вкл., 4с - выкл.
13                                    // 6с - вкл., 4с - выкл.

Тип 1 - Партикл-эффект

Этот тип используется для эффекта частиц. Состоит из 24 байтов.

0x00 | char particleName[24] // Имя эффекта частиц

Имена эффектов частиц присутствуют в файле effect.fxp.

Тип 3 - Аттрактор пешеходов

PED секция состоит из 56 байтов. Используется для появления пешеходов (Например на стульях, в магазинах, на скамейках и др..)

0x00 | BYTE        eventType           // Тип поведения
0x01 | BYTE[3]     padding
0x04 | float[3][3] rotation            // Вращение (right, top, at)
0x28 | char[8]     scriptName          // Имя внешнего скрипта
0x30 | BYTE        existingProbability // Вероятность появления пешехода
0x31 | BYTE[3]     padding
0x34 | BYTE        unknown1
0x35 | BYTE        padding
0x36 | BYTE        unknown2
0x37 | BYTE        padding

Тип поведения(eventType)

0 PED_ATM_ATTRACTOR            // Пед использует банкомат в дневное время
1 PED_SEAT_ATTRACTOR           // Пед сидит на лавке в дневное время
2 PED_STOP_ATTRACTOR           // Пед стоит в дневное время
3 PED_PIZZA_ATTRACTOR          // Пед стоит и уходит
4 PED_SHELTER_ATTRACTOR        // Пед стоит, если идёт дождь, и уходит, если дождя нет
5 PED_TRIGGER_SCRIPT_ATTRACTOR // Использование скриптового сценария: COPSIT, COPLOOK, BROWSE, DANCER, BARGUY, PEDROUL, PEDCARD, PEDSLOT, STRIPW, STRIPM
6 PED_LOOK_AT_ATTRACTOR        // Пед стоит и уходит
7 PED_SCRIPTED_ATTRACTOR       // Приводит к вылету игры
8 PED_PARK_ATTRACTOR           // Пед лежит и уходит после 6и часов
9 PED_STEP_ATTRACTOR           // Пед сидит на ступеньках у дома

Тип 4 - Солнечный блик

Этот тип используется для создания бликов солнца на обьекте (в виде корон). Данный тип использует только данные из заголовка (позиция).

Тип 6 - Система "Вход-выход"

Тип может вызвать вылеты в игре! Используется например в модели barrio3b_lae.dff'.

 4b - FLOAT    - Угол поворота enter-маркера (относительно обьекта) (всегда 0 ?)
 4b - FLOAT    - Радиус приближения к маркеру, X
 4b - FLOAT    - Радиус приближения к маркеру, Y
 12b - FLOAT[3]- Позиция расположения exit-маркера (офсет относительно обьекта) (всегда 0 ?)
 4b - FLOAT    - Угол поворота exit-маркера (относительно обьекта) (всегда 0 ?)
 4b - INT32    - Номер интерьера
 4b - INT32    - Флаги?
 8b - CHAR[8]  - Название интерьера
 4b - INT32    - Цвет неба

Тип 7 - Дорожный указатель

Этот тип создаёт текст в 3d-мире. Размер составляет 88 байтов.

0x00 | RwV2d  size        // Масштаб (xy)
0x08 | RwV3d  rotation    // Поворот (xyz)
0x14 | WORD   flags       // Флаги
0x16 | RwChar text[16][4] // Текст (4 строки)

Флаги (flags)

Биты 0-1 - Количество используемых строк

0 - 4 строки
1 - 1 строка
2 - 2 строки
3 - 3 строки

Биты 2-3 - Количество символов в строке

0 - 16 символов
1 - 2 символа
2 - 4 символа
3 - 8 символов

Биты 4-5 - Цвет текста

0 - 0xFFFFFFFF (белый)
1 - 0xFF000000 (чёрный)
2 - 0xFF808080 (серый)
3 - 0xFF0000FF (красный)

Строки могут начинаться с таких символов, как <, ^ и >; также символ _ используется вместо пробела.

Тип 8 - Колесо игрового автомата

Это игровые автоматы.

4b - Int32 - Индекс колеса

Каждое колесо в игровом автомате использует индекс 1. Положение индекса это положение колеса игрового автомата. Может быть, позицией можно управлять через SCM.

Тип 9 - Укрытие

Этот тип определяет места на карте, в которых можно спрятаться (может использоваться педами при перестрелке). Стурктура:

4b - FLOAT - Позиция X
4b - FLOAT - Позиция Y
4b - INT32 - Тип укрытия

Тип 10 - Эскалатор

Этот тип относится к эскалаторам. Размер равен 40 байтам.

0x00 | RwV3d  bottom    // Нижняя часть эскалатора (xyz)
0x0С | RwV3d  top       // Верхняя часть эскалатора (xyz)
0x18 | RwV3d  end       // Конечная точка эскалатора (точка Z должна быть наверху, если эскалатор 
                        // едет вверх, если вниз, то на нижней позиции эскалатора)
0x24 | DWORD  direction // Направление движения (0 - Вниз, 1 - Вверх)

Ссылки

Статья о том, как создать эскалатор + скрипт

Создание 2dfx с помощью 2dfx tool