По поводу task.
Для себя я сделал вывод, что это
БАГ в движке MD, связанный с тем, что он (движок) не всегда проверяет статус запускаемого "cue", и, в нашем случае, он повторно запускает "cue", который имеет статус 1-active (означает - начал работу, но ещё не завершён).
Убедиться в этом можно, проведя простой эксперимент.
Имеем:
- Код: выделить все
<cue name="test_task_bug">
<action>
<do_all>
<incoming_message text="md1: {player.age}"/>
<run_script script="test.task1" task="1"/>
<incoming_message text="md2: {player.age}"/>
</do_all>
</action>
</cue>
- Код: выделить все
$t=playing time
$t='se1: '+$t
write to player logbook $t
$wait=30000
while$wait
$wait=wait $wait ms
end
$t=playing time
$t='se2: '+$t
write to player logbook $t
return null
Итак, запускаем игру с этими скриптами:
1) task=1
(т.е., как правильно заметил выше gav622007 - md не будет ждать завершения se), и через 30 сек в журнале видим:
[Для просмотра изображения необходимо включить JavaScript]Т.е. всё, как и должно быть.
2) task=0 (md должен ДОЖДАТЬСЯ окончания запускаемого se-скрипта)
Порлучаем сотни запущенных копий MD и SE!!!Происходит это
ТОЛЬКО в случае, если в запускаемом SE-скрипте присутствует оператор @wait (или ему подобный), который, как известно, служит для передачи процессорного времени другим исполняемым в то же время задачам.
Надеюсь, понятно объяснил
Можно уменьшит wait до ~300-500ms (чтобы было запущено всего несколько десятков копий) и затем посмотреть в журнале очерёдность исполнения скриптов.