2DFX (Секция RW) — различия между версиями

Материал из GTAModding.ru
Перейти к: навигация, поиск
м (Переведены названия типов.)
м
Строка 16: Строка 16:
 
  0x10 | DWORD    size  // Размер данных
 
  0x10 | DWORD    size  // Размер данных
  
===Тип 0 - источник света===
+
===Тип 0 - Источник света===
  
 
Этот тип используется, чтобы создать источник света. Размер может составлять 76 или 80 байт.
 
Этот тип используется, чтобы создать источник света. Размер может составлять 76 или 80 байт.
Строка 74: Строка 74:
 
  10 AT_RAIN_ONLY
 
  10 AT_RAIN_ONLY
  
===Тип 2 - Партикл-эффект===
+
===Тип 1 - Партикл-эффект===
 
Этот тип используется для эффекта частиц. Состоит из 24 байтов.
 
Этот тип используется для эффекта частиц. Состоит из 24 байтов.
 
  0x00 | char particleName[24] // Имя эффекта частиц
 
  0x00 | char particleName[24] // Имя эффекта частиц
Строка 104: Строка 104:
 
  9 PED_STEP_ATTRACTOR          // Пед сидит на ступеньках у дома
 
  9 PED_STEP_ATTRACTOR          // Пед сидит на ступеньках у дома
  
===Тип e 4 - Солнечный блик===
+
===Тип 4 - Солнечный блик===
  
 
Этот тип используется для создания бликов солнца на обьекте (в виде корон). Данный тип использует только данные из заголовка (позиция).
 
Этот тип используется для создания бликов солнца на обьекте (в виде корон). Данный тип использует только данные из заголовка (позиция).

Версия 15:33, 21 декабря 2013

Секция 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
 2 ALWAYS_AT_WET_WEATHER
 7 TRAFFICLIGHT
 8 TRAINCROSSLIGHT
10 AT_RAIN_ONLY

Тип 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

Размер равен 12 байтам. Чаще всего используется в 2DFX секциях большого размера. Возможно является каким-то разделителем. Стурктура:

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 - Вверх)

Ссылки

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