# 00056. Специальные актёры

Специальные актёры|В этом уроке мы рассмотрим специальных актёров.|wmysterio|wmysterio||||Доброго времени времени суток, уважаемые пользователи. Думаю, Вы уже не мало создали актёров в своих скриптах. Пришло время познакомится ещё и со специальными актёрами. Что значит "специальные"? Это те актёры, которых не встретишь на улицах. Например: Свита, Райдера и других "сюжетных" актёров. Загрузка спец.актёров немного другая, чем у обычных актёров. В спец.актёров есть свои имена ( см. [Специальные актёры](https://github.com/wmysterio/scm-scripting-lessons/blob/main/dir/gta_sa/specialnyt_aktjory_v_gta_sa/1-1-0-25/README.md) ).

Для начала, нужно загрузить модель актёра опкодом:

```
023C: load_special_actor 'TENPEN' as 1
```

Здесь:\
'TENPEN' - имя модели актёра\
1 - указывается номер актёра

Дальше необходимо проверить на загруженность:

```
023D: special_actor 1 loaded
```

Здесь:\
1 - указанный ранее номер актёра

Обратите, внимание, что конкретной модели специальные актёры не имеют. Но нужно всё же как то их создать :) А создаются они как и обычные:

```
$TEMPEN = actor.Create(4, #SPECIAL011, 0.0, 0.0, 0.0)
```

Здесь:\
$TEMPEN - естественно указываем переменную, которая будет хранить актёра\
4 - тип актёра\
0.0, 0.0, 0.0 - координаты появления\
\#SPECIAL01 - вот это уже интереснее. Для специальных актёров существуют и специальные модели, которые подходят любым специальным актёрам. Всего их 10 штук.× \*\*Примечание:\*\* Номер актёра должен совпадать с окончанием возле #SPECIAL ( #SPECIAL <с 01 по 10> )

Так же необходимо выгрузить с памяти модель, после создания ( на актёра это не повлияет, действует как "model.destroy()":

```
0296: unload_special_actor 1
```

Теперь давайте напишем простой скрипт, что бы Темпени появлялся рядом с CJ:

```
{$CLEO}
0000:

:TEMP
thread 'TEMP'
wait 0
023C: load_special_actor 'TENPEN' as 1 // загружаем Темпени
038B: load_requested_models

:TEMP_1
wait 0
if
023D: special_actor 1 loaded // проверяем на загрузку
jf @TEMP_1
00A0: store_actor $PLAYER_ACTOR position_to 1@ 2@ 3@ // считываем координаты CЖ
2@ += 2.0 // смещаем позицию y на 2.0
$TEMPEN = actor.Create(4, #SPECIAL01, 1@, 2@, 3@) // создаём Темпени возле СЖ
actor.Angle($TEMPEN) = 0.0
0296: unload_special_actor 1 // выгружаем модель
0A93: end_custom_thread
```

Как видим, Темпени появился как миленький:

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

Все опкоды, связанные с актёрами, действуют и на специальных актёров. Теперь задание: при нажатии кнопки R `создаются два спец. актёра. Устройте поединок между ними ( чтобы били друг друга ).|1974|1|0|20576223`png`600`375`400`250\`\`||specialnye\_aktjory|1499526491


---

# 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/00100/00056.-specialnye-aktyory.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.
