Визуальные эффекты в скриптинге
Материал из GTAModding.ru
Версия от 20:38, 23 августа 2011; DK22 (обсуждение | вклад)
В серии игр GTA визуальные эффекты реализуются при помощи систем частиц (particles). В этой статье мы рассмотрим не только системы частиц, но и другие 2dfx эффекты.
Содержание |
GTA 3
Короны
№ | Описание | Скриншот |
---|---|---|
0 | Круглый свет | |
1 | Круглый свет (менее яркий) | |
2 | Луна | 184px |
3 | Шероховатый продолговатый свет | |
4 | Удлинённый в ширину свет | |
5 | Восьмиугольник | |
6 | Круг | |
7 | Кольцо | |
8 | Длинная полоса света |
Vice City
Системы частиц
0437: scatter_particle 1 size 0.52 at 772.2785 -268.6476 10.3203 speed_XYZ 0.0 0.0 0.0
Создаёт одну (или несколько) частиц, нужно применять в цикле.
- scatter_particle 1 - номер частицы (перечислены в таблице ниже)
- size 0.52 - размер частиц
- at 772.2785 -268.6476 10.3203 - координаты
- speed_XYZ 0.0 0.0 0.0 - проекции скорости по осям
№ | Название в particle.cfg | Описание | Рисунок |
---|---|---|---|
0 | SPARK | Жёлтые искры | |
1 | SPARK_SMALL | Белые короткие искры | |
2 | WATER_SPARK | Блеск воды | |
3 | WHEEL_DIRT | Кусочки земли, как при езде по земле | |
4 | SAND | Песок | |
5 | WHEEL_WATER | Капли воды | |
6 | BLOOD | Светлая кровь | |
7 | BLOOD_SMALL | Тёмная кровь | |
8 | BLOOD_SPURT | Струя крови | |
9 | DEBRIS | Листья | |
10 | DEBRIS2 | Больше обломков | |
11 | FLYERS | Газеты | |
12 | WATER | Пар? | |
13 | FLAME | Огонь | |
14 | FIREBALL | Огненный шар | |
15 | GUNFLASH | Вспышка оружия | |
16 | GUNFLASH_NOANIM | Тусклая вспышка оружия | |
17 | GUNSMOKE | Линия? | |
18 | GUNSMOKE2 | Дым от оружия | |
19 | CIGARETTE_SMOKE | Сигаретный дым | |
20 | SMOKE | Белый дым | |
21 | SMOKE_SLOWMOTION | Белый медленный дым | |
22 | DRY_ICE | ||
23 | TEARGAS | ||
24 | GARAGEPAINT_SPRAY | ||
25 | SHARD | ||
26 | SPLASH | ||
27 | CARFLAME | ||
28 | STEAM | ||
29 | STEAM2 | Закручивающийся пар | |
30 | STEAM_NY | ||
31 | STEAM_NY_SLOWMOTION | ||
32 | GROUND_STEAM | ||
33 | ENGINE_STEAM | ||
34 | RAINDROP | ||
35 | RAINDROP_SMALL | ||
36 | RAIN_SPLASH | ||
37 | RAIN_SPLASH_BIGGROW | ||
38 | RAIN_SPLASHUP | ||
39 | WATERSPRAY | ||
40 | WATERDROP | ||
41 | BLOODDROP | 184px | |
42 | EXPLOSION_MEDIUM | ||
43 | EXPLOSION_LARGE | ||
44 | EXPLOSION_MFAST | ||
45 | EXPLOSION_LFAST | ||
46 | CAR_SPLASH | ||
47 | BOAT_SPLASH | ||
48 | BOAT_THRUSTJET | ||
49 | WATER_HYDRANT | 184px | |
50 | WATER_CANNON | ||
51 | EXTINGUISH_STEAM | ||
52 | PED_SPLASH | ||
53 | PEDFOOT_DUST | ||
54 | CAR_DUST | ||
55 | HELI_DUST | ||
56 | HELI_ATTACK | 184px | |
57 | ENGINE_SMOKE | ||
58 | ENGINE_SMOKE2 | ||
59 | CARFLAME_SMOKE | ||
60 | FIREBALL_SMOKE | ||
61 | PAINT_SMOKE | ||
62 | TREE_LEAVES | ||
63 | CARCOLLISION_DUST | ||
64 | CAR_DEBRIS | ||
65 | BIRD_DEBRIS | ||
66 | HELI_DEBRIS | ||
67 | EXHAUST_FUMES | ||
68 | RUBBER_SMOKE | ||
69 | BURNINGRUBBER_SMOKE | ||
70 | BULLETHIT_SMOKE | ||
71 | GUNSHELL_FIRST | ||
72 | GUNSHELL | ||
73 | GUNSHELL_BUMP1 | ||
74 | GUNSHELL_BUMP2 | ||
75 | ROCKET_SMOKE | ||
76 | TEST | ||
77 | BIRD_FRONT | ||
78 | SHIP_SIDE | 184px | |
79 | BEASTIE | 184px | |
80 | RAINDROP_2D | 184px | |
81 | HEATHAZE | 184px | |
82 | HEATHAZE_IN_DIST | 184px | |
83-87 | Нет | 184px |
San Andreas
Системы частиц
В San Andreas система цастиц создаётся опкодом:
064B: 0@ = create_particle "prt_gunshell" at 1557.162 24.305 22.7313 type 1
- 0@ - переменная, в которую сохранится хендл системы частиц
- "prt_gunshell" - название создаваемой системы частиц (перечислены далее)
- at 1557.162 24.305 22.7313 - координаты
- type 1 - какой-то тип, я не понял.
Также можно создать систему частиц на актёре, объекте, машине; с вращением и без:
0669: 55@ = create_attached_particle "EXHALE" on_actor $ACTOR_RYDER with_offset 90@ 91@ 92@ flag 1 066A: 137@ = create_attached_particle "PETROLCAN" on_actor 71@ with_offset 0.0 0.116 0.048 rotation 95@ 96@ 97@ flag 1 066B: 280@ = create_attached_particle "PRT_SPARK" on_car 152@ with_offset -1.69 3.607 -0.271 flag 1 066C: 179@ = create_attached_particle "CEMENT" on_car 90@ with_offset 0.0 -4.4 0.0 rotation 0.0 -1.0 0.0 flag 1 066D: 100@ = create_attached_particle "SMOKE_FLARE" on_object 94@ with_offset 0.0 0.0 0.1 flag 1 066E: create_attached_particle "COKE_TRAIL" on_object 22@ with_offset 0.0 -0.2 -0.1 rotation 0.0 0.0 -1.0 flag 1 handle_as 20@
При создании мы создаём только объект системы частиц, что бы воспроизвести эффект, нужно применить опкод:
064C: play_particle 0@
- 0@ - хендл системы частиц
Что бы остановить, нужно применить опкод:
064E: stop_particle 0@
Ещё есть команда прицепления ситемы частиц на позвонок актёра:
0883: attach_particle 0@ to_actor $ACTOR_RYDER mode 5
- attach_particle 0@
- to_actor $ACTOR_RYDER - хендл актёра
- mode 5 - режим, чем меньше, тем ниже, чем больше, тем выше
Например, этот код создаёт дым у рта актёра:
0669: 0@ = create_attached_particle "EXHALE" on_actor $PLAYER_ACTOR with_offset 0.05 0.12 0.0 flag 1
0883: attach_particle 0@ to_actor $PLAYER_ACTOR mode 5
064C: make_particle 0@ visible
Уничтожение системы частиц:
0650: destroy_particle 177@
Освободить хендл particl'ей можно этой командой (когда игрок отвернётся, игра удалит систему частиц):
064F: remove_references_to_particle 167@
Название | Описание | Цикл | Звук | Скриншот |
---|---|---|---|---|
prt_blood | Фонтан крови. Серой. | Цикл | Нет | |
prt_boatsplash | Пена от лодки | Цикл | Нет | |
prt_bubble | Пузыри. Видны только под водой. | Цикл | Нет | |
prt_cardebris | Огромные серые осколки коробки | Цикл | Нет | |
prt_collisionsmoke | Плотный белый стоячий дым | Цикл | Нет | |
prt_glass | Огромные осколки | Цикл | Нет | |
prt_gunshell | Гильзы | Цикл | Нет | |
prt_sand | Пыль плотная | Цикл | Нет | |
prt_sand2 | Пыль плотная побольше | Цикл | Нет | |
prt_smokeII_3_expand | Серый дым | Цикл | Нет | |
prt_smoke_huge | Серый дым побольше | Цикл | Нет | |
prt_spark | Искры | Цикл | Нет | |
prt_spark_2 | Большие искры | Цикл | Нет | |
prt_splash | Всплеск воды | Цикл | Нет | |
prt_wake | Волна от плывущего человека | Нет цикла | Нет | |
prt_watersplash | Всплеск капель воды | Цикл | Нет | |
prt_wheeldirt | Пыль от колёс | Цикл | Нет | |
boat_prop | Распыляющиеся капли воды от лодки | Цикл | Нет | |
camflash | Вспышка фотокамеры | Нет цикла | Нет | |
exhale | Дымок | Нет цикла | Нет | |
explosion_fuel_car | Вспышка взрыва топлива | Нет цикла | Нет | |
explosion_large | Большой взрыв | Нет цикла | Нет | |
explosion_medium | Средний взрыв | Нет цикла | Нет | |
explosion_molotov | Взрыв от коктейля Молотова | Нет цикла | Нет | |
explosion_small | Малый взрыв | Нет цикла | Нет | |
explosion_tiny | Очень маленький взрыв | Нет цикла | Нет | |
extinguisher | Пена огнетушителя | Цикл | Нет | |
fire | Огонь | Цикл | Есть | |
fire_bike | Огонь с дымом (от мотоцикла) | Цикл | Есть | |
fire_car | Огонь с дымом побольше (от машины) | Цикл | Есть | |
fire_large | Большой огонь | Цикл | Есть | |
fire_med | Средний огонь | Цикл | Есть | |
flamethrower | Огонь | Цикл | Нет | |
gunflash | Вспышка вылетевших пуль | Нет цикла | Нет | |
gunsmoke | Дым от ствола (пистолета) | Нет цикла | Нет | |
heli_dust | Клубы пыли на земле, как от вертолёта | Цикл | Нет | |
jetpack | Оранджево-синий огонь от сопел джетпака | Цикл | Нет | |
jetthrust | Огонь от сопел реактивного самолёта | Цикл | Нет | |
molotov_flame | Огонёк от коктейля Молотова | Цикл | Нет | |
nitro | Нитро | Цикл | Нет | |
overheat_car | Чёрно-белый дым от машины | Цикл | Нет | |
overheat_car_electric | Чёрно-белый дым с искрами от электрической машины | Цикл | Нет | |
riot_smoke | Черный дым. Грубый, но поднимается высоко. | Нет цикла | Нет | |
spraycan | Спрей (зелёная краска) | Цикл | Нет | |
tank_fire | Выстрел танка | Нет цикла | Нет | |
teargas | Серый круглый малый дым | Цикл | Нет | |
teargasAD | Слезоточивый газ | Цикл | Нет | |
water_hydrant | Вода из сломанного водоразборного крана | Нет цикла | Есть | |
water_ripples | Круги на воде | Цикл | Нет | |
water_speed | Очень большой (по сравнению с последующими) настоящий всплеск воды | Нет цикла | Нет | |
water_splash | Средние брызги от всплеска | Нет цикла | Нет | |
water_splash_big | Большие брызги от всплеска | Нет цикла | Нет | |
water_splsh_sml | Маленькие брызги от всплеска | Нет цикла | Нет | |
water_swim | Всплеск воды | Нет цикла | Нет | |
cigarette_smoke | Дым от сигареты | Цикл | Нет | |
Flame | Огонёк | Цикл | Нет | Система частиц "Flame" |
insects | Насекомые | Цикл | Нет | |
smoke30lit | Серо-белый уходящий вверх и расширяющийся дым | Цикл | Нет | |
smoke30m | Чёрно-серый уходящий вверх дым | Цикл | Нет | |
smoke50lit | Серо-белый уходящий ещё выше дым | Цикл | Нет | |
vent | Дымок из трубы | Цикл | Нет | |
vent2 | Дымок из трубы побольше | Цикл | Нет | |
waterfall_end | Пар от каскада водопадов | Цикл | Нет | |
water_fnt_tme | Фонтан регулярно вкл/выкл (как гейзер "Regular Tom") | Цикл | Есть | |
water_fountain | Фонтан | Цикл | Есть | |
tree_hit_fir | "Листья" дерева | Нет цикла | Нет | |
tree_hit_palm | Несколько пальмовых листов | Нет цикла | Нет | |
blood_heli | Кровавый взрыв (Как во когда время миссии "Return the Families" копа разморошили лопастями вертолёта) | Нет цикла | Нет | |
carwashspray | Много пара (от автомойки) | Цикл | Нет | |
cement | Выливающийся цемент | Цикл | Нет | |
cloudfast | Быстрые облака, как в миссии "Stowaway" | Цикл | Нет | |
coke_puff | Вспышка пара (регулярно) | Цикл | Нет | |
coke_trail | Выливается кокс | Цикл | Нет | |
explosion_barrel | Сломался ящик (осколки вверх) | Нет цикла | Нет | |
explosion_crate | Сломался ящик (осколки во все стороны) | Нет цикла | Нет | |
explosion_door | Резкая маленькая вспышка взрыва и рассеивающийся дым | Нет цикла | Нет | |
petrolcan | Струя, использовалась R* как струя мочи | Цикл | Нет | |
puke | Рвота | Нет цикла | Нет | |
shootlight | Осколки, искры и дымок от разбитого прожектора | Нет цикла | Нет | |
smoke_flare | Яркий сигнальный огонь со светящимся красным дымом | Цикл | Нет | |
wallbust | Появляющиеся и быстро оседающие клубы пыли (как от сломанной стены в миссии End Of The Line) | Нет цикла | Нет | |
WS_factorysmoke | Фабричный желтоватый дым | Нет цикла | Нет |
Короны
024F: create_corona_with_radius 0.2 type 2 lensflares 0 with_color 255 0 0 at 2112.607 2422.873 59.8223
Создаёт корону. Нужно исполнять эту команду в цикле.
- _with_radius 0.2 - радиус короны
- type 2 - вид короны (перечислены далее)
- lensflares 0 - Определяет нечто вроде гало (перечислены далее)
- with_color 255 0 0 - цвет в формате RGB
- at 2112.607 2422.873 59.8223 - координаты
№ | Описание | Скриншот |
---|---|---|
1 | Круглый свет | |
2 | Луна | |
3 | Шероховатый продолговатый свет | |
4 | Удлинённый в ширину свет | |
5-8 | Нет? | |
9 | Кольцо |
Типы lensflares:
№ | Описание | Скриншот |
---|---|---|
0 | Нет lensflares | |
1 | Размытые жёлтые и красные | |
2 | Чёткие, цвета короны |
Проекции
Это тоже 2d-эффекты. Я назвал их например проекциями, но это не очень удачное название.
С помощью этой команды можно создать тень, пятно крови на земле, световой круг на земле и т.д.
016F: create_particle 2 rotation_factor 0.0 size 1.0 intensity 150 color_RGB 0 0 0 at 2112.607 2422.873 59.8223
- create_particle 2 - тип проекции
- rotation_factor 0.0 - вращение в градусах
- size 1.0 - размер
- intensity 150 - интенсивность (альфа-канал)
- color_RGB 0 0 0 - цвет в формате RGB (не действует на тени, а у крови меняется только красный канал)
- at 2112.607 2422.873 59.8223
№ | Описание | Скриншот |
---|---|---|
1 | Квадратная тень | |
2 | Круглая тень | |
3 | Круглый свет | |
4 | Тень в форме рыбки (от вертолёта) | |
5 | Свет от фар машины | |
6 | Пятно крови |