feat(script): execute numeric FML assignments during mission Init
Docs Deploy / Build and Deploy MkDocs (push) Successful in 36s
Docs Deploy / Build and Deploy MkDocs (push) Successful in 36s
This commit is contained in:
5 files changed
+1586
-232
No files matched your search
@@ -168,8 +168,9 @@ handler лишь инициирует execution context (`+0x50 = 1`); его ga
|
||||
младшие 32 бита, что даёт `0`. Значение `10001` также проходит дальше: оригинал
|
||||
показывает предупреждение для чисел выше `10000`, но не отменяет создание AI.
|
||||
|
||||
Rust исполняет только подтверждённую форму этого действия. Поддержанные записи
|
||||
применяются к состоянию лишь после успешного прохода всего первого `Init`.
|
||||
Rust исполняет подтверждённый поднабор первого `Init`: действие `Handler(19)`
|
||||
и числовые literal assignments, описанные ниже. Поддержанные записи применяются
|
||||
к состоянию лишь после успешного прохода всего первого `Init`.
|
||||
Если встретилась неподдержанная форма, preview сохраняет пакет, сообщает
|
||||
`Unsupported` и оставляет значения по умолчанию; при полной загрузке та же форма
|
||||
становится ошибкой. Это политика Rust для ограниченного исполнителя, а не правило
|
||||
@@ -177,6 +178,21 @@ Rust исполняет только подтверждённую форму э
|
||||
событие считается исполненным без записей. Остальные события пока не образуют
|
||||
исполняемую VM.
|
||||
|
||||
В `Init` встречаются и отдельные присваивания результатов формул. Их запись
|
||||
выбирает строку формулы по порядковому номеру из соседнего `.fml`; этот файл
|
||||
относится к конкретной базе сценария, а строки после нужного номера сохраняют свои позиции.
|
||||
Для первой кампанийной миссии `Mission.01` (`tut1_pl2.fml`) строка 0 записывает
|
||||
нули в `df0..df3`; в миссии `Single.01` (`scr_pl_1.fml`) строка 0 записывает
|
||||
нули в `dT8` и `dT9`.
|
||||
Клан 1 той же миссии использует первые девять строк `scream.fml`: восемь
|
||||
проверенных значений попадают в `DWORD` с усечением дробной части, а `0.8`
|
||||
сохраняется как число `float`. Пока Rust вычисляет только числовой литерал,
|
||||
начинающийся с цифры; операторы, ссылки на переменные и другие формы формул
|
||||
остаются явными ошибками. В тесте полной загрузки миссия `Mission.01`
|
||||
проходит этот `Init`; `Single.01` останавливается на следующем неподдержанном
|
||||
`Handler(43)` в clan 1, записи 10. Никакое значение не подставляется вместо
|
||||
этого действия.
|
||||
|
||||
### Первый запуск сценария
|
||||
|
||||
До регулярной работы Behavior настраивает расписание своего первого шага. Он
|
||||
@@ -196,9 +212,10 @@ SuperAI для записей кланов, затем обновляет Behavi
|
||||
от повторного входа; при занятой защите вызов пропускается, но одноразовая метка
|
||||
всё равно устанавливается. В полной загрузке Rust вызывающая сторона передаёт
|
||||
значение времени очереди; после регистрации объектов загрузчик последовательно
|
||||
подготавливает каждый сценарный пакет и выполняет только подтверждённые действия
|
||||
`Handler(19)` из первого `Init`. Статический просмотр не запускает Behavior, но
|
||||
может сохранить подтверждённые записи `Init` в сценарном varset.
|
||||
подготавливает каждый сценарный пакет и выполняет восстановленные действия
|
||||
`Handler(19)` и числовые literal assignments из первого `Init`. Статический
|
||||
просмотр не запускает Behavior, но может сохранить эти записи `Init` в сценарном
|
||||
varset.
|
||||
|
||||
Это полезное начало сценария, но ещё не целая игровая жизнь AI. Текущий runtime
|
||||
не воспроизводит аргумент обратного вызова в `AI+0x3fc`, защиту от повторного
|
||||
|
||||
Reference in new issue
Block a user