00071. Визуальные эффекты в GTA San Andreas

Визуальные эффекты в GTA San Andreas|Всем привет! Пришло время рассмотреть визуальные эффекты в GTA San Andreas. Сами эффекты реализуются при помощи систем частиц ( particles ). Но что бы не путать всё распределим эффекты на три группы: эффекты, короны и проекции.|wmysterio|wmysterio||||Эффекты.

Думаю вы замечали в игре их, например взять эффект нитро из выхлопной трубы? или взять даже той огонь, что присутствует в игре. Эффекты никак не могут влиять на игрока. Тоесть, если СЖ в эффекте огня, то он не будет получать урон. Рассмотрим опкоды:

064B: 0@ = create_particle "EXHALE" at 2490.4514 -1674.7673 13.3359 type 1

Здесь: 0@ - переменная ффекта "EXHALE" - имя самого эффекта ( см.Эффекты частицы ) 2490.4514 -1674.7673 13.3359 - координаты создания 1 - какой то тип. Я не знаю за что он отвечает, так что оставляем как есть

064C: make_particle 0@ visible

Делает эффект видимым. Начинает воспроизведения. А опкод

064E: stop_particle 0@

останавливает воспроизведения системы частиц.

064F: remove_references_to_particle 0@ // Выгружает из памяти эффект

0976: destroy_particle 139@ // mission version
0650: destroy_particle 0@ // Опкоды 0976 и 0650 уничтожают эффект

Также есть возможность прицепить эффект к сущностям:

0669: 0@ = attach_particle "EXHALE" to_actor $PLAYER_ACTOR with_offset 0.0 0.116 0.048 flag 1
066A: 0@ = attach_particle "EXHALE" to_actor $PLAYER_ACTOR with_offset 0.0 0.116 0.048 rotation 90.0 90.0 90.0 flag 1
066B: 0@ = attach_particle "EXHALE" to_car $CAR with_offset 0.0 0.116 0.048 flag 1
066C: 0@ = attach_particle "EXHALE" to_car $CAR with_offset 0.0 0.116 0.048 rotation 90.0 90.0 90.0 flag 1
066D: 0@ = attach_particle "EXHALE" to_object $OBJECT with_offset 0.0 0.116 0.048 flag 1

Здесь: 0@ - переменная для эффекта "EXHALE" - имя самого эффекта $PLAYER_ACTOR, $CAR, $OBJECT - переменные субъектов ( актёра, транспорта и объекта ) 0.0 0.116 0.048 - координаты относительно субъекта 90.0 90.0 90.0 - ротация эффекта ( разворот на угол по осям X, Y и Z ) 1 - флаг. Зачем он я не знаю, так что ставим 1.

Можно так же прицепить эффект определённой части тела актёра:

0883: attach_particle 0@ to_actor $PLAYER_ACTOR mode 5

Вот Вам простейший пример использования:

{$cleo}
0000:

:A
thread 'a'
wait 5000
0669: 0@ = attach_particle "EXHALE" to_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
0A93: end_custom_thread

Эффект дыма будет прицеплен ко рту СЖ. Вот скрин:

Плюсы: ничего не нужно загружать. Минусы: не все эффекты воспроизводятся постоянно. Много из них проигрываются только 1 раз. Возможно это связано как то с типом или флагом.

Короны.

Думаю, в большинства новичков это ассоциируется с какой-то драгоценностью, которую носят на голове короли. Однако в гта это иной термин. К коронам можно отнести всякие блики, геометрические фигуры, которые постоянно "смотрят" в камеру. Есть всего два опкода для создания корон ( хотя здесь лучше сказать "для рисования корон" ):

024F: create_corona_with_radius 2.0 type 9 lensflares 0 with_color 0 255 0 at 2490.4514 -1674.7673 13.3359
04D5: create_corona_at 2490.4514 -1674.7673 13.3359 radius 2.0 type 9 flare 0 RGB 0 255 0

Здесь: 2490.4514 -1674.7673 13.3359 - координаты появления короны 2.0 - радиус короны. Чем больше, тем громаднее она будет 9 - тип короны ( см. Короны→типы корон ) lensflares 0 = flare 0 - блик короны ( см. Короны→типы lensflares ) with_color 0 255 0 и RGB 0 255 0 - указывает цвет в цветовой схеме ( R - красный, G - зелёный, B - синий ). Диапазон значений от 0 до 255

Как видите в переменную короны не заносятся. Что бы их было видно нужно поставить опкод в цикл. Давайте напишем пример для корон:

{$cleo}
0000:

while 8AB0: not key_pressed 49 // 1
04D5: create_corona_at 2490.4514 -1674.7673 13.3359 radius 2.0 type 9 flare 0 RGB 0 255 0
wait 0
end

0A93: end_custom_thread

Пока игрок на нажмёт кнопку 1` на Гроув будет рисоваться корона. Скрин, как всегда:

Плюсы: опять ничего дополнительно загружать не нужно. Можно указывать цвет короне, что может делать гта необычной, например можно создать скрипт, когда в СЖ есть броня, то вокруг него будет корона. Чем то будет смахивать на щит мага из игры WoW. Минусы: корону нельзя создать. Её нужно рисовать в цикле. Особенность: корона будет "смотреть" в камеру под любым углом.

Проекции.

Это те же эффекты. Отличие в том, что они не имеют анимации и их можно отредактировать. К примеру можно привести тени. Рассмотрим опкод для рисования проекции:

016F: create_particle 6 rotation_factor 180.0 size 7.0 intensity 255 flags 255 0 0 at 2490.4514 -1674.7673 13.3359

Здесь: 6 - тип проекции ( см. Типы проекций ) 180.0 - угол поворота проекции по оси Z 7.0 - размер. чем больше, тем громаднее будет проеция 255 - интенсивность. Если простыми словами, то прозрачность в диапазоне от 0 до 255. Если поставить 0, то проекцию не будет видно вообще flags 255 0 0 - цветовая схема RGB. Выше указано что это 2490.4514 -1674.7673 13.3359 - точка рисования

Давайте сделаем огромное пятно крови на Гроув-стрит:

{$cleo}
0000:

while 8AB0: not key_pressed 49 // 1
016F: create_particle 6 rotation_factor 180.0 size 7.0 intensity 255 flags 255 0 0 at 2490.4514 -1674.7673 13.3359
wait 0
end

0A93: end_custom_thread

А вот и лужа крови:

Плюсы и минусы такие же как и в корон. Если нечем заняться, то вот вам задание: Сделать проекцию зелёного цвета ( как бы имитируя лужу кислоты ) и когда СЖ ( или какой то другой пед ) попадает в неё у него отнимается какое-то количество жизни.|4137|1|0|71905228png600360400240``\|25623464png600360400240``|96756408png362`286

`\||vizualnye_ehffekty_v_gta_san_andreas|1499706891

Last updated