Онлайн-справочник по самым часто задаваемым вопросам из темы "Как сделать?" на форуме QSP.su
5.1. Как сделать так, чтобы не писать один и тот же код в каждой локации?
В: Как сделать так, чтобы не писать один и тот же код в каждой локации?
О:
В QSP есть возможность использовать различные служебные локации, которые позволяют автоматизировать выполнение определённых задач. В том числе и выполнение одинакового кода при переходе с локации на локацию.
Допустим, нам нужно, чтобы при переходе на новую локацию в окне дополнительного описания выводилось её название. Чтобы сделать это, мы могли бы на каждой локации написать такой код:
clr
! выводим название текущей локации в окно доп.описания
pl $curloc
Но мы воспользуемся локацией-обработчиком перехода на новую локацию. Для этого, в первую очередь, необходимо создать саму локацию-обработчик. Создаём локацию, и называем её, например, "при_переходе". Название может быть совершенно любым, выбирайте то, которое вам удобней.
Далее необходимо указать плееру, какую локацию он должен использовать как локацию-обработчик перехода на новую локацию. Для этого в системную переменную `$onnewloc` необходимо поместить название созданной нами локации. Пишем, например на самой первой локации в игре:
Теперь на локации "при_переходе" пишем наш код, и проверяем, как работает.
Обратите внимание. Сначала выполняется код локации, на которую был осуществлён переход, а затем только код локации-обработчика перехода.
Поэтому если в основной локации происходит вывод на экран значений, например так:
А в локации-обработчике перехода на новую локацию стоит код, увеличивающий значение переменной `health`:
health=health+10
end
На экране появится старое значение переменной `health`, хотя по факту оно будет уже новым.