# 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
