(party_set_slot, "<идентификатор вашего замка>", slot_center_ex_faction, fac_neutral),
И хочу спросить... Я пишу скрипт, скрипт большой и с логическими ошибками. Чтобы было легче разобраться с ошибками решил отмониторить то, когда и какие значения будут принимать его переменные с помощью сообщений (которые записываются в журнал истории). Но журнал едва-ли вмещает то, что я желаю в нём увидеть. ...Так как его расширить, не подскажете?
...Так вот, отмониторил я его переменные (пришлось частями) и выяснилось, что у некоторых конструкций try_begin проверяются только первые несколько блоков (не выполняется даже то, что непосредственно после else_try). Скажем, вот эту конструкцию
(try_begin),
(display_message, "@b1."),
(this_or_next|eq, ":rele", 0),
(eq, ":rele", 2),
(ge, ":suit", ":width"),
(val_add, ":rele", 2),
(assign, ":suit", 0),
(else_try),
(display_message, "@b2."),
(this_or_next|eq, ":rele", 1),
(eq, ":rele", 3),
(ge, ":suit", ":length"),
(val_add, ":rele", 2),
(assign, ":suit", 0),
(else_try),
(display_message, "@b3."),
(eq, ":block", 3),
(neq, ":slip_width", 0),
(eq, ":slip_length", 0),
(assign, ":block", 1),
(assign, ":radius", 1),
(else_try),
(display_message, "@b4."),
(eq, ":block", 3),
(eq, ":slip_width", 0),
(neq, ":slip_length", 0),
(assign, ":block", 2),
(else_try),
(display_message, "@b5."),
(eq, ":block", 3),
(neq, ":slip_width", 0),
(neq, ":slip_length", 0),
(assign, ":block", 0),
(assign, ":spire", 2),
(else_try),
(display_message, "@b6."),
(eq, ":block", 3),
(eq, ":slip_width", 0),
(eq, ":slip_length", 0),
(assign, ":block", 0),
(assign, ":spire", 1),
(assign, ":rele", 2),
(else_try),
(display_message, "@b7."),
(ge, ":suit", ":spire"),
(assign, ":suit", 1),
(val_add, ":rele", 1),
(try_begin),
(display_message, "@b8."),
(eq, ":block", 0),
(gt, ":rele", 3),
(val_add, ":spire",2),
(val_add, ":radius",1),
(assign, ":rele", 0),
(else_try),
(display_message, "@b9."),
(eq, ":block", 1),
(try_begin),
(eq, ":rele", 2),
(val_sub, ":spire", 1),
(val_add, ":radius",1),
(else_try),
(display_message, "@b10."),
(this_or_next|eq, ":rele", 1),
(eq, ":rele", 3),
(val_add, ":spire", 1),
(val_sub, ":radius", 1),
(else_try),
(display_message, "@b11."),
(gt, ":rele", 3),
(val_add, ":spire",1),
(val_add, ":radius",2),
(assign, ":rele", 0),
(try_end),
(else_try),
(display_message, "@b12."),
(eq, ":block", 2),
(try_begin),
(display_message, "@b13."),
(eq, ":rele", 2),
(val_add, ":spire", 1),
(val_sub, ":radius", 1),
(else_try),
(display_message, "@b14."),
(this_or_next|eq, ":rele", 1),
(eq, ":rele", 3),
(val_sub, ":spire", 1),
(val_add, ":radius",1),
(else_try),
(display_message, "@b15."),
(gt, ":rele", 3),
(val_add, ":spire", 3),
(assign, ":rele", 0),
(try_end),
(try_end),
(try_end),
я даже вытащил из скрипта и разместил обособленно... ...Вместо того, чтобы заканчиваться на третьем else_try теперь почему-то заканчивался на шестом. В силу каких-таких правил, интересно, такое происходит?
Ясно: надо было и тестировать как скрипт, а не пихать в триггер для миссии (они похоже не рассчитаны на объёмные конструкции).