#1 18-01-2007 08:15

Seemann
Registered: 07-08-2006
Posts: 2,154

Группа опкодов Decision Makers. Уникальное поведение актеров.

В списке опкодов для San Andreas давно значилась группа опкодов, объединенных словом entity. Данные опкоды имели не совсем ясное предназначение - они что-то создавали, и это что-то каким-то образом влияло на поведение актеров.

Недавно я понял, какое слово должно стоять в этих опкодах вместо условного entity - Decision Maker.

Нижеперечисленные опкоды работают с моделью поведения, которую можно создавать, уничтожать, менять, присваивать к актерам и группам актеров.

Для тех, кто не знает, откуда взялось это слово - посмотрите файл pedstats.dat. Последней колонкой в нем стоит Decision Maker, т.е. модель поведения (способ принятия решений или AI).

DM 0 - поведение актера в группе
DM 1 - модель поведения копа
DM 2 - обычная модель
DM 3 - храброе поведение
DM 4 - трусливое поведение

Вот опкоды:

060A: create_decision_maker_type 0 store_to $DM // see pedstats.dat

Создает виртуальную модель поведения c типом 0 и записывает в $DM


060B: set_actor 1@ decision_maker_to $DM

Присваивает актеру данную модель поведения


065C: remove_references_to_decision_maker $DM

модель поведения больше не используется. Возможно нужно назвать release_decision_maker


06AE: create_group_decision_maker_type 0 store_to $GDM // see pedstats.dat

создать групповую модель поведения


06AD: set_group $PLAYER_GROUP group_decision_maker_to $GDM

присвоить группе групповую модель поведения


0708: add_decision_maker $DM event 27

записать в модель поведения событие (смотрите файл PedEvent.txt и тему на форуме). Видимо при возникновении данного события модель будет работать

0749: add_group_decision_maker 42@ event 54

записать в групповую модель поведения событие


0709: set_decision_maker $DM on_event 36 unknown_info 1022 0.0 100.0 0.0 0.0 1 0 // see *.ped files

установить в модели поведения при возникновении события 36 какие-то флаги. Данные флаги имеют точное совпадение с тем, что написано в .ped файлах в папке Decision.


074A: set_group_decision_maker 146@ on_event 54 unknown_info 1513 100.0 100.0 100.0 // see *.ped files

при событии 54 что-то будет происходить с поведением группы


07BC: unknown_set_actor -1 decision_maker 236@ // используется внутри define_action_sequence
07E5: unknown_set 65543 decision_maker $1256 
07E6: unknown_set -1 group_decision_maker 268@ 
0978: unknown_set 65540 decision_maker $1230

назначение этих опкодов я не понял


Обратите внимание, я НЕ ТЕСТИРОВАЛ данные опкоды. Поэтому те названия, которые я дал могут быть НЕПРАВИЛЬНЫМИ. В некоторых опкодах остались неизвестные флаги (особенно меня интересуют опкоды 0709 и 074A).

Все, кто что-либо знает о данных опкодах, тестировал их, понял назначение - пишите в этой теме.

Offline

#2 18-01-2007 09:25

Seemann
Registered: 07-08-2006
Posts: 2,154

Re: Группа опкодов Decision Makers. Уникальное поведение актеров.

В групповой модели поведения используются особые события, например

0749: add_group_decision_maker 42@ event 54 // EVENT_LEADER_ENTERED_CAR_AS_DRIVER
0749: add_group_decision_maker 42@ event 55 // EVENT_LEADER_EXITED_CAR_AS_DRIVER

можно таким образом указать группе, что делать, если лидер (например, CJ) сел в машину или вышел из нее.

Offline

#3 18-01-2007 18:35

Capushon
Registered: 13-08-2006
Posts: 350
Website

Re: Группа опкодов Decision Makers. Уникальное поведение актеров.

-1 для команды с актёром, говорит о том, что актёр может быть любым (не явно указанным).

07BC: unknown_set_actor -1 decision_maker 236@

Сначала ты надежда и гордость,
Потом о спину ломают аршин. (c)БГ

Offline

#4 18-01-2007 19:28

flacs
Registered: 17-01-2007
Posts: 16

Re: Группа опкодов Decision Makers. Уникальное поведение актеров.

Есть еще один способ для актеров инициализирующих их модель поведенеия,
я открыл их одновременно с create_entity, или как выразился Seemann Decision Maker

062F: @239 = create_group_type ¦
¦
0 - не реагирует на игрока
1 - реагирует, когда в него стреляют
2 - просто стоит
3 - стоит и разговоривает и жестикулирует руками
4 - стоит и просто болтает не жестикулируя руками
5 - ходит по тротуару

активизируем командой
так
0630: put_actor @102 in_group @239 as_leader - поместить актера в группу лидером
или так
0631: put_actor @102 in_group @239 - поместить актера в группу


И еще один...узнал недавно.

0746=3,set_default_action %1h% for_actors_type %2h%

Он означает что:
какое действие (определено в ped event) - 1 параметр, будет делать актер с типом (Параметр 2), когда УВИДИТ актера с типом (параметр 3)

Last edited by flacs (18-01-2007 19:32)

Offline

#5 19-01-2007 04:55

Seemann
Registered: 07-08-2006
Posts: 2,154

Re: Группа опкодов Decision Makers. Уникальное поведение актеров.

flacs wrote:

Он означает что:
какое действие (определено в ped event) - 1 параметр, будет делать актер с типом (Параметр 2), когда УВИДИТ актера с типом (параметр 3)

не совсем понял насчет pedevent. Вот например:

0746: set_default_action 1 for_actors_pedtype 8 to_actors_pedtype 0

Это значит, что Gang2 будет что-то делать, когда увидит игрока. А что именно, параметр 1? К pedevent это отношения не имеет, по крайней мере к тем событиям, что есть в файле PedEvent. Тут видимо те же самые действия, что ты написал

0 - не реагирует на игрока
1 - реагирует, когда в него стреляют
2 - просто стоит
3 - стоит и разговоривает и жестикулирует руками
4 - стоит и просто болтает не жестикулируя руками
5 - ходит по тротуару

или нет?

Offline

#6 19-01-2007 05:16

Seemann
Registered: 07-08-2006
Posts: 2,154

Re: Группа опкодов Decision Makers. Уникальное поведение актеров.

Мне бы очень хотелось разгадать секрет *.ped файлов, тем более что теперь ясно, что они имеют связь с опкодами. Вот например файл COP.PED

16,4,200,0.000000,0.000000,0.000000,100.000000,0,1,-1,0.0,0.0,0.0,0.0,0,0,-1,0.0,0.0,0.0,0.0,0,0,-1,0.0,0.0,0.0,0.0,0,0,

16 - это код события, как в файле PedEvent.txt
4 - (точно неизвестно), кол-во групп команд, которые идут после этого числа. Данный параметр всегда равен 4.
После 4-х идут 4 группы команд или флагов

200,0.000000,0.000000,0.000000,100.000000,0,1,
-1,0.0,0.0,0.0,0.0,0,0,
-1,0.0,0.0,0.0,0.0,0,0,
-1,0.0,0.0,0.0,0.0,0,0,

обратите внимание, когда первым числом стоит -1, все остальное установлено в 0. Это значит, что данная группа не используется.

200 это либо код анимации, либо код действия.
Далее идут 4 числа, от нуля до 255. В оригинальных файлах записаны как флоат, но используются как целые числа.

Сравниваем с

0709: set_decision_maker $5350 on_event 37 unknown_info 1029 0.0 100.0 0.0 0.0 1 1 // see *.ped files

совпадение флагов полное (инт, 4 флоата, 2 флага).

На гтафорумс давно исследовали эти файлы, но ничего нового по сравнению с тем, что я написал там нет:
http://www.gtaforums.com/index.php?showtopic=179930


Появилась такая мысль, что эти 4 группы связаны с 4-мя состояниями отношения (Acquaintance) из файла ped.dat.
Т.е. первая группа флагов, это что делать, если событие 16 вызвано педом, с которым у копа отношение HATE, 2-я группа - Dislike, 3 - Like, 4 - Respect.

Еще скажу, что .ped файлы удобно изучать в Excel'е, если открывать с разделителями ,

Last edited by Seemann (15-02-2007 11:26)

Offline

#7 19-01-2007 05:42

Seemann
Registered: 07-08-2006
Posts: 2,154

Re: Группа опкодов Decision Makers. Уникальное поведение актеров.

Еще добавлю, что в опкодах типа

07E5: unknown_set 65543 decision_maker $1256

65543 - это маска. При компиляции данное число будет храниться как 0700 0100. Игра не читает целиком все число 65543, а только 1-й байт (07), у остальных 3-х байтов какое-то иное предназначение.

Еще скажу, что предел для Decision Makers это 6. Данный тип поведения ставится для водителей поездов (может еще кому-то пока не знаю). DM 0-4 написаны в первом посте. 5 - пожарный?.
У семерки какое-то особое значение.

Offline

#8 19-01-2007 13:54

flacs
Registered: 17-01-2007
Posts: 16

Re: Группа опкодов Decision Makers. Уникальное поведение актеров.

=>>>>

0746: set_default_action 1 for_actors_pedtype 8 to_actors_pedtype 0

Это значит, что Gang2 будет что-то делать, когда увидит игрока. А что именно, параметр 1? К pedevent это отношения не имеет, по крайней мере к тем событиям, что есть в файле PedEvent. Тут видимо те же самые действия, что ты написал

0 - не реагирует на игрока
1 - реагирует, когда в него стреляют
2 - просто стоит
3 - стоит и разговоривает и жестикулирует руками
4 - стоит и просто болтает не жестикулируя руками
5 - ходит по тротуаруили нет?

не совсем, я немного загнался, посчитав что эти пареметры принадлежат файлыу pedevent, т.к. этот опкод тестил бегло, те значения которые я тестил(Параметр 1)..., приведены в сл.
0-ничего
3-Если актер вас заметил как вы пробежали мимо него, то он бежти в ту точку откуда вы начали бежать поворачивается к вам и оглядывается
4 - если актер вас заметил он стреляет(атакует)

Стоит выделить также какие еще значения этого параметра я нашел в оригинале..
0,1,3,4

Что означает такая вот строка я не знаю,

0746: (unknown) 1 24 0

может быть этот параметр не изпользуеться, на игроке(т.к. проверял я этот опкод именно с $PLAYER_ACTOR), а изпользуеться для специфичных ситуаций между актеhами с типом отличным от игрока..

Offline

#9 19-01-2007 14:12

Seemann
Registered: 07-08-2006
Posts: 2,154

Re: Группа опкодов Decision Makers. Уникальное поведение актеров.

flacs wrote:

Что означает такая вот строка я не знаю

хмм, ну тоже самое что и предыдущий вариант: установить для актера с типом 24 (Mission1) действие 1, когда видит игрока (или актера с типом 0 - Player1). В саннике же эти типы все написаны.

Ты decision_makers не тестировал (опкоды из первого поста)?

Offline

#10 19-01-2007 17:03

flacs
Registered: 17-01-2007
Posts: 16

Re: Группа опкодов Decision Makers. Уникальное поведение актеров.

Seemann wrote:
flacs wrote:

Что означает такая вот строка я не знаю

хмм, ну тоже самое что и предыдущий вариант: установить для актера с типом 24 (Mission1) действие 1, когда видит игрока (или актера с типом 0 - Player1). В саннике же эти типы все написаны.

Ты decision_makers не тестировал (опкоды из первого поста)?

нет не тестировал, но протестирую их т.к. это во многом меняет многое...

Offline

#11 19-01-2007 19:36

Seemann
Registered: 07-08-2006
Posts: 2,154

Re: Группа опкодов Decision Makers. Уникальное поведение актеров.

200 это либо код анимации, либо код действия.

я почти на 100% уверен что это число, после которого идут 4 флоата и 2 флага, это код задачи (task), которую в настоящий момент выполняет (должен выполнить) актер.
Вот некоторые коды, которые я нашел в ехе:

 254  - climb
 701  - enter car
 1304 - swim

поэтому в опкоде

0709: set_decision_maker $5350 on_event 37 unknown_info 1029 0.0 100.0 0.0 0.0 1 1 // see *.ped files

1029 тоже будет указывать на некий task, который нужно выполнить при возникновении события 37 (с учетом флагов).

Кто-нибудь, постарайтесь найти соответствия этим числам (254, 701, 1304) в каких-либо файлах игры (файлах анимаций и т.п.) Очень хочется найти какую-нибудь связь.

Offline

#12 20-01-2007 00:54

Capushon
Registered: 13-08-2006
Posts: 350
Website

Re: Группа опкодов Decision Makers. Уникальное поведение актеров.

2Seemann:

07E5: unknown_set 65543 decision_maker $1256

Почему set? Этож было copy?

07E5: unknown_copy_entity  65543 $1256

Сначала ты надежда и гордость,
Потом о спину ломают аршин. (c)БГ

Offline

#13 20-01-2007 02:22

Capushon
Registered: 13-08-2006
Posts: 350
Website

Re: Группа опкодов Decision Makers. Уникальное поведение актеров.

Вот есть ещё одна команда из этой серии:

0978: fill/merge_decision_maker 65539 $9453

Сначала ты надежда и гордость,
Потом о спину ломают аршин. (c)БГ

Offline

#14 20-01-2007 05:15

Seemann
Registered: 07-08-2006
Posts: 2,154

Re: Группа опкодов Decision Makers. Уникальное поведение актеров.

2Capushon:

Почему set? Этож было copy?

эти слова надо вообще убрать, эти fill, set, copy ничего не значат в настоящий момент.

Вот есть ещё одна команда из этой серии:

да, написана в первом посте.

Offline

#15 15-02-2007 11:10

Seemann
Registered: 07-08-2006
Posts: 2,154

Re: Группа опкодов Decision Makers. Уникальное поведение актеров.

Немного разобрался в смысле первого параметра в опкодах 060A, 06AE. Эта цифра указывает на файл поведения в папке data\decision\allowed.

060A: create_decision_maker_type 2 store_to 39@

0 - m_empty.ped
1 - m_norm.ped
2 - m_tough.ped
3 - m_weak.ped
4 - m_steal.ped

1-й параметр может принимать только эти значения.

06AE: create_group_decision_maker_type 0 store_to 42@

0 - MISSION.grp

1-й параметр может принимать только значение 0.

Offline

#16 04-10-2007 08:51

Seemann
Registered: 07-08-2006
Posts: 2,154

Re: Группа опкодов Decision Makers. Уникальное поведение актеров.

Вчера был достигнут определенный прогресс в понимании Decision Maker'ов. В частности опкодов 0708, 0709 и их аналогов для групп.

Опкод 0709 выглядит так:

0709: set_decision_maker 22@ on_event 9 taskID 909 unknown 0.0 0.0 chance 40.0 0.0 0 1 // see *.ped files

эта строка означает, что актер, которому присвоен данный DecisionMaker (22@) при возникновении события 9 (т.е. при получении повреждений, см. файл PedEvents.txt), будет выполнять задачу под номером 909 с вероятностью 40%. Код 909 принадлежит действию "убежать прочь". Т.е. актер, если его ударить, с вероятностью 40% убежит.

Если добавить строку

0709: set_decision_maker 22@ on_event 9 taskID 415 0.0 0.0 chance 60.0 0.0 0 1 // see *.ped files

то актер при получении повреждения (событие 9) с вероятностью 60% присядет и закроет голову руками (task 415).


0709: set_decision_maker 22@ on_event 9 taskID 909 0.0 0.0 chance 40.0 0.0 0 1 // see *.ped files
0709: set_decision_maker 22@ on_event 9 taskID 415 0.0 0.0 chance 60.0 0.0 0 1 // see *.ped files

объединением строк можно добиться различной реакции актера на происходящие события. Отмечу, что по умолчанию актер ведет себя в соответствии с поведением, установленным в файлах *.ped в папке Decision\Allowed.


Опкод 0708 сбрасывает информацию для события:

0708: reset_decision_maker 22@ event 9

после этого актер не будет реагировать на событие 9.

Offline

#17 04-10-2007 23:44

Agenzvell
From: Windows/system32
Registered: 28-08-2007
Posts: 109
Website

Re: Группа опкодов Decision Makers. Уникальное поведение актеров.

Вопросик. В папке Allowed есть файлы для пожарника, копа, а для медика почему-то нет.
Или для медика есть события в RANDOM`ax?

И еще. В папке Decision есть Cop.ped и в папке Aloowed тоже есть Cop.ped . Они полнотью одинаковы или у них есть различия? (Я не заметил)

Last edited by Agenzvell (04-10-2007 23:48)

Offline

#18 05-10-2007 07:58

Seemann
Registered: 07-08-2006
Posts: 2,154

Re: Группа опкодов Decision Makers. Уникальное поведение актеров.

Вопросик. В папке Allowed есть файлы для пожарника, копа, а для медика почему-то нет.
Или для медика есть события в RANDOM`ax?

Ответ смотри в файле pedstats.dat. Медику присвоен тип DecisionMaker 2, что согласно посту #16, относится к файлу m_tough.ped. Файлы Cop.ped и подобные, кажется, вообще не используются.

Они полнотью одинаковы или у них есть различия?

У них немного разные форматы. Попробуй открыть файл в Excel и включить Формат данных с разделителями - запятыми (Excel предложит при открытии).

Offline

#19 22-08-2008 06:16

VcSaJen
Registered: 25-08-2006
Posts: 217

Re: Группа опкодов Decision Makers. Уникальное поведение актеров.

@Seemann -

Seemann wrote:
254  - climb
 701  - enter car
 1304 - swim

где можно найти полную версию кодов taskID?

Появилась такая мысль, что эти 4 группы связаны с 4-мя состояниями отношения (Acquaintance) из файла ped.dat.
Т.е. первая группа флагов, это что делать, если событие 16 вызвано педом, с которым у копа отношение HATE, 2-я группа - Dislike, 3 - Like, 4 - Respect.

Кто-нибудь узнал, как связаны?


[small][/small]

Offline

#20 22-08-2008 14:23

listener
From: Vice City
Registered: 09-11-2006
Posts: 616
Website

Re: Группа опкодов Decision Makers. Уникальное поведение актеров.

@VcSaJen - полная есть только для 4ки.
для SA практически все значения совпадают; за счет этого удалось определить порядка сотни (из ~300).

Проблема в том, что оно у меня сейчас в достаточно нечитаемом виде. Нормальный список составлен для 4ки, с пометками, что не изменилось со времен SA.

Для SA есть только иерархия классов, в которой часть уже нормально названа.
На случай, если есть желание поразгребать авгиевы конюшни, я приаттачил файлик.

Offline

#21 25-08-2008 05:56

VcSaJen
Registered: 25-08-2006
Posts: 217

Re: Группа опкодов Decision Makers. Уникальное поведение актеров.

Потестил:

0000:
{$I stdconsts.txt}
{$CLEO}

while true
  if 0AB0:  key_pressed VK_I
  then
    04C4: store_coords_to 1@ 2@ 3@ from_actor $PLAYER_ACTOR with_offset 0.0 3.0 -1.0 
    if 0@ > 0
    then
      0708: reset_decision_maker 1@ event 9
      065C: release_decision_maker 1@
      Actor.DestroyWithFade(0@)      
    end
    0@ = Actor.Create(CivMale, #MALE01, 1@, 2@, 3@)
    Actor.Health(0@) = 500.0
    060A: create_decision_maker_type 0 store_to 1@ // decision\allowed\m_.ped files 
    0708: add_decision_maker 1@ event 9
    060B: set_actor 0@ decision_maker_to 1@
    0709: set_decision_maker 1@ on_event EVENT_DAMAGE taskID 909 unknown 0.0 0.0 chance 100.0 0.0 0 1 // see *.ped files           
    wait 350
  end
  wait 0
end

Не работает sad. Актёр не убегает при повреждении.

@listener - некоторые Task требуют передачи параметров. Значит, такие нельзя использовать в OP 0709?


[small][/small]

Offline

#22 26-08-2008 04:52

VcSaJen
Registered: 25-08-2006
Posts: 217

Re: Группа опкодов Decision Makers. Уникальное поведение актеров.

Мне не удалось заставить DM работать. @Seemann - покажи пожалуйста весь скрипт, на котором ты тестировал.

Все, кто что-либо знает о данных опкодах, тестировал их, понял назначение - пишите в этой теме.

Тут я попробовал изменять флаги, первый флаг после TaskID за что-то отвечает.
Я тестировал на событии EVENT_GUN_AIMED_AT, и если тот параметр больше десяти, и если актёр поднимет руки, то он когда опустит руки пойдёт по пешеходным дорогам и через некоторое время остановится. (если меньше то не уйдёт)
[---]
Добавлено:
Вот из оригинального мейна взял код, актёр будет стараться уничтожить выбранные педтипы (кстати 0 - педтип игрока). Но другие действия не работают.

{$I stdconsts.txt}
{$CLEO}

while true
  if 0AB0:  key_pressed VK_I
  then
    04C4: store_coords_to 2@ 3@ 4@ from_actor $PLAYER_ACTOR with_offset 0.0 3.0 -1.0 
    if 0@ > 0
    then
      0708: reset_decision_maker 1@ event EVENT_ACQUAINTANCE_PED_HATE
      0708: reset_decision_maker 1@ event EVENT_GUN_AIMED_AT
      065C: release_decision_maker 1@
      Actor.DestroyWithFade(0@)      
    end
    0@ = Actor.Create(CivMale, #MALE01, 2@, 3@, 4@)
    Actor.Health(0@) = 500
//    060A: create_decision_maker_type 0 store_to 1@ // decision\allowed\m_.ped files     
//    07E5: unknown_set 65543 decision_maker 1@
    0978: copy_decision_maker 65540 to 1@ 
//    0709: set_decision_maker 1@ on_event 36 taskID 0x3FE unknown 0.0 100.0 chance 0.0 unknown 0.0 1 0 
//    0709: set_decision_maker 1@ on_event 37 taskID 0x3FE unknown 0.0 100.0 chance 0.0 unknown 0.0 1 0 
    0709: set_decision_maker 1@ on_event EVENT_ACQUAINTANCE_PED_HATE taskID 0x400 unknown 0.0 100.0 chance 0.0 unknown 0.0 0 1
    060B: set_actor 0@ decision_maker_to 1@
//    077A: set_actor 0@ acquaintance 4 to_actors_pedtype 4
//    077A: set_actor 0@ acquaintance 4 to_actors_pedtype 5 
    077A: set_actor 0@ acquaintance 4 to_actors_pedtype PEDTYPE_COP 
    077A: set_actor 0@ acquaintance 4 to_actors_pedtype PEDTYPE_GANG_BALLAS 
    077A: set_actor 0@ acquaintance 4 to_actors_pedtype PEDTYPE_GANG_VAGOS
    077A: set_actor 0@ acquaintance 4 to_actors_pedtype PEDTYPE_GANG_SFRIFA
    077A: set_actor 0@ acquaintance 4 to_actors_pedtype PEDTYPE_GANG_DANANGBOYS 
    077A: set_actor 0@ acquaintance 4 to_actors_pedtype PEDTYPE_GANG_MAFIA
    077A: set_actor 0@ acquaintance 4 to_actors_pedtype PEDTYPE_GANG_Triad
    077A: set_actor 0@ acquaintance 4 to_actors_pedtype PEDTYPE_GANG_LosAztecas
    0350: set_actor 0@ maintain_position_when_attacked 1 
    0446: set_actor 0@ immune_to_headshots 0 
    0568: set_actor 0@ targetable 1 
    02AB: set_actor 0@ immunities BP 0 FP 0 EP 1 CP 1 MP 0 
    0223: set_actor 0@ health_to 500   
    while not #MINIGUN.Available
     wait 0
     #MINIGUN.Load 
    end
    01B2: give_actor 0@ weapon WEAPON_MINIGUN ammo 999999
    01B9: set_actor 0@ armed_weapon_to WEAPON_MINIGUN
    Actor.WeaponAccuracy(0@) = 100
    #MINIGUN.Destroy 
    wait 350
  end
  Player.WantedLevel($PLAYER_CHAR) = 0
  wait 0  
end

Last edited by VcSaJen (26-08-2008 08:07)


[small][/small]

Offline

#23 26-08-2008 14:03

Seemann
Registered: 07-08-2006
Posts: 2,154

Re: Группа опкодов Decision Makers. Уникальное поведение актеров.

Увы, боюсь что тот скрипт был давно затерт. Но там не было ничего особого: просто создавался актер, создавался DM, назначались события как указано в #16.

Offline

#24 07-01-2009 10:21

VcSaJen
Registered: 25-08-2006
Posts: 217

Re: Группа опкодов Decision Makers. Уникальное поведение актеров.

В рамках написания статьи о DM, я узнал, что означают последние два флага grin .
Предпоследний - реакция работает, если пед в машине
Последний - реакция работает, если пед пешком
Например:

0709: set_decision_maker 1@ on_event 36 taskID 1022 unknown 0.0 100.0 chance 0.0 unknown 0.0 1 0
0709: set_decision_maker 1@ on_event 36 taskID 1024 unknown 0.0 50.0 chance 0.0 unknown 0.0 0 1

тогда если актёр в машине и видит ненавистного человека, то он стреляет в DriveBy (task 1022).
если актёр пешком, то он просто нападает на ненавистного человека (task 1024).

А если сделать так:

0709: set_decision_maker 1@ on_event 36 taskID 1024 unknown 0.0 50.0 chance 0.0 unknown 0.0 1 1

то пед нападёт просто (если в машине, то сначала выйдет и нападёт).

Можно подписать так:

0709: set_decision_maker $DM on_event 36 taskID 1024 unknown 0.0 50.0 chance 0.0 unknown 0.0 in_car 1 on_foot 1

И ещё я думаю, какой-то из float параметров отвечает за необходимый уровень настроения (temper) чтобы исполнить задачу. Только сколько я ни тестировал, не нашёл sad .

Last edited by VcSaJen (07-01-2009 10:23)


[small][/small]

Offline

#25 07-01-2009 13:17

VcSaJen
Registered: 25-08-2006
Posts: 217

Re: Группа опкодов Decision Makers. Уникальное поведение актеров.

@Seemann -
Я узнал ещё подробности.
Я потестил на разных отношениях к игроку на событии EVENT_DAMAGE.
При отношении respect шанс - первый float.
При отношении hate шанс - второй float.
При отношении like и dislike непонятность - всякий раз по-разному, от первого float-параметра до четвёртого.

Подписать следует так:

0709: set_decision_maker 1@ on_event 9 taskID 1000 chance_if_acquaintance respect 0.0 hate 100.0 unk_like_dislike 0.0 unk_like_dislike 0.0 in_car 0 on_foot 1

Так что узнаны почти все параметры smile . Жаль что я опоздал на два года, сейчас все на IV sad .


[small][/small]

Offline

Board footer

Powered by FluxBB