Допустим, есть команды, с помощью которых можно поместить предмет (или другой объект) в локацию (в другой объект), убрать его из локации или переместить между локациями.
Есть возможность контролировать эти события через обработчики событий, вызываемые в определённые моменты выполнения операции.
Например, в момент вызова команды "Поместить" вызывается обработчик события "ПриДобавленииОбъекта" (с параметром "Время=Перед"). Если данный обработчик возвращает ДА, то предмет помещается в локацию. После чего вызывается обработчик события "ПриДобавленииОбъекта" (с параметром "Время=После"), чтобы отработать возможные события, которые должны произойти после появления предмета в локации.
С командой "Убрать" всё аналогично, а вот с командой "Переместить" — немного сложнее.
По идее, команда "Переместить" состоит из двух команд: "Убрать" и "Поместить", каждая из которых вызывает свои обработчики. Однако для отработки ситуации, когда игрок берёт предмет из сундука, а он у него выскальзывает из рук и падает на пол, может оказаться полезным обработчик "ПриПеремещенииОбъекта", который должен вызываться после команды "Убрать", но перед командой "Поместить", и в случае необходимости прервать команду "Переместить".
Есть у кого какие идеи на этот счёт?
Неактивен
Olegus t.Gl. написал:
Есть возможность контролировать эти события через обработчики событий, вызываемые в определённые моменты выполнения операции.
Ну, в информе ровно так и сделано. Есть события before и after для любой команды. Кроме того, в них можно прекратить выполнение команды в любом из них, заместить стандартный текст и т.п.
Почитай мануал по информу, много интересного.
Неактивен