> For the complete documentation index, see [llms.txt](https://lessons.sannybuilder.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://lessons.sannybuilder.com/00100/00200/00071.-vizualnye-effekty-v-gta-san-andreas.md).

# 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" - имя самого эффекта ( см.[Эффекты частицы](https://github.com/wmysterio/scm-scripting-lessons/blob/main/dir/gta_sa/ehffekty_chasticy_v_gta_sa/1-1-0-20/README.md) )\
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
```

Здесь:\
5 - режим. Почему назвали именно режимом не знаю ![wacko](http://s49.ucoz.net/sm/15/wacko.gif) Чем ниже число, тем ниже относительно актёра будет прицеплен к актёру. Чем больше - тем выше.

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

```
{$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
```

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

![](https://github.com/wmysterio/scm-scripting-lessons/blob/main/_pu/1/96756408.png)

Плюсы: ничего не нужно загружать. Минусы: не все эффекты воспроизводятся постоянно. Много из них проигрываются только 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 - тип короны ( см. [Короны→типы корон](https://github.com/wmysterio/scm-scripting-lessons/blob/main/dir/gta_sa/korony_v_gta_sa/1-1-0-21/README.md) )\
lensflares 0 = flare 0 - блик короны ( см. [Короны→типы lensflares](https://github.com/wmysterio/scm-scripting-lessons/blob/main/dir/gta_sa/korony_v_gta_sa/1-1-0-21/README.md) )\
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\` на Гроув будет рисоваться корона. Скрин, как всегда:

![](https://github.com/wmysterio/scm-scripting-lessons/raw/resources/_pu/1/71905228.png)

Плюсы: опять ничего дополнительно загружать не нужно. Можно указывать цвет короне, что может делать гта необычной, например можно создать скрипт, когда в СЖ есть броня, то вокруг него будет корона. Чем то будет смахивать на щит мага из игры 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 - тип проекции ( см. [Типы проекций](https://github.com/wmysterio/scm-scripting-lessons/blob/main/dir/gta_sa/proekcii_v_gta_sa/1-1-0-22/README.md) )\
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
```

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

![](https://github.com/wmysterio/scm-scripting-lessons/raw/resources/_pu/1/25623464.png)

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

```
`\||vizualnye_ehffekty_v_gta_san_andreas|1499706891
```
