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 - переменные самых моделей поведения

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

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

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 - событие, которые будет сбрасываться ( см. События актёров ). Насколько я понял, актёр не будет выполнять ( или будет пытаться не выполнять ) событие. Тоесть, если сбросить событие поднятия рук когда в него целится, он не будет поднимать их. Это уже плюс к интеллекту противника

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

065C: remove_references_to_decision_maker $DM

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

0245: set_actor 1@ walk_style_to "FATMAN"

Здесь: 1@ - сам актёр "FATMAN" - стиль походки ( смотрите таблицу в этом уроке )

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

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

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

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

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

Last updated