# 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
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://lessons.sannybuilder.com/00100/00200/00071.-vizualnye-effekty-v-gta-san-andreas.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
