# 00084. Модели поведения актёров

Модели поведения актёров|Сегодня мы опять каснёмся темы актёров. На этот раз мы рассмотрим их модели поведения. Тоесть будем сами указывать как должен вести себя актёр в определённых ситуациях.|wmysterio|wmysterio||||Приветствую Вас, уважаемые пользователи нашего сайта RU-SCRIPT.3DN.RU! Для начала, рассмотрим опкоды, которые умеют создавать модели поведения:

```
060A: create_decision_maker_type 0 store_to $DM
06AE: create_group_decision_maker_type 0 store_to $GDM
```

Здесь:\
0 - тип поведения ( смотрите таблицу 1 )\
$DM и $GDM - переменные самых моделей поведения

Первый опкод задаёт поведения для актёра, второй - для целой группы ( банды ). Рассмотрим таблицу типов:

| Таблица 1     |                           |
| ------------- | ------------------------- |
| Тип поведения | Описание                  |
| 0             | Поведение актера в группе |
| 1             | Модель поведения копа     |
| 2             | Обычная модель            |
| 3             | Храброе поведение         |
| 4             | Трусливое поведение       |

После того, как модель объявлена, нужно присвоить её актёру или группе:

```
060B: set_actor 1@ decision_maker_to $DM 
06AD: set_group $PLAYER_GROUP group_decision_maker_to $GDM
```

Здесь:\
1@ - переменная актёра, который будет следовать заданной модели поведения\
$PLAYER\_GROUP - переменная группы, для которой будет присвоена модель поведения\
$DM и $GDM - переменные самых моделей поведения

Есть опкод, который проверяет: "Существует ли модель поведения?":

```
09F2: decision_maker $DM exists
```

Так же есть возможность сбросить стоковую реакцию актера на событие:

```
0708: reset_decision_maker $DM event 9
```

Здесь:\
$DM - переменная модели поведения 9 - событие, которые будет сбрасываться ( см. [События актёров](https://github.com/wmysterio/scm-scripting-lessons/blob/main/dir/gta_sa/sobytija_aktjorov/1-1-0-45/README.md) ). Насколько я понял, актёр не будет выполнять ( или будет пытаться не выполнять ) событие. Тоесть, если сбросить событие поднятия рук когда в него целится, он не будет поднимать их. Это уже плюс к интеллекту противника

Ну и, естественно, если модель поведения больше нужна, то её следует выгрузить с памяти:

```
065C: remove_references_to_decision_maker $DM
```

Так же можно задать стиль походки нужного актёра:

```
0245: set_actor 1@ walk_style_to "FATMAN"
```

Здесь:\
1@ - сам актёр\
"FATMAN" - стиль походки ( смотрите таблицу в этом [уроке](https://github.com/wmysterio/scm-scripting-lessons/blob/main/publ/gta_sa/obucheniye_skriptinga/aktjory/34-1-0-29/README.md) )

Теперь к примерам. Давайте создадим актёра на Гроув используя модели поведения:

```
{$CLEO}
0000:
 
:DM
thread 'DM'
wait 0
060A: create_decision_maker_type 4 store_to 1@
0376: 0@ = create_random_actor_at 2486.2708 -1655.7012 12.3363
actor.Angle(0@) = 195.281
actor.Health(0@) = 90000
077A: set_actor 0@ acquaintance 2 to_actors_pedtype 0 // see ped.dat 
0446: set_actor 0@ immune_to_headshots 0 
0245: set_actor 0@ walk_style_to "GANG1"
0708: reset_decision_maker 1@ event 9
060B: set_actor 0@ decision_maker_to 1@ 
 
while not actor.Dead(0@)
wait 0
end
 
065C: remove_references_to_decision_maker 1@
0A93: end_custom_thread
```

Теперь посмотрите, как будет себя вести актёр:

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

А вот, что будет, если буквально поменять тип поведения на трусливое ( decision\_maker\_type "3" ) при этом же скрипте:

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

Как видите, результат противоположный. Можно сказать, что мы можем управлять даже характером актёров :) Какой вариант подойдёт вашим актёрам? :)|1581|1|0|09675361`png`500`300`400`240``\|23347036`png`500`300`400`240\`\`||modeli\_povedenija\_aktjorov|1499846220


---

# 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/00084.-modeli-povedeniya-aktyorov.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.
