<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>https://wiki.appsalutecreator.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Podkor</id>
	<title>wiki.appsalutecreator.com - Вклад участника [ru]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.appsalutecreator.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Podkor"/>
	<link rel="alternate" type="text/html" href="https://wiki.appsalutecreator.com/index.php?title=%D0%A1%D0%BB%D1%83%D0%B6%D0%B5%D0%B1%D0%BD%D0%B0%D1%8F:%D0%92%D0%BA%D0%BB%D0%B0%D0%B4/Podkor"/>
	<updated>2026-10-17T03:41:14Z</updated>
	<subtitle>Вклад участника</subtitle>
	<generator>MediaWiki 1.31.15</generator>
	<entry>
		<id>https://wiki.appsalutecreator.com/index.php?title=Machine&amp;diff=5295</id>
		<title>Machine</title>
		<link rel="alternate" type="text/html" href="https://wiki.appsalutecreator.com/index.php?title=Machine&amp;diff=5295"/>
		<updated>2013-12-20T07:49:39Z</updated>

		<summary type="html">&lt;p&gt;Podkor: /* init */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC right}}&lt;br /&gt;
'''Машина состояний''' (state machine) позволяет описывать сложное поведение игровых объектов. Для машин с типовым набором состояний и поведений вводятся отдельные типы объектов. Например, кнопка, по своей сути, является машиной состояний.&lt;br /&gt;
&lt;br /&gt;
== Введение ==&lt;br /&gt;
&lt;br /&gt;
Логика поведения машины разбивается на отдельные узлы (состояния). Машина всегда находится строго в одном состоянии. Переход из одного состояния в другое происходит либо в результате внешнего воздействия на машину, либо в результате окончания некоторых процессов протекающих внутри неё&lt;br /&gt;
&lt;br /&gt;
Любая машина состояний может быть изображена в виде графа с кружочками и стрелками. У машины всегда активно строго одно состояние (ниже это изображено на левом рисунке темным кружком):&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
[[Файл:def_states.png]]&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
Машина состояний не обладает памятью. Это означает, что для анализа того, что произойдет в данном состоянии, неважно как мы в него попали, и какова была предыстория переходов. Важно, только, что мы находимся в этом состоянии. Такое отсутствие памяти упрощает анализ логики машины, так как каждый раз мы концентрируемся на одном конкретном состоянии, а всю логику работы разбиваем на отдельные кирпичики-состояния.&lt;br /&gt;
&lt;br /&gt;
Выше на правом рисунке изображено некоторое состояние. При входе в него, происходит инициализация состояния. Если на объект оказываются внешние воздействия, то он может покинуть состояние. Наконец, внутри состояния могут работать различные процессы.&lt;br /&gt;
&lt;br /&gt;
Все команды состояния, разбиваются на три группы:&lt;br /&gt;
* '''[[#Инициализация|Инициализация]]''':&lt;br /&gt;
** '''[[#draw|draw]]''' - установка графического ресурса;&lt;br /&gt;
** '''[[#init|init]]''' - инициализация параметров машины (координаты и т.п.);&lt;br /&gt;
** '''[[#set|set]]''' - установка состояния другого объекта;&lt;br /&gt;
** '''[[#play|play]]''' - проиграть звук;&lt;br /&gt;
** '''[[#var|var]]''' - переменная, которой присваивается значение параметра объекта;&lt;br /&gt;
** '''[[#buy|buy]]''' - запуск процедуры in-app покупки;&lt;br /&gt;
** '''[[#download|download]]''' - запуск процедуры закачки контента.&lt;br /&gt;
* '''[[#Процессы|Процессы]]''':&lt;br /&gt;
** '''[[#wait|wait]]''' - задержка по времени;&lt;br /&gt;
** '''[[#move|move]]''' - равномерное движение;&lt;br /&gt;
** '''[[#rot|rot]]''' - вращение вокруг точки пивота;&lt;br /&gt;
** '''[[#alpha|alpha]]''' - изменение прозрачности;&lt;br /&gt;
** '''[[#scale|scale]]''' - изменение размера;&lt;br /&gt;
** '''[[#phys|phys]]''' - ускоренное движение;&lt;br /&gt;
** '''[[#spline|spline]]''' - движение по сплайну (по кривой).&lt;br /&gt;
* '''[[#Воздействия|Воздействия]]''':&lt;br /&gt;
** '''[[#click|click]]''' - что делать при клике на машине;&lt;br /&gt;
** '''[[#drop|drop]]''' - на машине отпущена клавиша мыши;&lt;br /&gt;
** '''[[#drag|drag]]''' - машину схватили и тащат;&lt;br /&gt;
** '''[[#throw|throw]]''' - машину схватили и кинули;&lt;br /&gt;
** '''[[#apply|apply]]''' - сработает при пересечении машины с линией или объектом;&lt;br /&gt;
** '''[[#touch_in|touch_in]]''' - наведение мыши/пальца на машину, если палец &amp;quot;тащат&amp;quot; по экрану;&lt;br /&gt;
** '''[[#touch_out|touch_out]]''' - выведение мыши из машины, если палец &amp;quot;тащат&amp;quot; по экрану;&lt;br /&gt;
** '''[[#touch_up|touch_up]]''' - отжатие мыши от машины;&lt;br /&gt;
** '''[[#mouse_in|mouse_in]]''' - наведение мыши на машину даже если не нажата кнопка мыши;&lt;br /&gt;
** '''[[#mouse_out|mouse_out]]''' - выведение мыши из машины даже если не нажата кнопка мыши.&lt;br /&gt;
&lt;br /&gt;
Кроме этого, есть команда '''[[#if|if]]''', вызываемая другими командами. В ней описываются некоторые логические условия, выполнение которых говорит команде (которая вызвала этот '''if'''), что можно завершать работу. Для разных команд использование этого параметра несколько '''отличается'''!&lt;br /&gt;
&lt;br /&gt;
Начальные понятия и методы работы с машинами состояний находятся в [[Learning|уроках]],&lt;br /&gt;
начиная с [[Checkbox как машина состояний|третьего]].&lt;br /&gt;
&lt;br /&gt;
== Свойства ==&lt;br /&gt;
&lt;br /&gt;
Общие для всех объектов свойства описаны в документе [[Object|Object]].&lt;br /&gt;
Дополнительные свойства:&lt;br /&gt;
&lt;br /&gt;
* '''Состояние''' - Состояние в котором будет находиться машина при инициализации. Если ничего не указано - первое состояние в списке состояний.&lt;br /&gt;
* '''Хранить нажатость''' - нужно ли сбрасывать нажатость при изменении состояния.&lt;br /&gt;
* '''res''' - графический ресурс машины. Может отсутствовать. Перетягивается из редактора ресурсов(поле должно быть в состоянии редактирования).&lt;br /&gt;
* '''states''' - По двойному клику, или по нажатию на кнопку с тремя точками открывается список состояний.&lt;br /&gt;
* '''прокликиваемая''' - 0 - машина не пропускает клик, 1 - машина пропускает клик, 2 - машина обрабатывает клик и пропускает его дальше.&lt;br /&gt;
&lt;br /&gt;
== Инициализация ==&lt;br /&gt;
&lt;br /&gt;
При попадании в состояние, сразу выполняются команды инициализации init, draw, set, buy, var. Если в этих командах нет параметра break, они все выполняются до запуска процессов. Параметр break (со значением 1) прерывает выполнение команд инициализации данного типа. Их можно перезапустить по окончанию команд процессов.&lt;br /&gt;
&lt;br /&gt;
=== draw ===&lt;br /&gt;
&lt;br /&gt;
Команда определяет графический ресурс (картинку, которую надо рисовать в данном состоянии). Её параметры:&lt;br /&gt;
&lt;br /&gt;
* '''res''' - ресурс картинки (перетаскивается из редактора ресурсов);&lt;br /&gt;
* '''f''' - начальный кадр;&lt;br /&gt;
* '''ft''' - длительность кадра в миллисекундах;&lt;br /&gt;
* '''loop''' - число повторов (зацикливаний анимации); если -1, то бесконечно; отсутствует или 0 - будет проигран одина раз;&lt;br /&gt;
* '''rev''' - играть анимацию в обратном порядке; 0 - прямой порядок проигрывания, 1 - обратный порядок проигрывания;&lt;br /&gt;
* '''go''' - перейти в состояние;&lt;br /&gt;
* '''if''' - номер (начиная с нуля) команды [[#if|if]] для условия перехода; можно использовать логические операторы (см. [[#if|if]]);&lt;br /&gt;
* '''break''' - прервать команды.&lt;br /&gt;
&lt;br /&gt;
Пустая команда draw (без параметров) &amp;quot;сбрасывает&amp;quot; текущую картинку и в этом состоянии ничего рисоваться не будет. Если в общих параметрах объекта (в базовой панеле свойств) задан ресурс рисования, и он во всех состояниях одинаков, то его можно в состоянии не задавать.&lt;br /&gt;
&lt;br /&gt;
Если параметра loop нет, кадры анимации проиграются один раз. Чтобы зациклить их, необходимо установить loop=-1 или нужное число раз. Аналогично параметру loop других команд, первый раз draw выполняется в любом случае. Дальнейшие её повторы определяются значением loop. Однако, в отличие от других команд, loop повторяет только '''данную''' команду draw (даже если она не первая).&lt;br /&gt;
Для работы loop '''необходимо''' чтобы в редакторе ресурсов в настройках анимации '''было отключено''' зацикливание(looped).&lt;br /&gt;
&amp;lt;br&amp;gt;Если есть анимация открывающейся и закрывающейся книги (коробки, двери и т.д.) не обязательно подгружать в проект две анимации, можно использовать одну, но запускать ее в обратном порядке, для этого есть параметр '''rev'''.&lt;br /&gt;
&lt;br /&gt;
=== init ===&lt;br /&gt;
&lt;br /&gt;
Инициализация параметров данной машины&lt;br /&gt;
&lt;br /&gt;
* '''x''','''y''' - координата точки пивота относительно сцены или родительского объекта;&lt;br /&gt;
* '''sx''','''sy''' - масштаб машины по осям (если 1, то это исходный размер; 0.5 - в два раза меньше);&lt;br /&gt;
* '''ang''' - угол поворота в градусах; отчитывается вниз от оси x, или вверх, если отрицательный;&lt;br /&gt;
* '''v''' - скорость для команды move&lt;br /&gt;
* '''vr''' - угловая скорость для команды rot&lt;br /&gt;
* '''vx''','''vy''' - начальная скорость для команды phys&lt;br /&gt;
* '''ax''','''ay''' - ускорение для команды phys&lt;br /&gt;
* '''z координата''' - координата машины по z.&lt;br /&gt;
* '''z приращение''' - приращение координаты машины по z относительно текущего&lt;br /&gt;
* '''vis''' - видимость - видимость машины (1 - видима, 0 - невидима)&lt;br /&gt;
* '''показать рейтинг''' - значение 1 означает, что при выполнении этого инита будет показано окно iOS рейтинга&lt;br /&gt;
Если на девайсе была нажата кнопка &amp;quot;отрейтинговать&amp;quot;, то в опции запишется параметр rating значение 1, если нажата кнопка &amp;quot;позже&amp;quot; - rating 2, &amp;quot;никогда&amp;quot; - rating 3&lt;br /&gt;
* '''закрыть приложение''' - значение 1 означает, что при выполнении этого инита приложение будет закрыто&lt;br /&gt;
* '''перезагрузить лэйаут''' - значение 1 означает, что при выполнении этого инита будет перезагружен лэйаут&lt;br /&gt;
* '''вернуться назад''' - начение 1 означает, что при выполнении этого инита произойдет возврат на предыдущий экран&lt;br /&gt;
* '''реклама AdMob''' - 1 - показать, 0 - спрятать, -1 - не изменять состояние&lt;br /&gt;
* '''прокликиваемая''' - если 1, то картинка прозрачна для клика мышкой (пропускает объектам под ней). Если 2, то клик обрабатывается, но передается дальше&lt;br /&gt;
* '''курсор''' - меняет текущий курсор мыши на указанный графический ресурс. Перетягивается из редактора ресурсов, поле должно быть в состоянии редактирования.&lt;br /&gt;
* '''if''' - номер (начиная с нуля) команды [[#if|if]] для условия выполнения; можно использовать логические операторы (см. [[#if|if]]);&lt;br /&gt;
* '''break''' - прервать команды.&lt;br /&gt;
&lt;br /&gt;
Так же, как и при инициализации картинки ('''draw'''), вызов команды ('''init''') переопределяет только те параметры, которые в ней указаны. Остальные параметры (заданные в других состояниях или в общих свойствах объекта) остаются без изменений&lt;br /&gt;
&lt;br /&gt;
=== set ===&lt;br /&gt;
&lt;br /&gt;
Перевод другого объекта в некоторое состояние или изменение его параметров.&lt;br /&gt;
&lt;br /&gt;
* '''obj''' - изменяемый объект (выбирается из списка объектов);&lt;br /&gt;
* '''st''' - состояние в которое переводится объект.&lt;br /&gt;
* '''scr_param''' - глобальный либо текущий экран, параметры которого меняем&lt;br /&gt;
* '''scr_state''' - экран, состояние которого меняем&lt;br /&gt;
* '''parent''' - Объект, который будет установлен в качестве родителя объекту из obj. Объект obj будет оторван от текущего своего родителя и добавлен в детей объекта parent&lt;br /&gt;
* '''par''' - параметр объекта для установки, используется вместе с val, val_obj, val_txt, val_scr.&lt;br /&gt;
* '''val''' - значение параметра объекта для установки&lt;br /&gt;
* '''round''' - округлить значение, записываемое в val&lt;br /&gt;
* '''val_obj''' - id объекта, будет записано в в par&lt;br /&gt;
* '''val_txt''' - id текста, будет записано в в par&lt;br /&gt;
* '''val_scr''' - id экрана, будет записано в в par&lt;br /&gt;
* '''val_res''' - Новое значение графического ресурса (перетаскивается из редактора ресурсов). (пока не работает)&lt;br /&gt;
* '''var''' - имя переменной данной машины, значение которой присваивается в параметр par  объекта obj&lt;br /&gt;
* '''scr''' - экран на который мы хотим перейти&lt;br /&gt;
* '''user''' - 1 - сохранять значения для текущего пользователя. Для всех типов объектов кроме options этот флаг игнорируется&lt;br /&gt;
* '''if''' - номер (начиная с нуля) команды [[#if|if]] при выполнении которого происходит отработка команды set. &lt;br /&gt;
* '''break''' - прервать выполнение команд set на этой команде (запустить их снова можно из команд процессов).&lt;br /&gt;
&lt;br /&gt;
Так как все объекты (не только машины) имеют состояния, то при помощи команды set можно их менять. Стоит обратить внимание на то, что когда в параметрах (любых команд) встречается st, речь идет о состоянии другого объекта, а если go, то данной машины состояний.&lt;br /&gt;
&lt;br /&gt;
=== play ===&lt;br /&gt;
&lt;br /&gt;
Проиграть звук.&lt;br /&gt;
&lt;br /&gt;
*'''snd''' - короткий звук (перетаскивается из редактора ресурсов);&lt;br /&gt;
*'''voice''' - голос (запускается как звук, но без цикла и с громкостью голоса) (перетаскивается из редактора ресурсов);&lt;br /&gt;
*'''mus''' - длинный звук (перетаскивается из редактора ресурсов);&lt;br /&gt;
*'''preload''' - указанный звук будет загружен в память, но не будет проигрываться прямо сейчас. Для ускорения его старта потом;&lt;br /&gt;
*'''loop''' - зациклить звук (звуки);&lt;br /&gt;
*'''mus_stop''' - остановить текущую музыку (''mus_stop=1'');&lt;br /&gt;
*'''volume''' - установить громкость для всех звуком данной машины - тех что уже играют и тех, что будут запущены впоследствии;&lt;br /&gt;
*'''if''' - номер (начиная с нуля) условия перехода [[#if|if]].&lt;br /&gt;
&lt;br /&gt;
Особенности примененияния:&lt;br /&gt;
&lt;br /&gt;
*Короткий звук (''snd'') нельзя запустить в первом (инитном) состоянии машины. Для того, чтобы запустить звук сразу при загрузке экрана, нужно в первом состоянии машины записать мгновенный переход во второе состояние мамашины (например, команда ''wait'', поле ''go'', в поле выбрать второе состояние), а во втором состоянии уже запустить звук. Если звук нужно зациклить и проигрывать какое-то количество раз (''loop=1,2,3,..,n'') или бесконечно (''loop=-1''), то нужно проследить чтобы состояние, в котором запускается звук, не вызывалось повторно во время проигрывания звука, иначе возникнет наложение звуков. Если во время проигрывания звука машина меняет свое состояние, звук продолжает играть. Если в одной машине почти одновременно воспроизводится несколько звуков, то они прерывают друг друга. Если каждый звук воспроизводится в отдельной машине, то они звучат параллельно.&lt;br /&gt;
*Длинный звук (''mus'')- музыка. На экране не может воспроизводится несколько длинных звуков одновременно. Любой запуск длинного звука независимо от того, в какой машине он осуществляется, будет прекращать проигрывание предыдущего звука. Музыка, которая проигрывается на глобальном экране, проигрывается на всех экранах проекта.&lt;br /&gt;
&lt;br /&gt;
=== var ===&lt;br /&gt;
&lt;br /&gt;
Переменная, которой присваивается значение параметра объекта&lt;br /&gt;
&lt;br /&gt;
*'''name''' - имя переменной;&lt;br /&gt;
*'''obj''' - объект, используемый далее;&lt;br /&gt;
*'''par''' - имя параметра, значение которого присваивается переменной;&lt;br /&gt;
*'''val''' - значение переменной, если отсутствуют obj и par;&lt;br /&gt;
*'''user''' - если стоит &amp;quot;1&amp;quot;, то будет считываться с текущего профиля в опциях&lt;br /&gt;
*'''func''' - в выпадающем списке можно выбрать функцию (Например, random - возвращает целое случайное число из диапазона. Диапазон случайных чисел в этом случае задается аргументами функции).&lt;br /&gt;
*'''arg1''' - аргумент функции&lt;br /&gt;
*'''arg2''' - аргумент функции&lt;br /&gt;
&lt;br /&gt;
Обозначенная переменная существует (может использоваться) только в текущем состоянии. Переменная может определятся в одном состоянии только один раз. Если созданной переменной нужно изменить значение в рамках состояния, это можно сделать через другую переменную или через параметр опций ([[Options]]). Если ее значение нужно использовать в другом состоянии, то оно присваивается параметру опций, а затем заново считывается в новом состоянии. Переменные можно указывать в поле ''val'' с другими математическими действиями и цифрами, при этом каждое действие заключать в скобки. Если в поле ''val'' указать имя переменной ''А'' без скобок - воспримется строка ''А'', если указать в скобках - воспримется значение переменной.&lt;br /&gt;
&lt;br /&gt;
=== buy ===&lt;br /&gt;
&lt;br /&gt;
При переходе в состояние, данная команда открывает системное окно с предложением совершить in-app покупку. В зависимости от действий игрока, покупка может произойти (успех) или не произойти (провал).&lt;br /&gt;
&lt;br /&gt;
* '''id покупки''' - внутренний id покупки для приложения, указывается в объекте [[Store]];&lt;br /&gt;
* '''объект(успех)''' - объект, которому сообщается об удачной покупке;&lt;br /&gt;
* '''состояние(успех)''' - состояние в которое переводится выбранный объект в случае успешной покупки;&lt;br /&gt;
* '''объект(провал)''' - объект, которому сообщается о неудачной покупке;&lt;br /&gt;
* '''состояние(провал)''' - состояние в которое переводится объект в случае неудачной покупки.&lt;br /&gt;
&lt;br /&gt;
=== download ===&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
При переходе в состояние будет совершена попытку закачать контент.&lt;br /&gt;
* '''url''' - ссылка на zip архив с контентом в интернете.&lt;br /&gt;
* '''объект успех''' - объект, которому в случае успешной закачки будет задаваться указанное состояние.&lt;br /&gt;
* '''состояние (успех)''' - состояние, которое будет устанавливаться выше указанному объекту, в случае успешной закачки.&lt;br /&gt;
* '''объект (провал)''' -объект, которому, в случае неудачи закачки, будет устанавливаться указанное состояние.&lt;br /&gt;
* '''состояние (провал)''' - состояние, которое, в случае неудачи закачки,будет устанавливаться выше указанному объекту.&lt;br /&gt;
* '''счетчик прогресса''' - объект, типа счетчик, который отображает прогресс закачки контента. Крайне желательно, что бы он измерялся в диапазоне от 0 до 100.&lt;br /&gt;
 &lt;br /&gt;
Существует несколько причин при которых вызывается состояние &amp;quot;провал&amp;quot;. Для того что бы сообщить пользователю, по какой именно причине возник провал закачки, следует идентифицировать причины провала. Это возможно сделать с помощью параметра &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
downloadErrCode&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Ниже приведены значение параметра которые помогут вывести нужное текстовое сообщение :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GCUSTOM_ERROR_CODE_ERROR_UNKNOWN   = 1,    //!&amp;lt; ошибка неклассифицирована&lt;br /&gt;
    GCUSTOM_ERROR_CODE_WIFI_DISABLED   = 2,    //!&amp;lt; отключен WIFI&lt;br /&gt;
    GCUSTOM_ERROR_CODE_SDCARD_UNAVAILABLE = 3,    //!&amp;lt; SD-карта недоступна&lt;br /&gt;
    GCUSTOM_ERROR_CODE_SDCARD_FULL   = 4,    //!&amp;lt; SD-карта переполнена перед закачкой&lt;br /&gt;
    GCUSTOM_ERROR_CODE_UNZIP_FAIL   = 5     //!&amp;lt; ошибка при распаковки пака (скорее всего на SD-карте не хватает места для распаковки &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Процессы ==&lt;br /&gt;
&lt;br /&gt;
Все команды процессов, кроме параметров описанных ниже, могут содержать параметры, совпадающие с именами других команд. В этих параметрах указывается номер (начиная с нуля) команды, которую надо запустить на выполнение, после окончания действия данной команды процесса.&lt;br /&gt;
&lt;br /&gt;
Если в команде процесса есть условие '''[[#if|if]]''', то после окончания работы команды она ждет пока это условие не выполнится. Только после этого переходит к следующей команде этого же типа&lt;br /&gt;
или в другое состояние (если есть параметр go).&lt;br /&gt;
Исключением является команда wait, которая '''не''' ждёт срабатывания '''[[#if|if]]'''. Если он по окончанию wait сработал, то происходит переходит в другое состояние, если есть параметр go.&lt;br /&gt;
Если параметра go нет, то в любом случае запускается следующий wait (т.е. if относится только к переходу go).&lt;br /&gt;
&lt;br /&gt;
=== wait ===&lt;br /&gt;
 &lt;br /&gt;
Команда паузы (временной задержки). Если параметра '''t''' нет, то срабатывает сразу.&lt;br /&gt;
Может также использоваться для логических ветвлений, случайных переходов в другие состояния и т.д.&lt;br /&gt;
&lt;br /&gt;
* '''t''' - длительность выполнения команды в ms;&lt;br /&gt;
* '''dt''' - интервал от t-dt до t+dt, внутри которого команда может быть случайно прервана (при t&amp;gt;t+dt прерывается в любом случае);&lt;br /&gt;
* '''p''' - вероятность срабатывания перехода в состояние, указываемое параметром go;&lt;br /&gt;
* '''go''' - состояние, в которое нужно перейти поле окончания времени и срабатывания условия [[#if|if]], если оно указано;&lt;br /&gt;
* '''if''' - номер (начиная с нуля) команды [[#if|if]], при выполнении которой происходит переход go;&lt;br /&gt;
* '''loop''' - зациклить команды;&lt;br /&gt;
* '''break''' - прервать выполнение команд wait на этой команде (запустить их снова можно из команд процессов).&lt;br /&gt;
&lt;br /&gt;
Простейший набор параметров команды wait выглядит следующим образом:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;wait t=&amp;quot;1000&amp;quot; go=&amp;quot;next&amp;quot;/&amp;gt;    // ждем 1000ms и покидаем состояние&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Для программирования объектов со случайным поведением можно использовать последовательность команд wait с параметром вероятности перехода p (от 0 до 1):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;wait t=&amp;quot;100&amp;quot; p=&amp;quot;0.5&amp;quot; go=&amp;quot;st1&amp;quot;/&amp;gt; // через t с вероятностью 1/2 перейдет в st1&lt;br /&gt;
&amp;lt;wait go=&amp;quot;st2&amp;quot;/&amp;gt; // иначе,  перейдем в st2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Этот же синтаксис позволяет делать состояния с различным временем жизни:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;wait t=&amp;quot;100&amp;quot; p=&amp;quot;0.5&amp;quot; go=&amp;quot;next&amp;quot;/&amp;gt; // с вероятностью 1/2 живем 100ms&lt;br /&gt;
&amp;lt;wait t=&amp;quot;100&amp;quot; go=&amp;quot;next&amp;quot;/&amp;gt;       // или 200ms&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Впрочем, последнюю задачу можно решить при помощи указывания интервала dt, внутри которого произойдет окончание команды. Так, состояние, живущее от 800 до 1200ms, реализуется следующим образом:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;wait t=&amp;quot;1000&amp;quot; dt=&amp;quot;200&amp;quot; go=&amp;quot;next&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== move ===&lt;br /&gt;
&lt;br /&gt;
Перемещение по сцене:&lt;br /&gt;
* '''tx''', '''ty''' - целевые координаты в пикселях, к которым должен переместиться объект;&lt;br /&gt;
* '''dx''', '''dy''' - величина смещения от текущей (если есть - tx,ty игнорируются); можно задавать смесь tx, dy или dx,ty;&lt;br /&gt;
* '''v''' - скороcть перемещения в пикселях в секунду; для фреймовой анимации, например, ходьбы скорость рассчитывается исходя из длительности одного кадра и числа кадров на фазу движения. Поэтому, в этом случае, удобнее задавать скорость;&lt;br /&gt;
* '''t''' - время перемещения (v игнорируется);&lt;br /&gt;
* '''go''' - новое состояние - Состояние в которое нужно перейти после окончания времени;&lt;br /&gt;
* '''if''' - номер (начиная с нуля) команды [[#if|if]], при выполнении которой происходит переход go; команда ждет срабатывания условия, и не запускает следующую команду move, пока if не выполнится; &lt;br /&gt;
* '''loop'''  - зациклить команды - Начать выполнение команд движения с первой команды;&lt;br /&gt;
* '''break''' - прервать команды - Прервать выполнение команд move на этой команде (запустить их снова можно из команд процессов).&lt;br /&gt;
&lt;br /&gt;
В большинстве команд процессов, связанных с движением, величина изменения может быть задана в абсолютных или относительных величинах. Так, могут быть указаны целевые координаты tx, ty в которые надо переместиться, или смещение dx, dy относительно текущего положения объекта.&lt;br /&gt;
&lt;br /&gt;
Аналогично, скорость перемещения регулируется, либо явным заданием времени выполнения команды t, либо скоростью v. Исходя из требуемого расстояния, по этой скорости вычисляется необходимое время. Скорость задается в пикселях за cекунду (а не миллисекунду!)&lt;br /&gt;
&lt;br /&gt;
=== rot ===&lt;br /&gt;
&lt;br /&gt;
Вращение объекта вокруг точки пивота с координатами px,py. Эти координаты задаются относительно верхнего левого угла объекта в общей секции описания параметров объекта или командой init в данном состоянии.&lt;br /&gt;
* '''ta''' - целевой угол поворота объекта;&lt;br /&gt;
* '''da''' - на сколько надо повернуться (ta игнорируется);&lt;br /&gt;
* '''v''' - угловая скорость поворота в градусах в секунду;&lt;br /&gt;
* '''t''' - время поворота (v игнорируется);&lt;br /&gt;
* '''go''' - новое состояние - Состояние в которое нужно перейти после окончания времени.&lt;br /&gt;
* '''if''' - номер (начиная с нуля) команды [[#if|if]], при выполнении которой происходит переход go;  команда ждет срабатывания условия, и не запускает следующую команду rot, пока if не выполнится; &lt;br /&gt;
* '''loop'''  - зациклить команды - Начать выполнение команд движения с первой команды;&lt;br /&gt;
* '''break''' - прервать команды - Прервать выполнение команд rot на этой команде (запустить их снова можно из команд процессов).&lt;br /&gt;
&lt;br /&gt;
Угол отсчитывается от оси x. Если он положителен, то поворот происходит по часовой стрелке. Если отрицательный - против часовой.&lt;br /&gt;
&lt;br /&gt;
=== alpha ===&lt;br /&gt;
&lt;br /&gt;
Изменение прозрачности объекта. Меняется от 0 (полностью прозрачен) до 1 (непрозрачен)&lt;br /&gt;
* '''ta''' - целевая прозрачность&lt;br /&gt;
* '''da''' - на сколько надо изменить прозрачность от текущей (ta игнорируется)&lt;br /&gt;
* '''v''' - скорость изменения прозрачности (в долях единицы в ms)&lt;br /&gt;
* '''t''' - время изменения (v игнорируется)&lt;br /&gt;
* '''go''' - новое состояние - Состояние в которое нужно перейти после окончания времени.&lt;br /&gt;
* '''if''' - номер (начиная с нуля) команды [[#if|if]], при выполнении которой происходит переход go;  команда ждет срабатывания условия, и не запускает следующую команду alpha, пока if не выполнится; &lt;br /&gt;
* '''loop'''  - зациклить команды - Начать выполнение команд alpha с первой команды.&lt;br /&gt;
* '''break''' - прервать команды - Прервать выполнение команд alpha на этой команде (запустить их снова можно из команд процессов).&lt;br /&gt;
&lt;br /&gt;
Если у объекта прозрачность ''al=0.00'', то он невидим для всякого взаимодействия. Если у объекта прозрачность ''al=0.01'', то он видим для клика, но невидим для дропа(команда drop на объект не видит объект с прозрачностью ''0.01''). Если у объекта ''al=0.02'', то он видим и для клика, и для дропа.&lt;br /&gt;
&lt;br /&gt;
=== scale ===&lt;br /&gt;
&lt;br /&gt;
Изменение размеров объекта&lt;br /&gt;
* '''tx''', '''ty''' - целевой масштаб по каждой оси&lt;br /&gt;
* '''dx''', '''dy''' - на сколько изменить масштаб по каждой оси&lt;br /&gt;
* '''v''' - скорость изменения масштаба (в долях единицы в сек.)&lt;br /&gt;
* '''t''' - длительность выполнения команды (v игнорируется)&lt;br /&gt;
* '''go''' - новое состояние - Состояние в которое нужно перейти после окончания времени.&lt;br /&gt;
* '''if''' - номер (начиная с нуля) команды [[#if|if]], при выполнении которой происходит переход go;  команда ждет срабатывания условия, и не запускает следующую команду scale, пока if не выполнится; &lt;br /&gt;
* '''loop'''  - зациклить команды - Начать выполнение команд scale с первой команды.&lt;br /&gt;
* '''break''' - прервать команды - Прервать выполнение команд scale на этой команде (запустить их сново можно из команд процессов).&lt;br /&gt;
&lt;br /&gt;
=== phys ===&lt;br /&gt;
&lt;br /&gt;
Команда phys позволяет имитировать простую физику. В ней задается начальная скорость и действующая на объект сила (ускорение).&lt;br /&gt;
&lt;br /&gt;
* '''vx''', '''vy''' - начальная скорость&lt;br /&gt;
* '''ax''', '''ay''' - величина ускорения по каждой оси&lt;br /&gt;
* '''tvx''', '''tvy''' - целевая скорость&lt;br /&gt;
* '''tx''', '''ty''' - целевая координата&lt;br /&gt;
* '''go''' - новое состояние - Состояние в которое нужно перейти после окончания времени.&lt;br /&gt;
* '''if''' - номер (начиная с нуля) команды [[#if|if]], при выполнении которой происходит переход go;  команда ждет срабатывания условия, и не запускает следующую команду phys, пока if не выполнится; &lt;br /&gt;
* '''loop''' - зациклить команды - Начать выполнение команд phys с первой команды.&lt;br /&gt;
* '''break''' - прервать команды - Прервать выполнение команд phys на этой команде (запустить их снова можно из команд процессов). &lt;br /&gt;
&lt;br /&gt;
Рассмотрим подпрыгивающий мячик, который при касании с землей деформируется (вертикально сплюскивается). Это можно сделать в 3 состояния (падаем, касаемся и взлетаем). Первоначально мячик находится в координте y=-100, и имеет высоту картинки w=60. Падает он до координаты ty=0. При касании с землёй, мяч сжимается на 20 процентов (sy=0.8). При этом его центр должен опуститься на dy=0.8*w/2 = 24.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;st id=&amp;quot;down&amp;quot;&amp;gt;                                    // падаем&lt;br /&gt;
    &amp;lt;phys vy=&amp;quot;0&amp;quot; ay=&amp;quot;20&amp;quot; ty=&amp;quot;0&amp;quot; go=&amp;quot;touch&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/st&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;st id=&amp;quot;touch&amp;quot;&amp;gt;                                   // касаемся земли&lt;br /&gt;
    &amp;lt;move dy=&amp;quot;24&amp;quot; t=&amp;quot;300&amp;quot;/&amp;gt;                       // опускаем центр при сжатии&lt;br /&gt;
    &amp;lt;scale ty=&amp;quot;0.8&amp;quot; t=&amp;quot;300&amp;quot;/&amp;gt;                     // сжимаемся&lt;br /&gt;
    &amp;lt;move dy=&amp;quot;-24&amp;quot; t=&amp;quot;300&amp;quot;/&amp;gt;                      // поднимаем центр при разжатии&lt;br /&gt;
    &amp;lt;scale ty=&amp;quot;1&amp;quot; t=&amp;quot;300&amp;quot; go=&amp;quot;up&amp;quot;/&amp;gt;               // разжимаемся&lt;br /&gt;
&amp;lt;/st&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;st id=&amp;quot;up&amp;quot;&amp;gt;                                      // взлетаем&lt;br /&gt;
    &amp;lt;phys vy=&amp;quot;0&amp;quot; ty=&amp;quot;-200&amp;quot; go=&amp;quot;down&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/st&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Напомним, что если объект имеет начальную скорость взлета, равную v=sqrt(2*ay*h), то он подпрыгнет на высоту h. Однако, в данном случае, вместо задания начальной скорости при взлете, мы задаем целевую координату (ty), до которой мяч должен подпрыгнуть.&lt;br /&gt;
&lt;br /&gt;
=== spline ===&lt;br /&gt;
&lt;br /&gt;
Сплайн позволяет перемещать машину по заранее заданной траектории.&lt;br /&gt;
&lt;br /&gt;
====Параметры====&lt;br /&gt;
&lt;br /&gt;
*'''key''' - точки сплайна по которым движется &lt;br /&gt;
*'''t''' - время движения по траектории&lt;br /&gt;
*'''go''' - по окончанию переход в состояние&lt;br /&gt;
*'''if''' - условие перехода&lt;br /&gt;
*'''loop''' - количество повторений&lt;br /&gt;
*'''break''' - прервать команды на этой&lt;br /&gt;
*'''wait''' - номер запускаемого действия&lt;br /&gt;
*'''init''' - номер запускаемого действия&lt;br /&gt;
*'''alpha''' - номер запускаемого действия&lt;br /&gt;
*'''rot''' - номер запускаемого действия&lt;br /&gt;
*'''move''' - номер запускаемого действия&lt;br /&gt;
*'''set''' - номер запускаемого действия&lt;br /&gt;
*'''phys''' - номер запускаемого действия&lt;br /&gt;
&lt;br /&gt;
====Построение сплайна====&lt;br /&gt;
&lt;br /&gt;
# в состоянии машины добавляем правой кнопкой мыши действие &amp;quot;spline&amp;quot;&lt;br /&gt;
# добавляем минимально необходимые параметры: '''key''' и '''t''', указываем время движения в '''t'''&lt;br /&gt;
# выделяем для редактирования поле '''key'''&lt;br /&gt;
# записываем координаты точек через запятую, сначала x потом y, например: -211,-248,-151,-248,-91,-247,59,-246,60,101,60,159,1,190&lt;br /&gt;
Если записали все координаты вручную, то можно сохранить и проверять.&lt;br /&gt;
Или можно в окне списка состояний нажимаем на кнопку &amp;quot;build spline&amp;quot; (справа вверху).&lt;br /&gt;
[[Файл:Btn spline.jpg|500px]]&lt;br /&gt;
&lt;br /&gt;
Окно с списком состояний закроется, появится дополнительная панель с настройками сплайна и появится возможность указывать мышкой по экрану точки для сплайна.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Spline panel.jpg|500px]]&lt;br /&gt;
&lt;br /&gt;
Точки сплайна указываются кликом левой кнопки мыши по экрану.&lt;br /&gt;
&lt;br /&gt;
Возможности редактирования:&lt;br /&gt;
&lt;br /&gt;
'''режимы:'''&lt;br /&gt;
*'''add''' - по нажатию левой кнопкой мыши по экрану - будет добавлена новая точка, которая соеденится с предидущей&lt;br /&gt;
*'''select''' - по нажатию левой кнопкой мыши по точке сплайна появится возможность отредактировать её положение перетащив её или поменяв её координаты в полях x и у&lt;br /&gt;
*'''delete''' - по нажатию левой кнопкой мыши по точке сплайна точка удалится&lt;br /&gt;
&lt;br /&gt;
Чтобы удалить все точки сплайна необходимо нажать на кнопку &amp;quot;'''delete all knots'''&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Сохранить сплайн можно нажав на кнопку &amp;quot;'''Save spline'''&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Дополнительные сведения====&lt;br /&gt;
&lt;br /&gt;
* Время движения между двумя соседними точками всегда одинаково, то есть чем дальше друг от друга соседние точки, тем быстрее будет двигаться объект, чем ближе - тем медленней.&lt;br /&gt;
&lt;br /&gt;
== Воздействия ==&lt;br /&gt;
&lt;br /&gt;
=== click ===&lt;br /&gt;
&lt;br /&gt;
Команда вызывается, если на объект кликнули мышкой. Срабатывает на её нажатие.&lt;br /&gt;
* '''go''' - состояние в которое при выполнении команды надо перейти (если if нет, то в любом случае);&lt;br /&gt;
* '''if''' - номер  (начиная с нуля) команды условия [[#if|if]], при срабатывании которого, происходит переход go.&lt;br /&gt;
&lt;br /&gt;
По клику машина записывает координаты клика в параметры: clickX, clickY.&lt;br /&gt;
&lt;br /&gt;
=== touch_in ===&lt;br /&gt;
&lt;br /&gt;
Наведение мыши/пальца на машину, если палец &amp;quot;тащат&amp;quot; по экрану.&lt;br /&gt;
* '''go''' - состояние в которое при выполнении команды нужно перейти (если if нет, то в любом случае);&lt;br /&gt;
* '''if''' - номер (начиная с нуля) команды условия [[#if|if]], при срабатывании которого, происходит переход ''go''.&lt;br /&gt;
&lt;br /&gt;
=== touch_out ===&lt;br /&gt;
Выведение мыши/пальца из машины, если палец &amp;quot;тащат&amp;quot; по экрану.&lt;br /&gt;
* '''go''' - состояние в которое при клике нужно перейти;&lt;br /&gt;
* '''if''' - номер (начиная с нуля) команды условия [[#if|if]], при котором срабатывает переход ''go''.&lt;br /&gt;
&lt;br /&gt;
=== touch_up ===&lt;br /&gt;
&lt;br /&gt;
Отжатие мыши от машины&lt;br /&gt;
&lt;br /&gt;
* '''go''' - состояние в которое при отжатии мыши нужно перейти;&lt;br /&gt;
* '''if''' - номер (начиная с нуля) команды условия [[#if|if]], при котором срабатывает переход ''go''.&lt;br /&gt;
&lt;br /&gt;
=== mouse_in ===&lt;br /&gt;
&lt;br /&gt;
Срабатывает при наведение мыши/пальца на машину даже если не нажата кнопка мыши, работает на desktop-ных системах (OSX, Windows)&lt;br /&gt;
* '''go''' - состояние в которое при выполнении команды нужно перейти (если if нет, то в любом случае);&lt;br /&gt;
* '''if''' - номер (начиная с нуля) команды условия [[#if|if]], при срабатывании которого, происходит переход ''go''.&lt;br /&gt;
&lt;br /&gt;
=== mouse_out ===&lt;br /&gt;
Срабатывает при выведение мыши/пальца из машины даже если не нажата кнопка мыши, работает на desktop-ных системах (OSX, Windows)&lt;br /&gt;
* '''go''' - состояние в которое при выполнении команды нужно перейти (если if нет, то в любом случае);&lt;br /&gt;
* '''if''' - номер (начиная с нуля) команды условия [[#if|if]], при срабатывании которого, происходит переход ''go''.&lt;br /&gt;
&lt;br /&gt;
=== drag ===&lt;br /&gt;
&lt;br /&gt;
Данная команда позволяет &amp;quot;таскать&amp;quot; объект по сцене нажав и удерживая клавишу мишки или (палец в случае сенсорного устройства) на нем.Так же есть возможность ограничить разрешенную область таскания, за пределы которой  объект вытащить невозможно. [[Файл:drag.jpg|right]]&lt;br /&gt;
* '''x1''' - разрешено таскать, когда координата объекта правее;&lt;br /&gt;
* '''x2''' - разрешено таскать, когда координата объекта левее;&lt;br /&gt;
* '''y1''' - разрешено таскать, когда координата объекта ниже;&lt;br /&gt;
* '''y2''' - разрешено таскать, когда координата объекта выше;&lt;br /&gt;
* '''if''' - номер команды условия (начиная с нуля) разрешения таскания;&lt;br /&gt;
* '''obj''' - объект у которого надо изменить состояние;&lt;br /&gt;
* '''st'''  - новое состояние объекта obj;&lt;br /&gt;
* '''за пивот''' - &amp;quot;да&amp;quot; - таскать объект за пивот, &amp;quot;нет&amp;quot; - за ту точку, за которую схватили&lt;br /&gt;
&lt;br /&gt;
=== dragRot ===&lt;br /&gt;
&lt;br /&gt;
Данная команда позволяет вращать объект вокруг точки пивота.  Нажав и удерживая клавишу мишки или палец (в случае сенсорного устройства) на нем, мы можем вращать его по часовой либо против часовой стрелки. При многократном вращении вокруг своей оси значение его угла не накапливается, а обнуляется выходя за границы [360 ; -360] градусов. [[Файл:dragRot.jpg|right]]&lt;br /&gt;
* '''if''' - номер команды условия (начиная с нуля) разрешения таскания;&lt;br /&gt;
* '''obj''' - объект у которого надо изменить состояние;&lt;br /&gt;
* '''st'''  - новое состояние объекта obj;&lt;br /&gt;
&lt;br /&gt;
=== drop ===&lt;br /&gt;
&lt;br /&gt;
Если нажатая кнопка мышки отпускается, вызвается эта команда. Обычно она используется в связке с командой drag&lt;br /&gt;
* '''obj''' - объект, на который надо уронить таскаемый объект;&lt;br /&gt;
* '''go''' - состояние в которое переходим при отпускании мышки;&lt;br /&gt;
* '''if''' - номер (начиная с нуля) условия [[#if|if]] разрешения бросания.&lt;br /&gt;
&lt;br /&gt;
Рассмотрим совместное применение команд drag и drop на следующей задаче. Пусть есть ключ и ящик. Ключ можно взять мышкой и перетащить, бросив на ящик. Ящик при этом должен постепенно стать прозрачным, а ключ уменьшиться до нуля. Машина состояний для ключа выглядит следующим образом:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;st id=&amp;quot;drag&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;drag x1=&amp;quot;-350&amp;quot; x2=&amp;quot;350&amp;quot; y1=&amp;quot;-250&amp;quot; y2=&amp;quot;250&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;drop obj=&amp;quot;box&amp;quot; go=&amp;quot;open&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/st&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;st id=&amp;quot;open&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;set obj=&amp;quot;box&amp;quot; st=&amp;quot;open&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;scale tx=&amp;quot;0.01&amp;quot; ty=&amp;quot;0.01&amp;quot; t=&amp;quot;500&amp;quot; go=&amp;quot;hide&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/st&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;st id=&amp;quot;hide&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;init x=&amp;quot;268&amp;quot; y=&amp;quot;30&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;scale tx=&amp;quot;1&amp;quot; ty=&amp;quot;1&amp;quot; t=&amp;quot;500&amp;quot; go=&amp;quot;drag&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/st&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Ящик:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;st id=&amp;quot;close&amp;quot;&amp;gt;                        // начальное состояние ящика&lt;br /&gt;
    &amp;lt;init al=&amp;quot;1&amp;quot;/&amp;gt;                     // если его кто-то сюда переведет - он появится.&lt;br /&gt;
&amp;lt;/st&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;st id=&amp;quot;open&amp;quot;&amp;gt;              &lt;br /&gt;
    &amp;lt;alpha ta=&amp;quot;0&amp;quot; t=&amp;quot;500&amp;quot;/&amp;gt;            // исчезает по прозрачности за 500 ms&lt;br /&gt;
&amp;lt;/st&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== throw ===&lt;br /&gt;
 &lt;br /&gt;
Если на объект наступили мышкой, не отпуская кнопки, мышку оттащили и затем отпустили, вызывается команда throw со следующими параметрами:&lt;br /&gt;
* '''go''' - состояние, в которое, при клике, надо перейти;&lt;br /&gt;
* '''if''' - номер (начиная с нуля) команды [[#if|if]] разрешения бросания;&lt;br /&gt;
* '''force''' - получаемая скорость равна разнице пискелей от начала бросания (мышь нажата) до его конца (мышь отжата), умноженная на этот параметр. По умолчанию он равен 1.&lt;br /&gt;
&lt;br /&gt;
Сработав, эта команда задает начальные значения скорости для команды phys, поэтому должна использоваться совместно с ней (см. ниже пример).&lt;br /&gt;
&lt;br /&gt;
=== apply ===&lt;br /&gt;
&lt;br /&gt;
Вызывается, если данная машина пересеклась с другой. Обычно используется в совокупности с throw, move, phys, drag.&lt;br /&gt;
* '''obj''' - сработает , если пересеклись с этим объектом;&lt;br /&gt;
* '''x1''' - сработает, если центр объекта левее этого x-ка;&lt;br /&gt;
* '''x2''' - сработает, если центр объекта правее этого x-ка;&lt;br /&gt;
* '''y1''' - сработает, если центр объекта выше этого y-ка;&lt;br /&gt;
* '''y2''' - сработает, если центр объекта ниже этого y-ка;&lt;br /&gt;
* '''rm''' - радиус этой машины (если rm=0, то она считается прямоугольной)&lt;br /&gt;
* '''ro''' - радиус объекта obj (если ro=0, то он считается прямоугольным)&lt;br /&gt;
* '''st''' - состояние, в которое надо перевести объект obj&lt;br /&gt;
* '''go''' - состояние, в которое надо перейти при срабатывании;&lt;br /&gt;
* '''if''' - номер (начиная с нуля) команды условия [[#if|if]] разрешения применения команды apply.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Апплай.png|500px]]&lt;br /&gt;
&lt;br /&gt;
Блок схема работы '''apply'''&lt;br /&gt;
&lt;br /&gt;
[[Файл:Блок схема apply.png|500px]]&lt;br /&gt;
&lt;br /&gt;
* Сначала у нас проверяется  координаты '''x1''', '''x2''', '''y1''', '''y2'''.&lt;br /&gt;
* Далее проверяет если '''obj'''&lt;br /&gt;
* Если '''obj''' нет, то идёт проверку, и выдаёт результат&lt;br /&gt;
(если при этом если '''x1''', '''x2''', '''y1''', '''y2''' нет, то они считаются по ширине и высоте всего экрана.)&lt;br /&gt;
* Если есть '''obj''', то проверяет есть ли радиусы '''rm''', '''ro'''.&lt;br /&gt;
* Если он есть, то значит у нас '''apply''' по кругам&lt;br /&gt;
* Если нет, то проверяем наличие '''x1''', '''x2''', '''y1''', '''y2'''.&lt;br /&gt;
* Если они есть, то проверка и результат.&lt;br /&gt;
* Если их нет, то проверка идёт по шейпам объектов, и выдаётся результат/&lt;br /&gt;
Если не будет стоять ни каких галочек, то проверка будет идти по шейпам объектов.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Пусть, например, есть снаряд, который при помощи мышки надо кинуть в &amp;quot;тыкву&amp;quot;. Если мы промахнулись, снаряд должен вернуться обратно, а с тыквой ничего не произойти. Если мы в тыкву попадаем, снаряд также возвращается, а тыква &amp;quot;взрывается&amp;quot;:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;st id=&amp;quot;trow&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;init x=&amp;quot;-350&amp;quot; y=&amp;quot;150&amp;quot;/&amp;gt;                      // начальное положение&lt;br /&gt;
    &amp;lt;throw go=&amp;quot;fly&amp;quot;/&amp;gt;                             // бросаем&lt;br /&gt;
&amp;lt;/st&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;st id=&amp;quot;fly&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;phys ay=&amp;quot;100&amp;quot;/&amp;gt;                              // летим&lt;br /&gt;
    &amp;lt;apply y2=&amp;quot;300&amp;quot; go=&amp;quot;throw&amp;quot;/&amp;gt;                  // с землей&lt;br /&gt;
    &amp;lt;apply obj=&amp;quot;тыква&amp;quot; rm=&amp;quot;8&amp;quot; ro=&amp;quot;10&amp;quot; st=&amp;quot;bang&amp;quot;/&amp;gt; // с тыквой&lt;br /&gt;
&amp;lt;/st&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Условия ==&lt;br /&gt;
&lt;br /&gt;
=== if ===&lt;br /&gt;
&lt;br /&gt;
В состоянии может быть произвольное число команд if. Их номера (начиная с нуля) указываются&lt;br /&gt;
в параметре if других команд. Эти номера можно соединять при помощи логических связок:&lt;br /&gt;
* '''&amp;amp;''' - логическое '''и''' (вместо значка '''&amp;amp;''' можно использовать запятую ''',''');&lt;br /&gt;
* '''|''' - логическое '''или''';&lt;br /&gt;
* '''!''' - логическое '''не'''.&lt;br /&gt;
Пример записи логического выражения в поле if некоторой команды: '''(1&amp;amp;2)|(3&amp;amp;(!4))''',&lt;br /&gt;
что означает: выполняется if под номером 1 и под номером 2, или под номером 3 и не под номером 4.&lt;br /&gt;
&lt;br /&gt;
Логические связки используются также как математической логике или любом языке программирования. &lt;br /&gt;
Так:&lt;br /&gt;
* A '''&amp;amp;''' B - истинно, если истинны оба условия A и B;&lt;br /&gt;
* A '''|''' B - истинно, если истинно хотя бы одно условие (или оба);&lt;br /&gt;
* '''!''' А - истинно, если условие A ложно.&lt;br /&gt;
Скобки в логическом выражении определяют приоритет (порядок) выполнения логических операций.&lt;br /&gt;
Отметим несколько тождеств, справедливых при формировании логических высказываний:&lt;br /&gt;
* !(A &amp;amp; B) = (!A) | (!B)&lt;br /&gt;
* !(A | B) = (!A) &amp;amp; (!B)&lt;br /&gt;
* !(!A) = A&lt;br /&gt;
&lt;br /&gt;
Если при формировании условия (ниже) есть несколько проверок, то они соединены логическим '''и'''.&lt;br /&gt;
Т.е., если хотя бы одна из них не выполняется, то считается, что условие не выполнилось.&lt;br /&gt;
&lt;br /&gt;
Параметры команды:&lt;br /&gt;
* '''obj''' - находится ли объект obj в состоянии st или имеет ли его параметр par значение val;&lt;br /&gt;
* '''st''' - имя состояния в котором может находиться объект obj;&lt;br /&gt;
* '''par''' - имя параметра объекта obj, значение которого сравнивается с полем val;&lt;br /&gt;
* '''val''' - значение параметра par, которое проверяется у объекта obj;&lt;br /&gt;
* '''op''' - операция сравнения par op val. Если опреации нет, то предполагается проверка на равенство par=val. Иначе используются операторы:&lt;br /&gt;
** '''&amp;lt;''' - меньше (par &amp;lt; val);&lt;br /&gt;
** '''&amp;gt;''' - больше (par &amp;gt; val);&lt;br /&gt;
** '''!=''' - не равно (par != val);&lt;br /&gt;
** '''&amp;lt;&amp;gt;''' - не равно (par &amp;lt;&amp;gt; val);&lt;br /&gt;
** '''&amp;gt;=''' - больше или равно (par &amp;gt;= val);&lt;br /&gt;
** '''&amp;lt;=''' - меньше или равно (par &amp;lt;= val);&lt;br /&gt;
* '''curScr''' - если текущий экран совпадает с этим, то условие выполнилось;&lt;br /&gt;
* '''prScr''' - если предыдущий экран совпадает с этим, то условие выполнилось;&lt;br /&gt;
* '''wasScr''' - если был (когда либо) этот экран, то условие выполнилось.&lt;br /&gt;
* '''buy''' - был ли куплен данный inn-app (проверяется флаг поля в объекте [[Options]]);&lt;br /&gt;
* '''url''' - валиден (правилен и может быть запущен) ли данный интернет-адрес;&lt;br /&gt;
* '''is_mus''' - играет ли сейчас музыка (значение 1);&lt;br /&gt;
* '''guest''' - объект который установил состояние (используется вместо параметра obj). Если указанный объект не менял состояние этой машины, то условие не срабатывает.&lt;br /&gt;
&lt;br /&gt;
Если использовать obj, par, val, то будет происходить проверка на равенство значения параметра объекта и значения записаного в поле val.&lt;br /&gt;
Если же использовать obj, par, op, val, то будет происходить проверка в соответствии с операцией сравнения значения параметра объекта и значения записанного в поле val.&lt;br /&gt;
&lt;br /&gt;
Для проверки текущего значения прозрачности у объекта можно воспользоваться параметром ''cur_al''&lt;br /&gt;
&lt;br /&gt;
== Математика ==&lt;br /&gt;
Математика в appsalute creator представлена 4-мя основными операциями: (плюс),  (минус),  (умножить),  (поделить) &amp;lt;br&amp;gt;&lt;br /&gt;
Организована благодаря совместному использованию '''[[#var|var]]''' и '''[[#set|set]]'''. &lt;br /&gt;
=== var ===&lt;br /&gt;
Благодаря использованию '''[[#var|var]]''' существует возможность cчитать любой числовой параметр любого объекта. Например: x - координату какой-то машины, текущее значение любого объекта counter или timer и конечно же считывание значения любого параметра из опций! Каким образом это устроено? Рассмотрим подробнее '''[[#var|var]]''': &amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:VAR.png|right]]&lt;br /&gt;
*'''name''' - здесь выбираем имя для нашей будущей переменной, которой будем оперировать далее&lt;br /&gt;
*'''obj''' - выбирается объект, параметры которого мы хотим считать&lt;br /&gt;
*'''par''' - параметр, который нужно вычитать из объекта, указанного выше&lt;br /&gt;
*'''val''' - указывается числовое значение, которое будет установлено по умолчанию в случае отсутствия obj и par&lt;br /&gt;
*'''user''' - если стоит &amp;quot;1&amp;quot;, то будет считываться с текущего профиля в опциях&lt;br /&gt;
На изображении справа можно наблюдать каким образом организован '''[[#var|var]]'''. В данном случае объявлена переменная x_cor, которая cчитывает x-координату объекта actor_1, при этом cчитывание переменной происходит из текущего профиля, так, как в поле user установлено значение равное &amp;quot;1&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== set ===&lt;br /&gt;
[[Файл:SET.png|right]]&lt;br /&gt;
Использование '''[[#var|var]]''' без '''[[#set|set]]''' не имеет смысла. Так, как переменная создается, но не используется дальше. Рассмотрим следующий пример, где вычитаем x - координату из одного объекта и сохраним ее в опции, предварительно увеличив ее на 50 единиц (в данном случае 50 пикселей).&lt;br /&gt;
На рисунке справа можно наблюдать, каким образом это сделано. В состоянии '''init''' объявляется переменная '''x_cor''', которая cчитывает координату '''x''' из объекта '''actor_1''', таким образом в переменную '''x_cor''' запишется положение по '''x''' объекта '''actor_1'''. Поле '''user''' в данном случае в '''1''' не обязательно устанавливать, так как работа ведется с машинами, а не с опциями. Если бы на месте '''actor_1''' оказался объект '''options''', то это было бы просто необходимо, иначе программа считает значение не из профиля. Далее в '''[[#set|set]]''' выбран объект '''options''',  в параметр '''x_position''' которого будет сохранятся значение переменной '''x_cor''' увеличенной на 50. В поле '''round''' идет округление вычисляемого значения, если оно установлено в 1. Поле '''user ''' установлено в 1, это значит, что параметр '''x_position''' будет сохранен в профиль. После это выполняется сохранение опций путем задания объекту '''options''' состояния '''save'''.&amp;lt;br&amp;gt;&lt;br /&gt;
! ! !ВАЖНО: чтобы выполнить какие-то действия с '''[[#var|var]]''' его обязательно нужно указывать в поле '''val''' в '''set''', при этом, если он используется, то все выражение должно стоять в скобках. Если в поле '''val''' не используется переменная, то скобки необязательны.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Существует также возможность использовать '''[[#var|var]]''' совместно с '''[[#if|if]]''', а также '''[[#var|var]]''' с '''[[#move|move]]'''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== var и if ===&lt;br /&gt;
[[Файл:IF.png|right]]&lt;br /&gt;
При подробном рассмотрении '''[[#if|if]]''' можно заметить, что в нем есть поле '''val''', соответственно в этом поле можно указать переменную. Таким образом в поле '''val''' необязательно указывать константу, а можно указать какую-то переменную, которая может постоянно изменяться. Например, существует два объекта, один находится состоянии покоя, а другой находится в движении. При этом первый объект (тот, который в состоянии покоя) постоянно опрашивает положение второго объекта, и в случае, если у объекта, который движется, '''х''' координата  равна '''х''' координате первого объекта, то первый объект входит в состояние, где он начинает свое движение. На рисунке показан объект, который находится в состоянии покоя, рассмотрим его состояния:&amp;lt;br&amp;gt;&lt;br /&gt;
В данном объекте существует два состояния: '''init''' и '''move'''. В '''init''' объект опрашивает другой объект и в случае, когда условие срабатывает, то переходит в состояние '''move''', где начинает свое движение.&lt;br /&gt;
В '''init''' создаем переменную, в которую записываем положение по '''x''' объекта '''actor_2''', в '''if''' проверяется условие на соответствие координат объектов '''actor_1''' и '''actor_2''', в данном случае координата объекта '''actor_2''' представлена в виде переменной '''x_cor'''. Если условие выполняется, то происходит переход в состояние '''move''', если нет, то заново проходим состояние '''init''' и повторяем вышеописанную последовательность действий.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== var и move ===&lt;br /&gt;
Также с помощью '''[[#var|var]]''' есть возможность указать целевые координаты в '''[[#move|move]]'''. То есть, не обязательно указывать целевые координаты в виде констант, их можно указать теперь с помощью переменных. При использовании '''[[#var|var]]''' и '''[[#move|move]]''' можно организовать обмен двух объектов местами с анимацией движения. Для этого необходимо определять какой объект нажат первым, а какой вторым, сохранять их координаты через объект '''options''' и только потом менять их местами. На рисунке можно увидет, как это организовано.&lt;br /&gt;
[[Файл:var_move.png|1000px|thumb|center|]]&lt;br /&gt;
Рассмотрим подробнее состояние данной машины:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* '''init'''&amp;lt;br&amp;gt;&lt;br /&gt;
В этом состоянии ожидаем клик на объект и обнуляем параметр, который отвечает за то, какой по счету объект сейчас нажат. Так, как при обмене объектов, если мы делаем это по клику, важно знать, по какому кликнули нажали первым, а по какому вторым.&lt;br /&gt;
* '''check'''&amp;lt;br&amp;gt;&lt;br /&gt;
Проверяется параметр '''number''', если он равен '''0''', то это значит, что еще ничего не кликали и мы переходим в состояние, где в опции записываются координаты этого объекта, который считается нажатым первым. Если не равен '''0''', то считается, что этот объект нажат вторым и переходит в состояние, где в опции записываются координаты этого объекта, который считается нажатым вторым по счету.&lt;br /&gt;
* '''first_object'''&amp;lt;br&amp;gt;&lt;br /&gt;
В этом состоянии записываются координаты объекта в опции. Чтобы записать координаты в опции используются '''[[#var|var]]''' и '''[[#set|set]]''' упоминаемые выше. В опции координаты первого нажатого объекта сохраняются под параметрами '''x_first''' и '''y_first'''. В конце параметру '''number''' присваиваем значение '''1''', чтобы указать, что следующий нажатый объект будет вторым по счету. &lt;br /&gt;
* '''second_object'''&amp;lt;br&amp;gt;&lt;br /&gt;
В этом состоянии объект будет в том случае, если он будет нажатым вторым по счету, то есть после состояния '''check''' объект попадет в это состояние, где он запишет свои текущие координаты под параметрами '''x_second''' и '''y_second'''. Запись координат происходит таким же самым образом, что и в состоянии '''first_object'''. После этого он автоматически переходит в следующее состояние.&lt;br /&gt;
* '''move_first'''&amp;lt;br&amp;gt;&lt;br /&gt;
В этом состоянии объект будет в том случае, если он был нажат первым, поэтому он будет двигаться на место второго нажатого объекта, который сохранил свои координты в параметры'''x_second''' и '''y_second'''. Движение происходит следующим образом: сперва в переменную вычитываем координаты второго объекта, а потом в '''move''' вместо целевых координат записываем переменные, которые обязательно должны быть взяты в скобки.&lt;br /&gt;
* '''move_second'''&amp;lt;br&amp;gt;&lt;br /&gt;
В этом состоянии объект будет в том случае, если он был нажат вторым, поэтому он будет двигаться на место первого нажатого объекта, который сохранил свои координты в параметры '''x_first''' и '''y_first'''. Движение происходит следующим образом: сперва в переменную вычитываем координаты первого объекта, а потом в '''move''' вместо целевых координат записываем переменные, которые обязательно должны быть взяты в скобки.&lt;br /&gt;
&lt;br /&gt;
В результате проделанных манипуляций с машинами по кликам на две машины, они обменяются местами с анимацией движения. Это может быть очень полезным во многих минииграх!!!&lt;br /&gt;
&lt;br /&gt;
=== Важно знать ===&lt;br /&gt;
* Переменная действует в рамках одного состояния, если нужно, чтобы она была глобальной, нужно сохранить ее в опции и потом в нужный момент считывать ее из опций.&lt;br /&gt;
* Если складываем два числа, то в поле '''val''' они должны быть записаны в скобках: (5+3).&lt;br /&gt;
* Если возникает необходимость написать какое-то более сложное арифметическое вычисление, то следует помнить, что на одно действие приходятся одни скобки. Например: (((5+3)\2)*2).&lt;br /&gt;
* Количество открывающих и закрывающих скобок должно быть одинаковым.&lt;br /&gt;
* В скобках можно писать переменную, если она была объявлена выше: (5+a).&lt;br /&gt;
* Переменная может состоять из цифр и букв и знака нижнего подчеркивания.&lt;br /&gt;
* Иногда бывает необходимым использование '''round''' в '''set''', так например, если какой-то параметр получен с помощью арифметических вычислений и потом используется его в каком-то условии, и условие проверяет параметр, как целочисленное значение, то могут возникнуть ошибки. Так, как число будет записано в следующем виде 123.0000 и программа будет считать, что оно не целочисленное, а дробное. И чтобы избавится от лишних нулей  в дробной части следует округлять число.&lt;br /&gt;
* Действия, которые требуют времени, такие как move, rot, wait и другие перестают работать для уменьшения вычислительной нагрузки на устройство.&lt;br /&gt;
* Действия, которые не требуют времени, такие как set, init и другие продолжают функционировать.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Если с помощью переменной менять объекту любой параметр, например, координату X, то она запомнится (запишется как значение по умолчанию).&lt;br /&gt;
Тогда при повторном попадании на экран считается не тот X, который указан в свойствах, а тот, который установлен через переменную.&lt;br /&gt;
Если нужно при ините экрана возвращать начальные значения параметров, то можно сделать это двумя способами:&lt;br /&gt;
- не использовать переменную;&lt;br /&gt;
- создать отдельное состояние, которое будет &amp;quot;вручную&amp;quot; устанавливать начальные значения параметрам при ините экрана.&lt;br /&gt;
Если координата (или другой параметр) меняется другим способом, то будут автоматически при ините экрана подтягиваться значения из свойств объекта.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Примеры применений ===&lt;br /&gt;
С помощью математики можно организовать следующее:&lt;br /&gt;
* динамические опции (изменение звука и музыки с помощью ползунка);&lt;br /&gt;
* анимацию каунтера в играх (по окончанию уровня можно наблюдать, как изменяются очки);&lt;br /&gt;
* подсчет очков (гибкая система подсчета очков);&lt;br /&gt;
* обмен объектов местами (использование var и move)&lt;br /&gt;
* увеличение z-координаты любого объекта (когда необходимо, чтобы нажатый или таскаемый объект был выше других по z);&lt;br /&gt;
* простейший калькулятор;&lt;br /&gt;
* и много других.&lt;br /&gt;
&lt;br /&gt;
== Копирование машины состояния с сохранением ссылки на себя ==&lt;br /&gt;
Довольно часто бывает, что машина состояний ссылается только на глобальные объекты и на саму себя. При этом, если мы просто скопируем объект, он будет ссылаться на свою предыдущую копию. Этого можно избежать, сделав 3 шага:&lt;br /&gt;
1. Переместить объект в отдельную сцену&lt;br /&gt;
2. Скопировать данную сцену(имеется в виду обычное копирование, без ссылки)&lt;br /&gt;
3. Перенести объект и его копию обратно, в нужную сцену&lt;br /&gt;
4. Созданые сцены можно удалить :)&lt;br /&gt;
&lt;br /&gt;
== Random ==&lt;br /&gt;
На момент, когда пишется данная статья, понятие вероятности существует только в команде wait и в текстовом поле(объект [[Text]]) можно показать случайный текст. Однако, и текущей функциональности достаточно, чтобы сделать генератор случайных чисел:&lt;br /&gt;
[[Файл:Random.jpg]]&lt;br /&gt;
Или в виде xml:&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;obj type=&amp;quot;machine&amp;quot; id=&amp;quot;&amp;lt;Вставьте сюда ваш идентификатор объекта&amp;gt;&amp;quot; nm=&amp;quot;random&amp;quot; sync=&amp;quot;1&amp;quot; x=&amp;quot;800&amp;quot; y=&amp;quot;1200&amp;quot; w=&amp;quot;1&amp;quot; h=&amp;quot;1&amp;quot; al=&amp;quot;0&amp;quot; trace=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                &amp;lt;st id=&amp;quot;init&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;369&amp;quot; par=&amp;quot;random.val&amp;quot; val=&amp;quot;0&amp;quot; user=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;369&amp;quot; par=&amp;quot;random.precision&amp;quot; val=&amp;quot;0.01&amp;quot; user=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;369&amp;quot; par=&amp;quot;random.add&amp;quot; val=&amp;quot;1&amp;quot; user=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;369&amp;quot; st=&amp;quot;save&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                &amp;lt;/st&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                &amp;lt;st id=&amp;quot;count&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;369&amp;quot; par=&amp;quot;random.val&amp;quot; val=&amp;quot;0&amp;quot; user=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;369&amp;quot; par=&amp;quot;random.add&amp;quot; val=&amp;quot;1&amp;quot; user=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;369&amp;quot; st=&amp;quot;save&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                    &amp;lt;wait go=&amp;quot;iterate&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                &amp;lt;/st&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                &amp;lt;st id=&amp;quot;iterate&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;add&amp;quot; obj=&amp;quot;369&amp;quot; par=&amp;quot;random.add&amp;quot; user=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;369&amp;quot; par=&amp;quot;random.add&amp;quot; val=&amp;quot;((add)/2)&amp;quot; user=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                    &amp;lt;wait if=&amp;quot;0&amp;quot; go=&amp;quot;complete&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                    &amp;lt;wait p=&amp;quot;0.5&amp;quot; go=&amp;quot;add&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                    &amp;lt;wait go=&amp;quot;iterate&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;369&amp;quot; par=&amp;quot;random.precision&amp;quot; op=&amp;quot;&amp;amp;gt;&amp;quot; val=&amp;quot;(add)&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                &amp;lt;/st&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                &amp;lt;st id=&amp;quot;add&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;add&amp;quot; obj=&amp;quot;369&amp;quot; par=&amp;quot;random.add&amp;quot; user=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;val&amp;quot; obj=&amp;quot;369&amp;quot; par=&amp;quot;random.val&amp;quot; user=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;369&amp;quot; par=&amp;quot;random.val&amp;quot; val=&amp;quot;(add+val)&amp;quot; user=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                    &amp;lt;wait go=&amp;quot;iterate&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                &amp;lt;/st&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                &amp;lt;st id=&amp;quot;complete&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;369&amp;quot; st=&amp;quot;save&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                &amp;lt;/st&amp;gt;&lt;br /&gt;
&lt;br /&gt;
            &amp;lt;/obj&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
прим. Объект с id=&amp;quot;369&amp;quot; - объект типа [[Options]]&lt;br /&gt;
&lt;br /&gt;
=== Краткое описание алгоритма ===&lt;br /&gt;
1. Задаются точность и обнуляется значение(val)&lt;br /&gt;
&lt;br /&gt;
2. Устанавливается добавляемое значение (add)&lt;br /&gt;
&lt;br /&gt;
3. add делится на двое. Если срабатывает wait - add добавляется к val. Если add становится меньше допустимой точности - переходим к п. 4. Если не один из переходов не сработал - повторяем п. 3.&lt;br /&gt;
&lt;br /&gt;
4. Окончание работы объекта, сохранение опций&lt;br /&gt;
&lt;br /&gt;
=== Как пользоваться? ===&lt;br /&gt;
&lt;br /&gt;
1. Задаём переменной Options-&amp;gt;random.precision необходимую точность (обычно 0.01 для игровых проектов достаточно)&lt;br /&gt;
&lt;br /&gt;
2. Переводим объект random в состояние count&lt;br /&gt;
&lt;br /&gt;
3. Ждём определённое время (200 милисекунд, в принципе достаточно, если не успеете - получите результат с меньшей точностью), либо, если уж боитесь - в цикле(переходя wait-ами между 2-мя состояниями) проверяйте перешёл ли random в состояние complete&lt;br /&gt;
&lt;br /&gt;
4. Результат вычислений заносится в переменную Options-&amp;gt;random.val . val принимает значение от 0 до 1 (не включая 1)&lt;br /&gt;
&lt;br /&gt;
=== Какие могут возникнуть проблемы ===&lt;br /&gt;
&lt;br /&gt;
1. Если 2 объекта захотят одновременно вызвать random. Решение проблемы: Создать 2 объекта random. И ещё, обязательно переименовать в каждом объекте группу параметров, в который параметры будут заноситься (Например: random1.val, random2.val).&lt;br /&gt;
&lt;br /&gt;
2. Не следует сохранять в Options промежуточные вычисления, т. к. это очень существенно замедлит вычисления&lt;br /&gt;
&lt;br /&gt;
3. Если машина невидима(vis = 0), то она остаётся функционировать, но частично:&lt;br /&gt;
&lt;br /&gt;
Предположим, что есть машина А, у которой перед загрузкой экрана vis=0, в ней в состоянии по-умолчанию есть движение, init и несколько set-ов на другие объекты. При загрузке экрана выполнятся set-ы, init, но объект двигаться как указано не будет.&lt;br /&gt;
&lt;br /&gt;
Если необходимо чтобы объект двигался невидимым - следует использовать изменение прозрачности машины, или init для перемещения.&lt;br /&gt;
&lt;br /&gt;
== Random 2 ==&lt;br /&gt;
Улучшенный вариант предыдущего генератора случайных чисел ([[Random]]).&lt;br /&gt;
Суть состоит в том, что объект записывает переменные внутрь себя, минуя запись объект [Options].&lt;br /&gt;
[[Файл:Random2.jpg]]&lt;br /&gt;
&lt;br /&gt;
Исходный xml-код имеет вид:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 &amp;lt;obj id=&amp;quot;4759&amp;quot; type=&amp;quot;machine&amp;quot; nm=&amp;quot;random_new&amp;quot; sync=&amp;quot;1&amp;quot; x=&amp;quot;800&amp;quot; y=&amp;quot;1200&amp;quot; w=&amp;quot;1&amp;quot; h=&amp;quot;1&amp;quot; al=&amp;quot;0&amp;quot; trace=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;st id=&amp;quot;init&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;4759&amp;quot; par=&amp;quot;val&amp;quot; val=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;4759&amp;quot; par=&amp;quot;precision&amp;quot; val=&amp;quot;0.01&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;4759&amp;quot; par=&amp;quot;add&amp;quot; val=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/st&amp;gt;&lt;br /&gt;
                &amp;lt;st id=&amp;quot;count&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;4759&amp;quot; par=&amp;quot;val&amp;quot; val=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;4759&amp;quot; par=&amp;quot;add&amp;quot; val=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;wait go=&amp;quot;iterate&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/st&amp;gt;&lt;br /&gt;
                &amp;lt;st id=&amp;quot;iterate&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;add&amp;quot; obj=&amp;quot;4759&amp;quot; par=&amp;quot;add&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;4759&amp;quot; par=&amp;quot;add&amp;quot; val=&amp;quot;((add)/2)&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;wait if=&amp;quot;0&amp;quot; go=&amp;quot;complete&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;wait p=&amp;quot;0.5&amp;quot; go=&amp;quot;add&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;wait go=&amp;quot;iterate&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;4759&amp;quot; par=&amp;quot;precision&amp;quot; op=&amp;quot;&amp;amp;gt;&amp;quot; val=&amp;quot;(add)&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/st&amp;gt;&lt;br /&gt;
                &amp;lt;st id=&amp;quot;add&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;add&amp;quot; obj=&amp;quot;4759&amp;quot; par=&amp;quot;add&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;val&amp;quot; obj=&amp;quot;4759&amp;quot; par=&amp;quot;val&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;4759&amp;quot; par=&amp;quot;val&amp;quot; val=&amp;quot;(add+val)&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;wait go=&amp;quot;iterate&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/st&amp;gt;&lt;br /&gt;
                &amp;lt;st id=&amp;quot;complete&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;/obj&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Краткое описание алгоритма ===&lt;br /&gt;
См. объект [[Random]]&lt;br /&gt;
&lt;br /&gt;
=== Как пользоваться? ===&lt;br /&gt;
См. объект [[Random]]&lt;br /&gt;
&lt;br /&gt;
=== Достоинства и недостатки ===&lt;br /&gt;
Достоинства: можно создавать несколько копий, при этом не нужно лезть внутрь объекта (если хотите иметь несколько генераторов в одном экране, скопируйте генератор в другой экран, а потом перенесите обратно - ссылка внутри объекта на самого себя сохранится).&lt;br /&gt;
&lt;br /&gt;
Недостатки: Как и в случае с объектом Random, нужно выдержать время, чтобы генератор сработал. Таким образом, к генератору может безопасно обращаться только 1 объект.&lt;br /&gt;
&lt;br /&gt;
== Random-псевдо ==&lt;br /&gt;
Генератор псевдослучайных чисел. Быстрый генератор, по сравнению с [[Random2]].&lt;br /&gt;
Суть состоит в том, что последовательность случайных чисел задаётся по формуле:&lt;br /&gt;
&lt;br /&gt;
Хорошее среднее значение (0.47) даёт формула:&lt;br /&gt;
A=10000*i*/(i+1)&lt;br /&gt;
Даллее, от числа А оставляется только дробная часть.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Random_pseudo.jpg]]&lt;br /&gt;
&lt;br /&gt;
Исходный xml-код имеет вид:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 &amp;lt;obj id=&amp;quot;4908&amp;quot; type=&amp;quot;machine&amp;quot; nm=&amp;quot;random_pseudo&amp;quot; sync=&amp;quot;1&amp;quot; x=&amp;quot;800&amp;quot; y=&amp;quot;800&amp;quot; w=&amp;quot;100&amp;quot; h=&amp;quot;100&amp;quot; trace=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;st id=&amp;quot;init&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;4908&amp;quot; par=&amp;quot;index&amp;quot; val=&amp;quot;101&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;4908&amp;quot; par=&amp;quot;val&amp;quot; val=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/st&amp;gt;&lt;br /&gt;
                &amp;lt;st id=&amp;quot;count&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a1&amp;quot; obj=&amp;quot;4908&amp;quot; par=&amp;quot;index&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a&amp;quot; obj=&amp;quot;4908&amp;quot; par=&amp;quot;a&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;ar&amp;quot; obj=&amp;quot;4908&amp;quot; par=&amp;quot;a_round&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;4908&amp;quot; par=&amp;quot;a&amp;quot; val=&amp;quot;(((a1)/(a1+1))*10000)&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;4908&amp;quot; par=&amp;quot;a_round&amp;quot; val=&amp;quot;(a)&amp;quot; round=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;4908&amp;quot; par=&amp;quot;val&amp;quot; val=&amp;quot;(a-ar)&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;4908&amp;quot; par=&amp;quot;index&amp;quot; val=&amp;quot;(a1+1)&amp;quot; if=&amp;quot;(!0)&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;4908&amp;quot; par=&amp;quot;index&amp;quot; val=&amp;quot;101&amp;quot; if=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;4908&amp;quot; par=&amp;quot;index&amp;quot; op=&amp;quot;&amp;amp;gt;&amp;quot; val=&amp;quot;201&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/st&amp;gt;&lt;br /&gt;
            &amp;lt;/obj&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Краткое описание алгоритма ===&lt;br /&gt;
1. Устанавливается начальное значение индекса index=101 (экспериментальное)&lt;br /&gt;
&lt;br /&gt;
2. Подсчитывается значение а= index*10000/(index+1)&lt;br /&gt;
&lt;br /&gt;
3. Отбрасывается целая часть а&lt;br /&gt;
&lt;br /&gt;
4. Запись результата во внутренню переменную val&lt;br /&gt;
&lt;br /&gt;
5. Если индекс стал больше 200- ставим его снова 101.&lt;br /&gt;
&lt;br /&gt;
=== Как пользоваться? ===&lt;br /&gt;
1. Переводим объект random_pseudo в состояние count&lt;br /&gt;
2. Считываем результат из переменной val&lt;br /&gt;
&lt;br /&gt;
=== Какие могут возникнуть проблемы? ===&lt;br /&gt;
Проблема, собственно, только одна - бедность данного генератора, т. к. он имеет всего 100 различных значений. Однако, для производства игр, такого количества вполне достаточно.&lt;br /&gt;
&lt;br /&gt;
=== Достоинства и недостатки ===&lt;br /&gt;
Достоинства: результат достигается обычным переводом в состояние, без применения итераций, благодаря этому, к данному генератору случайных чисел может иметь доступ неограниченное число объектов.&lt;br /&gt;
&lt;br /&gt;
Недостатки: (они уже описаны выше) малое количество выдаваемых значений, цикличность последовательности.&lt;br /&gt;
&lt;br /&gt;
== Guest ==&lt;br /&gt;
&lt;br /&gt;
'''Guest (гость)''' - объект, который перевел машину в текущее состояние. Пример: кнопка ''btn1'' по клику переводит машину ''mch1'' в состояние ''st1'', в этом состоянии у машины ''mch1'' гостем является кнопка ''btn1''. Гостем может быть объект любого типа, если он может менять состояние другому объекту (например: хидден-объект по нахождению может менять состояние объекту, кнопка, машина, пэчворк и т.д.)&lt;br /&gt;
&lt;br /&gt;
В машине состояний можно считывать (проверять) и передавать параметры и состояния гостя. Любое поле ''obj'' в выпадающем списке содержит строку ''guest'', что позволяет работать с гостем, как с любым другим объектом.&lt;br /&gt;
&lt;br /&gt;
=== Пример использования ===&lt;br /&gt;
&lt;br /&gt;
[[Файл:Guest1.jpg|left]]&lt;br /&gt;
Пускай экран содержит 3 кнопки (''btn1'', ''btn2'' и ''btn3'') и одну машину ''mch1''. Нужно сделать так, чтобы по клику на любую из кнопок машина перемещалась в ее координаты и переводила кнопку в состояние ''disable''. Так же по клику на кнопку ''btn2'', машина должна перейти в состояние ''bonus''.&amp;lt;br&amp;gt;&lt;br /&gt;
Всем трем кнопкам по клику пропишем передавать объекту ''mch1'' состояние ''check''.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Создадим в машине три состояния: ''init'' - состояние в котором машина будет находиться по умолчанию, ''check'' - состояние, которое будет вызываться тремя кнопками, в этом состоянии у машины ''mch1'' одна из трех кнопок будет гостем, ''bonus'' - последнее состояние.&amp;lt;br&amp;gt;&lt;br /&gt;
Две команды ''var'' считывают у гостя координаты, т.к. мы не знаем, какая именно кнопка перевела машину ''mch1'' в состояние ''check'', то обращаемся к гостю, а не к кнопкам. За ними следует две команды ''set'', которые передают координаты гостя машине. Еще один ''set'' переводит гостя в состояние ''disable''. И через ''wait'' осуществляется переход в состояние ''bonus'', если гость ''btn2''.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
При смене состояния гость сохраняется, т.е. в состоянии bonus гостем останется btn2.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Если машина изначально сама себе меняет состояния, то у нее нет гостя.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Файл:Guest2.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Массив (Array) ==&lt;br /&gt;
&lt;br /&gt;
В данном объекте реализован массив, имеющий максимальную длинну в 20 элементов.&lt;br /&gt;
&lt;br /&gt;
=== Свойства объекта массив: ===&lt;br /&gt;
&lt;br /&gt;
len - длинна массива. Длинна массива может как считываться, так и записываться. Влияет на количество сохраняемых объектов в Options.&lt;br /&gt;
&lt;br /&gt;
index1 - индекс элемента. (данный массив можно расширить до многомерного и использовать несколько индексов)&lt;br /&gt;
&lt;br /&gt;
val - значение элемента массива, с индексом index1&lt;br /&gt;
&lt;br /&gt;
a1..a20 - внутренние элементы массива(обращаться можно через свойство par объекта). Предполагается, что пользователь редактора к ним обращаться напрямую не будет, однако иногда для удобства полезны.&lt;br /&gt;
&lt;br /&gt;
=== Состояния объекта массив: ===&lt;br /&gt;
&lt;br /&gt;
get - при вызове этого состояния во внутреннюю переменную val записывается значение элемента с индексом index1&lt;br /&gt;
&lt;br /&gt;
set - при вызове этого состояния во внутреннюю переменную a1..a20, соответствующую индексу index1 записывается значение val&lt;br /&gt;
&lt;br /&gt;
load - загрузить значения массива из xml.&lt;br /&gt;
&lt;br /&gt;
save - сохранить элементы массива от 1 до len&lt;br /&gt;
&lt;br /&gt;
=== Как использовать? ===&lt;br /&gt;
&lt;br /&gt;
1. Загружаем массив, переводя объект array в состояние load&lt;br /&gt;
&lt;br /&gt;
2. Записываем значения массива&lt;br /&gt;
&lt;br /&gt;
 а). Задаём значение свойству index1 объекта array (устанавливаем индекс ячейки, в которую будет заноситься число)&lt;br /&gt;
 б). Задаём значение свойству val объекта array (устанавливаем значение, которое будет заноситься в ячейку с индексом index1)&lt;br /&gt;
 в). Переводим объект array в состояние set&lt;br /&gt;
&lt;br /&gt;
3. Считываем значения массива&lt;br /&gt;
 а). Задаём значение свойству index1 объекта array (устанавливаем индекс ячейки, из которой будет считываться число)&lt;br /&gt;
 б). Переводим объект array в состояние get&lt;br /&gt;
 в). Считываем значение из свойства val объекта array&lt;br /&gt;
&lt;br /&gt;
4. Сохраняем массив, переводя объект array в состояние save. Если хотите изменить количество сохраняемых эелментов - предварительно измените параметр len.&lt;br /&gt;
&lt;br /&gt;
=== Копирование объекта ===&lt;br /&gt;
&lt;br /&gt;
При копировании, необходимо заменить в состояниях load и save array.имя_параметра на другое имя. Например, array2.имя_параметра. Копировать следует через использование доп. сцены (см. выше)&lt;br /&gt;
&lt;br /&gt;
=== Достоинства ===&lt;br /&gt;
&lt;br /&gt;
Позволяет избежать необходимости каждый раз создавать большое количество if-ов и set-ов, если необходимо работать с нумерованным списком. Можно один раз создать структуру и копировать её неограниченное количество раз&lt;br /&gt;
&lt;br /&gt;
=== Недостатки ===&lt;br /&gt;
&lt;br /&gt;
Данный объект содержит довольно большое количество кода, поэтому при большом их обилии/длинне может занизить скорость работы сцены и скорость загрузки сцены.&lt;br /&gt;
&lt;br /&gt;
=== Исходный XML код===&lt;br /&gt;
Прим. id=&amp;quot;369&amp;quot; - идентификатор объекта Options, сохраняющего все переменные приложения. id=&amp;quot;7845&amp;quot; - идентификатор объекта&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;obj id=&amp;quot;7845&amp;quot; type=&amp;quot;machine&amp;quot; nm=&amp;quot;array&amp;quot; sync=&amp;quot;1&amp;quot; w=&amp;quot;1&amp;quot; h=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;st id=&amp;quot;init&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;st id=&amp;quot;get&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a1&amp;quot; obj=&amp;quot;7845&amp;quot; par=&amp;quot;a1&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a2&amp;quot; obj=&amp;quot;7845&amp;quot; par=&amp;quot;a2&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a3&amp;quot; obj=&amp;quot;7845&amp;quot; par=&amp;quot;a3&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a4&amp;quot; obj=&amp;quot;7845&amp;quot; par=&amp;quot;a4&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a5&amp;quot; obj=&amp;quot;7845&amp;quot; par=&amp;quot;a5&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a6&amp;quot; obj=&amp;quot;7845&amp;quot; par=&amp;quot;a6&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a7&amp;quot; obj=&amp;quot;7845&amp;quot; par=&amp;quot;a7&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a8&amp;quot; obj=&amp;quot;7845&amp;quot; par=&amp;quot;a8&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a9&amp;quot; obj=&amp;quot;7845&amp;quot; par=&amp;quot;a9&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a10&amp;quot; obj=&amp;quot;7845&amp;quot; par=&amp;quot;a10&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a11&amp;quot; obj=&amp;quot;7845&amp;quot; par=&amp;quot;a11&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a12&amp;quot; obj=&amp;quot;7845&amp;quot; par=&amp;quot;a12&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a13&amp;quot; obj=&amp;quot;7845&amp;quot; par=&amp;quot;a13&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a14&amp;quot; obj=&amp;quot;7845&amp;quot; par=&amp;quot;a14&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a15&amp;quot; obj=&amp;quot;7845&amp;quot; par=&amp;quot;a15&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a16&amp;quot; obj=&amp;quot;7845&amp;quot; par=&amp;quot;a16&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a17&amp;quot; obj=&amp;quot;7845&amp;quot; par=&amp;quot;a17&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a18&amp;quot; obj=&amp;quot;7845&amp;quot; par=&amp;quot;a18&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a19&amp;quot; obj=&amp;quot;7845&amp;quot; par=&amp;quot;a19&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a20&amp;quot; obj=&amp;quot;7845&amp;quot; par=&amp;quot;a20&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;val&amp;quot; val=&amp;quot;(a1)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;val&amp;quot; val=&amp;quot;(a2)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;val&amp;quot; val=&amp;quot;(a3)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;val&amp;quot; val=&amp;quot;(a4)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;3&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;val&amp;quot; val=&amp;quot;(a5)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;4&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;val&amp;quot; val=&amp;quot;(a6)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;5&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;val&amp;quot; val=&amp;quot;(a7)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;6&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;val&amp;quot; val=&amp;quot;(a8)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;7&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;val&amp;quot; val=&amp;quot;(a9)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;8&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;val&amp;quot; val=&amp;quot;(a10)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;9&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;val&amp;quot; val=&amp;quot;(a11)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;10&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;val&amp;quot; val=&amp;quot;(a12)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;11&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;val&amp;quot; val=&amp;quot;(a13)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;12&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;val&amp;quot; val=&amp;quot;(a14)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;13&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;val&amp;quot; val=&amp;quot;(a15)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;14&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;val&amp;quot; val=&amp;quot;(a16)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;15&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;val&amp;quot; val=&amp;quot;(a17)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;16&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;val&amp;quot; val=&amp;quot;(a18)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;17&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;val&amp;quot; val=&amp;quot;(a19)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;18&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;val&amp;quot; val=&amp;quot;(a20)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;19&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;index1&amp;quot; val=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;index1&amp;quot; val=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;index1&amp;quot; val=&amp;quot;3&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;index1&amp;quot; val=&amp;quot;4&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;index1&amp;quot; val=&amp;quot;5&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;index1&amp;quot; val=&amp;quot;6&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;index1&amp;quot; val=&amp;quot;7&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;index1&amp;quot; val=&amp;quot;8&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;index1&amp;quot; val=&amp;quot;9&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;index1&amp;quot; val=&amp;quot;10&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;index1&amp;quot; val=&amp;quot;11&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;index1&amp;quot; val=&amp;quot;12&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;index1&amp;quot; val=&amp;quot;13&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;index1&amp;quot; val=&amp;quot;14&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;index1&amp;quot; val=&amp;quot;15&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;index1&amp;quot; val=&amp;quot;16&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;index1&amp;quot; val=&amp;quot;17&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;index1&amp;quot; val=&amp;quot;18&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;index1&amp;quot; val=&amp;quot;19&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;index1&amp;quot; val=&amp;quot;20&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/st&amp;gt;&lt;br /&gt;
                &amp;lt;st id=&amp;quot;set&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;val&amp;quot; obj=&amp;quot;7845&amp;quot; par=&amp;quot;val&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;a1&amp;quot; val=&amp;quot;(val)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;a2&amp;quot; val=&amp;quot;(val)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;a3&amp;quot; val=&amp;quot;(val)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;a4&amp;quot; val=&amp;quot;(val)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;3&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;a5&amp;quot; val=&amp;quot;(val)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;4&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;a6&amp;quot; val=&amp;quot;(val)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;5&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;a7&amp;quot; val=&amp;quot;(val)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;6&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;a8&amp;quot; val=&amp;quot;(val)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;7&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;a9&amp;quot; val=&amp;quot;(val)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;8&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;a10&amp;quot; val=&amp;quot;(val)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;9&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;a11&amp;quot; val=&amp;quot;(val)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;10&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;a12&amp;quot; val=&amp;quot;(val)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;11&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;a13&amp;quot; val=&amp;quot;(val)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;12&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;a14&amp;quot; val=&amp;quot;(val)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;13&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;a15&amp;quot; val=&amp;quot;(val)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;14&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;a16&amp;quot; val=&amp;quot;(val)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;15&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;a17&amp;quot; val=&amp;quot;(val)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;16&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;a18&amp;quot; val=&amp;quot;(val)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;17&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;a19&amp;quot; val=&amp;quot;(val)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;18&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;a20&amp;quot; val=&amp;quot;(val)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;19&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;index1&amp;quot; val=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;index1&amp;quot; val=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;index1&amp;quot; val=&amp;quot;3&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;index1&amp;quot; val=&amp;quot;4&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;index1&amp;quot; val=&amp;quot;5&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;index1&amp;quot; val=&amp;quot;6&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;index1&amp;quot; val=&amp;quot;7&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;index1&amp;quot; val=&amp;quot;8&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;index1&amp;quot; val=&amp;quot;9&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;index1&amp;quot; val=&amp;quot;10&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;index1&amp;quot; val=&amp;quot;11&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;index1&amp;quot; val=&amp;quot;12&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;index1&amp;quot; val=&amp;quot;13&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;index1&amp;quot; val=&amp;quot;14&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;index1&amp;quot; val=&amp;quot;15&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;index1&amp;quot; val=&amp;quot;16&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;index1&amp;quot; val=&amp;quot;17&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;index1&amp;quot; val=&amp;quot;18&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;index1&amp;quot; val=&amp;quot;19&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;index1&amp;quot; val=&amp;quot;20&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/st&amp;gt;&lt;br /&gt;
                &amp;lt;st id=&amp;quot;load&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a1&amp;quot; obj=&amp;quot;369&amp;quot; par=&amp;quot;array.a1&amp;quot; user=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a2&amp;quot; obj=&amp;quot;369&amp;quot; par=&amp;quot;array.a2&amp;quot; user=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a3&amp;quot; obj=&amp;quot;369&amp;quot; par=&amp;quot;array.a3&amp;quot; user=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a4&amp;quot; obj=&amp;quot;369&amp;quot; par=&amp;quot;array.a4&amp;quot; user=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a5&amp;quot; obj=&amp;quot;369&amp;quot; par=&amp;quot;array.a5&amp;quot; user=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a6&amp;quot; obj=&amp;quot;369&amp;quot; par=&amp;quot;array.a6&amp;quot; user=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a7&amp;quot; obj=&amp;quot;369&amp;quot; par=&amp;quot;array.a7&amp;quot; user=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a8&amp;quot; obj=&amp;quot;369&amp;quot; par=&amp;quot;array.a8&amp;quot; user=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a9&amp;quot; obj=&amp;quot;369&amp;quot; par=&amp;quot;array.a9&amp;quot; user=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a10&amp;quot; obj=&amp;quot;369&amp;quot; par=&amp;quot;array.a10&amp;quot; user=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a11&amp;quot; obj=&amp;quot;369&amp;quot; par=&amp;quot;array.a11&amp;quot; user=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a12&amp;quot; obj=&amp;quot;369&amp;quot; par=&amp;quot;array.a12&amp;quot; user=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a13&amp;quot; obj=&amp;quot;369&amp;quot; par=&amp;quot;array.a13&amp;quot; user=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a14&amp;quot; obj=&amp;quot;369&amp;quot; par=&amp;quot;array.a14&amp;quot; user=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a15&amp;quot; obj=&amp;quot;369&amp;quot; par=&amp;quot;array.a15&amp;quot; user=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a16&amp;quot; obj=&amp;quot;369&amp;quot; par=&amp;quot;array.a16&amp;quot; user=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a17&amp;quot; obj=&amp;quot;369&amp;quot; par=&amp;quot;array.a17&amp;quot; user=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a18&amp;quot; obj=&amp;quot;369&amp;quot; par=&amp;quot;array.a18&amp;quot; user=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a19&amp;quot; obj=&amp;quot;369&amp;quot; par=&amp;quot;array.a19&amp;quot; user=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a20&amp;quot; obj=&amp;quot;369&amp;quot; par=&amp;quot;array.a20&amp;quot; user=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;a1&amp;quot; val=&amp;quot;(a1)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;a2&amp;quot; val=&amp;quot;(a2)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;a3&amp;quot; val=&amp;quot;(a3)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;a4&amp;quot; val=&amp;quot;(a4)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;3&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;a5&amp;quot; val=&amp;quot;(a5)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;4&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;a6&amp;quot; val=&amp;quot;(a6)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;5&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;a7&amp;quot; val=&amp;quot;(a7)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;6&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;a8&amp;quot; val=&amp;quot;(a8)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;7&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;a9&amp;quot; val=&amp;quot;(a9)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;8&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;a10&amp;quot; val=&amp;quot;(a10)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;9&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;a11&amp;quot; val=&amp;quot;(a11)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;10&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;a12&amp;quot; val=&amp;quot;(a12)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;11&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;a13&amp;quot; val=&amp;quot;(a13)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;12&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;a14&amp;quot; val=&amp;quot;(a14)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;13&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;a15&amp;quot; val=&amp;quot;(a15)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;14&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;a16&amp;quot; val=&amp;quot;(a16)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;15&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;a17&amp;quot; val=&amp;quot;(a17)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;16&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;a18&amp;quot; val=&amp;quot;(a18)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;17&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;a19&amp;quot; val=&amp;quot;(a19)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;18&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;a20&amp;quot; val=&amp;quot;(a20)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;19&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;len&amp;quot; op=&amp;quot;&amp;amp;gt;&amp;quot; val=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;len&amp;quot; op=&amp;quot;&amp;amp;gt;&amp;quot; val=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;len&amp;quot; op=&amp;quot;&amp;amp;gt;&amp;quot; val=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;len&amp;quot; op=&amp;quot;&amp;amp;gt;&amp;quot; val=&amp;quot;3&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;len&amp;quot; op=&amp;quot;&amp;amp;gt;&amp;quot; val=&amp;quot;4&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;len&amp;quot; op=&amp;quot;&amp;amp;gt;&amp;quot; val=&amp;quot;5&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;len&amp;quot; op=&amp;quot;&amp;amp;gt;&amp;quot; val=&amp;quot;6&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;len&amp;quot; op=&amp;quot;&amp;amp;gt;&amp;quot; val=&amp;quot;7&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;len&amp;quot; op=&amp;quot;&amp;amp;gt;&amp;quot; val=&amp;quot;8&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;len&amp;quot; op=&amp;quot;&amp;amp;gt;&amp;quot; val=&amp;quot;9&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;len&amp;quot; op=&amp;quot;&amp;amp;gt;&amp;quot; val=&amp;quot;10&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;len&amp;quot; op=&amp;quot;&amp;amp;gt;&amp;quot; val=&amp;quot;11&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;len&amp;quot; op=&amp;quot;&amp;amp;gt;&amp;quot; val=&amp;quot;12&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;len&amp;quot; op=&amp;quot;&amp;amp;gt;&amp;quot; val=&amp;quot;13&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;len&amp;quot; op=&amp;quot;&amp;amp;gt;&amp;quot; val=&amp;quot;14&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;len&amp;quot; op=&amp;quot;&amp;amp;gt;&amp;quot; val=&amp;quot;15&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;len&amp;quot; op=&amp;quot;&amp;amp;gt;&amp;quot; val=&amp;quot;16&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;len&amp;quot; op=&amp;quot;&amp;amp;gt;&amp;quot; val=&amp;quot;17&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;len&amp;quot; op=&amp;quot;&amp;amp;gt;&amp;quot; val=&amp;quot;18&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;len&amp;quot; op=&amp;quot;&amp;amp;gt;&amp;quot; val=&amp;quot;19&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/st&amp;gt;&lt;br /&gt;
                &amp;lt;st id=&amp;quot;save&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;len&amp;quot; obj=&amp;quot;7845&amp;quot; par=&amp;quot;len&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a1&amp;quot; obj=&amp;quot;7845&amp;quot; par=&amp;quot;a1&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a2&amp;quot; obj=&amp;quot;7845&amp;quot; par=&amp;quot;a2&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a3&amp;quot; obj=&amp;quot;7845&amp;quot; par=&amp;quot;a3&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a4&amp;quot; obj=&amp;quot;7845&amp;quot; par=&amp;quot;a4&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a5&amp;quot; obj=&amp;quot;7845&amp;quot; par=&amp;quot;a5&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a6&amp;quot; obj=&amp;quot;7845&amp;quot; par=&amp;quot;a6&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a7&amp;quot; obj=&amp;quot;7845&amp;quot; par=&amp;quot;a7&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a8&amp;quot; obj=&amp;quot;7845&amp;quot; par=&amp;quot;a8&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a9&amp;quot; obj=&amp;quot;7845&amp;quot; par=&amp;quot;a9&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a10&amp;quot; obj=&amp;quot;7845&amp;quot; par=&amp;quot;a10&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a11&amp;quot; obj=&amp;quot;7845&amp;quot; par=&amp;quot;a11&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a12&amp;quot; obj=&amp;quot;7845&amp;quot; par=&amp;quot;a12&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a13&amp;quot; obj=&amp;quot;7845&amp;quot; par=&amp;quot;a13&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a14&amp;quot; obj=&amp;quot;7845&amp;quot; par=&amp;quot;a14&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a15&amp;quot; obj=&amp;quot;7845&amp;quot; par=&amp;quot;a15&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a16&amp;quot; obj=&amp;quot;7845&amp;quot; par=&amp;quot;a16&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a17&amp;quot; obj=&amp;quot;7845&amp;quot; par=&amp;quot;a17&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a18&amp;quot; obj=&amp;quot;7845&amp;quot; par=&amp;quot;a18&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a19&amp;quot; obj=&amp;quot;7845&amp;quot; par=&amp;quot;a19&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a20&amp;quot; obj=&amp;quot;7845&amp;quot; par=&amp;quot;a20&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;369&amp;quot; par=&amp;quot;array.a1&amp;quot; val=&amp;quot;(a1)&amp;quot; round=&amp;quot;1&amp;quot; user=&amp;quot;1&amp;quot; if=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;369&amp;quot; par=&amp;quot;array.a2&amp;quot; val=&amp;quot;(a2)&amp;quot; round=&amp;quot;1&amp;quot; user=&amp;quot;1&amp;quot; if=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;369&amp;quot; par=&amp;quot;array.a3&amp;quot; val=&amp;quot;(a3)&amp;quot; round=&amp;quot;1&amp;quot; user=&amp;quot;1&amp;quot; if=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;369&amp;quot; par=&amp;quot;array.a4&amp;quot; val=&amp;quot;(a4)&amp;quot; round=&amp;quot;1&amp;quot; user=&amp;quot;1&amp;quot; if=&amp;quot;3&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;369&amp;quot; par=&amp;quot;array.a5&amp;quot; val=&amp;quot;(a5)&amp;quot; round=&amp;quot;1&amp;quot; user=&amp;quot;1&amp;quot; if=&amp;quot;4&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;369&amp;quot; par=&amp;quot;array.a6&amp;quot; val=&amp;quot;(a6)&amp;quot; round=&amp;quot;1&amp;quot; user=&amp;quot;1&amp;quot; if=&amp;quot;5&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;369&amp;quot; par=&amp;quot;array.a7&amp;quot; val=&amp;quot;(a7)&amp;quot; round=&amp;quot;1&amp;quot; user=&amp;quot;1&amp;quot; if=&amp;quot;6&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;369&amp;quot; par=&amp;quot;array.a8&amp;quot; val=&amp;quot;(a8)&amp;quot; round=&amp;quot;1&amp;quot; user=&amp;quot;1&amp;quot; if=&amp;quot;7&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;369&amp;quot; par=&amp;quot;array.a9&amp;quot; val=&amp;quot;(a9)&amp;quot; round=&amp;quot;1&amp;quot; user=&amp;quot;1&amp;quot; if=&amp;quot;8&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;369&amp;quot; par=&amp;quot;array.a10&amp;quot; val=&amp;quot;(a10)&amp;quot; round=&amp;quot;1&amp;quot; user=&amp;quot;1&amp;quot; if=&amp;quot;9&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;369&amp;quot; par=&amp;quot;array.a11&amp;quot; val=&amp;quot;(a11)&amp;quot; round=&amp;quot;1&amp;quot; user=&amp;quot;1&amp;quot; if=&amp;quot;10&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;369&amp;quot; par=&amp;quot;array.a12&amp;quot; val=&amp;quot;(a12)&amp;quot; round=&amp;quot;1&amp;quot; user=&amp;quot;1&amp;quot; if=&amp;quot;11&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;369&amp;quot; par=&amp;quot;array.a13&amp;quot; val=&amp;quot;(a13)&amp;quot; round=&amp;quot;1&amp;quot; user=&amp;quot;1&amp;quot; if=&amp;quot;12&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;369&amp;quot; par=&amp;quot;array.a14&amp;quot; val=&amp;quot;(a14)&amp;quot; round=&amp;quot;1&amp;quot; user=&amp;quot;1&amp;quot; if=&amp;quot;13&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;369&amp;quot; par=&amp;quot;array.a15&amp;quot; val=&amp;quot;(a15)&amp;quot; round=&amp;quot;1&amp;quot; user=&amp;quot;1&amp;quot; if=&amp;quot;14&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;369&amp;quot; par=&amp;quot;array.a16&amp;quot; val=&amp;quot;(a16)&amp;quot; round=&amp;quot;1&amp;quot; user=&amp;quot;1&amp;quot; if=&amp;quot;15&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;369&amp;quot; par=&amp;quot;array.a17&amp;quot; val=&amp;quot;(a17)&amp;quot; round=&amp;quot;1&amp;quot; user=&amp;quot;1&amp;quot; if=&amp;quot;16&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;369&amp;quot; par=&amp;quot;array.a18&amp;quot; val=&amp;quot;(a18)&amp;quot; round=&amp;quot;1&amp;quot; user=&amp;quot;1&amp;quot; if=&amp;quot;17&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;369&amp;quot; par=&amp;quot;array.a19&amp;quot; val=&amp;quot;(a19)&amp;quot; round=&amp;quot;1&amp;quot; user=&amp;quot;1&amp;quot; if=&amp;quot;18&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;369&amp;quot; par=&amp;quot;array.a20&amp;quot; val=&amp;quot;(a20)&amp;quot; round=&amp;quot;1&amp;quot; user=&amp;quot;1&amp;quot; if=&amp;quot;19&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;369&amp;quot; par=&amp;quot;array.len&amp;quot; val=&amp;quot;(len)&amp;quot; round=&amp;quot;1&amp;quot; user=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;len&amp;quot; op=&amp;quot;&amp;amp;gt;&amp;quot; val=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;len&amp;quot; op=&amp;quot;&amp;amp;gt;&amp;quot; val=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;len&amp;quot; op=&amp;quot;&amp;amp;gt;&amp;quot; val=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;len&amp;quot; op=&amp;quot;&amp;amp;gt;&amp;quot; val=&amp;quot;3&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;len&amp;quot; op=&amp;quot;&amp;amp;gt;&amp;quot; val=&amp;quot;4&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;len&amp;quot; op=&amp;quot;&amp;amp;gt;&amp;quot; val=&amp;quot;5&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;len&amp;quot; op=&amp;quot;&amp;amp;gt;&amp;quot; val=&amp;quot;6&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;len&amp;quot; op=&amp;quot;&amp;amp;gt;&amp;quot; val=&amp;quot;7&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;len&amp;quot; op=&amp;quot;&amp;amp;gt;&amp;quot; val=&amp;quot;8&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;len&amp;quot; op=&amp;quot;&amp;amp;gt;&amp;quot; val=&amp;quot;9&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;len&amp;quot; op=&amp;quot;&amp;amp;gt;&amp;quot; val=&amp;quot;10&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;len&amp;quot; op=&amp;quot;&amp;amp;gt;&amp;quot; val=&amp;quot;11&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;len&amp;quot; op=&amp;quot;&amp;amp;gt;&amp;quot; val=&amp;quot;12&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;len&amp;quot; op=&amp;quot;&amp;amp;gt;&amp;quot; val=&amp;quot;13&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;len&amp;quot; op=&amp;quot;&amp;amp;gt;&amp;quot; val=&amp;quot;14&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;len&amp;quot; op=&amp;quot;&amp;amp;gt;&amp;quot; val=&amp;quot;15&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;len&amp;quot; op=&amp;quot;&amp;amp;gt;&amp;quot; val=&amp;quot;16&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;len&amp;quot; op=&amp;quot;&amp;amp;gt;&amp;quot; val=&amp;quot;17&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;len&amp;quot; op=&amp;quot;&amp;amp;gt;&amp;quot; val=&amp;quot;18&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;len&amp;quot; op=&amp;quot;&amp;amp;gt;&amp;quot; val=&amp;quot;19&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/st&amp;gt;&lt;br /&gt;
            &amp;lt;/obj&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Машина состояний объекта ===&lt;br /&gt;
[[Файл:array.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Пример использования==&lt;br /&gt;
&lt;br /&gt;
[http://fs5.absolutist.com/files/wikisample/machine.rar Download]&lt;/div&gt;</summary>
		<author><name>Podkor</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.appsalutecreator.com/index.php?title=Button&amp;diff=5294</id>
		<title>Button</title>
		<link rel="alternate" type="text/html" href="https://wiki.appsalutecreator.com/index.php?title=Button&amp;diff=5294"/>
		<updated>2013-12-20T07:48:29Z</updated>

		<summary type="html">&lt;p&gt;Podkor: /* Дополнительные параметры */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC right}}&lt;br /&gt;
'''Общие параметры'''&lt;br /&gt;
(см. описание [[Object|Object]])&lt;br /&gt;
&lt;br /&gt;
*'''[[прокликиваемая]]''' - Если 1, то кнопка прозрачна для клика мышкой (пропускает объектам под ней). Если 2, то кнопка сама обрабатывает клик, но и пропускает его дальше&lt;br /&gt;
*'''память''' - Если 1, то при повторном открытии экрана объект не обновляет свои параметры (помнит текущие параметры, оставшиеся от предыдущего посещения экрана)&lt;br /&gt;
&lt;br /&gt;
== Основные параметры ==&lt;br /&gt;
'''Группа - внешний вид'''&lt;br /&gt;
[[Файл:But.png|250px|right]]&lt;br /&gt;
&lt;br /&gt;
*'''up''' - Графический ресурс для отображения отжатой кнопки. &lt;br /&gt;
*'''down''' - Графический ресурс для отображения нажатой кнопки. Может отсутствовать.&lt;br /&gt;
*'''over''' - Графический ресурс для отображения кнопки с мышкой над ней. Может отсутствовать.&lt;br /&gt;
*'''disable''' - Графический ресурс для отображения неактивной кнопки. Может отсутствовать. &lt;br /&gt;
*'''накладывать''' - Если &amp;quot;1&amp;quot;, то графика из параметра '''down''' будет накладываться на графику из параметра '''up''' при нажатии на кнопу, если &amp;quot;0&amp;quot;, то не накладывается.&lt;br /&gt;
*'''down scale''' - Изменяет размеры графического ресурса для отображения нажатой кнопки. Может отсутствовать.&lt;br /&gt;
*'''over scale''' - Изменяет размеры графического ресурса для отображения кнопки с мышкой над ней. Может отсутствовать.&lt;br /&gt;
&lt;br /&gt;
'''Группа - звуки'''&lt;br /&gt;
&lt;br /&gt;
*'''up''' - Звуковой ресурс для проигрывания отжатой кнопки. Может отсутствовать.&lt;br /&gt;
*'''down'''  - Звуковой ресурс для проигрывания нажатой кнопки.  Может отсутствовать.&lt;br /&gt;
*'''over''' - Звуковой ресурс для проигрывания кнопки с мышкой над ней. Может отсутствовать.&lt;br /&gt;
&lt;br /&gt;
'''Группа - время'''&lt;br /&gt;
 &lt;br /&gt;
*'''невидимости''' - Время невидимости перед открытием.&lt;br /&gt;
*'''открытия''' - Время проявления кнопки от полной прозрачности к прозрачности, заданной в модификаторах.&lt;br /&gt;
*'''закрытия''' - Время исчезания кнопки до полной прозрачности.&lt;br /&gt;
&lt;br /&gt;
'''надпись ID''' - Надпись на кнопке, перетаскивается из редактора строк.&lt;br /&gt;
&lt;br /&gt;
'''надпись''' - Надпись на кнопке. Используется только, если нет графики. &lt;br /&gt;
 &lt;br /&gt;
'''Группа - [[шрифт]]'''&lt;br /&gt;
&lt;br /&gt;
*'''имя''' - Номер шрифта - целое число, начиная с 0 (порядковый номер шрифта).&lt;br /&gt;
*'''размер''' - Размер шрифта в пикселях.&lt;br /&gt;
&lt;br /&gt;
== Дополнительные параметры ==&lt;br /&gt;
&lt;br /&gt;
*'''вернуться назад''' - 1 - кнопка служит для возврата на предыдущий экран, id экрана для перехода игнорируется.&lt;br /&gt;
*'''перейти на''' - Экран для перехода после клика на кнопку, если условные переходы (ниже) не сработали&lt;br /&gt;
*'''задержка перехода''' - Задержка перед переходом на следующий экран в ms.&lt;br /&gt;
*'''рейтинг''' - Открывает системное окно с предложением проголосовать, данные берёт из rating.xml&lt;br /&gt;
Если на девайсе была нажата кнопка &amp;quot;отрейтинговать&amp;quot;, то в опции запишется параметр rating значение 1, если нажата кнопка &amp;quot;позже&amp;quot; - rating 2, &amp;quot;никогда&amp;quot; - rating 3.&lt;br /&gt;
*'''перезагрузить лэйаут''' - 1 - по нажатию на кнопку перезагружает лэйаут&lt;br /&gt;
*'''отменить текущие закачки''' - 1 - по нажатию на кнопку отменяет все текущие закачки&lt;br /&gt;
*'''перезапустить текущие закачки''' - 1 - по нажатию на кнопку перезапускает все текущие закачки&lt;br /&gt;
*'''не предзагружать''' - Не загружает в фоновой загрузке графику экрана на которую ведёт кнопка.&lt;br /&gt;
*'''закрыть приложение''' - По нажатию закрывает приложение.&lt;br /&gt;
*'''восстановить покупки''' - 1 - по нажатию на кнопку попытаться восстановить покупки.&lt;br /&gt;
&lt;br /&gt;
'''Группа - [[позиционирование]]'''&lt;br /&gt;
*'''горизонтальное''' - 0 - нет выравнивания; 1 - прижать к левому краю; 2 - центр; 3 - к правому&lt;br /&gt;
*'''вертикальное''' - 0 - нет выравнивания; 1 - прижать к верхнему краю; 2 - центр; 3 - к нижнему&lt;br /&gt;
&lt;br /&gt;
== Добавляемые параметры ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Menadd.png|300px|right]]&lt;br /&gt;
Меню выбора ''Добавляемые параметры'' к объектам активируется по правой кнопки мыши. &lt;br /&gt;
&lt;br /&gt;
[[Файл:+.png]] '''если был экран''' - Переходим на определенный экран, если некоторый экран был уже хотя бы раз посещен.&lt;br /&gt;
*'''был экран'''- Проверяемый экран, который мы проверяем на то, был ли он уже открыт хотя бы один раз.&lt;br /&gt;
*'''перейти на''' - Переходим на этот экран, если экран из предыдущего поля уже открывался.&lt;br /&gt;
 &lt;br /&gt;
[[Файл:+.png]] '''изменить состояние объекта'''  - При клике на кнопку перевести объект в новое состояние.&lt;br /&gt;
*'''объект'''  - Изменить состояние у выбранного объекта&lt;br /&gt;
*'''состояние''' - Новое состояние для объекта из предыдущего поля. &lt;br /&gt;
 &lt;br /&gt;
[[Файл:+.png]] '''изменить параметр объекта'''  - Изменить параметр (свойство) объекта при клике на кнопку.&lt;br /&gt;
*'''объект'''  - Изменить параметр у выбранного объекта&lt;br /&gt;
*'''параметр''' - Параметр, который мы изменяем. &lt;br /&gt;
*'''значение''' - Новое значение параметра.&lt;br /&gt;
 &lt;br /&gt;
[[Файл:+.png]] '''изменить графику объекта'''  - При клике на кнопку изменить графический ресурс объекта.&lt;br /&gt;
*'''объект'''  - Изменить параметр у выбранного объекта&lt;br /&gt;
*'''параметр''' - Параметр, который мы изменяем.&lt;br /&gt;
*'''значение''' - Новое значение графического ресурса (перетаскивается из редактора ресурсов).  &lt;br /&gt;
&lt;br /&gt;
[[Файл:+.png]] '''изменить id текста'''  - При клике на кнопку меняет id текста на выбранный у другого объекта.&lt;br /&gt;
*'''объект''' - Объект у которого меняется id текста. &lt;br /&gt;
*'''свойство''' - Свойство, в которое записывается новый id текста.&lt;br /&gt;
*'''значение''' - Новое значение текстового ресурса (перетаскивается из редактора текстов).  &lt;br /&gt;
&lt;br /&gt;
[[Файл:+.png]] '''изменить id объекта'''  - При клике на кнопку меняет id объекта на выбранный у другого объекта(на пример у инвентаря таким образом указывается id объекта помещаемого в инвентарь).&lt;br /&gt;
*'''объект''' - Объект у которого меняется id объекта. &lt;br /&gt;
*'''свойство''' - Свойство, в которое записывается новый id объекта.&lt;br /&gt;
*'''значение''' - Объект, id которого будет записан.  &lt;br /&gt;
&lt;br /&gt;
[[Файл:+.png]] '''изменить id экрана объекта'''  - При клике на кнопку меняет id экрана на выбранный у другого объекта(на пример можно использовать для изменения id экрана для перехода у кнопки).&lt;br /&gt;
*'''объект''' - Объект у которого меняется id экрана. &lt;br /&gt;
*'''свойство''' - Свойство, в которое записывается новый id экрана.&lt;br /&gt;
*'''значение''' - Экран, id которого будет записан.  &lt;br /&gt;
&lt;br /&gt;
[[Файл:+.png]] '''совершить in-app покупку''' - При клике на кнопку открывается системное окно с предложением совершить in-app покупку.&lt;br /&gt;
*'''id покупки''' - Внутренний id покупки для приложения, указывается в объекте store&lt;br /&gt;
*'''объект(успех)''' - Объект, которому сообщается об удачной покупке&lt;br /&gt;
*'''состояние(успех)''' - Состояние в которое переводится выбранный объект в случае успешной покупки&lt;br /&gt;
*'''объект(провал)''' - Объект, которому сообщается о неудачной покупке&lt;br /&gt;
*'''состояние(провал)''' - Состояние в которое переводится объект в случае неудачной покупки&lt;br /&gt;
&lt;br /&gt;
[[Файл:+.png]] '''скачать загружаемый контент''' - При клике на кнопку будет совершена попытка скачать контент. &lt;br /&gt;
*'''url''' - Ссылка на zip архив с контентом в интернете.&lt;br /&gt;
*'''объект (успех)''' - Этому объекту будет сообщено об успехе закачки.&lt;br /&gt;
*'''состояние (успех)''' - Это состояние будет установлено объекту при успешной закачке.&lt;br /&gt;
*'''объект (провал)''' - Этому объекту будет сообщено о неудаче закачки.&lt;br /&gt;
*'''состояние (провал)''' - Это состояние будет установлено объекту при ошибке/отмене закачки.&lt;br /&gt;
*'''счетчик прогресса''' - Объект типа счетчик, который будет отображать прогресс загрузки. Крайне желательно, чтобы он имел диапазон 0..100.&lt;br /&gt;
&lt;br /&gt;
[[Файл:+.png]] '''открыть внешнюю ссылку''' - При клике на кнопку открыть ссылку в браузере.&lt;br /&gt;
*'''id cсылки''' - Если в опциях не будет найдено ссылки, то сам айдишник будет интерпретироваться как ссылка.&lt;br /&gt;
*'''id cсылки (iOS)''' - Если задано, то на iOS устройствах будет использоваться ВМЕСТО основного линка. Ссылка которая открывается на iOS устройствах(может быть в виде itms://.. itms-apps://.. http://...).&lt;br /&gt;
*'''id cсылки (Android)''' - Если задано, то на Android устройствах будет использоваться ВМЕСТО основного линка.&lt;br /&gt;
*'''id cсылки (текстовая база)''' - Если задано, то будет использоваться ссылка из записи текстовой базы(перетаскивается запись из текстовой базы) ВМЕСТО основного линка. Какая ссылка будет использоваться задаётся при сборке.&lt;br /&gt;
&lt;br /&gt;
==Примечания и дополнения==&lt;br /&gt;
&lt;br /&gt;
'''Важно помнить:''' &lt;br /&gt;
&lt;br /&gt;
*Кнопка реагирует только на отпускание. (В отличии от машины, которая может реагировать как на нажатие, команда click, так и на отпускание, команда touch_up.)&amp;lt;br/&amp;gt;&lt;br /&gt;
Часто для простых похожих действий используют как кнопки, так и машины. Важно учитывать, на каком этапе тапа они срабатывают (нажатие, удерживание, отпускание) потому, что игрок может очень длительное время удерживать палец на экране. &amp;lt;br/&amp;gt;&lt;br /&gt;
Можно сделать так, что один тап будет приводить в действие два объекта. Например, тапнуть на машину, которая реагирует на нажатие, а затем перетащить палец на кнопку (или поместить кнопку поверх машины) и отпустить. В таком случае на один тап откликнется и машина, и кнопка.&lt;br /&gt;
&lt;br /&gt;
*Следует аккуратно использовать кнопки, если у них или их родителей прокликиваемость = 2. В таком случае, если кнопку двигать (например, анимация колыхания), то она потеряет фокус и не будет реагировать на тап.&lt;/div&gt;</summary>
		<author><name>Podkor</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.appsalutecreator.com/index.php?title=%D0%9A%D0%BD%D0%B8%D0%B3%D0%B0_%D0%B6%D0%B0%D0%BB%D0%BE%D0%B1_%D0%B8_%D0%BF%D0%BE%D0%B6%D0%B5%D0%BB%D0%B0%D0%BD%D0%B8%D0%B9&amp;diff=5287</id>
		<title>Книга жалоб и пожеланий</title>
		<link rel="alternate" type="text/html" href="https://wiki.appsalutecreator.com/index.php?title=%D0%9A%D0%BD%D0%B8%D0%B3%D0%B0_%D0%B6%D0%B0%D0%BB%D0%BE%D0%B1_%D0%B8_%D0%BF%D0%BE%D0%B6%D0%B5%D0%BB%D0%B0%D0%BD%D0%B8%D0%B9&amp;diff=5287"/>
		<updated>2013-12-09T15:04:15Z</updated>

		<summary type="html">&lt;p&gt;Podkor: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Внимание !!&lt;br /&gt;
* Перед публикацией внимательно читать ВСЕ!&lt;br /&gt;
* Делаем при обсуждении отступы (двоеточие) и подписываемся (4 тильды).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
: В объекте checkbox есть у параметра '''надпись''' свойство '''цвет''', который можно задать с помощью буквенных и цифровых значений. Но какую бы комбинацию не задавал, всегда цвет текста черный.--[[Участник:Lkunica|Lkunica]] 08:27, 23 октября 2013 (CEST)&lt;br /&gt;
&lt;br /&gt;
: Есть возможность выделять группу объектов, чтобы задать сразу всем какое-то свойство.1.Пусть нужно задать прокликивание. Поменяется это свойство на заданное, если предварительно у всех выделенных объектов значение этого свойства было одинаковое.2.Хотелось бы сразу задавать нескольким текстовых объектам шрифт, его размер, и цвет. Пока такой возможности нет.&lt;br /&gt;
&lt;br /&gt;
:При экспорте сцены с объектом groupset теряются добавленные в его группу объекты (точнее заменяются другими объектами сцены), и приходится заново их переподключать. При экспорте экрана все нормально.--[[Участник:Lkunica|Lkunica]] 08:27, 23 октября 2013 (CEST)&lt;br /&gt;
&lt;br /&gt;
:Нельзя удалить графический ресурс в команде draw в машине состояний. Иногда это актуально,когда нужно заменить этот графический ресурс другим с таким же именем - не видно произошла замена или нет.--[[Участник:Lkunica|Lkunica]] 08:27, 23 октября 2013 (CEST)&lt;br /&gt;
&lt;br /&gt;
:Есть возможность выделять группу объектов, что бы задать им какое-то свойство. Но такое свойство как, например, &amp;quot;текстID&amp;quot; в &amp;quot;hiddenObject&amp;quot;, по умолчанию при коллективном выделении не отображается. Его, конечно, можно добавить с помощью Сережи Шейко, но было бы удобнее добавлять и удалять нужные свойства более рациональным способом, появилось бы больше места для маневра.--[[Участник:Podkor|Podkor]] 16:17, 28 октября 2013 (CET)&lt;br /&gt;
&lt;br /&gt;
:В машине для каждой команды состояний предусмотрен параметр loop, который позволяет начать выполнение команд, начиная с первой. Но иногда есть необходимость начать выполнение команд (зацикливание), с некоторой отличной от первой. Было бы удобно, если бы в разделе &amp;quot;переходы и параметры выполнения&amp;quot; также присутсвовала каманда, для которой этот раздел активируется. Пока там присутсвуют все другие команды, кроме ее самой.--[[Участник:Lkunica|Lkunica]] 07:50, 8 ноября 2013 (CET)&lt;br /&gt;
&lt;br /&gt;
:В состоянии машины, добавляемые свойства, просто необходимо разместить в алфавитном порядке&lt;br /&gt;
&lt;br /&gt;
[[Файл:Property.jpg|250px|right]]--[[Участник:Podkor|Podkor]] 16:04, 9 декабря 2013 (CET)&lt;/div&gt;</summary>
		<author><name>Podkor</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.appsalutecreator.com/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Property.jpg&amp;diff=5286</id>
		<title>Файл:Property.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.appsalutecreator.com/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Property.jpg&amp;diff=5286"/>
		<updated>2013-12-09T15:01:42Z</updated>

		<summary type="html">&lt;p&gt;Podkor: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Podkor</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.appsalutecreator.com/index.php?title=Isomap&amp;diff=5283</id>
		<title>Isomap</title>
		<link rel="alternate" type="text/html" href="https://wiki.appsalutecreator.com/index.php?title=Isomap&amp;diff=5283"/>
		<updated>2013-11-26T14:38:55Z</updated>

		<summary type="html">&lt;p&gt;Podkor: /* Как работать с объектом */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
''Isomap'' - объект с помощью которого, появилась возможность создать траекторию движения для объекта типа ''isomover''. Например, можно создать движение машинки на карте.&lt;br /&gt;
= Как работать с объектом =&lt;br /&gt;
Для начала работы с объектом isomap, в свойствах объекта, нажатием на троеточие, открываем ''isomap setup''&lt;br /&gt;
[[Файл:Setup.jpg|250px]]&lt;br /&gt;
&lt;br /&gt;
В открывшемся окне, выбираем ''build graph''&lt;br /&gt;
[[Файл:Build graph.jpg|250px]]&lt;br /&gt;
&lt;br /&gt;
Все необходимое для дальнейшей работы находим в, открывшейся сверху, строке объекта isomap&lt;br /&gt;
[[Файл:Line.jpg|700px]]&lt;br /&gt;
&lt;br /&gt;
Первая группа кнопок  - &amp;quot;Добавить&amp;quot; , &amp;quot;Выбрать&amp;quot;, &amp;quot;Удалить&amp;quot; и  &amp;quot;Delete all nodes&amp;quot; и поля ввода имени и координат, которые находятся между ними - относятся к точкам. Остальная группа кнопок необходима для того что бы работать с ребрами (линиями).&lt;br /&gt;
&lt;br /&gt;
Сначала проставляем точки: нажимаем &amp;quot;добавить&amp;quot; вводим название точки и проставляем её на карте, что бы передвинуть сначала нажимаем &amp;quot;выбрать&amp;quot; потом перемещаем точку по карте, соответственно для удаления одной точки нажимаем &amp;quot;удалить&amp;quot;,  затем на точку. Кнопка &amp;quot;Delete all nodes&amp;quot; -  удаляет сразу все точки.&lt;br /&gt;
Точки целесообразно ставить на перекрестках траектории и в местах где предполагаемый объект будет изменять направление движения(например остановка для машины)&lt;br /&gt;
&lt;br /&gt;
После того как проставлены нужные точки можно приступать  к формированию ребер. Выбираем точку  (например, Т1)- она будет начало траектории, затем нажимаем &amp;quot;Добавить&amp;quot; (вторая кнопка, отвечающая за ребра)и кликаем на второй точке (например, Т2) - это будет конец траектории. Именно в таком направлении будет двигаться объект от Т1 до Т2. Для того что бы объект через эти же две точки проходил в обратном направлении, необходимо проложить еще одно ребро, выбрав точки в обратном порядке.&lt;br /&gt;
По середине созданного ребра размещена точка, в редакторе она окрашена таким же цветом что и ребро. С её помощью можно менять кривизну ребра. Для этого нажимаем &amp;quot;Выбрать&amp;quot; (ребро)  кликаем на нужное ребро (оно должно окраситься красным цветом)и нажимаем пиктограммку &amp;quot;Select graph edge knot&amp;quot; теперь можно взяться за точку и установить нужную  форму ребра. Для предания более изощренных форм, на ребра можно добавлять дополнительные точки кнопками &amp;quot;Insert before&amp;quot; и &amp;quot;Insert after&amp;quot;.&lt;br /&gt;
Выделив ребро, можно заметить что две точки между ним отличаются одна закрашена , а вторая пустая, по этим признакам можно определить направление движения  -  оно будет происходит от пустой к закрашенной точке.&lt;br /&gt;
= Особенности расположения =&lt;br /&gt;
В группу объекта ''isomap'' вводят объект ''isomover'' и &amp;quot;заплатки&amp;quot; для карты. Объект родитель сам установит по координате z необходимое размещение объектов, согласно их типу. Объект ''isomover'' будет двигаться за элементами карты.&lt;br /&gt;
[[Файл:Isomap tree.jpg|Isomap tree.jpg]]&lt;/div&gt;</summary>
		<author><name>Podkor</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.appsalutecreator.com/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Isomap_tree.jpg&amp;diff=5282</id>
		<title>Файл:Isomap tree.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.appsalutecreator.com/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Isomap_tree.jpg&amp;diff=5282"/>
		<updated>2013-11-26T14:38:16Z</updated>

		<summary type="html">&lt;p&gt;Podkor: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Podkor</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.appsalutecreator.com/index.php?title=Isomap&amp;diff=5281</id>
		<title>Isomap</title>
		<link rel="alternate" type="text/html" href="https://wiki.appsalutecreator.com/index.php?title=Isomap&amp;diff=5281"/>
		<updated>2013-11-26T14:05:11Z</updated>

		<summary type="html">&lt;p&gt;Podkor: /* Как работать с объектом */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
''Isomap'' - объект с помощью которого, появилась возможность создать траекторию движения для объекта типа ''isomover''. Например, можно создать движение машинки на карте.&lt;br /&gt;
= Как работать с объектом =&lt;br /&gt;
Для начала работы с объектом isomap, в свойствах объекта, нажатием на троеточие, открываем ''isomap setup''&lt;br /&gt;
[[Файл:Setup.jpg|250px]]&lt;br /&gt;
&lt;br /&gt;
В открывшемся окне, выбираем ''build graph''&lt;br /&gt;
[[Файл:Build graph.jpg|250px]]&lt;br /&gt;
&lt;br /&gt;
Все необходимое для дальнейшей работы находим в, открывшейся сверху, строке объекта isomap&lt;br /&gt;
[[Файл:Line.jpg|700px]]&lt;br /&gt;
&lt;br /&gt;
Первая группа кнопок  - &amp;quot;Добавить&amp;quot; , &amp;quot;Выбрать&amp;quot;, &amp;quot;Удалить&amp;quot; и  &amp;quot;Delete all nodes&amp;quot; и поля ввода имени и координат, которые находятся между ними - относятся к точкам. Остальная группа кнопок необходима для того что бы работать с ребрами (линиями).&lt;br /&gt;
&lt;br /&gt;
Сначала проставляем точки: нажимаем &amp;quot;добавить&amp;quot; вводим название точки и проставляем её на карте, что бы передвинуть сначала нажимаем &amp;quot;выбрать&amp;quot; потом перемещаем точку по карте, соответственно для удаления одной точки нажимаем &amp;quot;удалить&amp;quot;,  затем на точку. Кнопка &amp;quot;Delete all nodes&amp;quot; -  удаляет сразу все точки.&lt;br /&gt;
Точки целесообразно ставить на перекрестках траектории и в местах где предполагаемый объект будет изменять направление движения(например остановка для машины)&lt;br /&gt;
&lt;br /&gt;
После того как проставлены нужные точки можно приступать  к формированию ребер. Выбираем точку  (например, Т1)- она будет начало траектории, затем нажимаем &amp;quot;Добавить&amp;quot; (вторая кнопка, отвечающая за ребра)и кликаем на второй точке (например, Т2) - это будет конец траектории. Именно в таком направлении будет двигаться объект от Т1 до Т2. Для того что бы объект через эти же две точки проходил в обратном направлении, необходимо проложить еще одно ребро, выбрав точки в обратном порядке.&lt;br /&gt;
По середине созданного ребра размещена точка, в редакторе она окрашена таким же цветом что и ребро. С её помощью можно менять кривизну ребра. Для этого нажимаем &amp;quot;Выбрать&amp;quot; (ребро)  кликаем на нужное ребро (оно должно окраситься красным цветом)и нажимаем пиктограммку &amp;quot;Select graph edge knot&amp;quot; теперь можно взяться за точку и установить нужную  форму ребра. Для предания более изощренных форм, на ребра можно добавлять дополнительные точки кнопками &amp;quot;Insert before&amp;quot; и &amp;quot;Insert after&amp;quot;.&lt;br /&gt;
Выделив ребро, можно заметить что две точки между ним отличаются одна закрашена , а вторая пустая, по этим признакам можно определить направление движения  -  оно будет происходит от пустой к закрашенной точке.&lt;/div&gt;</summary>
		<author><name>Podkor</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.appsalutecreator.com/index.php?title=Isomap&amp;diff=5280</id>
		<title>Isomap</title>
		<link rel="alternate" type="text/html" href="https://wiki.appsalutecreator.com/index.php?title=Isomap&amp;diff=5280"/>
		<updated>2013-11-26T14:04:54Z</updated>

		<summary type="html">&lt;p&gt;Podkor: /* Как работать с объектом */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
''Isomap'' - объект с помощью которого, появилась возможность создать траекторию движения для объекта типа ''isomover''. Например, можно создать движение машинки на карте.&lt;br /&gt;
= Как работать с объектом =&lt;br /&gt;
Для начала работы с объектом isomap, в свойствах объекта, нажатием на троеточие, открываем ''isomap setup''&lt;br /&gt;
[[Файл:Setup.jpg|250px]]&lt;br /&gt;
&lt;br /&gt;
В открывшемся окне, выбираем ''build graph''&lt;br /&gt;
[[Файл:Build graph.jpg|250px]]&lt;br /&gt;
&lt;br /&gt;
Все необходимое для дальнейшей работы находим в, открывшейся сверху, строке объекта isomap&lt;br /&gt;
[[Файл:Line.jpg|700px]]&lt;br /&gt;
&lt;br /&gt;
Первая группа кнопок  - &amp;quot;Добавить&amp;quot; , &amp;quot;Выбрать&amp;quot;, &amp;quot;Удалить&amp;quot; и  &amp;quot;Delete all nodes&amp;quot; и поля ввода имени и координат, которые находятся между ними - относятся к точкам. Остальная группа кнопок необходима для того что бы работать с ребрами (линиями).&lt;br /&gt;
&lt;br /&gt;
Сначала проставляем точки: нажимаем &amp;quot;добавить&amp;quot; вводим название точки и проставляем её на карте, что бы передвинуть сначала нажимаем &amp;quot;выбрать&amp;quot; потом перемещаем точку по карте, соответственно для удаления одной точки нажимаем &amp;quot;удалить&amp;quot;,  затем на точку. Кнопка &amp;quot;Delete all nodes&amp;quot; -  удаляет сразу все точки.&lt;br /&gt;
Точки целесообразно ставить на перекрестках траектории и в местах где предполагаемый объект будет изменять направление движения(например остановка для машины)&lt;br /&gt;
&lt;br /&gt;
После того как проставлены нужные точки можно приступать  к формированию ребер. Выбираем точку  (например, Т1)- она будет начало траектории, затем нажимаем &amp;quot;Добавить&amp;quot; (вторая кнопка, отвечающая за ребра)и кликаем на второй точке (например, Т2) - это будет конец траектории. Именно в таком направлении будет двигаться объект от Т1 до Т2. Для того что бы объект через эти же две точки проходил в обратном направлении, необходимо проложить еще одно ребро, выбрав точки в обратном порядке.&lt;br /&gt;
По середине созданного ребра размещена точка, в редакторе она окрашена таким же цветом что и ребро. С её помощью можно менять кривизну ребра. Для этого нажимаем &amp;quot;Выбрать&amp;quot; (ребро)  кликаем на нужное ребро (оно должно окраситься красным цветом)и нажимаем пиктограммку &amp;quot;Select graph edge knot&amp;quot; теперь можно взяться за точку и установить нужную  форму ребра. Для предания более изощренных форм, на ребра можно добавлять дополнительные точки кнопками &amp;quot;Insert before&amp;quot; и &amp;quot;Insert after&amp;quot;.&lt;br /&gt;
 Выделив ребро, можно заметить что две точки между ним отличаются одна закрашена , а вторая пустая, по этим признакам можно определить направление движения  -  оно будет происходит от пустой к закрашенной точке.&lt;/div&gt;</summary>
		<author><name>Podkor</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.appsalutecreator.com/index.php?title=Isomap&amp;diff=5279</id>
		<title>Isomap</title>
		<link rel="alternate" type="text/html" href="https://wiki.appsalutecreator.com/index.php?title=Isomap&amp;diff=5279"/>
		<updated>2013-11-26T09:56:37Z</updated>

		<summary type="html">&lt;p&gt;Podkor: /* Как работать с объектом */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
''Isomap'' - объект с помощью которого, появилась возможность создать траекторию движения для объекта типа ''isomover''. Например, можно создать движение машинки на карте.&lt;br /&gt;
= Как работать с объектом =&lt;br /&gt;
Для начала работы с объектом isomap, в свойствах объекта, нажатием на троеточие, открываем ''isomap setup''&lt;br /&gt;
[[Файл:Setup.jpg|250px]]&lt;br /&gt;
&lt;br /&gt;
В открывшемся окне, выбираем ''build graph''&lt;br /&gt;
[[Файл:Build graph.jpg|250px]]&lt;br /&gt;
&lt;br /&gt;
Все необходимое для дальнейшей работы находим в, открывшейся сверху, строке объекта isomap&lt;br /&gt;
[[Файл:Line.jpg|700px]]&lt;br /&gt;
&lt;br /&gt;
Первая группа кнопок  - &amp;quot;Добавить&amp;quot; , &amp;quot;Выбрать&amp;quot;, &amp;quot;Удалить&amp;quot; и  &amp;quot;Delete all nodes&amp;quot; и поля ввода имени и координат, которые находятся между ними - относятся к точкам. Остальная группа кнопок необходима для того что бы работать с ребрами (линиями).&lt;br /&gt;
&lt;br /&gt;
Сначала проставляем точки: нажимаем &amp;quot;добавить&amp;quot; вводим название точки и проставляем её на карте, что бы передвинуть сначала нажимаем &amp;quot;выбрать&amp;quot; потом перемещаем точку по карте, соответственно для удаления одной точки нажимаем &amp;quot;удалить&amp;quot;,  затем на точку. Кнопка &amp;quot;Delete all nodes&amp;quot; -  удаляет сразу все точки.&lt;br /&gt;
Точки целесообразно ставить на перекрестках траектории и в местах где предполагаемый объект будет изменять направление движения(например остановка для машины)&lt;br /&gt;
&lt;br /&gt;
После того как проставлены нужные точки можно приступать  к формированию ребер.&lt;/div&gt;</summary>
		<author><name>Podkor</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.appsalutecreator.com/index.php?title=Isomap&amp;diff=5278</id>
		<title>Isomap</title>
		<link rel="alternate" type="text/html" href="https://wiki.appsalutecreator.com/index.php?title=Isomap&amp;diff=5278"/>
		<updated>2013-11-25T10:21:25Z</updated>

		<summary type="html">&lt;p&gt;Podkor: /* Как работать с объектом */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
''Isomap'' - объект с помощью которого, появилась возможность создать траекторию движения для объекта типа ''isomover''. Например, можно создать движение машинки на карте.&lt;br /&gt;
= Как работать с объектом =&lt;br /&gt;
Для начала работы с объектом isomap, в свойствах объекта, нажатием на троеточие, открываем ''isomap setup''&lt;br /&gt;
[[Файл:Setup.jpg|250px]]&lt;br /&gt;
&lt;br /&gt;
В открывшемся окне, выбираем ''build graph''&lt;br /&gt;
[[Файл:Build graph.jpg|250px]]&lt;br /&gt;
&lt;br /&gt;
Все необходимое для дальнейшей работы находим в, открывшейся сверху, строке объекта isomap&lt;br /&gt;
[[Файл:Line.jpg|700px]]&lt;/div&gt;</summary>
		<author><name>Podkor</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.appsalutecreator.com/index.php?title=Isomap&amp;diff=5277</id>
		<title>Isomap</title>
		<link rel="alternate" type="text/html" href="https://wiki.appsalutecreator.com/index.php?title=Isomap&amp;diff=5277"/>
		<updated>2013-11-25T10:19:29Z</updated>

		<summary type="html">&lt;p&gt;Podkor: /* Isomap */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
''Isomap'' - объект с помощью которого, появилась возможность создать траекторию движения для объекта типа ''isomover''. Например, можно создать движение машинки на карте.&lt;br /&gt;
= Как работать с объектом =&lt;br /&gt;
Для начала работы с объектом isomap, в свойствах объекта, нажатием на троеточие, открываем ''isomap setup''&lt;br /&gt;
[[Файл:Setup.jpg|250px]]&lt;br /&gt;
&lt;br /&gt;
В открывшемся окне, выбираем ''build graph''&lt;br /&gt;
[[Файл:Build graph.jpg|250px]]&lt;br /&gt;
Все необходимое для дальнейшей работы находим в, открывшейся сверху, строке объекта isomap&lt;br /&gt;
[[Файл:Line.jpg|700px]]&lt;/div&gt;</summary>
		<author><name>Podkor</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.appsalutecreator.com/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Line.jpg&amp;diff=5276</id>
		<title>Файл:Line.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.appsalutecreator.com/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Line.jpg&amp;diff=5276"/>
		<updated>2013-11-25T10:18:35Z</updated>

		<summary type="html">&lt;p&gt;Podkor: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Podkor</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.appsalutecreator.com/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Build_graph.jpg&amp;diff=5275</id>
		<title>Файл:Build graph.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.appsalutecreator.com/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Build_graph.jpg&amp;diff=5275"/>
		<updated>2013-11-25T09:49:23Z</updated>

		<summary type="html">&lt;p&gt;Podkor: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Podkor</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.appsalutecreator.com/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Setup.jpg&amp;diff=5274</id>
		<title>Файл:Setup.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.appsalutecreator.com/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Setup.jpg&amp;diff=5274"/>
		<updated>2013-11-25T09:20:39Z</updated>

		<summary type="html">&lt;p&gt;Podkor: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Podkor</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.appsalutecreator.com/index.php?title=Isomap&amp;diff=5273</id>
		<title>Isomap</title>
		<link rel="alternate" type="text/html" href="https://wiki.appsalutecreator.com/index.php?title=Isomap&amp;diff=5273"/>
		<updated>2013-11-25T09:04:22Z</updated>

		<summary type="html">&lt;p&gt;Podkor: Новая страница: «= Isomap = ''Isomap'' - объект с помощью которого, появилась возможность создать траекторию движе...»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Isomap =&lt;br /&gt;
''Isomap'' - объект с помощью которого, появилась возможность создать траекторию движения для объекта типа ''isomover''. Например, можно создать движение машинки на карте.&lt;/div&gt;</summary>
		<author><name>Podkor</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.appsalutecreator.com/index.php?title=Economics&amp;diff=5272</id>
		<title>Economics</title>
		<link rel="alternate" type="text/html" href="https://wiki.appsalutecreator.com/index.php?title=Economics&amp;diff=5272"/>
		<updated>2013-11-15T13:35:16Z</updated>

		<summary type="html">&lt;p&gt;Podkor: /* Состояния */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Объект Economics служит для реализации сложной игровой механики типа &amp;quot;ферма&amp;quot;. Он осуществляет связь между игровыми локациями, накопленным опытом, текущим количеством энергии, денег и кристаллов (можно использовать и другие названия ресурсов), а также управляет объектами коллекций, магазина, инвентаря и игровых заданий.&lt;br /&gt;
&lt;br /&gt;
= Свойства =&lt;br /&gt;
&lt;br /&gt;
*'''предметы''' - Объект типа eitems.&lt;br /&gt;
*'''задачи''' - Объект типа taskorganizer.&lt;br /&gt;
&lt;br /&gt;
==Параметры==&lt;br /&gt;
===Основные параметры===&lt;br /&gt;
&lt;br /&gt;
*'''Уровни''' - опыт, необходимый для перехода на следующий уровень. Последовательность чисел через запятую.&lt;br /&gt;
*'''Уровни парабола''' - Три числа через запятую, задающие коэффициенты параболы, которые определяют необходимый опыт после уже перечисленных уровней.&lt;br /&gt;
*'''Энергия''' - максимум энергии на каждом из уровней. Последовательность чисел через запятую. Последнее значение будет зациклено для всех последующих уровней.&lt;br /&gt;
*'''Энергия прибавка''' - Число определяющее прибавку к максимуму энергии после уже перечисленных уровней.&lt;br /&gt;
*'''Ресурс 1''' - количество ресурса 1 добавляемое за уровень. Последовательность чисел через запятую. Последнее значение будет зациклено для всех последующих уровней.&lt;br /&gt;
*'''Ресурс 2''' - количество ресурса 2 добавляемое за уровень. Последовательность чисел через запятую. Последнее значение будет зациклено для всех последующих уровней.&lt;br /&gt;
*'''Перезарядка''' - время за которое восстанавливается единица энергии в ms.&lt;br /&gt;
*'''нач. ресурс 1''' - Начальное значение ресурса 1.&lt;br /&gt;
*'''нач. ресурс 2''' - Начальное значение ресурса 2.&lt;br /&gt;
*'''время напоминания''' - время напоминания о задачах на каждом из уровней. Записывается в виде последовательности чисел через запятую. Последнее значение будет зациклено для всех последующих уровней. Время изменяется в часах.&lt;br /&gt;
*'''напоминание об энергии''' - уведомление перетаскивается с текстового редактора, представляет собой напоминание о том что энергия восстановилась. Например, &amp;quot;Ваше энергия полностью восстановлена&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
===Основные счетчики===&lt;br /&gt;
Этот раздел содержит необходимые объекты для подсчета (counter, timer, progressbar).&lt;br /&gt;
&lt;br /&gt;
*'''Уровень''' - счетчик текущего уровня игрока.&lt;br /&gt;
*'''Прогресс в уровне (счетчик)''' - Набранный на этом уровне опыт и остаток до следующего уровня (счетчик).&lt;br /&gt;
*'''Прогресс в уровне (бар)''' - Набранный на этом уровне опыт и остаток до следующего уровня (прогрессбар).&lt;br /&gt;
*'''Опыта до уровня''' - счетчик показывающий сколько опыта необходимо для перехода с текущего уровня на следующий.&lt;br /&gt;
*'''Текущая энергия''' - прогрессбар текущей энергии.&lt;br /&gt;
*'''Максимальная энергия''' - счетчик, который отображает значение максимальной энергии.&lt;br /&gt;
*'''Таймер энергии''' - таймер отображающий время до восстановления единицы энергии.&lt;br /&gt;
*'''Таймер всей энергии''' - таймер, который отображает время до восстановления всей энергии.&lt;br /&gt;
*'''Ресурс 1''' - счетчик первого ресурса (денег).&lt;br /&gt;
*'''Ресурс 2''' - счетчик второго ресурса (кристаллов).&lt;br /&gt;
*'''анимация рес.1''' - Анимационный объект награды в ресурсе 1. Должен иметь состояние show.&lt;br /&gt;
*'''анимация рес.2''' - Анимационный объект награды в ресурсе 2. Должен иметь состояние show.&lt;br /&gt;
*'''анимация опыт''' - Анимационный объект награды в опыте. Должен иметь состояние show.&lt;br /&gt;
&lt;br /&gt;
===Окно перед локацией===&lt;br /&gt;
Настройка окна, которое всплывает перед посещением локации. В этом окне отображается информация о локации которую мы хотим посетить.&lt;br /&gt;
&lt;br /&gt;
*'''Окно''' - некая машина, олицетворяющая собой само окно превью. Должна иметь состояния ''open'' - открыта, ''open_lvl'' - не хватает лвл, ''open_buy'' - разница в уровнях позволяет нам купить анлок, ''open_item'' - не хватает предмета для анлока,  ''open_unlock'' - состояние вызываемое окну перед локацией после успешной покупки предмета для анлока, ''open_energy'' - состояние вызываемое окну перед локацией в случае нехватки энергии.&lt;br /&gt;
*'''Превью локации''' - графический ресурс для отображения превью локации. В это поле можно поставить любую картинку для того, чтобы корректно разместить ее в &amp;quot;окне перед локацией&amp;quot;. Далее экономикс сам будет подставлять нужные превью.&lt;br /&gt;
*'''Название локации''' - текстовый объект, в который будет подставляться название локации.&lt;br /&gt;
*'''Описание локации''' - текстовый объект, в который будет подставляться описание локации.&lt;br /&gt;
*'''Уровень мастерства''' - счетчик уровня мастерства.&lt;br /&gt;
*'''Прогрессбар уровня мастерства''' - прогрессбар, который отображает уровень мастерства.&lt;br /&gt;
*'''Текущий уровень''' - счетчик текущего уровня мастерства.&lt;br /&gt;
*'''Необходимая энергия''' - счетчик необходимой энергии.&lt;br /&gt;
*'''Аномальная энергия''' - счетчик, который отображает дополнительную энергию при наличии аномалии в локации.&lt;br /&gt;
*'''Призовой ресурс 1''' - счетчик призовых денег.&lt;br /&gt;
*'''Аномальный ресурс 1''' - счетчик, который отображает количество дополнительных призовых денег, которые даются за игру в локацию с наличием аномалии.&lt;br /&gt;
*'''Призовой ресурс 2''' - счетчик призовых кристаллов.&lt;br /&gt;
*'''Призовой опыт''' - счетчик призового опыта.&lt;br /&gt;
*'''Аномальный опыт''' - счетчик, который отображает значение дополнительного опыта, который дается за игру в локацию с наличием аномалии.&lt;br /&gt;
*'''Таблица коллекции''' - таблица, в которой будут отображаться предметы, которые можно найти в данной локации.&lt;br /&gt;
&lt;br /&gt;
''для закрытой по уровню локации''&lt;br /&gt;
*'''Режим игры''' - машина, которой будут устанавливаться состояния в зависимости от режима игры (может быть смешанный, текст или силуэт). TODO пока обладает только режимом text и icon. Эта машина будет передавать настройки таблице, в которую помещаются поисковые объекты, поэтому важно, чтобы к этой таблице был доступ (например она может находится на глобальном экране).&lt;br /&gt;
&lt;br /&gt;
*'''индикатор уровня''' - счетчик с необходимым для локации уровнем.&lt;br /&gt;
&lt;br /&gt;
''для локации c ценой''&lt;br /&gt;
&lt;br /&gt;
*'''цена ресурс 1''' - Стоимость анлока локации в ресурсе 1.&lt;br /&gt;
*'''цена ресурс 2''' - Стоимость анлока локации в ресурсе 2.&lt;br /&gt;
&lt;br /&gt;
''для локации c требуемым предметом''&lt;br /&gt;
&lt;br /&gt;
*'''предмет''' - иконка необходимого для локации предмета.&lt;br /&gt;
*'''название предмета''' - в этом поле указывается название, необходимого для локации предмета.&lt;br /&gt;
*'''счетчик цены''' - счетчик, который отображает стоимость предмета.&lt;br /&gt;
*'''иконка цены'''  - иконка цены предмета, представляет собой картинку, которая перетаскивается из базы ресурсов.&lt;br /&gt;
*'''кнопка купить''' - Будет видна, если предмет нужно купить. Передает экономиксу состояние unlock_item.&lt;br /&gt;
*'''кнопка искать''' - Будет видна, если предмет поисковый.&lt;br /&gt;
*'''блок аномалии''' - контейнер, представляющий собой машину, которая содержит всю информацию про аномалию. Должна содержать в себе состояния hide, show и remov (состояние после прогона аномалии, чтобы сделать красивые эффекты, после которого машина попадет в состояние hide).&lt;br /&gt;
*'''иконка аномалии''' - иконка аномалии.&lt;br /&gt;
*'''название аномалии''' - текстовый объект, который будет отображать название аномалии.&lt;br /&gt;
*'''описание аномалии''' - текстовый объект, который будет отображать описание аномалии.&lt;br /&gt;
*'''иконка предмета''' - иконка предмета, необходимого для того что бы прогнать аномалию.&lt;br /&gt;
*'''кнопка прогнать предметом''' - кнопка по нажатию которой, можно прогнать аномалию используя предмет.&lt;br /&gt;
*'''кнопка купить предмет''' -  кнопка по нажатию которой, можно купить предмет для прогона аномалии.&lt;br /&gt;
*'''кнопка прогнать миниигрой''' - кнопка по нажатию которой, можно прогнать аномалию миниигрой.&lt;br /&gt;
&lt;br /&gt;
===Окно после локации===&lt;br /&gt;
&lt;br /&gt;
Настройка окна, которое всплывает после посещения локации. В этом окне отображается информация о полученных очках и предметах за исследование локации.&lt;br /&gt;
&lt;br /&gt;
*'''Окно''' - некая машина, олицетворяющая собой само окно превью. Должна иметь состояние ''open''.&lt;br /&gt;
*'''Название локации''' - текстовый объект, в который будет подставляться название локации.&lt;br /&gt;
*'''Описание локации''' - текстовый объект, в который будет подставляться описание локации.&lt;br /&gt;
*'''Уровень мастерства''' - счетчик уровня мастерства.&lt;br /&gt;
*'''Прогрессбар мастерства''' - прогрессбар, который отображает уровень мастерства.&lt;br /&gt;
*'''Текущий уровень''' - счетчик текущего уровня мастерства.&lt;br /&gt;
*'''Призовой ресурс 1''' - счетчик призовых денег.&lt;br /&gt;
*'''Аномальный ресурс 1''' - счетчик, который отображает количество дополнительных денег за прохождение локации с аномалией.&lt;br /&gt;
*'''Призовой ресурс 2''' - счетчик призовых кристаллов.&lt;br /&gt;
*'''Призовой опыт''' - счетчик призового опыта.&lt;br /&gt;
*'''Аномальный опыт''' - счетчик, отображающий дополнительный призовой опыт, который дается за прохождение локации с аномалией.&lt;br /&gt;
*'''Таблица коллекции''' - таблица, в которой будут отображаться предметы, которые можно найти в данной локации.&lt;br /&gt;
*'''ничего не найдено''' - Любой объект, так или иначе сообщающий игроку, что он не нашел ничего ценного.&lt;br /&gt;
&lt;br /&gt;
===Окно перед монстром===&lt;br /&gt;
*'''окно''' - некая машина, олицетворяющая собой само окно превью. Должна иметь состояние open - все условия выполнены, open_energy - не хватает энергии для игры, но предмет для прогона есть, open_item - есть энергия, но не хватает предмета для прогона, open_item_energy - не хватает энергии для игры и нет предмета для прогона.&lt;br /&gt;
*'''превью монстра ''' - картинка, отображающая превью монстра.&lt;br /&gt;
*'''название монстра''' - текстовый объект, показывающий название монстра.&lt;br /&gt;
*'''описание монстра''' - текстовый объект, показывающий описание монстра.&lt;br /&gt;
*'''необходимая энергия''' - счетчик, отображающий количество необходимой энергии.&lt;br /&gt;
*'''призовой ресурс 1''' - счетчик, отображающий количество призовых денег.&lt;br /&gt;
*'''призовой опыт''' - счетчик, отображающий количество призового опыта.&lt;br /&gt;
*'''таблица коллекции''' - таблица, в которой будут отображаться предметы, которые можно отжать у данного монстра.&lt;br /&gt;
*'''иконка предмета''' - картинка, которая отображает предмет необходимый для игры с монстром.&lt;br /&gt;
*'''нужно предметов''' - счетчик, который отображает необходимое количество предметов.&lt;br /&gt;
*'''есть предметов''' - счетчик, который отображает текущее количество предметов, находящееся в наличии.&lt;br /&gt;
*'''суммарная стоимость''' - счетчик, который отображает суммарную стоимость недостающих предметов.&lt;br /&gt;
*'''кнопка купить''' - кнопка, по нажатию которой, происходит покупка недостающих предметов.&lt;br /&gt;
*'''кнопка прогнать''' - кнопка, по нажатию которой, можно прогнать монстра не играя в игру, эту кнопку можно не задавать.&lt;br /&gt;
&lt;br /&gt;
===Окно после монстра===&lt;br /&gt;
&lt;br /&gt;
*'''окно''' - некая машина, олицетворяющая собой само окно превью. Должна иметь состояние open.&lt;br /&gt;
*'''превью монстар''' - картинка, отображающая превью монстра.&lt;br /&gt;
*'''название монстра''' - текстовый объект, показывающий название монстра.&lt;br /&gt;
*'''описание монстра''' - текстовый объект, показывающий описание монстра.&lt;br /&gt;
*'''призовой ресурс 1''' - счетчик, отображающий количество призовых денег.&lt;br /&gt;
*'''призовой опыт''' - счетчик, отображающий количество призового опыта.&lt;br /&gt;
*'''таблица коллекции''' - таблица, в которой будут отображаться предметы, которые можно отжать у данного монстра.&lt;br /&gt;
*'''ничего не найдено''' - любой объект, сообщающий игроку, так или иначе, что он не нашел ничего ценного на данной локации.&lt;br /&gt;
&lt;br /&gt;
===Окно коллекций===&lt;br /&gt;
&lt;br /&gt;
*'''Шаблон коллекции''' - ссылка на объект типа ecollection который будет использоваться в качестве исходного для всех коллекций.&lt;br /&gt;
*'''Таблица''' - таблица, куда по ссылке будут добавлены шаблоны коллекции.&lt;br /&gt;
*'''алерт''' - некая машина, олицетворяющая собой само окно предмета. Должна иметь состояние open. Окно с информацией о предмете всплывает в окне с коллекциями.&lt;br /&gt;
*'''иконка''' - Иконка предмета.&lt;br /&gt;
*'''текст (объект)''' - Текстовый объект в окошке.&lt;br /&gt;
*'''описание (объект)''' - Текстовый объект в окошке, в который сложим описание предмета.&lt;br /&gt;
*'''имя коллекции (объект)''' - В это поле будет записано имя коллекции, к которой относится предмет.&lt;br /&gt;
*'''цифры''' - фреймовая анимация содержащая в себе цифры. Последний фрейм анимации - отметка много.&lt;br /&gt;
&lt;br /&gt;
===Окошко коллекционного предмета===&lt;br /&gt;
&lt;br /&gt;
*'''окно''' - Некая машина, олицетворяющая собой само окно предмета. Должна иметь состояние open. Окошко всплывает при клике на предмет в таблице окна перед/после локации.&lt;br /&gt;
*'''иконка''' - Иконка предмета.&lt;br /&gt;
*'''текст (объект)''' - Текстовый объект в окошке.&lt;br /&gt;
*'''описание (объект)''' - Текстовый объект в окошке, в который сложим описание предмета.&lt;br /&gt;
*'''имя коллекции (объект)''' - В это поле будет записано имя коллекции, к которой относится предмет.&lt;br /&gt;
&lt;br /&gt;
===Окошко поздравления со сдачей коллекции===&lt;br /&gt;
&lt;br /&gt;
*'''окно''' - некая машина,содержащая необходимую информацию, олицетворяющая само окно предмета. Должна иметь в себе состояние open.&lt;br /&gt;
*'''иконка''' - картинка отображающая иконку предмета-награды.&lt;br /&gt;
*'''текст(объект)''' -  текстовый объект, отображающий название коллекции.&lt;br /&gt;
*'''призовой ресурс 1''' - счетчик, отображающий количество призовых денег.&lt;br /&gt;
*'''призовой опыт''' - счетчик, отображающий количество призовых денег.&lt;br /&gt;
&lt;br /&gt;
===Окошко инвентарного предмета===&lt;br /&gt;
&lt;br /&gt;
*'''окно''' - Некая машина, олицетворяющая собой само окно предмета. Должна иметь состояние open. Окошко всплывает при клике на предмет в таблице окна перед/после локации.&lt;br /&gt;
*'''иконка''' - Иконка предмета.&lt;br /&gt;
*'''текст (объект)''' - Текстовый объект в окошке.&lt;br /&gt;
*'''описание (объект)''' - Текстовый объект в окошке, в который сложим описание предмета.&lt;br /&gt;
&lt;br /&gt;
===Окошко поздравления с получением уровня===&lt;br /&gt;
&lt;br /&gt;
*'''окно''' - некая машина, содержащая необходимую информацию, олицетворяющая собой само окно предмета. Должна иметь состояние open.&lt;br /&gt;
*'''уровень''' - счетчик, отображающий номер полученного уровня.&lt;br /&gt;
*'''энергия''' - счетчик, отображающий количество энергии, которая прибавляется к максимуму.&lt;br /&gt;
*'''ресурс 1''' - счетчик, отображающий количество денег.&lt;br /&gt;
*'''ресурс 2''' - счетчик, отображающий количество кристаллов.&lt;br /&gt;
&lt;br /&gt;
===Окошко поздравления с получением уровня и открытием локации===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*'''окно''' - некая машина, содержащая необходимую информацию, олицетворяющая собой само поздравительное окошко. Должна иметь состояние open.&lt;br /&gt;
&lt;br /&gt;
*'''уровень''' - счетчик, отображающий номер полученного уровня.&lt;br /&gt;
&lt;br /&gt;
*'''энергия''' - счетчик, отображающий количество энергии, которая прибавляется к максимуму.&lt;br /&gt;
&lt;br /&gt;
*'''ресурс 1''' - счетчик, отображающий количество денег.&lt;br /&gt;
&lt;br /&gt;
*'''ресурс 2''' - счетчик, отображающий количество кристаллов.&lt;br /&gt;
&lt;br /&gt;
*'''иконка локации''' - картинка, отображающая иконку локации, которая стала доступна&lt;br /&gt;
&lt;br /&gt;
*'''описание локации''' - текстовый объект, который отображает описание локации, которая стала доступна.&lt;br /&gt;
&lt;br /&gt;
===Окошко получения уровня на локации===&lt;br /&gt;
&lt;br /&gt;
*'''окно''' - некая машина, содержащая необходимую информацию, олицетворяющая собой само поздравительное окошко. Должна иметь состояние open.&lt;br /&gt;
*'''опции''' - поле в опциях, в которое записывается уровень по локации.&lt;br /&gt;
&lt;br /&gt;
===Окошко, когда не хватает чарджера (общее) ===&lt;br /&gt;
&lt;br /&gt;
*'''окно''' - некая машина, содержащая необходимую информацию, олицетворяющая собой само уведомительное окошко. Должна иметь состояние open.&lt;br /&gt;
*'''иконка''' - картинка, отображающая иконку предмета, который игрок получит за сдачу коллекции.&lt;br /&gt;
*'''текст''' - текстовый объект, который будет отображать описание коллекции.&lt;br /&gt;
*'''суммарная цена ресурса 1''' - счетчик, отображающий суммарную цену всех необходимых чарджеров, представлена в виде ресурса 1 (деньги).&lt;br /&gt;
*'''суммарная цена ресурса 2''' - счетчик, отображающий суммарную цену всех необходимых чарджеров, представлена в виде ресурса 2 (кристаллы).&lt;br /&gt;
*'''кнопка купить все''' - кнопка, по нажатию которой, происходит покупка необходимых предметов. Если в кнопке есть необходимость она будет появляться, в противном случае - сама исчезать.&lt;br /&gt;
&lt;br /&gt;
===Окошко, которое выезжает когда найден коллекционный предмет ===&lt;br /&gt;
&lt;br /&gt;
*'''окно''' - некая машина, содержащая необходимую информацию, олицетворяет собой само поздравительное окошко. Должна иметь состояние show.&lt;br /&gt;
*'''текст''' - текстовый объект, который используется для отображения названия коллекции.&lt;br /&gt;
*'''таблица''' - таблица, в которую складываются объекты коллекции.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Дополнительные достижения ===&lt;br /&gt;
&lt;br /&gt;
В этом разделе указаны некоторые достижение, которые отправляются объектом economics в gamecenter.&lt;br /&gt;
&lt;br /&gt;
*'''достижение на трату ресурса 1''' - id достижения, отправляемого за трату ресурса 1 (когда игрок потратит сумму ресурса из следующего поля отправляется достижение 100%).&lt;br /&gt;
*'''количество ресурса 1''' - сумма ресурса 1, которую необходимо потратить для получения достижения.&lt;br /&gt;
*'''достижение на трату ресурса 2''' - id достижения, отправляемого за трату ресурса 2 (когда игрок потратит сумму ресурса из следующего поля отправляется достижение 100%).&lt;br /&gt;
*'''количество ресурса 2''' - сумма ресурса 2, которую необходимо потратить для получения достижения.&lt;br /&gt;
*'''достижение на число открытых локаций''' - id достижения, отправляемого за открытия количества локаций из следующего поля (при открытии нужного количества локаций отправляется 100% достижения).&lt;br /&gt;
*'''количество локаций''' - кол-во локаций, которое необходимо открыть для получения достижения.&lt;br /&gt;
*'''достижение за покупки чего-либо''' - id достижения, отправляемого за совершенное количество покупок из следующего поля (при покупке нужного кол-ва отправляется 100% достижения).&lt;br /&gt;
*'''количество покупок''' - количество покупок, которое необходимо свершить для получения достижения.&lt;br /&gt;
&lt;br /&gt;
=== Настройки симуляции ===&lt;br /&gt;
&lt;br /&gt;
*'''время''' - время симуляции, измеряется в секундах.&lt;br /&gt;
&lt;br /&gt;
*'''минимум в локации''' - нижняя граница диапазона времени проводимого игроком в хиддене. Отображается в виде доли от времени из настроек локации.&lt;br /&gt;
&lt;br /&gt;
*'''максимум в локации''' - верхняя граница диапазона времени проводимого игроком в хиддене. Отображается в виде доли от времени из настроек локации.&lt;br /&gt;
*'''порог покупки''' - число, указывающее какую долю, от ресурсов игрока, должна составлять цена локации, что бы он решился её купить.&lt;br /&gt;
*'''порог покупки предмета''' - число, указывающее какую долю,от ресурсов игрока, должна составлять цена предмета, что бы он решился его купить.&lt;br /&gt;
*'''вероятность задачи''' - число, отображающее вероятность того, что симуляция будет выбирать не из всех доступных локаций, а из связанных с заданиями.&lt;br /&gt;
*'''вероятность матча''' -  число, отображающее вероятность того, что симуляция будет играть в матч.&lt;br /&gt;
*'''изначально хинтов''' - изначальное количество хинтов.&lt;br /&gt;
*'''предметов на хинт''' - на сколько найденных предметов игрок израсходует хинт.&lt;br /&gt;
*'''цена хинта монеты''' - сколько монет (ресурс 1), стоит некий усредненный хинт.&lt;br /&gt;
*'''цена хинта клисталлы''' - сколько кристаллов (ресурс 2), стоит некий усредненный хинт.&lt;br /&gt;
*'''хидденов подряд''' - игрок будет пытаться пройти не менее данного числа хидденов подряд.&lt;br /&gt;
*'''восстановить энергии''' - некое усредненное количество энергии для восстановления.&lt;br /&gt;
*'''цена энергии монеты''' - сколько монет стоит энергия (цена в ресурсе 1).&lt;br /&gt;
*'''цена энергии кристаллы''' - сколько кристаллов стоит энергия (цена в ресурсе 2).&lt;br /&gt;
*'''вероятность победы в матче'' - число, отображающее вероятность победы в матче.&lt;br /&gt;
*'''время в матче''' - условное время пребывания в матче.&lt;br /&gt;
*'''вероятность покупки за реал''' - каждый раз когда игроку не хватает денег или кристаллов - проверяем эту вероятность.&lt;br /&gt;
*'''цена монеты в деньгах''' - цена монеты в деньгах.&lt;br /&gt;
*'''количество монет в покупке''' - количество монет в покупке.&lt;br /&gt;
*'''цена кристаллов в деньгах''' - цена кристаллов деньгах.&lt;br /&gt;
*'''количество кристаллов в покупке''' - количество кристаллов в покупке.&lt;br /&gt;
&lt;br /&gt;
==Поле economics setup==&lt;br /&gt;
По клику на &amp;quot;...&amp;quot; открывается редактор экономикса. В этом редакторе можно задать все настройки локациям и коллекциям, которые используются в игре.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Economics 1.jpg|500px]]&lt;br /&gt;
&lt;br /&gt;
Economics setup содержит 11 вкладок : локация хидден, коллекция, предметы, окошко когда не хватает чарджера (чарджер), нехватка ресурсов на чарджер, монстр, летающий объект, аномалия, сдача коллекции, временный эффект, достижение.&lt;br /&gt;
Вверху можно увидеть ряд кнопок для добавления и удаления: справа для локаций, слева для уровней мастерства.&lt;br /&gt;
&lt;br /&gt;
===Локация хидден===&lt;br /&gt;
&lt;br /&gt;
Форма редактора экономикса разделена на 4 колонки. В первой колонке мы видим список локаций, используемых в игре. Имена локаций можно изменять. Добавляются новые локации по нажатию на кнопку ''Добавить локацию'', удаляются кнопкой ''Удалить локацию''. Во второй колонке отображаются свойства выделенной локации.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Economics 2.jpg|right]]&lt;br /&gt;
*'''Объект на карте''' - это объект ведущий в локацию с карты. Должен иметь как минимум состояния open и closed, которые ему будет вызывать экономикс.&lt;br /&gt;
*'''индиктор уровня''' - каунтер, который будет отображать номер уровня, начиная с которого локация доступна.&lt;br /&gt;
*'''Экран''' - экран, в котором расположен локация.&lt;br /&gt;
*'''Превью локации''' - графический ресурс для отображения превью локации из базы ресурсов.&lt;br /&gt;
*'''Имя локации''' - название локации, перетаскивается из текстовой базы.&lt;br /&gt;
*'''Описание локации''' - описание, перетаскивается из текстовой базы.&lt;br /&gt;
*'''Уровень''' - уровень требуемый для того, чтобы играть в локацию.&lt;br /&gt;
*'''Результат''' - имя поля в опциях, куда локацией будет занесен результат. Расчитываем найти там число.&lt;br /&gt;
*'''Связанный хидден лист''' - хидден-лист, связанный с локацией.&lt;br /&gt;
*'''необходимый предмет''' - предмет необходимый для входа в локацию. Может быть как коллекционным, так и инвентарным.&lt;br /&gt;
*'''разница в уровнях''' - разница в уровнях, при которой можно купить доступ в локацию.&lt;br /&gt;
*'''цена ресурс 1''' - если наш уровень ниже необходимого на разницу из верхнего поля, мы можем разлочить локацию за деньги.&lt;br /&gt;
*'''цена ресурс 2''' - если наш уровень ниже необходимого на разницу из верхнего поля, мы можем разлочить локацию за кристаллы.&lt;br /&gt;
*'''достижение''' - достижение, которое будет открываться по мере игры в эту локацию.&lt;br /&gt;
*'''процент''' - проценты достижения из предыдущего поля.&lt;br /&gt;
&lt;br /&gt;
В третей  колонке записываются уровни мастерства. Их можно переименовать. Добавляются кнопкой ''Добавить уровень мастерства''. Удаляются кнопкой ''Удалить уровень мастерства''. В четвертой колонке настраивается выделенный уровень мастерства.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Economics 3.jpg|right]]&lt;br /&gt;
*'''энергия''' - энергия требуемая для того, чтобы играть в локацию.&lt;br /&gt;
*'''ресурс 1''' - деньги даваемые за прохождение локации.&lt;br /&gt;
*'''ресурс 2''' - кристаллы даваемые за прохождение локации.&lt;br /&gt;
*'''опыт''' - опыт даваемый за прохождение локации.&lt;br /&gt;
*'''кол-во объектов''' - максимальное количество доступных для поиска объектов в одной игровой сессии.&lt;br /&gt;
*'''время игры''' - общее время игры (если -1, то игнорируется).&lt;br /&gt;
*'''режим игры''' - режим игры: 0 - случайный, 1- слова, 2 - силуэты.&lt;br /&gt;
*'''аномалия''' - вероятность возникновения аномалии в локациях.&lt;br /&gt;
*'''доступные аномалии''' - перечень доступных на данном уровне мастерства аномалий. Записываются в виде чисел через запятую. Доступные значения 0, 1, 2, 3.&lt;br /&gt;
*'''множитель''' - коэффициент, на который умножаются набранные очки. при расчете перехода на следующий уровень. Может быть меньше 1.&lt;br /&gt;
*'''постоянный прирост''' - постоянный прирост, если он больше 0, то будет использоваться ВМЕСТО реально набранных в хиддене очков и множителя.&lt;br /&gt;
*'''очки''' - очки, которые нужно набрать для перехода на следующий уровень мастерства. Набранные в локции очки умножаются на множитель и суммируются. Когда превысят это значение - произойдет переход.&lt;br /&gt;
*'''Предметы''' - id коллекционных предметов, которые можно найти на локации. Не обязаны принадлежать к одной коллекции. Перетаскиваются из текстового редактора. Будет использоваться их иконка.&lt;br /&gt;
*'''Вероятность''' - вероятность найти один из коллекционных предметов из предыдущего поля.&lt;br /&gt;
*'''Вероятность 2''' - вероятность найти один из коллекционных предметов из предыдущего поля.&lt;br /&gt;
*'''Вероятность 3''' - вероятность найти один из коллекционных предметов из предыдущего поля.&lt;br /&gt;
*'''Инвентарь''' - id инвентарных предметов, которые можно найти на локации. Перетаскиваются из текстового редактора.&lt;br /&gt;
*'''Вероятность инв.''' - вероятность найти один из инвентарных предметов из предыдущего поля.&lt;br /&gt;
*'''Вероятность инв. 2''' - вероятность найти один из инвентарных предметов из предыдущего поля.&lt;br /&gt;
*'''Вероятность инв. 3''' - вероятность найти один из инвентарных предметов из предыдущего поля.&lt;br /&gt;
&lt;br /&gt;
===Коллекция===&lt;br /&gt;
&lt;br /&gt;
Во вкладке ''Коллекция'' используются только первые две колонки. В первой колонке отображаются добавленные коллекции. Добавляются кнопкой ''Добавить локацию''. Удаляются кнопкой ''Удалить локацию''. Коллекции можно переименовывать. Второй столбик содержит id предметов входящих в коллекции. Перетаскиваются из текстового редактора. Будет использоваться их иконка. Ресурс 1 и ресурс 2 - ресурсы, которые даются за сдачу коллекции. Опыт - опыт, который дается за сдачу коллекции.&lt;br /&gt;
&lt;br /&gt;
*'''имя''' - Имя (а также - описание, если нужно) конкретно коллекции.&lt;br /&gt;
*'''предметы''' - id предметов входящих в коллекции. Перетаскиваются из текстового редактора. Будет использоваться их иконка.&lt;br /&gt;
*'''ресурс 1''' - деньги даваемые за сдачу коллекции.&lt;br /&gt;
*'''ресурс 2''' - кристаллы даваемые за сдачу коллекции.&lt;br /&gt;
*'''опыт''' - опыт даваемый за сдачу коллекции.&lt;br /&gt;
*'''награда''' - предмет даваемый за сдачу коллекции. Перетаскивается из текстовой базы.&lt;br /&gt;
*'''заряжатели''' - Предметы инвентаря, необходимые для сдачи коллекции. ВНИМАНИЕ: будут использоваться не более первых 4х элементов списка.&lt;br /&gt;
&lt;br /&gt;
===Предметы===&lt;br /&gt;
&lt;br /&gt;
Раздел &amp;quot;Предметы&amp;quot; позволяет добавлять список инвентарных предметов, которые могут использоваться в процессе игры, предоставлять различные бонусы. В первой колонке список предметов. Добавляется кнопкой  &amp;quot;Добавить локацию&amp;quot;, удаляется кнопкой &amp;quot;Удалить локацию&amp;quot;. Предметы могут быть переименованы. Во второй колонке записаны свойства каждого предмета.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Economics 4.jpg|350px|right]]&lt;br /&gt;
&lt;br /&gt;
*'''nm''' - имя предмета&lt;br /&gt;
&lt;br /&gt;
*'''section''' - категория предмета.&lt;br /&gt;
&lt;br /&gt;
*'''use''' - если 1, то предмет может использоваться (кнопка Use видимая).&lt;br /&gt;
&lt;br /&gt;
*'''nm''' - имя предмета (txtID).&lt;br /&gt;
&lt;br /&gt;
*'''опции''' - если это поле задано, то в него будет записываться актуальное количество объектов.&lt;br /&gt;
&lt;br /&gt;
*'''начальное количество''' - начальное  количество предметов данного типа в инвентаре.&lt;br /&gt;
&lt;br /&gt;
*'''можно продать''' - возможность продавать предмет: 1 - можно продать, 0 - нельзя продать.&lt;br /&gt;
&lt;br /&gt;
*'''уникальный''' - если 1 - то предмет уникальный пропадает после покупки, если 0 - предмет после покупки не пропадает.&lt;br /&gt;
&lt;br /&gt;
*'''res1''' - цена предмета в ресурсе 1.&lt;br /&gt;
&lt;br /&gt;
*'''res2''' - цена предмета в ресурсе 2.&lt;br /&gt;
&lt;br /&gt;
*'''sres1''' - продажа - цена предмета в ресурсе 1.&lt;br /&gt;
&lt;br /&gt;
*'''sres2''' - продаже - цена предмета в ресурсе 2.&lt;br /&gt;
&lt;br /&gt;
*'''en''' - восстанавливает энергии единовременно.&lt;br /&gt;
&lt;br /&gt;
*'''tm''' - длительность действия в секундах.&lt;br /&gt;
&lt;br /&gt;
*'''dTm''' - уменьшение времени восстановления энергии в %.&lt;br /&gt;
&lt;br /&gt;
*'''dFnd''' - увеличение вероятности нахождения предмета в %.&lt;br /&gt;
&lt;br /&gt;
*'''dExp''' - увеличение начисляемого опыта в %.&lt;br /&gt;
&lt;br /&gt;
*'''dRes1''' - увеличение полученного ресурса 1 в %.&lt;br /&gt;
&lt;br /&gt;
*'''dRes2''' - увеличение полученного ресурса 2 в %.&lt;br /&gt;
&lt;br /&gt;
*'''dOvP''' - увеличение перегруженной вероятности нахождения предметов в %.&lt;br /&gt;
&lt;br /&gt;
*'''num''' - число предметов в сундуке. Выбираются случайно из следующего поля. При 0 - следующее поле не используется.&lt;br /&gt;
&lt;br /&gt;
*'''items''' - предметы, которые можно найти в сундуке. Перетаскиваются из текстовой базы.&lt;br /&gt;
&lt;br /&gt;
*'''use_id''' - задание этого поля говорит о том, что данный предмет является оптовым пучком для предмета указанного у этом поле. Num, в этом случае, - количество.&lt;br /&gt;
&lt;br /&gt;
*'''объект''' - связанный объект, будет добавляться в инвентарь.&lt;br /&gt;
&lt;br /&gt;
*'''достижение''' - достижение, которое будет открываться по мере применения подобный предметов.&lt;br /&gt;
&lt;br /&gt;
*'''процент''' - процент достижения их предыдущего поля.&lt;br /&gt;
&lt;br /&gt;
*'''владелец''' - на данный момент - номер правильной кнопки в окне угадайки (если -1. то игнорируется).&lt;br /&gt;
&lt;br /&gt;
===Окошко когда не хватает чарджера===&lt;br /&gt;
Позволяет добавлять окна. Окно добавляется кнопкой &amp;quot;Добавить локацию&amp;quot;, окно можно переименовывать, удаляется кнопкой &amp;quot;Удалить локацию&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
*'''название''' - текстовый объект в который вкладывается название чарджера.&lt;br /&gt;
*'''иконка''' - иконка чарджера.&lt;br /&gt;
*'''описание''' - текстовый объект в который вкладывается название чарджера.&lt;br /&gt;
*'''купить''' - кнопка покупка чарджера, передает economics состояние buy_charger.&lt;br /&gt;
*'''искать''' - кнопка поиска чарджера, передает economics состояние search_charger.&lt;br /&gt;
*'''есть''' - счетчик, который показывает сколько чарджеров есть сейчас.&lt;br /&gt;
*'''нужно''' - счетчик, который показывает сколько чарджерова необходимо для сдачи коллекции.&lt;br /&gt;
*'''цена ресурса 1''' - счетчик, который показывает цену чарджера в ресурсе 1.&lt;br /&gt;
*'''цена ресурса 2''' - счетчик, который показывает цену чарджера в ресурсе 2.&lt;br /&gt;
*'''достаточно''' -  объект, который отображается вместо кнопки, в тот момент, когда чарджеров достаточное количество.&lt;br /&gt;
&lt;br /&gt;
===Нехватка ресурсов на чарджер===&lt;br /&gt;
Позволяет изменить состояние выбранному объекту при нехватке ресурсов на чарджер. Добавляется кнопкой &amp;quot;Добавить локацию&amp;quot;, можно переименовывать, удаляется кнопкой &amp;quot;Удалить локацию&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
===Монстр===&lt;br /&gt;
В первой колонке добавляется монстр, добавляется кнопкой &amp;quot;Добавить локацию&amp;quot;, если возможность переименовать, удаляется кнопкой &amp;quot;Удалить локацию&amp;quot;&lt;br /&gt;
Во второй колонке отображаются свойства выделенной колонки.&lt;br /&gt;
&lt;br /&gt;
*'''Объект на карте''' - объект, который представляет монстра на карте. Как правило окно, которое должно иметь состояние hide (скрыт),show и disappear (прогнали).&lt;br /&gt;
*'''Имя монстра''' - текстовый id из которого берется иконка, имя и описание монстра.&lt;br /&gt;
*'''Экран''' - экран в котором расположена локация.&lt;br /&gt;
*'''min уровень''' - уровень, при достижении которого, появляется монстр.&lt;br /&gt;
*'''max уровень''' - уровень, при достижении которого, монстр исчезает.&lt;br /&gt;
*'''необходимый предмет''' - предмет необходимый для игры с духом.&lt;br /&gt;
*'''количество''' -  количество предметов из поля &amp;quot;необходимый предмет&amp;quot;. &lt;br /&gt;
*'''связанный баттл''' - поле в котором указывается связанный баттл.&lt;br /&gt;
*'''связанный матч''' - полое в котором указывается связанный матч.&lt;br /&gt;
&lt;br /&gt;
В третей колонке записываются уровни мастерства. Их можно переименовывать. Добавляются уровни кнопкой &amp;quot;Добавить уровень мастерства&amp;quot;, удаляются кнопкой &amp;quot;Удалить уровень мастерства&amp;quot;.&lt;br /&gt;
В четвертой колонке настраивается выделенный уровень мастерства.&lt;br /&gt;
&lt;br /&gt;
*'''энергия''' - энергия необходимая для того, что бы можно было начать играть в локацию.&lt;br /&gt;
*'''ресурс1''' - деньги даваемые за прохождение локации.&lt;br /&gt;
*'''опыт''' - опыт даваемый за прохождение локации.&lt;br /&gt;
*'''постоянный прирост''' - постоянный прирост.&lt;br /&gt;
*'''очки''' - количество очков, которое необходимо набрать для перехода на следующий уровень мастерства.&lt;br /&gt;
*'''предметы''' - id коллекционных предметов, которые можно найти на локации. Предметы не обязательно должны быть из одной коллекции. Необходимые предметы перетаскиваются из текстового редактора, при этом будет использоваться их иконка.&lt;br /&gt;
*'''Вероятность''' - вероятность найти один из коллекционных предметов из поля &amp;quot;предметы&amp;quot;.&lt;br /&gt;
*'''Вероятность 2''' - вероятность найти один из коллекционных предметов из поля &amp;quot;предметы&amp;quot;.&lt;br /&gt;
*'''Вероятность 3''' - вероятность найти один из коллекционных предметов из поля &amp;quot;предметы&amp;quot;.&lt;br /&gt;
*'''Инвентарь''' - id инвентарных предметов, которые можно найти на локации. Перетаскиваются из текстового редактора.&lt;br /&gt;
*'''Вероятность инв.''' - вероятность найти один из инвентарных предметов из поля &amp;quot;инвентарь&amp;quot;.&lt;br /&gt;
*'''Вероятность инв. 2''' - вероятность найти один из инвентарных предметов из поля &amp;quot;инвентарь&amp;quot;.&lt;br /&gt;
*'''Вероятность инв. 3''' - вероятность найти один из инвентарных предметов из поля &amp;quot;инвентарь&amp;quot;.&lt;br /&gt;
*'''жизни врага''' - записываются значения вражеских жизней.&lt;br /&gt;
*'''начальные жизни врага''' - начальное значение вражеских жизней.&lt;br /&gt;
*'''регенерация врага''' - время (в ms), за которое у противника отрастает жизнь. Если установлено -1, то отрастания жизни противника на происходит.&lt;br /&gt;
*'''число цветов''' - это число будет записываться в параметр numTokenNums матча.&lt;br /&gt;
&lt;br /&gt;
===Летающий объект===&lt;br /&gt;
Впервой колонке кнопкой &amp;quot;Добавить локацию&amp;quot; добавляется летающий объект - объекты которые вылетают после прохождения локации или после покупки сундуков. Удаляется кнопкой &amp;quot;Удалить локацию&amp;quot;. Во второй колонке добавляется объект выделенного летающего объекта. Состояния hide, wait, inventory и  collection  -  обязательны для этого предмета.&lt;br /&gt;
&lt;br /&gt;
''hide'' - состояние, когда объект не видно на экране. В этом состоянии можно указать свойство alpha=0.&lt;br /&gt;
&lt;br /&gt;
''wait'' - состояние, в которое попадают летающие объекты, которые отображают коллекционные предметы до того, как объекту economics будет вызвано состояние col_item_found.&lt;br /&gt;
&lt;br /&gt;
''collection'' - состояние, которое будет вызвано летающему объекту, который отображает коллекционный предмет после того как объекту economics будет вызвано состояние col_item_found (он может лететь в таблицу с нужной коллекцией).&lt;br /&gt;
&lt;br /&gt;
''inventory'' - состояние, которое вызывается летающему объекту в случае, если он отображает инвентарный объект (в этом состоянии предмет становится видимым и в дальнейшем может перемещаться).&lt;br /&gt;
&lt;br /&gt;
===Аномалия===&lt;br /&gt;
&lt;br /&gt;
В хидден-локации могут присутствовать аномалии, затрудняющие ее прохождение.&lt;br /&gt;
Впервой колонке добавляется аномалия, добавляется кнопкой &amp;quot;Добавить локацию&amp;quot;, можно переименовывать, удаляется кнопкой &amp;quot;Удалить локацию&amp;quot;.&lt;br /&gt;
Во второй колонке отображаются свойства выделенной аномалии.&lt;br /&gt;
*'''id''' - поле в которое перетаскивается текстовый id, из которого используется название, описание и иконка аномалии.&lt;br /&gt;
*'''предмет''' - предмет необходимый для того, что бы изгнать аномалию.&lt;br /&gt;
*'''экран''' -  в этом поле указывается экран, в котором расположена миниигра.&lt;br /&gt;
*'''прибавка к энергии''' - указывается прибавка к энергии, поскольку для игры в аномалию будет нужно больше энергии. Например, при значении 0,5 - энергии потребуется больше в полтора раза.&lt;br /&gt;
*'''прибавка к опыту''' - указывается прибавка к опыту, поскольку игра в локацию с аномалией будет давать больше опыта. Например, при значении 0,5 - опыта приобретается больше в полтора раза.&lt;br /&gt;
*'''прибавка к ресурсу 1''' - указывается прибавка к ресурсу 1. поскольку игра в локацию с аномалией будет давать больше ресурса 1. Например, при значении 0,5 - ресурса 1 приобретается больше в полтора раза.&lt;br /&gt;
&lt;br /&gt;
===Сдача коллекции===&lt;br /&gt;
&lt;br /&gt;
В первой колонке добавляется событие на сдачу коллекции кнопкой &amp;quot;Добавить локацию&amp;quot;, удаляется кнопкой &amp;quot;Удалить локацию&amp;quot;.&lt;br /&gt;
Во второй колонке устанавливается состояние объекту сдачи коллекции.&lt;br /&gt;
&lt;br /&gt;
===Временный эффект===&lt;br /&gt;
&lt;br /&gt;
Временный эффект - визуализация действия различных инвентарных объектов, которые применил игрок.&lt;br /&gt;
В первой колонке создается временный эффект, добавляется кнопкой &amp;quot;Добавить локацию&amp;quot;, удаляется кнопкой &amp;quot;Удалить локацию&amp;quot;.&lt;br /&gt;
Во второй колонке устанавливаются свойства выделенного временного эффекта.&lt;br /&gt;
&lt;br /&gt;
*'''иконка''' - из редактора ресурсов, перетаскивается иконка временного эффекта&lt;br /&gt;
*'''таймер''' - указывается объект типа timer, который соответствует выбранному временному эффекту.&lt;br /&gt;
*'''подложка''' - из редактора ресурсов, перетаскивается картинка подложки для таймера указанного в поле &amp;quot;таймер&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
===Достижение===&lt;br /&gt;
В первой колонке записываются достижения. Добавляются кнопкой &amp;quot;Добавить локацию&amp;quot;, удаляются кнопкой &amp;quot;Удалить локацию&amp;quot;. &lt;br /&gt;
Во второй колонке отображаются свойства выбранного достижения.&lt;br /&gt;
&lt;br /&gt;
*'''достижение''' - достижение, которое будет открываться по мере применения подобных предметов.&lt;br /&gt;
&lt;br /&gt;
*'''процент''' - в виде числа, указывается процент достижения из поля &amp;quot;достижение&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
*'''режим игры''' - указывается режим игры, ели 0 - режим игры не важен для достижения, 1 - режим игры слова, 2 - режим игры силуэты.&lt;br /&gt;
&lt;br /&gt;
*'''аномалия''' - указывается аномалия необходимая для достижения, если указывается -2 -  то аномалия не важна для достижения, если указывается -1 - то для достижения может использоваться любая аномалия.&lt;br /&gt;
&lt;br /&gt;
==Состояния==&lt;br /&gt;
&lt;br /&gt;
[[Файл:Economics 5.jpg|right]]&lt;br /&gt;
Перед вызовом некоторых состояний объекту economics необходимо передать параметр '''param''' и его значение. Например когда нам нужно открыть окно перед локацией мы передаем параметр номера этой локации в списке локаций (начиная с 0).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear /br&amp;gt;&lt;br /&gt;
*'''idle''' - состояние по умолчанию.&lt;br /&gt;
*'''completed''' - передает состояние окончания исследования локации (необходим параметр номера локации).&lt;br /&gt;
*'''exp''' - передает состояние начисления опыта (необходим параметр количества опыта). Нужен больше для тестирования, чем для самой игры.&lt;br /&gt;
*'''play''' - передает состояния перехода на локацию для исследования(при условии что хватит энергии и выполнены прочие условия).&lt;br /&gt;
*'''location''' - открывает окно перед локацией (необходим параметр номера локации).&lt;br /&gt;
*'''collection''' - заставляет экономикс заполнить таблицу коллекций. Лучше вызывать сразу перед открытием окна коллекций или во время его открытия.&lt;br /&gt;
*'''collections_scroll''' - заполняет таблицу коллекций и проматывает на коллекцию содержащую последний предмет для которого было показано окошко с информацией о предмете.&lt;br /&gt;
*'''item_collections''' - заставляет экономикс показать окошко с информацией о коллекционном предмете. Вызывается при тапе на таблицу в темплейте коллекций (объект ecollection).&lt;br /&gt;
*'''item_effect''' - сообщает economics, что необходимо показать окошко предмета от таймэфекта (необходим параметр номера эффекта)&lt;br /&gt;
*'''item_preview''' - заставляет экономикс показать окошко с информацией о предмете, который можно найти при обыске локации. Вызывается при тапе на таблицу с предметами в окне перед локацией.&lt;br /&gt;
*'''item_review''' - заставляет экономикс показать окошко с информацией о предмете, который нашли после обыска локации. Вызывается при тапе на таблицу с предметами в окне после локации.&lt;br /&gt;
*'''completed_animation''' - состояние запускает анимацию полученной награды за прохождение локации после &amp;quot;окна после локации&amp;quot;. Можно запускать из состояния закрытия окна после локации.&lt;br /&gt;
*'''unlock_item''' - передает состояние покупки предмета, необходимого для открытия локации. Как правило, предмет находится в окне перед локацией.&lt;br /&gt;
*'''unlock''' -  передает состояние при котором происходит разлочка локации если текущий уровень на один ниже, чем необходимый для открытии локации или значение ''разница в уровнях'', позволяет разлочить локацию. Как правило кнопка для разблокирования локации размещается в окне перед локацией. Когда разница уровней достаточна, чтобы разлочить локацию машина локации переводится в состояние '''can_buy'''.&lt;br /&gt;
*'''completed_reward''' - вызывается объектом анимации награды после прохождения локации. Если объектов несколько (опыт, монеты, кристаллы), то вызывается только один раз одним из объектов.&lt;br /&gt;
*'''search_charger''' - производит поиск недостающего чарджера. Пока только по монстрам. Номер чарджера 0 или 1 - в парам.&lt;br /&gt;
*'''buy_charger''' - производит покупку недостающего чарджера  (номер в параметре, -1 - купить все).&lt;br /&gt;
*'''update''' - обновить все локации на карте.&lt;br /&gt;
*'''level_up''' - проверяет получение нового уровня. Чтобы окно с получением нового уровня не открывалось самостоятельно, мы вызываем это состояние, когда нам удобно. Проверяется был ли получен новый уровень, если был, то вызывается окно с получением нового уровня.&lt;br /&gt;
*'''res1''' - Добавить ресурс 1 (значение в параметре).&lt;br /&gt;
*'''res2''' - Добавить ресурс 2 (значение в параметре).&lt;br /&gt;
*'''res1s''' - скорректировать статистику по ресурсу 1 (значение в параметре, когда, например, ресурс не заработан, а выигран в казино).&lt;br /&gt;
*'''res2s''' - скорректировать статистику по ресурсу 2 (значение в параметре, когда, например, ресурс не заработан, а выигран в казино).&lt;br /&gt;
*'''energy''' - Добавить энергию (значение в параметре).&lt;br /&gt;
*'''failed''' - текущая локация провалена (не дается опыта и прочих наград за прохождение локации). Требует параметра локации.&lt;br /&gt;
*'''item_effect''' -  показать окошко предмета от таймэффекта. В param - номер эффекта.&lt;br /&gt;
*'''search_collection''' -  проскроллить карту на локацию где можно найти коллекционный предмет. При этом машина локации (Объект на карте) будет переведена в состояние highlight, в котором локацию можно посветить или выделить ее каким-то образом.&lt;br /&gt;
*'''search_task''' -  проскроллить карту на локацию где можно найти предмет из задания. При этом машина локации (Объект на карте) будет переведена в состояние highlight, в котором локацию можно посветить или выделить ее каким-то образом.&lt;br /&gt;
*'''search_charger''' - проскролить  карту на монстр, в котором можно найти чарджер (необходимо значение чарджера в параметре 0 или 1).&lt;br /&gt;
*'''monster''' - Открыть превью для монстра с номером указанном в поле параметр.&lt;br /&gt;
*'''monster_play''' - Играть в миниигру выбранного монстра (при условии, что хватит энергии и выполнены прочие условия).&lt;br /&gt;
*'''monster_removed''' - Монстра прогнали предметами. Вычесть предметы и успешно завершить.&lt;br /&gt;
*'''monster_completed''' - Текущая миниигра так или иначе пройдена.&lt;br /&gt;
*'''monster_failed''' -  Текущая миниигра провалена, отличается от предыдущего тем, что не дается бонусного опыта и прочих наград.&lt;br /&gt;
*'''monster_buy''' -  попытаться докупить предметы, необходимые для игры с монстром.&lt;br /&gt;
*'''col_item_param''' - Добавить коллекционный предмет, взяв его айди из параметра.&lt;br /&gt;
*'''anomaly_item''' - попытаться прогнать аномалию в текущей локации предметом. В зависимости от номера аномалии, машина локации (Объект на карте)  переводится в состояние anomaly_N, где N - номер аномалии начиная с 0. (anomaly_0, anomaly_1 и т.д.). Таким образом можно визуализировать аномалию на карте.&lt;br /&gt;
*'''anomaly_game''' - попытаться прогнать аномалию в текущей локации миниигрой.&lt;br /&gt;
*'''anomaly_completed''' -  минигра по прогону аномалии успешно завершена.&lt;br /&gt;
*'''anomaly_buy''' - показать окно покупки для предмета прогона аномалии (в текущей локации).&lt;br /&gt;
*'''cheat_loc_level''' -  &amp;quot;накачать&amp;quot; всем локациям скилл левел до максимума (для тестирования).&lt;br /&gt;
*'''chest_animation''' - анимировать последний использованный сундук.&lt;br /&gt;
*'''col_item_found''' -  показать окошко с коллекцией для одного найденного коллекционного предмета из очереди.&lt;br /&gt;
*'''cheat_one_level''' - просимулировать один уровень развития игрока.&lt;br /&gt;
*'''purchase_ok''' - сообщает economocs что произошла покупка. Сформировать событие флури.&lt;br /&gt;
*'''buy_random_col''' - купить случайный коллекционный предмет.&lt;br /&gt;
&lt;br /&gt;
=Сопутствующие объекты=&lt;br /&gt;
&lt;br /&gt;
Объекты, которые используются вместе с объектом economics и имеют с ним непосредственную связь:&lt;br /&gt;
&lt;br /&gt;
* [[Файл:E_items.png]] - [[Eitems]] - объект, служащий для связи инвентаря(магазина) и экономики. &lt;br /&gt;
* [[Файл:E_store_item.png]] - [[Estoreitem]] - шаблон для ячейки магазина. &lt;br /&gt;
* [[Файл:E_inventory_item.png]] - [[Einventoryitem]] - шаблон для ячейки инвентаря. &lt;br /&gt;
* [[Файл:Taskorganizer.png]] - [[Taskorganizer]] - органайзер заданий.&lt;br /&gt;
* [[Файл:E_task_item.png]] - [[Etaskitem]] - шаблон для ячейки задания.&lt;br /&gt;
* [[Файл:E_collection.png]] - [[Ecollection]] - шаблон для строки в таблице коллекции.&lt;br /&gt;
* [[Файл:Economics.png]] - [[Economics]] - глобальная настройка игр типа ферма\билдер&lt;/div&gt;</summary>
		<author><name>Podkor</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.appsalutecreator.com/index.php?title=Economics&amp;diff=5271</id>
		<title>Economics</title>
		<link rel="alternate" type="text/html" href="https://wiki.appsalutecreator.com/index.php?title=Economics&amp;diff=5271"/>
		<updated>2013-11-15T13:34:06Z</updated>

		<summary type="html">&lt;p&gt;Podkor: /* Состояния */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Объект Economics служит для реализации сложной игровой механики типа &amp;quot;ферма&amp;quot;. Он осуществляет связь между игровыми локациями, накопленным опытом, текущим количеством энергии, денег и кристаллов (можно использовать и другие названия ресурсов), а также управляет объектами коллекций, магазина, инвентаря и игровых заданий.&lt;br /&gt;
&lt;br /&gt;
= Свойства =&lt;br /&gt;
&lt;br /&gt;
*'''предметы''' - Объект типа eitems.&lt;br /&gt;
*'''задачи''' - Объект типа taskorganizer.&lt;br /&gt;
&lt;br /&gt;
==Параметры==&lt;br /&gt;
===Основные параметры===&lt;br /&gt;
&lt;br /&gt;
*'''Уровни''' - опыт, необходимый для перехода на следующий уровень. Последовательность чисел через запятую.&lt;br /&gt;
*'''Уровни парабола''' - Три числа через запятую, задающие коэффициенты параболы, которые определяют необходимый опыт после уже перечисленных уровней.&lt;br /&gt;
*'''Энергия''' - максимум энергии на каждом из уровней. Последовательность чисел через запятую. Последнее значение будет зациклено для всех последующих уровней.&lt;br /&gt;
*'''Энергия прибавка''' - Число определяющее прибавку к максимуму энергии после уже перечисленных уровней.&lt;br /&gt;
*'''Ресурс 1''' - количество ресурса 1 добавляемое за уровень. Последовательность чисел через запятую. Последнее значение будет зациклено для всех последующих уровней.&lt;br /&gt;
*'''Ресурс 2''' - количество ресурса 2 добавляемое за уровень. Последовательность чисел через запятую. Последнее значение будет зациклено для всех последующих уровней.&lt;br /&gt;
*'''Перезарядка''' - время за которое восстанавливается единица энергии в ms.&lt;br /&gt;
*'''нач. ресурс 1''' - Начальное значение ресурса 1.&lt;br /&gt;
*'''нач. ресурс 2''' - Начальное значение ресурса 2.&lt;br /&gt;
*'''время напоминания''' - время напоминания о задачах на каждом из уровней. Записывается в виде последовательности чисел через запятую. Последнее значение будет зациклено для всех последующих уровней. Время изменяется в часах.&lt;br /&gt;
*'''напоминание об энергии''' - уведомление перетаскивается с текстового редактора, представляет собой напоминание о том что энергия восстановилась. Например, &amp;quot;Ваше энергия полностью восстановлена&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
===Основные счетчики===&lt;br /&gt;
Этот раздел содержит необходимые объекты для подсчета (counter, timer, progressbar).&lt;br /&gt;
&lt;br /&gt;
*'''Уровень''' - счетчик текущего уровня игрока.&lt;br /&gt;
*'''Прогресс в уровне (счетчик)''' - Набранный на этом уровне опыт и остаток до следующего уровня (счетчик).&lt;br /&gt;
*'''Прогресс в уровне (бар)''' - Набранный на этом уровне опыт и остаток до следующего уровня (прогрессбар).&lt;br /&gt;
*'''Опыта до уровня''' - счетчик показывающий сколько опыта необходимо для перехода с текущего уровня на следующий.&lt;br /&gt;
*'''Текущая энергия''' - прогрессбар текущей энергии.&lt;br /&gt;
*'''Максимальная энергия''' - счетчик, который отображает значение максимальной энергии.&lt;br /&gt;
*'''Таймер энергии''' - таймер отображающий время до восстановления единицы энергии.&lt;br /&gt;
*'''Таймер всей энергии''' - таймер, который отображает время до восстановления всей энергии.&lt;br /&gt;
*'''Ресурс 1''' - счетчик первого ресурса (денег).&lt;br /&gt;
*'''Ресурс 2''' - счетчик второго ресурса (кристаллов).&lt;br /&gt;
*'''анимация рес.1''' - Анимационный объект награды в ресурсе 1. Должен иметь состояние show.&lt;br /&gt;
*'''анимация рес.2''' - Анимационный объект награды в ресурсе 2. Должен иметь состояние show.&lt;br /&gt;
*'''анимация опыт''' - Анимационный объект награды в опыте. Должен иметь состояние show.&lt;br /&gt;
&lt;br /&gt;
===Окно перед локацией===&lt;br /&gt;
Настройка окна, которое всплывает перед посещением локации. В этом окне отображается информация о локации которую мы хотим посетить.&lt;br /&gt;
&lt;br /&gt;
*'''Окно''' - некая машина, олицетворяющая собой само окно превью. Должна иметь состояния ''open'' - открыта, ''open_lvl'' - не хватает лвл, ''open_buy'' - разница в уровнях позволяет нам купить анлок, ''open_item'' - не хватает предмета для анлока,  ''open_unlock'' - состояние вызываемое окну перед локацией после успешной покупки предмета для анлока, ''open_energy'' - состояние вызываемое окну перед локацией в случае нехватки энергии.&lt;br /&gt;
*'''Превью локации''' - графический ресурс для отображения превью локации. В это поле можно поставить любую картинку для того, чтобы корректно разместить ее в &amp;quot;окне перед локацией&amp;quot;. Далее экономикс сам будет подставлять нужные превью.&lt;br /&gt;
*'''Название локации''' - текстовый объект, в который будет подставляться название локации.&lt;br /&gt;
*'''Описание локации''' - текстовый объект, в который будет подставляться описание локации.&lt;br /&gt;
*'''Уровень мастерства''' - счетчик уровня мастерства.&lt;br /&gt;
*'''Прогрессбар уровня мастерства''' - прогрессбар, который отображает уровень мастерства.&lt;br /&gt;
*'''Текущий уровень''' - счетчик текущего уровня мастерства.&lt;br /&gt;
*'''Необходимая энергия''' - счетчик необходимой энергии.&lt;br /&gt;
*'''Аномальная энергия''' - счетчик, который отображает дополнительную энергию при наличии аномалии в локации.&lt;br /&gt;
*'''Призовой ресурс 1''' - счетчик призовых денег.&lt;br /&gt;
*'''Аномальный ресурс 1''' - счетчик, который отображает количество дополнительных призовых денег, которые даются за игру в локацию с наличием аномалии.&lt;br /&gt;
*'''Призовой ресурс 2''' - счетчик призовых кристаллов.&lt;br /&gt;
*'''Призовой опыт''' - счетчик призового опыта.&lt;br /&gt;
*'''Аномальный опыт''' - счетчик, который отображает значение дополнительного опыта, который дается за игру в локацию с наличием аномалии.&lt;br /&gt;
*'''Таблица коллекции''' - таблица, в которой будут отображаться предметы, которые можно найти в данной локации.&lt;br /&gt;
&lt;br /&gt;
''для закрытой по уровню локации''&lt;br /&gt;
*'''Режим игры''' - машина, которой будут устанавливаться состояния в зависимости от режима игры (может быть смешанный, текст или силуэт). TODO пока обладает только режимом text и icon. Эта машина будет передавать настройки таблице, в которую помещаются поисковые объекты, поэтому важно, чтобы к этой таблице был доступ (например она может находится на глобальном экране).&lt;br /&gt;
&lt;br /&gt;
*'''индикатор уровня''' - счетчик с необходимым для локации уровнем.&lt;br /&gt;
&lt;br /&gt;
''для локации c ценой''&lt;br /&gt;
&lt;br /&gt;
*'''цена ресурс 1''' - Стоимость анлока локации в ресурсе 1.&lt;br /&gt;
*'''цена ресурс 2''' - Стоимость анлока локации в ресурсе 2.&lt;br /&gt;
&lt;br /&gt;
''для локации c требуемым предметом''&lt;br /&gt;
&lt;br /&gt;
*'''предмет''' - иконка необходимого для локации предмета.&lt;br /&gt;
*'''название предмета''' - в этом поле указывается название, необходимого для локации предмета.&lt;br /&gt;
*'''счетчик цены''' - счетчик, который отображает стоимость предмета.&lt;br /&gt;
*'''иконка цены'''  - иконка цены предмета, представляет собой картинку, которая перетаскивается из базы ресурсов.&lt;br /&gt;
*'''кнопка купить''' - Будет видна, если предмет нужно купить. Передает экономиксу состояние unlock_item.&lt;br /&gt;
*'''кнопка искать''' - Будет видна, если предмет поисковый.&lt;br /&gt;
*'''блок аномалии''' - контейнер, представляющий собой машину, которая содержит всю информацию про аномалию. Должна содержать в себе состояния hide, show и remov (состояние после прогона аномалии, чтобы сделать красивые эффекты, после которого машина попадет в состояние hide).&lt;br /&gt;
*'''иконка аномалии''' - иконка аномалии.&lt;br /&gt;
*'''название аномалии''' - текстовый объект, который будет отображать название аномалии.&lt;br /&gt;
*'''описание аномалии''' - текстовый объект, который будет отображать описание аномалии.&lt;br /&gt;
*'''иконка предмета''' - иконка предмета, необходимого для того что бы прогнать аномалию.&lt;br /&gt;
*'''кнопка прогнать предметом''' - кнопка по нажатию которой, можно прогнать аномалию используя предмет.&lt;br /&gt;
*'''кнопка купить предмет''' -  кнопка по нажатию которой, можно купить предмет для прогона аномалии.&lt;br /&gt;
*'''кнопка прогнать миниигрой''' - кнопка по нажатию которой, можно прогнать аномалию миниигрой.&lt;br /&gt;
&lt;br /&gt;
===Окно после локации===&lt;br /&gt;
&lt;br /&gt;
Настройка окна, которое всплывает после посещения локации. В этом окне отображается информация о полученных очках и предметах за исследование локации.&lt;br /&gt;
&lt;br /&gt;
*'''Окно''' - некая машина, олицетворяющая собой само окно превью. Должна иметь состояние ''open''.&lt;br /&gt;
*'''Название локации''' - текстовый объект, в который будет подставляться название локации.&lt;br /&gt;
*'''Описание локации''' - текстовый объект, в который будет подставляться описание локации.&lt;br /&gt;
*'''Уровень мастерства''' - счетчик уровня мастерства.&lt;br /&gt;
*'''Прогрессбар мастерства''' - прогрессбар, который отображает уровень мастерства.&lt;br /&gt;
*'''Текущий уровень''' - счетчик текущего уровня мастерства.&lt;br /&gt;
*'''Призовой ресурс 1''' - счетчик призовых денег.&lt;br /&gt;
*'''Аномальный ресурс 1''' - счетчик, который отображает количество дополнительных денег за прохождение локации с аномалией.&lt;br /&gt;
*'''Призовой ресурс 2''' - счетчик призовых кристаллов.&lt;br /&gt;
*'''Призовой опыт''' - счетчик призового опыта.&lt;br /&gt;
*'''Аномальный опыт''' - счетчик, отображающий дополнительный призовой опыт, который дается за прохождение локации с аномалией.&lt;br /&gt;
*'''Таблица коллекции''' - таблица, в которой будут отображаться предметы, которые можно найти в данной локации.&lt;br /&gt;
*'''ничего не найдено''' - Любой объект, так или иначе сообщающий игроку, что он не нашел ничего ценного.&lt;br /&gt;
&lt;br /&gt;
===Окно перед монстром===&lt;br /&gt;
*'''окно''' - некая машина, олицетворяющая собой само окно превью. Должна иметь состояние open - все условия выполнены, open_energy - не хватает энергии для игры, но предмет для прогона есть, open_item - есть энергия, но не хватает предмета для прогона, open_item_energy - не хватает энергии для игры и нет предмета для прогона.&lt;br /&gt;
*'''превью монстра ''' - картинка, отображающая превью монстра.&lt;br /&gt;
*'''название монстра''' - текстовый объект, показывающий название монстра.&lt;br /&gt;
*'''описание монстра''' - текстовый объект, показывающий описание монстра.&lt;br /&gt;
*'''необходимая энергия''' - счетчик, отображающий количество необходимой энергии.&lt;br /&gt;
*'''призовой ресурс 1''' - счетчик, отображающий количество призовых денег.&lt;br /&gt;
*'''призовой опыт''' - счетчик, отображающий количество призового опыта.&lt;br /&gt;
*'''таблица коллекции''' - таблица, в которой будут отображаться предметы, которые можно отжать у данного монстра.&lt;br /&gt;
*'''иконка предмета''' - картинка, которая отображает предмет необходимый для игры с монстром.&lt;br /&gt;
*'''нужно предметов''' - счетчик, который отображает необходимое количество предметов.&lt;br /&gt;
*'''есть предметов''' - счетчик, который отображает текущее количество предметов, находящееся в наличии.&lt;br /&gt;
*'''суммарная стоимость''' - счетчик, который отображает суммарную стоимость недостающих предметов.&lt;br /&gt;
*'''кнопка купить''' - кнопка, по нажатию которой, происходит покупка недостающих предметов.&lt;br /&gt;
*'''кнопка прогнать''' - кнопка, по нажатию которой, можно прогнать монстра не играя в игру, эту кнопку можно не задавать.&lt;br /&gt;
&lt;br /&gt;
===Окно после монстра===&lt;br /&gt;
&lt;br /&gt;
*'''окно''' - некая машина, олицетворяющая собой само окно превью. Должна иметь состояние open.&lt;br /&gt;
*'''превью монстар''' - картинка, отображающая превью монстра.&lt;br /&gt;
*'''название монстра''' - текстовый объект, показывающий название монстра.&lt;br /&gt;
*'''описание монстра''' - текстовый объект, показывающий описание монстра.&lt;br /&gt;
*'''призовой ресурс 1''' - счетчик, отображающий количество призовых денег.&lt;br /&gt;
*'''призовой опыт''' - счетчик, отображающий количество призового опыта.&lt;br /&gt;
*'''таблица коллекции''' - таблица, в которой будут отображаться предметы, которые можно отжать у данного монстра.&lt;br /&gt;
*'''ничего не найдено''' - любой объект, сообщающий игроку, так или иначе, что он не нашел ничего ценного на данной локации.&lt;br /&gt;
&lt;br /&gt;
===Окно коллекций===&lt;br /&gt;
&lt;br /&gt;
*'''Шаблон коллекции''' - ссылка на объект типа ecollection который будет использоваться в качестве исходного для всех коллекций.&lt;br /&gt;
*'''Таблица''' - таблица, куда по ссылке будут добавлены шаблоны коллекции.&lt;br /&gt;
*'''алерт''' - некая машина, олицетворяющая собой само окно предмета. Должна иметь состояние open. Окно с информацией о предмете всплывает в окне с коллекциями.&lt;br /&gt;
*'''иконка''' - Иконка предмета.&lt;br /&gt;
*'''текст (объект)''' - Текстовый объект в окошке.&lt;br /&gt;
*'''описание (объект)''' - Текстовый объект в окошке, в который сложим описание предмета.&lt;br /&gt;
*'''имя коллекции (объект)''' - В это поле будет записано имя коллекции, к которой относится предмет.&lt;br /&gt;
*'''цифры''' - фреймовая анимация содержащая в себе цифры. Последний фрейм анимации - отметка много.&lt;br /&gt;
&lt;br /&gt;
===Окошко коллекционного предмета===&lt;br /&gt;
&lt;br /&gt;
*'''окно''' - Некая машина, олицетворяющая собой само окно предмета. Должна иметь состояние open. Окошко всплывает при клике на предмет в таблице окна перед/после локации.&lt;br /&gt;
*'''иконка''' - Иконка предмета.&lt;br /&gt;
*'''текст (объект)''' - Текстовый объект в окошке.&lt;br /&gt;
*'''описание (объект)''' - Текстовый объект в окошке, в который сложим описание предмета.&lt;br /&gt;
*'''имя коллекции (объект)''' - В это поле будет записано имя коллекции, к которой относится предмет.&lt;br /&gt;
&lt;br /&gt;
===Окошко поздравления со сдачей коллекции===&lt;br /&gt;
&lt;br /&gt;
*'''окно''' - некая машина,содержащая необходимую информацию, олицетворяющая само окно предмета. Должна иметь в себе состояние open.&lt;br /&gt;
*'''иконка''' - картинка отображающая иконку предмета-награды.&lt;br /&gt;
*'''текст(объект)''' -  текстовый объект, отображающий название коллекции.&lt;br /&gt;
*'''призовой ресурс 1''' - счетчик, отображающий количество призовых денег.&lt;br /&gt;
*'''призовой опыт''' - счетчик, отображающий количество призовых денег.&lt;br /&gt;
&lt;br /&gt;
===Окошко инвентарного предмета===&lt;br /&gt;
&lt;br /&gt;
*'''окно''' - Некая машина, олицетворяющая собой само окно предмета. Должна иметь состояние open. Окошко всплывает при клике на предмет в таблице окна перед/после локации.&lt;br /&gt;
*'''иконка''' - Иконка предмета.&lt;br /&gt;
*'''текст (объект)''' - Текстовый объект в окошке.&lt;br /&gt;
*'''описание (объект)''' - Текстовый объект в окошке, в который сложим описание предмета.&lt;br /&gt;
&lt;br /&gt;
===Окошко поздравления с получением уровня===&lt;br /&gt;
&lt;br /&gt;
*'''окно''' - некая машина, содержащая необходимую информацию, олицетворяющая собой само окно предмета. Должна иметь состояние open.&lt;br /&gt;
*'''уровень''' - счетчик, отображающий номер полученного уровня.&lt;br /&gt;
*'''энергия''' - счетчик, отображающий количество энергии, которая прибавляется к максимуму.&lt;br /&gt;
*'''ресурс 1''' - счетчик, отображающий количество денег.&lt;br /&gt;
*'''ресурс 2''' - счетчик, отображающий количество кристаллов.&lt;br /&gt;
&lt;br /&gt;
===Окошко поздравления с получением уровня и открытием локации===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*'''окно''' - некая машина, содержащая необходимую информацию, олицетворяющая собой само поздравительное окошко. Должна иметь состояние open.&lt;br /&gt;
&lt;br /&gt;
*'''уровень''' - счетчик, отображающий номер полученного уровня.&lt;br /&gt;
&lt;br /&gt;
*'''энергия''' - счетчик, отображающий количество энергии, которая прибавляется к максимуму.&lt;br /&gt;
&lt;br /&gt;
*'''ресурс 1''' - счетчик, отображающий количество денег.&lt;br /&gt;
&lt;br /&gt;
*'''ресурс 2''' - счетчик, отображающий количество кристаллов.&lt;br /&gt;
&lt;br /&gt;
*'''иконка локации''' - картинка, отображающая иконку локации, которая стала доступна&lt;br /&gt;
&lt;br /&gt;
*'''описание локации''' - текстовый объект, который отображает описание локации, которая стала доступна.&lt;br /&gt;
&lt;br /&gt;
===Окошко получения уровня на локации===&lt;br /&gt;
&lt;br /&gt;
*'''окно''' - некая машина, содержащая необходимую информацию, олицетворяющая собой само поздравительное окошко. Должна иметь состояние open.&lt;br /&gt;
*'''опции''' - поле в опциях, в которое записывается уровень по локации.&lt;br /&gt;
&lt;br /&gt;
===Окошко, когда не хватает чарджера (общее) ===&lt;br /&gt;
&lt;br /&gt;
*'''окно''' - некая машина, содержащая необходимую информацию, олицетворяющая собой само уведомительное окошко. Должна иметь состояние open.&lt;br /&gt;
*'''иконка''' - картинка, отображающая иконку предмета, который игрок получит за сдачу коллекции.&lt;br /&gt;
*'''текст''' - текстовый объект, который будет отображать описание коллекции.&lt;br /&gt;
*'''суммарная цена ресурса 1''' - счетчик, отображающий суммарную цену всех необходимых чарджеров, представлена в виде ресурса 1 (деньги).&lt;br /&gt;
*'''суммарная цена ресурса 2''' - счетчик, отображающий суммарную цену всех необходимых чарджеров, представлена в виде ресурса 2 (кристаллы).&lt;br /&gt;
*'''кнопка купить все''' - кнопка, по нажатию которой, происходит покупка необходимых предметов. Если в кнопке есть необходимость она будет появляться, в противном случае - сама исчезать.&lt;br /&gt;
&lt;br /&gt;
===Окошко, которое выезжает когда найден коллекционный предмет ===&lt;br /&gt;
&lt;br /&gt;
*'''окно''' - некая машина, содержащая необходимую информацию, олицетворяет собой само поздравительное окошко. Должна иметь состояние show.&lt;br /&gt;
*'''текст''' - текстовый объект, который используется для отображения названия коллекции.&lt;br /&gt;
*'''таблица''' - таблица, в которую складываются объекты коллекции.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Дополнительные достижения ===&lt;br /&gt;
&lt;br /&gt;
В этом разделе указаны некоторые достижение, которые отправляются объектом economics в gamecenter.&lt;br /&gt;
&lt;br /&gt;
*'''достижение на трату ресурса 1''' - id достижения, отправляемого за трату ресурса 1 (когда игрок потратит сумму ресурса из следующего поля отправляется достижение 100%).&lt;br /&gt;
*'''количество ресурса 1''' - сумма ресурса 1, которую необходимо потратить для получения достижения.&lt;br /&gt;
*'''достижение на трату ресурса 2''' - id достижения, отправляемого за трату ресурса 2 (когда игрок потратит сумму ресурса из следующего поля отправляется достижение 100%).&lt;br /&gt;
*'''количество ресурса 2''' - сумма ресурса 2, которую необходимо потратить для получения достижения.&lt;br /&gt;
*'''достижение на число открытых локаций''' - id достижения, отправляемого за открытия количества локаций из следующего поля (при открытии нужного количества локаций отправляется 100% достижения).&lt;br /&gt;
*'''количество локаций''' - кол-во локаций, которое необходимо открыть для получения достижения.&lt;br /&gt;
*'''достижение за покупки чего-либо''' - id достижения, отправляемого за совершенное количество покупок из следующего поля (при покупке нужного кол-ва отправляется 100% достижения).&lt;br /&gt;
*'''количество покупок''' - количество покупок, которое необходимо свершить для получения достижения.&lt;br /&gt;
&lt;br /&gt;
=== Настройки симуляции ===&lt;br /&gt;
&lt;br /&gt;
*'''время''' - время симуляции, измеряется в секундах.&lt;br /&gt;
&lt;br /&gt;
*'''минимум в локации''' - нижняя граница диапазона времени проводимого игроком в хиддене. Отображается в виде доли от времени из настроек локации.&lt;br /&gt;
&lt;br /&gt;
*'''максимум в локации''' - верхняя граница диапазона времени проводимого игроком в хиддене. Отображается в виде доли от времени из настроек локации.&lt;br /&gt;
*'''порог покупки''' - число, указывающее какую долю, от ресурсов игрока, должна составлять цена локации, что бы он решился её купить.&lt;br /&gt;
*'''порог покупки предмета''' - число, указывающее какую долю,от ресурсов игрока, должна составлять цена предмета, что бы он решился его купить.&lt;br /&gt;
*'''вероятность задачи''' - число, отображающее вероятность того, что симуляция будет выбирать не из всех доступных локаций, а из связанных с заданиями.&lt;br /&gt;
*'''вероятность матча''' -  число, отображающее вероятность того, что симуляция будет играть в матч.&lt;br /&gt;
*'''изначально хинтов''' - изначальное количество хинтов.&lt;br /&gt;
*'''предметов на хинт''' - на сколько найденных предметов игрок израсходует хинт.&lt;br /&gt;
*'''цена хинта монеты''' - сколько монет (ресурс 1), стоит некий усредненный хинт.&lt;br /&gt;
*'''цена хинта клисталлы''' - сколько кристаллов (ресурс 2), стоит некий усредненный хинт.&lt;br /&gt;
*'''хидденов подряд''' - игрок будет пытаться пройти не менее данного числа хидденов подряд.&lt;br /&gt;
*'''восстановить энергии''' - некое усредненное количество энергии для восстановления.&lt;br /&gt;
*'''цена энергии монеты''' - сколько монет стоит энергия (цена в ресурсе 1).&lt;br /&gt;
*'''цена энергии кристаллы''' - сколько кристаллов стоит энергия (цена в ресурсе 2).&lt;br /&gt;
*'''вероятность победы в матче'' - число, отображающее вероятность победы в матче.&lt;br /&gt;
*'''время в матче''' - условное время пребывания в матче.&lt;br /&gt;
*'''вероятность покупки за реал''' - каждый раз когда игроку не хватает денег или кристаллов - проверяем эту вероятность.&lt;br /&gt;
*'''цена монеты в деньгах''' - цена монеты в деньгах.&lt;br /&gt;
*'''количество монет в покупке''' - количество монет в покупке.&lt;br /&gt;
*'''цена кристаллов в деньгах''' - цена кристаллов деньгах.&lt;br /&gt;
*'''количество кристаллов в покупке''' - количество кристаллов в покупке.&lt;br /&gt;
&lt;br /&gt;
==Поле economics setup==&lt;br /&gt;
По клику на &amp;quot;...&amp;quot; открывается редактор экономикса. В этом редакторе можно задать все настройки локациям и коллекциям, которые используются в игре.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Economics 1.jpg|500px]]&lt;br /&gt;
&lt;br /&gt;
Economics setup содержит 11 вкладок : локация хидден, коллекция, предметы, окошко когда не хватает чарджера (чарджер), нехватка ресурсов на чарджер, монстр, летающий объект, аномалия, сдача коллекции, временный эффект, достижение.&lt;br /&gt;
Вверху можно увидеть ряд кнопок для добавления и удаления: справа для локаций, слева для уровней мастерства.&lt;br /&gt;
&lt;br /&gt;
===Локация хидден===&lt;br /&gt;
&lt;br /&gt;
Форма редактора экономикса разделена на 4 колонки. В первой колонке мы видим список локаций, используемых в игре. Имена локаций можно изменять. Добавляются новые локации по нажатию на кнопку ''Добавить локацию'', удаляются кнопкой ''Удалить локацию''. Во второй колонке отображаются свойства выделенной локации.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Economics 2.jpg|right]]&lt;br /&gt;
*'''Объект на карте''' - это объект ведущий в локацию с карты. Должен иметь как минимум состояния open и closed, которые ему будет вызывать экономикс.&lt;br /&gt;
*'''индиктор уровня''' - каунтер, который будет отображать номер уровня, начиная с которого локация доступна.&lt;br /&gt;
*'''Экран''' - экран, в котором расположен локация.&lt;br /&gt;
*'''Превью локации''' - графический ресурс для отображения превью локации из базы ресурсов.&lt;br /&gt;
*'''Имя локации''' - название локации, перетаскивается из текстовой базы.&lt;br /&gt;
*'''Описание локации''' - описание, перетаскивается из текстовой базы.&lt;br /&gt;
*'''Уровень''' - уровень требуемый для того, чтобы играть в локацию.&lt;br /&gt;
*'''Результат''' - имя поля в опциях, куда локацией будет занесен результат. Расчитываем найти там число.&lt;br /&gt;
*'''Связанный хидден лист''' - хидден-лист, связанный с локацией.&lt;br /&gt;
*'''необходимый предмет''' - предмет необходимый для входа в локацию. Может быть как коллекционным, так и инвентарным.&lt;br /&gt;
*'''разница в уровнях''' - разница в уровнях, при которой можно купить доступ в локацию.&lt;br /&gt;
*'''цена ресурс 1''' - если наш уровень ниже необходимого на разницу из верхнего поля, мы можем разлочить локацию за деньги.&lt;br /&gt;
*'''цена ресурс 2''' - если наш уровень ниже необходимого на разницу из верхнего поля, мы можем разлочить локацию за кристаллы.&lt;br /&gt;
*'''достижение''' - достижение, которое будет открываться по мере игры в эту локацию.&lt;br /&gt;
*'''процент''' - проценты достижения из предыдущего поля.&lt;br /&gt;
&lt;br /&gt;
В третей  колонке записываются уровни мастерства. Их можно переименовать. Добавляются кнопкой ''Добавить уровень мастерства''. Удаляются кнопкой ''Удалить уровень мастерства''. В четвертой колонке настраивается выделенный уровень мастерства.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Economics 3.jpg|right]]&lt;br /&gt;
*'''энергия''' - энергия требуемая для того, чтобы играть в локацию.&lt;br /&gt;
*'''ресурс 1''' - деньги даваемые за прохождение локации.&lt;br /&gt;
*'''ресурс 2''' - кристаллы даваемые за прохождение локации.&lt;br /&gt;
*'''опыт''' - опыт даваемый за прохождение локации.&lt;br /&gt;
*'''кол-во объектов''' - максимальное количество доступных для поиска объектов в одной игровой сессии.&lt;br /&gt;
*'''время игры''' - общее время игры (если -1, то игнорируется).&lt;br /&gt;
*'''режим игры''' - режим игры: 0 - случайный, 1- слова, 2 - силуэты.&lt;br /&gt;
*'''аномалия''' - вероятность возникновения аномалии в локациях.&lt;br /&gt;
*'''доступные аномалии''' - перечень доступных на данном уровне мастерства аномалий. Записываются в виде чисел через запятую. Доступные значения 0, 1, 2, 3.&lt;br /&gt;
*'''множитель''' - коэффициент, на который умножаются набранные очки. при расчете перехода на следующий уровень. Может быть меньше 1.&lt;br /&gt;
*'''постоянный прирост''' - постоянный прирост, если он больше 0, то будет использоваться ВМЕСТО реально набранных в хиддене очков и множителя.&lt;br /&gt;
*'''очки''' - очки, которые нужно набрать для перехода на следующий уровень мастерства. Набранные в локции очки умножаются на множитель и суммируются. Когда превысят это значение - произойдет переход.&lt;br /&gt;
*'''Предметы''' - id коллекционных предметов, которые можно найти на локации. Не обязаны принадлежать к одной коллекции. Перетаскиваются из текстового редактора. Будет использоваться их иконка.&lt;br /&gt;
*'''Вероятность''' - вероятность найти один из коллекционных предметов из предыдущего поля.&lt;br /&gt;
*'''Вероятность 2''' - вероятность найти один из коллекционных предметов из предыдущего поля.&lt;br /&gt;
*'''Вероятность 3''' - вероятность найти один из коллекционных предметов из предыдущего поля.&lt;br /&gt;
*'''Инвентарь''' - id инвентарных предметов, которые можно найти на локации. Перетаскиваются из текстового редактора.&lt;br /&gt;
*'''Вероятность инв.''' - вероятность найти один из инвентарных предметов из предыдущего поля.&lt;br /&gt;
*'''Вероятность инв. 2''' - вероятность найти один из инвентарных предметов из предыдущего поля.&lt;br /&gt;
*'''Вероятность инв. 3''' - вероятность найти один из инвентарных предметов из предыдущего поля.&lt;br /&gt;
&lt;br /&gt;
===Коллекция===&lt;br /&gt;
&lt;br /&gt;
Во вкладке ''Коллекция'' используются только первые две колонки. В первой колонке отображаются добавленные коллекции. Добавляются кнопкой ''Добавить локацию''. Удаляются кнопкой ''Удалить локацию''. Коллекции можно переименовывать. Второй столбик содержит id предметов входящих в коллекции. Перетаскиваются из текстового редактора. Будет использоваться их иконка. Ресурс 1 и ресурс 2 - ресурсы, которые даются за сдачу коллекции. Опыт - опыт, который дается за сдачу коллекции.&lt;br /&gt;
&lt;br /&gt;
*'''имя''' - Имя (а также - описание, если нужно) конкретно коллекции.&lt;br /&gt;
*'''предметы''' - id предметов входящих в коллекции. Перетаскиваются из текстового редактора. Будет использоваться их иконка.&lt;br /&gt;
*'''ресурс 1''' - деньги даваемые за сдачу коллекции.&lt;br /&gt;
*'''ресурс 2''' - кристаллы даваемые за сдачу коллекции.&lt;br /&gt;
*'''опыт''' - опыт даваемый за сдачу коллекции.&lt;br /&gt;
*'''награда''' - предмет даваемый за сдачу коллекции. Перетаскивается из текстовой базы.&lt;br /&gt;
*'''заряжатели''' - Предметы инвентаря, необходимые для сдачи коллекции. ВНИМАНИЕ: будут использоваться не более первых 4х элементов списка.&lt;br /&gt;
&lt;br /&gt;
===Предметы===&lt;br /&gt;
&lt;br /&gt;
Раздел &amp;quot;Предметы&amp;quot; позволяет добавлять список инвентарных предметов, которые могут использоваться в процессе игры, предоставлять различные бонусы. В первой колонке список предметов. Добавляется кнопкой  &amp;quot;Добавить локацию&amp;quot;, удаляется кнопкой &amp;quot;Удалить локацию&amp;quot;. Предметы могут быть переименованы. Во второй колонке записаны свойства каждого предмета.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Economics 4.jpg|350px|right]]&lt;br /&gt;
&lt;br /&gt;
*'''nm''' - имя предмета&lt;br /&gt;
&lt;br /&gt;
*'''section''' - категория предмета.&lt;br /&gt;
&lt;br /&gt;
*'''use''' - если 1, то предмет может использоваться (кнопка Use видимая).&lt;br /&gt;
&lt;br /&gt;
*'''nm''' - имя предмета (txtID).&lt;br /&gt;
&lt;br /&gt;
*'''опции''' - если это поле задано, то в него будет записываться актуальное количество объектов.&lt;br /&gt;
&lt;br /&gt;
*'''начальное количество''' - начальное  количество предметов данного типа в инвентаре.&lt;br /&gt;
&lt;br /&gt;
*'''можно продать''' - возможность продавать предмет: 1 - можно продать, 0 - нельзя продать.&lt;br /&gt;
&lt;br /&gt;
*'''уникальный''' - если 1 - то предмет уникальный пропадает после покупки, если 0 - предмет после покупки не пропадает.&lt;br /&gt;
&lt;br /&gt;
*'''res1''' - цена предмета в ресурсе 1.&lt;br /&gt;
&lt;br /&gt;
*'''res2''' - цена предмета в ресурсе 2.&lt;br /&gt;
&lt;br /&gt;
*'''sres1''' - продажа - цена предмета в ресурсе 1.&lt;br /&gt;
&lt;br /&gt;
*'''sres2''' - продаже - цена предмета в ресурсе 2.&lt;br /&gt;
&lt;br /&gt;
*'''en''' - восстанавливает энергии единовременно.&lt;br /&gt;
&lt;br /&gt;
*'''tm''' - длительность действия в секундах.&lt;br /&gt;
&lt;br /&gt;
*'''dTm''' - уменьшение времени восстановления энергии в %.&lt;br /&gt;
&lt;br /&gt;
*'''dFnd''' - увеличение вероятности нахождения предмета в %.&lt;br /&gt;
&lt;br /&gt;
*'''dExp''' - увеличение начисляемого опыта в %.&lt;br /&gt;
&lt;br /&gt;
*'''dRes1''' - увеличение полученного ресурса 1 в %.&lt;br /&gt;
&lt;br /&gt;
*'''dRes2''' - увеличение полученного ресурса 2 в %.&lt;br /&gt;
&lt;br /&gt;
*'''dOvP''' - увеличение перегруженной вероятности нахождения предметов в %.&lt;br /&gt;
&lt;br /&gt;
*'''num''' - число предметов в сундуке. Выбираются случайно из следующего поля. При 0 - следующее поле не используется.&lt;br /&gt;
&lt;br /&gt;
*'''items''' - предметы, которые можно найти в сундуке. Перетаскиваются из текстовой базы.&lt;br /&gt;
&lt;br /&gt;
*'''use_id''' - задание этого поля говорит о том, что данный предмет является оптовым пучком для предмета указанного у этом поле. Num, в этом случае, - количество.&lt;br /&gt;
&lt;br /&gt;
*'''объект''' - связанный объект, будет добавляться в инвентарь.&lt;br /&gt;
&lt;br /&gt;
*'''достижение''' - достижение, которое будет открываться по мере применения подобный предметов.&lt;br /&gt;
&lt;br /&gt;
*'''процент''' - процент достижения их предыдущего поля.&lt;br /&gt;
&lt;br /&gt;
*'''владелец''' - на данный момент - номер правильной кнопки в окне угадайки (если -1. то игнорируется).&lt;br /&gt;
&lt;br /&gt;
===Окошко когда не хватает чарджера===&lt;br /&gt;
Позволяет добавлять окна. Окно добавляется кнопкой &amp;quot;Добавить локацию&amp;quot;, окно можно переименовывать, удаляется кнопкой &amp;quot;Удалить локацию&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
*'''название''' - текстовый объект в который вкладывается название чарджера.&lt;br /&gt;
*'''иконка''' - иконка чарджера.&lt;br /&gt;
*'''описание''' - текстовый объект в который вкладывается название чарджера.&lt;br /&gt;
*'''купить''' - кнопка покупка чарджера, передает economics состояние buy_charger.&lt;br /&gt;
*'''искать''' - кнопка поиска чарджера, передает economics состояние search_charger.&lt;br /&gt;
*'''есть''' - счетчик, который показывает сколько чарджеров есть сейчас.&lt;br /&gt;
*'''нужно''' - счетчик, который показывает сколько чарджерова необходимо для сдачи коллекции.&lt;br /&gt;
*'''цена ресурса 1''' - счетчик, который показывает цену чарджера в ресурсе 1.&lt;br /&gt;
*'''цена ресурса 2''' - счетчик, который показывает цену чарджера в ресурсе 2.&lt;br /&gt;
*'''достаточно''' -  объект, который отображается вместо кнопки, в тот момент, когда чарджеров достаточное количество.&lt;br /&gt;
&lt;br /&gt;
===Нехватка ресурсов на чарджер===&lt;br /&gt;
Позволяет изменить состояние выбранному объекту при нехватке ресурсов на чарджер. Добавляется кнопкой &amp;quot;Добавить локацию&amp;quot;, можно переименовывать, удаляется кнопкой &amp;quot;Удалить локацию&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
===Монстр===&lt;br /&gt;
В первой колонке добавляется монстр, добавляется кнопкой &amp;quot;Добавить локацию&amp;quot;, если возможность переименовать, удаляется кнопкой &amp;quot;Удалить локацию&amp;quot;&lt;br /&gt;
Во второй колонке отображаются свойства выделенной колонки.&lt;br /&gt;
&lt;br /&gt;
*'''Объект на карте''' - объект, который представляет монстра на карте. Как правило окно, которое должно иметь состояние hide (скрыт),show и disappear (прогнали).&lt;br /&gt;
*'''Имя монстра''' - текстовый id из которого берется иконка, имя и описание монстра.&lt;br /&gt;
*'''Экран''' - экран в котором расположена локация.&lt;br /&gt;
*'''min уровень''' - уровень, при достижении которого, появляется монстр.&lt;br /&gt;
*'''max уровень''' - уровень, при достижении которого, монстр исчезает.&lt;br /&gt;
*'''необходимый предмет''' - предмет необходимый для игры с духом.&lt;br /&gt;
*'''количество''' -  количество предметов из поля &amp;quot;необходимый предмет&amp;quot;. &lt;br /&gt;
*'''связанный баттл''' - поле в котором указывается связанный баттл.&lt;br /&gt;
*'''связанный матч''' - полое в котором указывается связанный матч.&lt;br /&gt;
&lt;br /&gt;
В третей колонке записываются уровни мастерства. Их можно переименовывать. Добавляются уровни кнопкой &amp;quot;Добавить уровень мастерства&amp;quot;, удаляются кнопкой &amp;quot;Удалить уровень мастерства&amp;quot;.&lt;br /&gt;
В четвертой колонке настраивается выделенный уровень мастерства.&lt;br /&gt;
&lt;br /&gt;
*'''энергия''' - энергия необходимая для того, что бы можно было начать играть в локацию.&lt;br /&gt;
*'''ресурс1''' - деньги даваемые за прохождение локации.&lt;br /&gt;
*'''опыт''' - опыт даваемый за прохождение локации.&lt;br /&gt;
*'''постоянный прирост''' - постоянный прирост.&lt;br /&gt;
*'''очки''' - количество очков, которое необходимо набрать для перехода на следующий уровень мастерства.&lt;br /&gt;
*'''предметы''' - id коллекционных предметов, которые можно найти на локации. Предметы не обязательно должны быть из одной коллекции. Необходимые предметы перетаскиваются из текстового редактора, при этом будет использоваться их иконка.&lt;br /&gt;
*'''Вероятность''' - вероятность найти один из коллекционных предметов из поля &amp;quot;предметы&amp;quot;.&lt;br /&gt;
*'''Вероятность 2''' - вероятность найти один из коллекционных предметов из поля &amp;quot;предметы&amp;quot;.&lt;br /&gt;
*'''Вероятность 3''' - вероятность найти один из коллекционных предметов из поля &amp;quot;предметы&amp;quot;.&lt;br /&gt;
*'''Инвентарь''' - id инвентарных предметов, которые можно найти на локации. Перетаскиваются из текстового редактора.&lt;br /&gt;
*'''Вероятность инв.''' - вероятность найти один из инвентарных предметов из поля &amp;quot;инвентарь&amp;quot;.&lt;br /&gt;
*'''Вероятность инв. 2''' - вероятность найти один из инвентарных предметов из поля &amp;quot;инвентарь&amp;quot;.&lt;br /&gt;
*'''Вероятность инв. 3''' - вероятность найти один из инвентарных предметов из поля &amp;quot;инвентарь&amp;quot;.&lt;br /&gt;
*'''жизни врага''' - записываются значения вражеских жизней.&lt;br /&gt;
*'''начальные жизни врага''' - начальное значение вражеских жизней.&lt;br /&gt;
*'''регенерация врага''' - время (в ms), за которое у противника отрастает жизнь. Если установлено -1, то отрастания жизни противника на происходит.&lt;br /&gt;
*'''число цветов''' - это число будет записываться в параметр numTokenNums матча.&lt;br /&gt;
&lt;br /&gt;
===Летающий объект===&lt;br /&gt;
Впервой колонке кнопкой &amp;quot;Добавить локацию&amp;quot; добавляется летающий объект - объекты которые вылетают после прохождения локации или после покупки сундуков. Удаляется кнопкой &amp;quot;Удалить локацию&amp;quot;. Во второй колонке добавляется объект выделенного летающего объекта. Состояния hide, wait, inventory и  collection  -  обязательны для этого предмета.&lt;br /&gt;
&lt;br /&gt;
''hide'' - состояние, когда объект не видно на экране. В этом состоянии можно указать свойство alpha=0.&lt;br /&gt;
&lt;br /&gt;
''wait'' - состояние, в которое попадают летающие объекты, которые отображают коллекционные предметы до того, как объекту economics будет вызвано состояние col_item_found.&lt;br /&gt;
&lt;br /&gt;
''collection'' - состояние, которое будет вызвано летающему объекту, который отображает коллекционный предмет после того как объекту economics будет вызвано состояние col_item_found (он может лететь в таблицу с нужной коллекцией).&lt;br /&gt;
&lt;br /&gt;
''inventory'' - состояние, которое вызывается летающему объекту в случае, если он отображает инвентарный объект (в этом состоянии предмет становится видимым и в дальнейшем может перемещаться).&lt;br /&gt;
&lt;br /&gt;
===Аномалия===&lt;br /&gt;
&lt;br /&gt;
В хидден-локации могут присутствовать аномалии, затрудняющие ее прохождение.&lt;br /&gt;
Впервой колонке добавляется аномалия, добавляется кнопкой &amp;quot;Добавить локацию&amp;quot;, можно переименовывать, удаляется кнопкой &amp;quot;Удалить локацию&amp;quot;.&lt;br /&gt;
Во второй колонке отображаются свойства выделенной аномалии.&lt;br /&gt;
*'''id''' - поле в которое перетаскивается текстовый id, из которого используется название, описание и иконка аномалии.&lt;br /&gt;
*'''предмет''' - предмет необходимый для того, что бы изгнать аномалию.&lt;br /&gt;
*'''экран''' -  в этом поле указывается экран, в котором расположена миниигра.&lt;br /&gt;
*'''прибавка к энергии''' - указывается прибавка к энергии, поскольку для игры в аномалию будет нужно больше энергии. Например, при значении 0,5 - энергии потребуется больше в полтора раза.&lt;br /&gt;
*'''прибавка к опыту''' - указывается прибавка к опыту, поскольку игра в локацию с аномалией будет давать больше опыта. Например, при значении 0,5 - опыта приобретается больше в полтора раза.&lt;br /&gt;
*'''прибавка к ресурсу 1''' - указывается прибавка к ресурсу 1. поскольку игра в локацию с аномалией будет давать больше ресурса 1. Например, при значении 0,5 - ресурса 1 приобретается больше в полтора раза.&lt;br /&gt;
&lt;br /&gt;
===Сдача коллекции===&lt;br /&gt;
&lt;br /&gt;
В первой колонке добавляется событие на сдачу коллекции кнопкой &amp;quot;Добавить локацию&amp;quot;, удаляется кнопкой &amp;quot;Удалить локацию&amp;quot;.&lt;br /&gt;
Во второй колонке устанавливается состояние объекту сдачи коллекции.&lt;br /&gt;
&lt;br /&gt;
===Временный эффект===&lt;br /&gt;
&lt;br /&gt;
Временный эффект - визуализация действия различных инвентарных объектов, которые применил игрок.&lt;br /&gt;
В первой колонке создается временный эффект, добавляется кнопкой &amp;quot;Добавить локацию&amp;quot;, удаляется кнопкой &amp;quot;Удалить локацию&amp;quot;.&lt;br /&gt;
Во второй колонке устанавливаются свойства выделенного временного эффекта.&lt;br /&gt;
&lt;br /&gt;
*'''иконка''' - из редактора ресурсов, перетаскивается иконка временного эффекта&lt;br /&gt;
*'''таймер''' - указывается объект типа timer, который соответствует выбранному временному эффекту.&lt;br /&gt;
*'''подложка''' - из редактора ресурсов, перетаскивается картинка подложки для таймера указанного в поле &amp;quot;таймер&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
===Достижение===&lt;br /&gt;
В первой колонке записываются достижения. Добавляются кнопкой &amp;quot;Добавить локацию&amp;quot;, удаляются кнопкой &amp;quot;Удалить локацию&amp;quot;. &lt;br /&gt;
Во второй колонке отображаются свойства выбранного достижения.&lt;br /&gt;
&lt;br /&gt;
*'''достижение''' - достижение, которое будет открываться по мере применения подобных предметов.&lt;br /&gt;
&lt;br /&gt;
*'''процент''' - в виде числа, указывается процент достижения из поля &amp;quot;достижение&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
*'''режим игры''' - указывается режим игры, ели 0 - режим игры не важен для достижения, 1 - режим игры слова, 2 - режим игры силуэты.&lt;br /&gt;
&lt;br /&gt;
*'''аномалия''' - указывается аномалия необходимая для достижения, если указывается -2 -  то аномалия не важна для достижения, если указывается -1 - то для достижения может использоваться любая аномалия.&lt;br /&gt;
&lt;br /&gt;
==Состояния==&lt;br /&gt;
&lt;br /&gt;
[[Файл:Economics 5.jpg|right]]&lt;br /&gt;
Перед вызовом некоторых состояний объекту economics необходимо передать параметр '''param''' и его значение. Например когда нам нужно открыть окно перед локацией мы передаем параметр номера этой локации в списке локаций (начиная с 0).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear /br&amp;gt;&lt;br /&gt;
*'''idle''' - состояние по умолчанию.&lt;br /&gt;
*'''completed''' - передает состояние окончания исследования локации (необходим параметр номера локации).&lt;br /&gt;
*'''exp''' - передает состояние начисления опыта (необходим параметр количества опыта). Нужен больше для тестирования, чем для самой игры.&lt;br /&gt;
*'''play''' - передает состояния перехода на локацию для исследования(при условии что хватит энергии и выполнены прочие условия).&lt;br /&gt;
*'''location''' - открывает окно перед локацией (необходим параметр номера локации).&lt;br /&gt;
*'''collection''' - заставляет экономикс заполнить таблицу коллекций. Лучше вызывать сразу перед открытием окна коллекций или во время его открытия.&lt;br /&gt;
*'''collections_scroll''' - заполняет таблицу коллекций и проматывает на коллекцию содержащую последний предмет для которого было показано окошко с информацией о предмете.&lt;br /&gt;
*'''item_collections''' - заставляет экономикс показать окошко с информацией о коллекционном предмете. Вызывается при тапе на таблицу в темплейте коллекций (объект ecollection).&lt;br /&gt;
*'''item_effect''' - сообщает economics, что необходимо показать окошко предмета от таймэфекта (необходим параметр номера эффекта)&lt;br /&gt;
*'''item_preview''' - заставляет экономикс показать окошко с информацией о предмете, который можно найти при обыске локации. Вызывается при тапе на таблицу с предметами в окне перед локацией.&lt;br /&gt;
*'''item_review''' - заставляет экономикс показать окошко с информацией о предмете, который нашли после обыска локации. Вызывается при тапе на таблицу с предметами в окне после локации.&lt;br /&gt;
*'''completed_animation''' - состояние запускает анимацию полученной награды за прохождение локации после &amp;quot;окна после локации&amp;quot;. Можно запускать из состояния закрытия окна после локации.&lt;br /&gt;
*'''unlock_item''' - передает состояние покупки предмета, необходимого для открытия локации. Как правило, предмет находится в окне перед локацией.&lt;br /&gt;
*'''unlock''' -  передает состояние при котором происходит разлочка локации если текущий уровень на один ниже, чем необходимый для открытии локации или значение ''разница в уровнях'', позволяет разлочить локацию. Как правило кнопка для разблокирования локации размещается в окне перед локацией. Когда разница уровней достаточна, чтобы разлочить локацию машина локации переводится в состояние '''can_buy'''.&lt;br /&gt;
*'''completed_reward''' - вызывается объектом анимации награды после прохождения локации. Если объектов несколько (опыт, монеты, кристаллы), то вызывается только один раз одним из объектов.&lt;br /&gt;
*'''search_charger''' - производит поиск недостающего чарджера. Пока только по монстрам. Номер чарджера 0 или 1 - в парам.&lt;br /&gt;
*'''buy_charger''' - производит покупку недостающего чарджера  (номер в параметре, -1 - купить все).&lt;br /&gt;
*'''update''' - обновить все локации на карте.&lt;br /&gt;
*'''level_up''' - проверяет получение нового уровня. Чтобы окно с получением нового уровня не открывалось самостоятельно, мы вызываем это состояние, когда нам удобно. Проверяется был ли получен новый уровень, если был, то вызывается окно с получением нового уровня.&lt;br /&gt;
*'''res1''' - Добавить ресурс 1 (значение в параметре).&lt;br /&gt;
*'''res2''' - Добавить ресурс 2 (значение в параметре).&lt;br /&gt;
*'''res1s''' - скорректировать статистику по ресурсу 1 (значение в параметре, когда, например, ресурс не заработан, а выигран в казино).&lt;br /&gt;
*'''res2s''' - скорректировать статистику по ресурсу 2 (значение в параметре, когда, например, ресурс не заработан, а выигран в казино).&lt;br /&gt;
*'''energy''' - Добавить энергию (значение в параметре).&lt;br /&gt;
*'''failed''' - текущая локация провалена (не дается опыта и прочих наград за прохождение локации). Требует параметра локации.&lt;br /&gt;
*'''item_effect''' -  показать окошко предмета от таймэффекта. В param - номер эффекта.&lt;br /&gt;
*'''search_collection''' -  проскроллить карту на локацию где можно найти коллекционный предмет. При этом машина локации (Объект на карте) будет переведена в состояние highlight, в котором локацию можно посветить или выделить ее каким-то образом.&lt;br /&gt;
*'''search_task''' -  проскроллить карту на локацию где можно найти предмет из задания. При этом машина локации (Объект на карте) будет переведена в состояние highlight, в котором локацию можно посветить или выделить ее каким-то образом.&lt;br /&gt;
*'''search_charger''' - проскролить  карту на монстр, в котором можно найти чарджер (необходимо значение чарджера в параметре 0 или 1).&lt;br /&gt;
*'''monster''' - Открыть превью для монстра с номером указанном в поле параметр.&lt;br /&gt;
*'''monster_play''' - Играть в миниигру выбранного монстра (при условии, что хватит энергии и выполнены прочие условия).&lt;br /&gt;
*'''monster_removed''' - Монстра прогнали предметами. Вычесть предметы и успешно завершить.&lt;br /&gt;
*'''monster_completed''' - Текущая миниигра так или иначе пройдена.&lt;br /&gt;
*'''monster_failed''' -  Текущая миниигра провалена, отличается от предыдущего тем, что не дается бонусного опыта и прочих наград.&lt;br /&gt;
*'''monster_buy''' -  попытаться докупить предметы, необходимые для игры с монстром.&lt;br /&gt;
*'''col_item_param''' - Добавить коллекционный предмет, взяв его айди из параметра.&lt;br /&gt;
*'''anomaly_item''' - попытаться прогнать аномалию в текущей локации предметом. В зависимости от номера аномалии, машина локации (Объект на карте)  переводится в состояние anomaly_N, где N - номер аномалии начиная с 0. (anomaly_0, anomaly_1 и т.д.). Таким образом можно визуализировать аномалию на карте.&lt;br /&gt;
*'''anomaly_game''' - попытаться прогнать аномалию в текущей локации миниигрой.&lt;br /&gt;
*'''anomaly_completed''' -  минигра по прогону аномалии успешно завершена.&lt;br /&gt;
*'''anomaly_buy''' - показать окно покупки для предмета прогона аномалии (в текущей локации).&lt;br /&gt;
*'''cheat_loc_level''' -  &amp;quot;накачать&amp;quot; всем локациям скилл левел до максимума (для тестирования).&lt;br /&gt;
*'''chest_animation''' - анимировать последний использованный сундук.&lt;br /&gt;
*'''col_item_found''' -  показать окошко с коллекцией для одного найденного коллекционного предмета из очереди.&lt;br /&gt;
*'''cheat_one_level''' - просимулировать один уровень развития игрока.&lt;br /&gt;
*'''purchase_ok''' - сообщает economocs что произошла покупка. Сформировать событие флури.&lt;br /&gt;
&lt;br /&gt;
=Сопутствующие объекты=&lt;br /&gt;
&lt;br /&gt;
Объекты, которые используются вместе с объектом economics и имеют с ним непосредственную связь:&lt;br /&gt;
&lt;br /&gt;
* [[Файл:E_items.png]] - [[Eitems]] - объект, служащий для связи инвентаря(магазина) и экономики. &lt;br /&gt;
* [[Файл:E_store_item.png]] - [[Estoreitem]] - шаблон для ячейки магазина. &lt;br /&gt;
* [[Файл:E_inventory_item.png]] - [[Einventoryitem]] - шаблон для ячейки инвентаря. &lt;br /&gt;
* [[Файл:Taskorganizer.png]] - [[Taskorganizer]] - органайзер заданий.&lt;br /&gt;
* [[Файл:E_task_item.png]] - [[Etaskitem]] - шаблон для ячейки задания.&lt;br /&gt;
* [[Файл:E_collection.png]] - [[Ecollection]] - шаблон для строки в таблице коллекции.&lt;br /&gt;
* [[Файл:Economics.png]] - [[Economics]] - глобальная настройка игр типа ферма\билдер&lt;/div&gt;</summary>
		<author><name>Podkor</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.appsalutecreator.com/index.php?title=%D0%98%D0%BD%D1%82%D0%B5%D1%80%D1%84%D0%B5%D0%B9%D1%81_TextEditor&amp;diff=5233</id>
		<title>Интерфейс TextEditor</title>
		<link rel="alternate" type="text/html" href="https://wiki.appsalutecreator.com/index.php?title=%D0%98%D0%BD%D1%82%D0%B5%D1%80%D1%84%D0%B5%D0%B9%D1%81_TextEditor&amp;diff=5233"/>
		<updated>2013-10-29T09:57:29Z</updated>

		<summary type="html">&lt;p&gt;Podkor: /* Кнопки быстрого запуска */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC right}}&lt;br /&gt;
== [[Файл:Ico_text.png]]Редактор текстов ==&lt;br /&gt;
&lt;br /&gt;
[[Файл:Ico_text.png|40px]] '''Text Editor''' - хранилище всех текстовых ресурсов (надписей) на различных языках. Аналогично графике и звукам при помощи мышки они перетаскиваются в соответствующие свойства объектов, находящихся в Scene Editor.&amp;lt;br&amp;gt;&lt;br /&gt;
Окно редактора имеет следующий вид:&lt;br /&gt;
[[Файл:Головна4.PNG|550px|right]]&lt;br /&gt;
&lt;br /&gt;
===Общие свойства и действия с текстом===&lt;br /&gt;
&lt;br /&gt;
'''После любых действий в текстовом редакторе  необходимо обновить текстовую базу в Редакторе сцен!''' &lt;br /&gt;
*элемент текстовой базы - строка текста, которая может хранить в себе несколько различных фраз,записанных в разные поля&lt;br /&gt;
*фраза персонажа на разных языках записывается в один элемент текстовой базы&lt;br /&gt;
*в текстовой базе может храниться voice&lt;br /&gt;
*элемент текстовой базы может хранить в себе несколько иконок, для которых можно выбрать одну из 4-х категорий (mainPicture, icon1, icon2,icon3)&lt;br /&gt;
*каждому элементу текстовой базы присваивается уникальный номер. &lt;br /&gt;
*при добавлении элемента - присваивается следующий по порядку уникальный номер &lt;br /&gt;
*при экспорте экранов в текущий проект элементы текстовой базы добавляются автоматически в базу текущего проекта и присваиваются им следующие по порядку уникальные номера &lt;br /&gt;
*может существовать несколько элементов с одинаковыми именами &lt;br /&gt;
*текст может быть автоматически добавлен в текущий проект или добавлен из другой текстовой базы  &lt;br /&gt;
*элемент текстовой базы может быть удален, модифицирован, категоризирован&lt;br /&gt;
&lt;br /&gt;
=== Кнопки быстрого запуска ===&lt;br /&gt;
Вверху окна приложения расположены кнопки общего меню:&lt;br /&gt;
*[[Файл:00 6.png]] — команда создать Новый файл; &lt;br /&gt;
*[[Файл:00 7.png]] — команда открыть уже созданный проект;&lt;br /&gt;
*[[Файл:00 8.png]] — сохранить изменения в файле;&lt;br /&gt;
*[[Файл:00 18.png]] — создать новую папку в корневой базе;&lt;br /&gt;
*[[Файл:New record.jpg]] — добавить новую текстовую запись; &lt;br /&gt;
*[[Файл:Add new rec fr.jpg]] — добавить новую текстовую запись из базы ресурсов; &lt;br /&gt;
*[[Файл:Add url.jpg]] — добавить новую url запись; &lt;br /&gt;
*[[Файл:00 19.png]] — удалить текстовую запись.&lt;br /&gt;
&lt;br /&gt;
=== Меню редактора ===&lt;br /&gt;
1. Если нажать в меню кнопку '''File''', выпадет список команд, с помощью которых можно создать новый или загрузить уже созданный файл, сохранить файл с указанием места сохранения и т.д.&amp;lt;br&amp;gt;&lt;br /&gt;
2.Для импорта фраз на другом языке необходимо воспользоваться Функцией Ипортировать меню File  и выбрать .xml-файл с текстом и выбрать язык&amp;lt;br&amp;gt;&lt;br /&gt;
3. Если нажать в меню кнопку '''Resource''', выпадет список команд:&amp;lt;br&amp;gt;&lt;br /&gt;
* Open Resource - позволяет создать базу по ранее подготовленной графической базе ресурсов с точным совпадением структуры и названием папок и файлов. Используется для Hidden Objects;&lt;br /&gt;
* Choose Resource File - позволяет подгрузить базу графических ресурсов для перетаскивания изображений из ResourcesEditor на иконку;&lt;br /&gt;
* Choose Categories Config - помогает классифицировать текстовые файлы по категориям.&lt;br /&gt;
[[Файл:00_51.PNG]] [[Файл:00_52.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Создание и заполнение текстовой базы проекта ===&lt;br /&gt;
Текстовая база не создается автоматически при создании проекта. &amp;lt;br&amp;gt;&lt;br /&gt;
Для создания и заполнения текстовой базы: &amp;lt;br&amp;gt;&lt;br /&gt;
1. Заходите в пункт меню '''file -&amp;gt; New'''. Появляется пустая база ресурсов, по умолчанию названная '''Untitled'''. &amp;lt;br&amp;gt;&lt;br /&gt;
2. Слева в дереве текстовых объектов кликаем правой кнопкой мыши  и выбираем '''Add record'''. Каждый раз при добавлении новой текстовой записи редактор просит нас написать ее имя. Это имя можно будет изменить в любой момент. Запишем имя '''arrow_If_down'''. &amp;lt;br&amp;gt;&lt;br /&gt;
3. Выделить запись и  в окне приложения TextEditor справа в столбце Word запишем слово, в столбце Sentence1,Sentence2 - указать подсказку для текстовой записи, в столбце voice - подключить звуковой файл для текстовой записи из ResourcesEditor.&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:00_54.PNG]]&lt;br /&gt;
&lt;br /&gt;
'''Необходимо обязательно сохранять любые изменения с текстом в редакторе TextEditor.'''&amp;lt;br&amp;gt;&lt;br /&gt;
Для вызова текстового редактора можно воспользоваться меню '''Tools -&amp;gt; Text Editor''', либо кнопкой быстрого запуска [[Файл:011.JPG]].&lt;br /&gt;
&lt;br /&gt;
'''Замечание.''' Букву Ё заменяем на Е&lt;br /&gt;
&lt;br /&gt;
=== Слияние нескольких текстовых баз ===&lt;br /&gt;
&lt;br /&gt;
Используется для слияния нескольких тектовых баз одного проекта выполненых для разных локализаций. &lt;br /&gt;
&lt;br /&gt;
Импорт текстовой базы&lt;br /&gt;
&lt;br /&gt;
[[Файл:Textimport.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Добавление иконок в текстовый элемент ===&lt;br /&gt;
&lt;br /&gt;
Необходимость добавления изображения в текстовый элемент, может возникнуть, например, при формировании элементов hiddenObject, или при работе с элементами economics.&lt;br /&gt;
Изображение перетаскивается в текстовый элемент из редактора ресурсов мышкой. Но, в случае необходимости создать множество элементов за один раз, есть более эффективный способ:&lt;br /&gt;
*На панели с кнопками быстрого запуска нажимаем ''Add new text records from resource...''. &lt;br /&gt;
[[Файл:Add new rec from.jpg|300px|]]&lt;br /&gt;
*Открылось окошко ''choose resource file'' в нем следует выбрать необходимый sirx файл.&lt;br /&gt;
[[Файл:Choose resource file.jpg]]&lt;br /&gt;
*В открывшемся дереве ресурсов выбираем нужную папку&lt;br /&gt;
[[Файл:Tree resources.jpg|400px|]]&lt;br /&gt;
*Из этой папки все файлы, не содержащие в названии символ &amp;quot;+&amp;quot;, преобразуются в текстовые элементы содержащие строку ''word'' и соответствующее изображение и добавятся в редактор ресурсов в папку которая создастся в соответствии с папкой содержащей эти иконки в редакторе ресурсов.&lt;/div&gt;</summary>
		<author><name>Podkor</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.appsalutecreator.com/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:New_record.jpg&amp;diff=5232</id>
		<title>Файл:New record.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.appsalutecreator.com/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:New_record.jpg&amp;diff=5232"/>
		<updated>2013-10-29T09:57:19Z</updated>

		<summary type="html">&lt;p&gt;Podkor: загружена новая версия «Файл:New record.jpg»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Podkor</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.appsalutecreator.com/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Add_new_rec_fr.jpg&amp;diff=5231</id>
		<title>Файл:Add new rec fr.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.appsalutecreator.com/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Add_new_rec_fr.jpg&amp;diff=5231"/>
		<updated>2013-10-29T09:56:15Z</updated>

		<summary type="html">&lt;p&gt;Podkor: загружена новая версия «Файл:Add new rec fr.jpg»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Podkor</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.appsalutecreator.com/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Add_url.jpg&amp;diff=5230</id>
		<title>Файл:Add url.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.appsalutecreator.com/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Add_url.jpg&amp;diff=5230"/>
		<updated>2013-10-29T09:55:14Z</updated>

		<summary type="html">&lt;p&gt;Podkor: загружена новая версия «Файл:Add url.jpg»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Podkor</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.appsalutecreator.com/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Add_url.jpg&amp;diff=5229</id>
		<title>Файл:Add url.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.appsalutecreator.com/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Add_url.jpg&amp;diff=5229"/>
		<updated>2013-10-29T09:52:32Z</updated>

		<summary type="html">&lt;p&gt;Podkor: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Podkor</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.appsalutecreator.com/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Add_new_rec_fr.jpg&amp;diff=5228</id>
		<title>Файл:Add new rec fr.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.appsalutecreator.com/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Add_new_rec_fr.jpg&amp;diff=5228"/>
		<updated>2013-10-29T09:50:15Z</updated>

		<summary type="html">&lt;p&gt;Podkor: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Podkor</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.appsalutecreator.com/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:New_record.jpg&amp;diff=5227</id>
		<title>Файл:New record.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.appsalutecreator.com/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:New_record.jpg&amp;diff=5227"/>
		<updated>2013-10-29T09:48:25Z</updated>

		<summary type="html">&lt;p&gt;Podkor: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Podkor</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.appsalutecreator.com/index.php?title=%D0%98%D0%BD%D1%82%D0%B5%D1%80%D1%84%D0%B5%D0%B9%D1%81_TextEditor&amp;diff=5226</id>
		<title>Интерфейс TextEditor</title>
		<link rel="alternate" type="text/html" href="https://wiki.appsalutecreator.com/index.php?title=%D0%98%D0%BD%D1%82%D0%B5%D1%80%D1%84%D0%B5%D0%B9%D1%81_TextEditor&amp;diff=5226"/>
		<updated>2013-10-29T09:46:04Z</updated>

		<summary type="html">&lt;p&gt;Podkor: /* Слияние нескольких текстовых баз */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC right}}&lt;br /&gt;
== [[Файл:Ico_text.png]]Редактор текстов ==&lt;br /&gt;
&lt;br /&gt;
[[Файл:Ico_text.png|40px]] '''Text Editor''' - хранилище всех текстовых ресурсов (надписей) на различных языках. Аналогично графике и звукам при помощи мышки они перетаскиваются в соответствующие свойства объектов, находящихся в Scene Editor.&amp;lt;br&amp;gt;&lt;br /&gt;
Окно редактора имеет следующий вид:&lt;br /&gt;
[[Файл:Головна4.PNG|550px|right]]&lt;br /&gt;
&lt;br /&gt;
===Общие свойства и действия с текстом===&lt;br /&gt;
&lt;br /&gt;
'''После любых действий в текстовом редакторе  необходимо обновить текстовую базу в Редакторе сцен!''' &lt;br /&gt;
*элемент текстовой базы - строка текста, которая может хранить в себе несколько различных фраз,записанных в разные поля&lt;br /&gt;
*фраза персонажа на разных языках записывается в один элемент текстовой базы&lt;br /&gt;
*в текстовой базе может храниться voice&lt;br /&gt;
*элемент текстовой базы может хранить в себе несколько иконок, для которых можно выбрать одну из 4-х категорий (mainPicture, icon1, icon2,icon3)&lt;br /&gt;
*каждому элементу текстовой базы присваивается уникальный номер. &lt;br /&gt;
*при добавлении элемента - присваивается следующий по порядку уникальный номер &lt;br /&gt;
*при экспорте экранов в текущий проект элементы текстовой базы добавляются автоматически в базу текущего проекта и присваиваются им следующие по порядку уникальные номера &lt;br /&gt;
*может существовать несколько элементов с одинаковыми именами &lt;br /&gt;
*текст может быть автоматически добавлен в текущий проект или добавлен из другой текстовой базы  &lt;br /&gt;
*элемент текстовой базы может быть удален, модифицирован, категоризирован&lt;br /&gt;
&lt;br /&gt;
=== Кнопки быстрого запуска ===&lt;br /&gt;
Вверху окна приложения расположены кнопки общего меню:&lt;br /&gt;
*[[Файл:00 6.png]] — команда создать Новый файл; &lt;br /&gt;
*[[Файл:00 7.png]] — команда открыть уже созданный проект;&lt;br /&gt;
*[[Файл:00 8.png]] — сохранить изменения в файле;&lt;br /&gt;
*[[Файл:00 18.png]] — создать новую папку в корневой базе;&lt;br /&gt;
*[[Файл:00_53.PNG]] — добавить новую текстовую запись; &lt;br /&gt;
*[[Файл:00 19.png]] — удалить текстовую запись.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Меню редактора ===&lt;br /&gt;
1. Если нажать в меню кнопку '''File''', выпадет список команд, с помощью которых можно создать новый или загрузить уже созданный файл, сохранить файл с указанием места сохранения и т.д.&amp;lt;br&amp;gt;&lt;br /&gt;
2.Для импорта фраз на другом языке необходимо воспользоваться Функцией Ипортировать меню File  и выбрать .xml-файл с текстом и выбрать язык&amp;lt;br&amp;gt;&lt;br /&gt;
3. Если нажать в меню кнопку '''Resource''', выпадет список команд:&amp;lt;br&amp;gt;&lt;br /&gt;
* Open Resource - позволяет создать базу по ранее подготовленной графической базе ресурсов с точным совпадением структуры и названием папок и файлов. Используется для Hidden Objects;&lt;br /&gt;
* Choose Resource File - позволяет подгрузить базу графических ресурсов для перетаскивания изображений из ResourcesEditor на иконку;&lt;br /&gt;
* Choose Categories Config - помогает классифицировать текстовые файлы по категориям.&lt;br /&gt;
[[Файл:00_51.PNG]] [[Файл:00_52.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Создание и заполнение текстовой базы проекта ===&lt;br /&gt;
Текстовая база не создается автоматически при создании проекта. &amp;lt;br&amp;gt;&lt;br /&gt;
Для создания и заполнения текстовой базы: &amp;lt;br&amp;gt;&lt;br /&gt;
1. Заходите в пункт меню '''file -&amp;gt; New'''. Появляется пустая база ресурсов, по умолчанию названная '''Untitled'''. &amp;lt;br&amp;gt;&lt;br /&gt;
2. Слева в дереве текстовых объектов кликаем правой кнопкой мыши  и выбираем '''Add record'''. Каждый раз при добавлении новой текстовой записи редактор просит нас написать ее имя. Это имя можно будет изменить в любой момент. Запишем имя '''arrow_If_down'''. &amp;lt;br&amp;gt;&lt;br /&gt;
3. Выделить запись и  в окне приложения TextEditor справа в столбце Word запишем слово, в столбце Sentence1,Sentence2 - указать подсказку для текстовой записи, в столбце voice - подключить звуковой файл для текстовой записи из ResourcesEditor.&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:00_54.PNG]]&lt;br /&gt;
&lt;br /&gt;
'''Необходимо обязательно сохранять любые изменения с текстом в редакторе TextEditor.'''&amp;lt;br&amp;gt;&lt;br /&gt;
Для вызова текстового редактора можно воспользоваться меню '''Tools -&amp;gt; Text Editor''', либо кнопкой быстрого запуска [[Файл:011.JPG]].&lt;br /&gt;
&lt;br /&gt;
'''Замечание.''' Букву Ё заменяем на Е&lt;br /&gt;
&lt;br /&gt;
=== Слияние нескольких текстовых баз ===&lt;br /&gt;
&lt;br /&gt;
Используется для слияния нескольких тектовых баз одного проекта выполненых для разных локализаций. &lt;br /&gt;
&lt;br /&gt;
Импорт текстовой базы&lt;br /&gt;
&lt;br /&gt;
[[Файл:Textimport.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Добавление иконок в текстовый элемент ===&lt;br /&gt;
&lt;br /&gt;
Необходимость добавления изображения в текстовый элемент, может возникнуть, например, при формировании элементов hiddenObject, или при работе с элементами economics.&lt;br /&gt;
Изображение перетаскивается в текстовый элемент из редактора ресурсов мышкой. Но, в случае необходимости создать множество элементов за один раз, есть более эффективный способ:&lt;br /&gt;
*На панели с кнопками быстрого запуска нажимаем ''Add new text records from resource...''. &lt;br /&gt;
[[Файл:Add new rec from.jpg|300px|]]&lt;br /&gt;
*Открылось окошко ''choose resource file'' в нем следует выбрать необходимый sirx файл.&lt;br /&gt;
[[Файл:Choose resource file.jpg]]&lt;br /&gt;
*В открывшемся дереве ресурсов выбираем нужную папку&lt;br /&gt;
[[Файл:Tree resources.jpg|400px|]]&lt;br /&gt;
*Из этой папки все файлы, не содержащие в названии символ &amp;quot;+&amp;quot;, преобразуются в текстовые элементы содержащие строку ''word'' и соответствующее изображение и добавятся в редактор ресурсов в папку которая создастся в соответствии с папкой содержащей эти иконки в редакторе ресурсов.&lt;/div&gt;</summary>
		<author><name>Podkor</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.appsalutecreator.com/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Add_new_rec_from.jpg&amp;diff=5225</id>
		<title>Файл:Add new rec from.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.appsalutecreator.com/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Add_new_rec_from.jpg&amp;diff=5225"/>
		<updated>2013-10-29T09:40:03Z</updated>

		<summary type="html">&lt;p&gt;Podkor: загружена новая версия «Файл:Add new rec from.jpg»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Podkor</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.appsalutecreator.com/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Tree_resources.jpg&amp;diff=5224</id>
		<title>Файл:Tree resources.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.appsalutecreator.com/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Tree_resources.jpg&amp;diff=5224"/>
		<updated>2013-10-29T09:38:14Z</updated>

		<summary type="html">&lt;p&gt;Podkor: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Podkor</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.appsalutecreator.com/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Choose_resource_file.jpg&amp;diff=5223</id>
		<title>Файл:Choose resource file.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.appsalutecreator.com/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Choose_resource_file.jpg&amp;diff=5223"/>
		<updated>2013-10-29T09:37:25Z</updated>

		<summary type="html">&lt;p&gt;Podkor: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Podkor</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.appsalutecreator.com/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Add_new_rec_from.jpg&amp;diff=5222</id>
		<title>Файл:Add new rec from.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.appsalutecreator.com/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Add_new_rec_from.jpg&amp;diff=5222"/>
		<updated>2013-10-29T09:36:00Z</updated>

		<summary type="html">&lt;p&gt;Podkor: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Podkor</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.appsalutecreator.com/index.php?title=%D0%98%D0%BD%D1%82%D0%B5%D1%80%D1%84%D0%B5%D0%B9%D1%81_TextEditor&amp;diff=5221</id>
		<title>Интерфейс TextEditor</title>
		<link rel="alternate" type="text/html" href="https://wiki.appsalutecreator.com/index.php?title=%D0%98%D0%BD%D1%82%D0%B5%D1%80%D1%84%D0%B5%D0%B9%D1%81_TextEditor&amp;diff=5221"/>
		<updated>2013-10-29T07:36:11Z</updated>

		<summary type="html">&lt;p&gt;Podkor: /* Общие свойства и действия с текстом */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC right}}&lt;br /&gt;
== [[Файл:Ico_text.png]]Редактор текстов ==&lt;br /&gt;
&lt;br /&gt;
[[Файл:Ico_text.png|40px]] '''Text Editor''' - хранилище всех текстовых ресурсов (надписей) на различных языках. Аналогично графике и звукам при помощи мышки они перетаскиваются в соответствующие свойства объектов, находящихся в Scene Editor.&amp;lt;br&amp;gt;&lt;br /&gt;
Окно редактора имеет следующий вид:&lt;br /&gt;
[[Файл:Головна4.PNG|550px|right]]&lt;br /&gt;
&lt;br /&gt;
===Общие свойства и действия с текстом===&lt;br /&gt;
&lt;br /&gt;
'''После любых действий в текстовом редакторе  необходимо обновить текстовую базу в Редакторе сцен!''' &lt;br /&gt;
*элемент текстовой базы - строка текста, которая может хранить в себе несколько различных фраз,записанных в разные поля&lt;br /&gt;
*фраза персонажа на разных языках записывается в один элемент текстовой базы&lt;br /&gt;
*в текстовой базе может храниться voice&lt;br /&gt;
*элемент текстовой базы может хранить в себе несколько иконок, для которых можно выбрать одну из 4-х категорий (mainPicture, icon1, icon2,icon3)&lt;br /&gt;
*каждому элементу текстовой базы присваивается уникальный номер. &lt;br /&gt;
*при добавлении элемента - присваивается следующий по порядку уникальный номер &lt;br /&gt;
*при экспорте экранов в текущий проект элементы текстовой базы добавляются автоматически в базу текущего проекта и присваиваются им следующие по порядку уникальные номера &lt;br /&gt;
*может существовать несколько элементов с одинаковыми именами &lt;br /&gt;
*текст может быть автоматически добавлен в текущий проект или добавлен из другой текстовой базы  &lt;br /&gt;
*элемент текстовой базы может быть удален, модифицирован, категоризирован&lt;br /&gt;
&lt;br /&gt;
=== Кнопки быстрого запуска ===&lt;br /&gt;
Вверху окна приложения расположены кнопки общего меню:&lt;br /&gt;
*[[Файл:00 6.png]] — команда создать Новый файл; &lt;br /&gt;
*[[Файл:00 7.png]] — команда открыть уже созданный проект;&lt;br /&gt;
*[[Файл:00 8.png]] — сохранить изменения в файле;&lt;br /&gt;
*[[Файл:00 18.png]] — создать новую папку в корневой базе;&lt;br /&gt;
*[[Файл:00_53.PNG]] — добавить новую текстовую запись; &lt;br /&gt;
*[[Файл:00 19.png]] — удалить текстовую запись.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Меню редактора ===&lt;br /&gt;
1. Если нажать в меню кнопку '''File''', выпадет список команд, с помощью которых можно создать новый или загрузить уже созданный файл, сохранить файл с указанием места сохранения и т.д.&amp;lt;br&amp;gt;&lt;br /&gt;
2.Для импорта фраз на другом языке необходимо воспользоваться Функцией Ипортировать меню File  и выбрать .xml-файл с текстом и выбрать язык&amp;lt;br&amp;gt;&lt;br /&gt;
3. Если нажать в меню кнопку '''Resource''', выпадет список команд:&amp;lt;br&amp;gt;&lt;br /&gt;
* Open Resource - позволяет создать базу по ранее подготовленной графической базе ресурсов с точным совпадением структуры и названием папок и файлов. Используется для Hidden Objects;&lt;br /&gt;
* Choose Resource File - позволяет подгрузить базу графических ресурсов для перетаскивания изображений из ResourcesEditor на иконку;&lt;br /&gt;
* Choose Categories Config - помогает классифицировать текстовые файлы по категориям.&lt;br /&gt;
[[Файл:00_51.PNG]] [[Файл:00_52.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Создание и заполнение текстовой базы проекта ===&lt;br /&gt;
Текстовая база не создается автоматически при создании проекта. &amp;lt;br&amp;gt;&lt;br /&gt;
Для создания и заполнения текстовой базы: &amp;lt;br&amp;gt;&lt;br /&gt;
1. Заходите в пункт меню '''file -&amp;gt; New'''. Появляется пустая база ресурсов, по умолчанию названная '''Untitled'''. &amp;lt;br&amp;gt;&lt;br /&gt;
2. Слева в дереве текстовых объектов кликаем правой кнопкой мыши  и выбираем '''Add record'''. Каждый раз при добавлении новой текстовой записи редактор просит нас написать ее имя. Это имя можно будет изменить в любой момент. Запишем имя '''arrow_If_down'''. &amp;lt;br&amp;gt;&lt;br /&gt;
3. Выделить запись и  в окне приложения TextEditor справа в столбце Word запишем слово, в столбце Sentence1,Sentence2 - указать подсказку для текстовой записи, в столбце voice - подключить звуковой файл для текстовой записи из ResourcesEditor.&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:00_54.PNG]]&lt;br /&gt;
&lt;br /&gt;
'''Необходимо обязательно сохранять любые изменения с текстом в редакторе TextEditor.'''&amp;lt;br&amp;gt;&lt;br /&gt;
Для вызова текстового редактора можно воспользоваться меню '''Tools -&amp;gt; Text Editor''', либо кнопкой быстрого запуска [[Файл:011.JPG]].&lt;br /&gt;
&lt;br /&gt;
'''Замечание.''' Букву Ё заменяем на Е&lt;br /&gt;
&lt;br /&gt;
=== Слияние нескольких текстовых баз ===&lt;br /&gt;
&lt;br /&gt;
Используется для слияния нескольких тектовых баз одного проекта выполненых для разных локализаций. &lt;br /&gt;
&lt;br /&gt;
Импорт текстовой базы&lt;br /&gt;
&lt;br /&gt;
[[Файл:Textimport.jpg]]&lt;/div&gt;</summary>
		<author><name>Podkor</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.appsalutecreator.com/index.php?title=%D0%98%D0%BD%D1%82%D0%B5%D1%80%D1%84%D0%B5%D0%B9%D1%81_Viewer&amp;diff=5220</id>
		<title>Интерфейс Viewer</title>
		<link rel="alternate" type="text/html" href="https://wiki.appsalutecreator.com/index.php?title=%D0%98%D0%BD%D1%82%D0%B5%D1%80%D1%84%D0%B5%D0%B9%D1%81_Viewer&amp;diff=5220"/>
		<updated>2013-10-28T15:39:10Z</updated>

		<summary type="html">&lt;p&gt;Podkor: /* Клавиша F2 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC right}}&lt;br /&gt;
=Начало работы со вьювером =&lt;br /&gt;
'''Вьювер''' — приложение, визуализирующие созданную игру, и дающее возможность выявить ошибки и артефакты до начала тестирования. &amp;lt;br&amp;gt;&lt;br /&gt;
Вьювер предназначен для отладки  и тестирования созданной игры самим гейм- дизайнером.&amp;lt;br&amp;gt;&lt;br /&gt;
Вьювер запускается непосредственно из ScenceEditor двумя способами из меню Вьювер - Открыть вьювер или кликом по кнопке [[Файл:00_9.png]]&amp;lt;br&amp;gt;&lt;br /&gt;
Для закрытия  вьювера нажимаем «Закрыть» или клавишу Esc &amp;lt;br&amp;gt;&lt;br /&gt;
Перед запуском вьювера необходимо выбрать экран или сцену на экране, который начнёт проигрываться,  и  сохранить проект.  &lt;br /&gt;
Может быть запущено несколько вюверов.&amp;lt;br&amp;gt;&lt;br /&gt;
При визуализации игры размеры окна вьювера можно изменять (растягивать / сжимать)&amp;lt;br&amp;gt;&lt;br /&gt;
==Особенности работы двух вьюверов одновременно==&lt;br /&gt;
Последний запущенный вьювер отображает  внесенные и сохраненные изменения перед его запуском. Предыдущий  запущенный вьювер — не будет  отображать изменения в проекте, внесенные после его запуска&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Вывод сообщений об ошибках в окне вьювера=&lt;br /&gt;
&lt;br /&gt;
В ходе создания приложения возникают  ошибки, которые вьювер отлеживает и отображает в своем окне.&amp;lt;br&amp;gt;&lt;br /&gt;
На примере ниже рассмотрим структуру сообщений об ошибках.&amp;lt;br&amp;gt;&lt;br /&gt;
Предположим, по клику на кнопку  А пользователь должен прочитать сообщение, нажать  на кнопку Б  и уйти на другой экран.&amp;lt;br&amp;gt;&lt;br /&gt;
Алгоритм программы без ошибок:&amp;lt;br&amp;gt;&lt;br /&gt;
1. при клике на кнопку А, изменяется состояние машины MASH на see.&amp;lt;br&amp;gt;&lt;br /&gt;
2. Состояние see машины MASH показывает обьект TEXT c фразой  и проявляет кнопку Б.&amp;lt;br&amp;gt;&lt;br /&gt;
3. При клике на кнопку Б переходим на другой экран&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Одноко гейм-дизайнер допустил ряд ошибок:&amp;lt;br&amp;gt;&lt;br /&gt;
1) при клике на кнопку А изменил  состояние машина MASH на не существующее (asd)&amp;lt;br&amp;gt;&lt;br /&gt;
2) В свойстве обьекта  TEXT не указал фразу персонажа&amp;lt;br&amp;gt;&lt;br /&gt;
3) Случайно удалил кнопку Б с экрана, а  ссылка на нее осталась в машине  MASH&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Вьювер отобразит ошибки:'''&amp;lt;br&amp;gt;&lt;br /&gt;
''При обращении к несуществующему состоянию обьекта.'' На экране будет отображен номер и тип обьекта, состояние которого пытаются вызвать,а также имя несуществующего состояния обьекта.&amp;lt;br&amp;gt;  &lt;br /&gt;
[[Файл:Ошибка_тип_1.JPG|300px]] &amp;lt;br&amp;gt;  &lt;br /&gt;
''При создании обьекта, которому не установили обязательные параметры, или при удалении обьекта из дерева проекта могут оставаться ссылки на него в других обьектах''. В таком случае вьювер вероятнее всего проигнорирует написанный Вами код и ничего не отобразит в своем окне.&lt;br /&gt;
&lt;br /&gt;
=Клавиша F1=&lt;br /&gt;
[[Файл:Вьювер_1.JPG|right|200px]] Список команд, доступных во вьювере, вызываемых по нажатию клавиши  F1: &lt;br /&gt;
*F2 (help) — открывается панель отладки приложения&lt;br /&gt;
*S (states) – при вызове команды на экране отображаются состояния объектов, у которых включена отладка&lt;br /&gt;
*F(frames) — отображаются границы обьектов&lt;br /&gt;
*V(verbose) – в браузере, установленном по умолчанию, откоется xml — код визуализируемой сцены&lt;br /&gt;
*T(fps) — отобразится информация о загрузке операционной памяти ПК&lt;br /&gt;
*M(mouse) – при клике по обьекту отобразятся  координаты мыши &lt;br /&gt;
*D(device) -  параметры экрана устройства, под которое разрабатвается приложение&lt;br /&gt;
*R(reload) — перезагружает во вьювер весь проект и визуализирует первый по списку экран проекта, но при этом считывает все параметры, записанные в опции&lt;br /&gt;
*space – останавливает все процессы игры на данном экране. Для повторного запуска  нажимаем space.&lt;br /&gt;
Список команд закрывается  при повторном нажатии клавиши  F1&lt;br /&gt;
&lt;br /&gt;
=Клавиша F2=&lt;br /&gt;
При клике на клавишу F2 вызвается панель отладки, позволяющая осуществить :[[Файл:Вювер_3.JPG|500px|right]]&amp;lt;br&amp;gt;&lt;br /&gt;
*переходы между экранами&lt;br /&gt;
*вызов других команд вювера&lt;br /&gt;
*отслеживать запись параметров в опции (в файл options)&lt;br /&gt;
*переключение между локализациями на разные языки&lt;br /&gt;
*настройка цвета текста, отображаемого на экране&lt;br /&gt;
На рисунке справа приведен вид экрана с включеной панелью отладки. &amp;lt;br&amp;gt;&lt;br /&gt;
Панель отладки закрывается  при повторном нажатии клавиши  F2&amp;lt;br&amp;gt;&lt;br /&gt;
'''Замечания:'''&lt;br /&gt;
*Для перехода на другой экран кликните по названию экрана левой  кнопкой мыши.&lt;br /&gt;
*Для выбора оптимального цвета шрифта информации,отображаемой на экране поставьте галочки на панели выбора цвета шрифта или кликаем по клавише С&lt;br /&gt;
*Для выбора  языка локализации игры кликните левой  кнопкой мыши по аббревиатуре языка.&lt;br /&gt;
*При клике на кнопку Reload  во вьювер перезагружается весь проект и визуализируется первый экран  в дереве экранов проекта&lt;br /&gt;
*При клике на кнопку Save записываются текущие параметры игры (обьектов) и отображаются по порядку в области записи параметров прохождения игры. При клике на запись в области записи параметров прохождения игры игра возвращается в то состояние, после которого были записаны параметры игры.&lt;br /&gt;
*При вызове команды time  отобразится информация о загрузке операционной памяти ПК/&lt;br /&gt;
*При клике на кнопку log записываются текущие статусы обьектов во viewer.log&lt;br /&gt;
*При вызове команды log откроется меню в панели отладки (отобразятся кнопоки hystory и pause) и одновременно на экране отобразится информация об изменении состояний и свойств обьектов во время прохождения игры в режиме реального времени. При клике на  pause информация перестанет изменяться при клике на любые обьекты.&amp;lt;br&amp;gt;&lt;br /&gt;
*При вызове команды flyers показывается состояние всех флаеров&lt;br /&gt;
&lt;br /&gt;
В нашем проекте может быть  создано несколько лэйаутов под разные магазины, платформы и устройства. Для переключения между лэйатуами кликнем по его названию в правом верхнем углу. Для визуализации приложения на разных типах устройствах кликнем по списку устройств, расположенному чуть выше области записи параметров прохождения игры.&amp;lt;br&amp;gt;&lt;br /&gt;
'''Примечание:'''&lt;br /&gt;
Для того, чтобы была возможность визуализации игры на разных устройствах, необходимо в файле viewer.xml , расположенному      в  Application Data\Absolutist\Viewer, в параметрах &lt;br /&gt;
autoScX и  autoScY прописать значения, подобранные относительно выбраного разрешения и устройства, моделью которого будет являться окно вьювера при визуализации игры.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Клавиши F7 и F8=&lt;br /&gt;
Нажатие клавиш ''F7'' и ''F8''  позволяет симулировать горячие кнопки девайсов работающих на платформе Android - Home и Back&lt;br /&gt;
&lt;br /&gt;
=Клавиша S (states)=&lt;br /&gt;
Для отслеживания перехода обьекта в различные состояния  в процессе проигрывания игры необходимо  свойству обьекта Отладка присвоить вкл и при визуализации экрана нажать клавишу  S.&amp;lt;br&amp;gt;&lt;br /&gt;
Ниже приведен пример отображения информации в окне вьювера при включенной функции  states.&lt;br /&gt;
На экране отображена следующая информация:&lt;br /&gt;
*имя экрана &lt;br /&gt;
*уникальный номер и имя обьекта&lt;br /&gt;
*имя состояния, в котором обьект находится в данную секунду&lt;br /&gt;
[[Файл:States.JPG |500px|right]]&amp;lt;br&amp;gt;&lt;br /&gt;
'''Замечание:'''&lt;br /&gt;
*Не все обьекты имееют свойство Отладка.&lt;br /&gt;
*Для некоторых обьектов отображается дополнительная служебная информация (например, для обьектов типа mashine)&lt;br /&gt;
*Для получения более детальной информации о смене  состояний и параметров обьектов в течении нескольких секунд рекомендуется воспользоваться кнопкой  pause  панели Отладка&lt;br /&gt;
&lt;br /&gt;
==Включение отслеживания обьектов в процессе визуализации игры==&lt;br /&gt;
Существует возможность включения отслеживания перехода  обьекта в другое состояние при визуализации игры. При включении функции  states в левом верхнем углу появляется:&amp;lt;br&amp;gt;&lt;br /&gt;
*поле ID, куда необходимо вписать уникальный номер объекта,&lt;br /&gt;
*кнопка ADD – добавить обьект в / в список обьектов, изменение состояния которых отслеживается на экране&lt;br /&gt;
*кнопка  DEL – удалить объект из списка бьектов, изменение состояния которых отслеживается на экране&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:Frames_F.JPG|right|400px]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Кнопка F (frames)=&lt;br /&gt;
В процессе размещения на сцене различных обьектов возникает необходимость отслеживать:&amp;lt;br&amp;gt;&lt;br /&gt;
*обьекты, которые прокликиваются,не должны перекрываться другими&lt;br /&gt;
*обьекты должны находится в точно заданных границах (например, при создании хидден-игр)&lt;br /&gt;
*обьекты, расположенные на разных сценах, не должны перекрываться другими&lt;br /&gt;
Во вьювере при клике на клавишу F отобразятся границы всех обьектов, расположенных на экране.&amp;lt;br&amp;gt;&lt;br /&gt;
'''Замечание:''' Границы  обьектов выделяются разными цветами. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Кнопка V (verbose)=&lt;br /&gt;
[[Файл:verbose.JPG|right|500px]]&lt;br /&gt;
При визуализации может возникнуть необходимость просмотреть параметры обьектов, расположенных на визуализируемой сцене, не переходя в ScenceEditor  и не открывая xml-файл проекта.&amp;lt;br&amp;gt;&lt;br /&gt;
Нажимаем кливишу  V  и в браузере установленном по умолчанию отобразится файл viewer_info.html, в котором описаны объекты, расположенные на визуализируемой сцене.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Замечание.'''  Файл viewer_info.html  расположен в \Application Data\Absolutist\Viewer&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Клавиша T (fps,time)=&lt;br /&gt;
&lt;br /&gt;
В процессе визуализации экрана полезно отслеживать такие параметры:&amp;lt;br&amp;gt;&lt;br /&gt;
*как использование памяти&lt;br /&gt;
*какие экраны одновременно подгружены в память в месте с экраном, воспроизводимым в данную минуту&lt;br /&gt;
*количество обьектов, расположенных на экране&lt;br /&gt;
*количество кадров в минуту&lt;br /&gt;
*количество ошибок&lt;br /&gt;
Для получения всей этой информации мы нажимаем клавишу T.&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:Time.JPG|800px]]&amp;lt;br&amp;gt;&lt;br /&gt;
Отображаемые параметры:&amp;lt;br&amp;gt;&lt;br /&gt;
*f:   - количество кадров в секунду. (должно быть больше 30)&lt;br /&gt;
*loading screen – имя  экрана, загружаемого перед этим (если включена функция предзагрузки экрана)&lt;br /&gt;
*img – количество загруженых обьектов&lt;br /&gt;
*ram+vram  -  суммарное количество занимаемой памяти . Значение параметра max – максимальное суммарное количество занимаемой памяти в какой-то момент визуализации игры&lt;br /&gt;
*RAM — группа параметров:&lt;br /&gt;
#первый параметр — количество памяти, указанное в файле app.icf&lt;br /&gt;
# need  - количество памяти необходимое для игры&amp;lt;br&amp;gt;&lt;br /&gt;
# used – количество памяти  используемое игрой&amp;lt;br&amp;gt;&lt;br /&gt;
# max – максимальное количество памяти, требуемой для игры&amp;lt;br&amp;gt;&lt;br /&gt;
#free – количество свободной памяти&amp;lt;br&amp;gt;&lt;br /&gt;
*VRAM – количество занимаемой памяти приложением и максимальное занимаемая память&amp;lt;br&amp;gt;&lt;br /&gt;
*OS free mem -количество свободной памяти на устройстве&amp;lt;br&amp;gt;&lt;br /&gt;
Render:&lt;br /&gt;
*textures: количество загруженых картинок&lt;br /&gt;
*imPerLastFrame: картинок в последнем кадре&lt;br /&gt;
*imBatchPerLastFrame: упакованных картинок, если значение совпадает с значением в max для этого параметра - значит графика не была упакована в текстуры.&lt;br /&gt;
&lt;br /&gt;
=Клавиша М (mouse)=&lt;br /&gt;
[[Файл:Mouse.JPG|right|300px]]&amp;lt;br&amp;gt;&lt;br /&gt;
Иногда бывает ситуация, когда по клику в некоторой заданой области должно производиться некоторое действие. Для уточнения границы такой области воспользуемся функцией Mouse (клавиша М).&amp;lt;br&amp;gt;&lt;br /&gt;
На экране отобразится координата последнего выполненного клика.&lt;br /&gt;
&lt;br /&gt;
=Клавиша D (device)=&lt;br /&gt;
Для получения информации о масштабе визуализации игры в окне вьювера необходимо нажать клавишу  D в окне вьювера. &lt;br /&gt;
На экране отобразится информация:[[Файл:Device.JPG|right|400px]]&amp;lt;br&amp;gt;&lt;br /&gt;
*W – размеры окна вьювера&lt;br /&gt;
*L – размеры лэйаута&lt;br /&gt;
*D - размеры устройства.&lt;br /&gt;
*S – масштаб окна вьювера (относительно размеров лэйаута)&amp;lt;br&amp;gt;&lt;br /&gt;
Примечание. Значения параметра D забираются из файла viewer.xml , который расположен в Application Data\Absolutist\Viewer&lt;br /&gt;
&lt;br /&gt;
=Клавиша С=&lt;br /&gt;
Нажатие клавиши ''С'' в тот момент когда на вьювере отображена какая-либо информация, позволяет менять цвет шрифта. Удобно если цвет текста сливается с бекграуном.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
=Клавиша SPACE=&lt;br /&gt;
Нажатие клавиши SPACE  &amp;quot;ставит на паузу&amp;quot; отображаемый во вьювере проект..&lt;/div&gt;</summary>
		<author><name>Podkor</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.appsalutecreator.com/index.php?title=%D0%98%D0%BD%D1%82%D0%B5%D1%80%D1%84%D0%B5%D0%B9%D1%81_Viewer&amp;diff=5219</id>
		<title>Интерфейс Viewer</title>
		<link rel="alternate" type="text/html" href="https://wiki.appsalutecreator.com/index.php?title=%D0%98%D0%BD%D1%82%D0%B5%D1%80%D1%84%D0%B5%D0%B9%D1%81_Viewer&amp;diff=5219"/>
		<updated>2013-10-28T15:36:12Z</updated>

		<summary type="html">&lt;p&gt;Podkor: /* Клавиша D (device) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC right}}&lt;br /&gt;
=Начало работы со вьювером =&lt;br /&gt;
'''Вьювер''' — приложение, визуализирующие созданную игру, и дающее возможность выявить ошибки и артефакты до начала тестирования. &amp;lt;br&amp;gt;&lt;br /&gt;
Вьювер предназначен для отладки  и тестирования созданной игры самим гейм- дизайнером.&amp;lt;br&amp;gt;&lt;br /&gt;
Вьювер запускается непосредственно из ScenceEditor двумя способами из меню Вьювер - Открыть вьювер или кликом по кнопке [[Файл:00_9.png]]&amp;lt;br&amp;gt;&lt;br /&gt;
Для закрытия  вьювера нажимаем «Закрыть» или клавишу Esc &amp;lt;br&amp;gt;&lt;br /&gt;
Перед запуском вьювера необходимо выбрать экран или сцену на экране, который начнёт проигрываться,  и  сохранить проект.  &lt;br /&gt;
Может быть запущено несколько вюверов.&amp;lt;br&amp;gt;&lt;br /&gt;
При визуализации игры размеры окна вьювера можно изменять (растягивать / сжимать)&amp;lt;br&amp;gt;&lt;br /&gt;
==Особенности работы двух вьюверов одновременно==&lt;br /&gt;
Последний запущенный вьювер отображает  внесенные и сохраненные изменения перед его запуском. Предыдущий  запущенный вьювер — не будет  отображать изменения в проекте, внесенные после его запуска&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Вывод сообщений об ошибках в окне вьювера=&lt;br /&gt;
&lt;br /&gt;
В ходе создания приложения возникают  ошибки, которые вьювер отлеживает и отображает в своем окне.&amp;lt;br&amp;gt;&lt;br /&gt;
На примере ниже рассмотрим структуру сообщений об ошибках.&amp;lt;br&amp;gt;&lt;br /&gt;
Предположим, по клику на кнопку  А пользователь должен прочитать сообщение, нажать  на кнопку Б  и уйти на другой экран.&amp;lt;br&amp;gt;&lt;br /&gt;
Алгоритм программы без ошибок:&amp;lt;br&amp;gt;&lt;br /&gt;
1. при клике на кнопку А, изменяется состояние машины MASH на see.&amp;lt;br&amp;gt;&lt;br /&gt;
2. Состояние see машины MASH показывает обьект TEXT c фразой  и проявляет кнопку Б.&amp;lt;br&amp;gt;&lt;br /&gt;
3. При клике на кнопку Б переходим на другой экран&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Одноко гейм-дизайнер допустил ряд ошибок:&amp;lt;br&amp;gt;&lt;br /&gt;
1) при клике на кнопку А изменил  состояние машина MASH на не существующее (asd)&amp;lt;br&amp;gt;&lt;br /&gt;
2) В свойстве обьекта  TEXT не указал фразу персонажа&amp;lt;br&amp;gt;&lt;br /&gt;
3) Случайно удалил кнопку Б с экрана, а  ссылка на нее осталась в машине  MASH&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Вьювер отобразит ошибки:'''&amp;lt;br&amp;gt;&lt;br /&gt;
''При обращении к несуществующему состоянию обьекта.'' На экране будет отображен номер и тип обьекта, состояние которого пытаются вызвать,а также имя несуществующего состояния обьекта.&amp;lt;br&amp;gt;  &lt;br /&gt;
[[Файл:Ошибка_тип_1.JPG|300px]] &amp;lt;br&amp;gt;  &lt;br /&gt;
''При создании обьекта, которому не установили обязательные параметры, или при удалении обьекта из дерева проекта могут оставаться ссылки на него в других обьектах''. В таком случае вьювер вероятнее всего проигнорирует написанный Вами код и ничего не отобразит в своем окне.&lt;br /&gt;
&lt;br /&gt;
=Клавиша F1=&lt;br /&gt;
[[Файл:Вьювер_1.JPG|right|200px]] Список команд, доступных во вьювере, вызываемых по нажатию клавиши  F1: &lt;br /&gt;
*F2 (help) — открывается панель отладки приложения&lt;br /&gt;
*S (states) – при вызове команды на экране отображаются состояния объектов, у которых включена отладка&lt;br /&gt;
*F(frames) — отображаются границы обьектов&lt;br /&gt;
*V(verbose) – в браузере, установленном по умолчанию, откоется xml — код визуализируемой сцены&lt;br /&gt;
*T(fps) — отобразится информация о загрузке операционной памяти ПК&lt;br /&gt;
*M(mouse) – при клике по обьекту отобразятся  координаты мыши &lt;br /&gt;
*D(device) -  параметры экрана устройства, под которое разрабатвается приложение&lt;br /&gt;
*R(reload) — перезагружает во вьювер весь проект и визуализирует первый по списку экран проекта, но при этом считывает все параметры, записанные в опции&lt;br /&gt;
*space – останавливает все процессы игры на данном экране. Для повторного запуска  нажимаем space.&lt;br /&gt;
Список команд закрывается  при повторном нажатии клавиши  F1&lt;br /&gt;
&lt;br /&gt;
=Клавиша F2=&lt;br /&gt;
При клике на клавишу F2 вызвается панель отладки, позволяющая осуществить :[[Файл:Вювер_3.JPG|500px|right]]&amp;lt;br&amp;gt;&lt;br /&gt;
*переходы между экранами&lt;br /&gt;
*вызов других команд вювера&lt;br /&gt;
*отслеживать запись параметров в опции (в файл options)&lt;br /&gt;
*переключение между локализациями на разные языки&lt;br /&gt;
*настройка цвета текста, отображаемого на экране&lt;br /&gt;
На рисунке справа приведен вид экрана с включеной панелью отладки. &amp;lt;br&amp;gt;&lt;br /&gt;
Панель отладки закрывается  при повторном нажатии клавиши  F2&amp;lt;br&amp;gt;&lt;br /&gt;
'''Замечания:'''&lt;br /&gt;
*Для перехода на другой экран кликните по названию экрана левой  кнопкой мыши.&lt;br /&gt;
*Для выбора оптимального цвета шрифта информации,отображаемой на экране поставьте галочки на панели выбора цвета шрифта или кликаем по клавише С&lt;br /&gt;
*Для выбора  языка локализации игры кликните левой  кнопкой мыши по аббревиатуре языка.&lt;br /&gt;
*При клике на кнопку Reload  во вьювер перезагружается весь проект и визуализируется первый экран  в дереве экранов проекта&lt;br /&gt;
*При клике на кнопку Save записываются текущие параметры игры (обьектов) и отображаются по порядку в области записи параметров прохождения игры. При клике на запись в области записи параметров прохождения игры игра возвращается в то состояние, после которого были записаны параметры игры.&lt;br /&gt;
*При вызове команды time  отобразится информация о загрузке операционной памяти ПК/&lt;br /&gt;
*При клике на кнопку log записываются текущие статусы обьектов во viewer.log&lt;br /&gt;
*При вызове команды log откроется меню в панели отладки (отобразятся кнопоки hystory и pause) и одновременно на экране отобразится информация об изменении состояний и свойств обьектов во время прохождения игры в режиме реального времени. При клике на  pause информация перестанет изменяться при клике на любые обьекты.&amp;lt;br&amp;gt;&lt;br /&gt;
*При вызове команды flyers показывается состояние всех флаеров&lt;br /&gt;
&lt;br /&gt;
В нашем проекте может быть  создано несколько лэйаутов под разные магазины, платформы и устройства. Для переключения между лэйатуами кликнем по его названию в правом верхнем углу. Для визуализации приложения на разных типах устройствах кликнем по списку устройств, расположенному чуть выше области записи параметров прохождения игры.&amp;lt;br&amp;gt;&lt;br /&gt;
'''Примечание:'''&lt;br /&gt;
Для того, чтобы была возможность визуализации игры на разных устройствах, необходимо в файле viewer.xml , расположенному      в  Application Data\Absolutist\Viewer, в параметрах &lt;br /&gt;
autoScX и  autoScY прописать значения, подобранные относительно выбраного разрешения и устройства, моделью которого будет являться окно вьювера при визуализации игры.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Клавиша S (states)=&lt;br /&gt;
Для отслеживания перехода обьекта в различные состояния  в процессе проигрывания игры необходимо  свойству обьекта Отладка присвоить вкл и при визуализации экрана нажать клавишу  S.&amp;lt;br&amp;gt;&lt;br /&gt;
Ниже приведен пример отображения информации в окне вьювера при включенной функции  states.&lt;br /&gt;
На экране отображена следующая информация:&lt;br /&gt;
*имя экрана &lt;br /&gt;
*уникальный номер и имя обьекта&lt;br /&gt;
*имя состояния, в котором обьект находится в данную секунду&lt;br /&gt;
[[Файл:States.JPG |500px|right]]&amp;lt;br&amp;gt;&lt;br /&gt;
'''Замечание:'''&lt;br /&gt;
*Не все обьекты имееют свойство Отладка.&lt;br /&gt;
*Для некоторых обьектов отображается дополнительная служебная информация (например, для обьектов типа mashine)&lt;br /&gt;
*Для получения более детальной информации о смене  состояний и параметров обьектов в течении нескольких секунд рекомендуется воспользоваться кнопкой  pause  панели Отладка&lt;br /&gt;
&lt;br /&gt;
==Включение отслеживания обьектов в процессе визуализации игры==&lt;br /&gt;
Существует возможность включения отслеживания перехода  обьекта в другое состояние при визуализации игры. При включении функции  states в левом верхнем углу появляется:&amp;lt;br&amp;gt;&lt;br /&gt;
*поле ID, куда необходимо вписать уникальный номер объекта,&lt;br /&gt;
*кнопка ADD – добавить обьект в / в список обьектов, изменение состояния которых отслеживается на экране&lt;br /&gt;
*кнопка  DEL – удалить объект из списка бьектов, изменение состояния которых отслеживается на экране&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:Frames_F.JPG|right|400px]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Кнопка F (frames)=&lt;br /&gt;
В процессе размещения на сцене различных обьектов возникает необходимость отслеживать:&amp;lt;br&amp;gt;&lt;br /&gt;
*обьекты, которые прокликиваются,не должны перекрываться другими&lt;br /&gt;
*обьекты должны находится в точно заданных границах (например, при создании хидден-игр)&lt;br /&gt;
*обьекты, расположенные на разных сценах, не должны перекрываться другими&lt;br /&gt;
Во вьювере при клике на клавишу F отобразятся границы всех обьектов, расположенных на экране.&amp;lt;br&amp;gt;&lt;br /&gt;
'''Замечание:''' Границы  обьектов выделяются разными цветами. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Кнопка V (verbose)=&lt;br /&gt;
[[Файл:verbose.JPG|right|500px]]&lt;br /&gt;
При визуализации может возникнуть необходимость просмотреть параметры обьектов, расположенных на визуализируемой сцене, не переходя в ScenceEditor  и не открывая xml-файл проекта.&amp;lt;br&amp;gt;&lt;br /&gt;
Нажимаем кливишу  V  и в браузере установленном по умолчанию отобразится файл viewer_info.html, в котором описаны объекты, расположенные на визуализируемой сцене.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Замечание.'''  Файл viewer_info.html  расположен в \Application Data\Absolutist\Viewer&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Клавиша T (fps,time)=&lt;br /&gt;
&lt;br /&gt;
В процессе визуализации экрана полезно отслеживать такие параметры:&amp;lt;br&amp;gt;&lt;br /&gt;
*как использование памяти&lt;br /&gt;
*какие экраны одновременно подгружены в память в месте с экраном, воспроизводимым в данную минуту&lt;br /&gt;
*количество обьектов, расположенных на экране&lt;br /&gt;
*количество кадров в минуту&lt;br /&gt;
*количество ошибок&lt;br /&gt;
Для получения всей этой информации мы нажимаем клавишу T.&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:Time.JPG|800px]]&amp;lt;br&amp;gt;&lt;br /&gt;
Отображаемые параметры:&amp;lt;br&amp;gt;&lt;br /&gt;
*f:   - количество кадров в секунду. (должно быть больше 30)&lt;br /&gt;
*loading screen – имя  экрана, загружаемого перед этим (если включена функция предзагрузки экрана)&lt;br /&gt;
*img – количество загруженых обьектов&lt;br /&gt;
*ram+vram  -  суммарное количество занимаемой памяти . Значение параметра max – максимальное суммарное количество занимаемой памяти в какой-то момент визуализации игры&lt;br /&gt;
*RAM — группа параметров:&lt;br /&gt;
#первый параметр — количество памяти, указанное в файле app.icf&lt;br /&gt;
# need  - количество памяти необходимое для игры&amp;lt;br&amp;gt;&lt;br /&gt;
# used – количество памяти  используемое игрой&amp;lt;br&amp;gt;&lt;br /&gt;
# max – максимальное количество памяти, требуемой для игры&amp;lt;br&amp;gt;&lt;br /&gt;
#free – количество свободной памяти&amp;lt;br&amp;gt;&lt;br /&gt;
*VRAM – количество занимаемой памяти приложением и максимальное занимаемая память&amp;lt;br&amp;gt;&lt;br /&gt;
*OS free mem -количество свободной памяти на устройстве&amp;lt;br&amp;gt;&lt;br /&gt;
Render:&lt;br /&gt;
*textures: количество загруженых картинок&lt;br /&gt;
*imPerLastFrame: картинок в последнем кадре&lt;br /&gt;
*imBatchPerLastFrame: упакованных картинок, если значение совпадает с значением в max для этого параметра - значит графика не была упакована в текстуры.&lt;br /&gt;
&lt;br /&gt;
=Клавиша М (mouse)=&lt;br /&gt;
[[Файл:Mouse.JPG|right|300px]]&amp;lt;br&amp;gt;&lt;br /&gt;
Иногда бывает ситуация, когда по клику в некоторой заданой области должно производиться некоторое действие. Для уточнения границы такой области воспользуемся функцией Mouse (клавиша М).&amp;lt;br&amp;gt;&lt;br /&gt;
На экране отобразится координата последнего выполненного клика.&lt;br /&gt;
&lt;br /&gt;
=Клавиша D (device)=&lt;br /&gt;
Для получения информации о масштабе визуализации игры в окне вьювера необходимо нажать клавишу  D в окне вьювера. &lt;br /&gt;
На экране отобразится информация:[[Файл:Device.JPG|right|400px]]&amp;lt;br&amp;gt;&lt;br /&gt;
*W – размеры окна вьювера&lt;br /&gt;
*L – размеры лэйаута&lt;br /&gt;
*D - размеры устройства.&lt;br /&gt;
*S – масштаб окна вьювера (относительно размеров лэйаута)&amp;lt;br&amp;gt;&lt;br /&gt;
Примечание. Значения параметра D забираются из файла viewer.xml , который расположен в Application Data\Absolutist\Viewer&lt;br /&gt;
&lt;br /&gt;
=Клавиша С=&lt;br /&gt;
Нажатие клавиши ''С'' в тот момент когда на вьювере отображена какая-либо информация, позволяет менять цвет шрифта. Удобно если цвет текста сливается с бекграуном.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
=Клавиша SPACE=&lt;br /&gt;
Нажатие клавиши SPACE  &amp;quot;ставит на паузу&amp;quot; отображаемый во вьювере проект..&lt;/div&gt;</summary>
		<author><name>Podkor</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.appsalutecreator.com/index.php?title=%D0%9A%D0%BD%D0%B8%D0%B3%D0%B0_%D0%B6%D0%B0%D0%BB%D0%BE%D0%B1_%D0%B8_%D0%BF%D0%BE%D0%B6%D0%B5%D0%BB%D0%B0%D0%BD%D0%B8%D0%B9&amp;diff=5218</id>
		<title>Книга жалоб и пожеланий</title>
		<link rel="alternate" type="text/html" href="https://wiki.appsalutecreator.com/index.php?title=%D0%9A%D0%BD%D0%B8%D0%B3%D0%B0_%D0%B6%D0%B0%D0%BB%D0%BE%D0%B1_%D0%B8_%D0%BF%D0%BE%D0%B6%D0%B5%D0%BB%D0%B0%D0%BD%D0%B8%D0%B9&amp;diff=5218"/>
		<updated>2013-10-28T15:17:09Z</updated>

		<summary type="html">&lt;p&gt;Podkor: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Внимание !!&lt;br /&gt;
* Перед публикацией внимательно читать ВСЕ!&lt;br /&gt;
* Делаем при обсуждении отступы (двоеточие) и подписываемся (4 тильды).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
: В объекте checkbox есть у параметра '''надпись''' свойство '''цвет''', который можно задать с помощью буквенных и цифровых значений. Но какую бы комбинацию не задавал, всегда цвет текста черный.--[[Участник:Lkunica|Lkunica]] 08:27, 23 октября 2013 (CEST)&lt;br /&gt;
&lt;br /&gt;
: Есть возможность выделять группу объектов, чтобы задать сразу всем какое-то свойство.1.Пусть нужно задать прокликивание. Поменяется это свойство на заданное, если предварительно у всех выделенных объектов значение этого свойства было одинаковое.2.Хотелось бы сразу задавать нескольким текстовых объектам шрифт, его размер, и цвет. Пока такой возможности нет.&lt;br /&gt;
&lt;br /&gt;
:При экспорте сцены с объектом groupset теряются добавленные в его группу объекты (точнее заменяются другими объектами сцены), и приходится заново их переподключать. При экспорте экрана все нормально.--[[Участник:Lkunica|Lkunica]] 08:27, 23 октября 2013 (CEST)&lt;br /&gt;
&lt;br /&gt;
:Нельзя удалить графический ресурс в команде draw в машине состояний. Иногда это актуально,когда нужно заменить этот графический ресурс другим с таким же именем - не видно произошла замена или нет.--[[Участник:Lkunica|Lkunica]] 08:27, 23 октября 2013 (CEST)&lt;br /&gt;
&lt;br /&gt;
:Есть возможность выделять группу объектов, что бы задать им какое-то свойство. Но такое свойство как, например, &amp;quot;текстID&amp;quot; в &amp;quot;hiddenObject&amp;quot;, по умолчанию при коллективном выделении не отображается. Его, конечно, можно добавить с помощью Сережи Шейко, но было бы удобнее добавлять и удалять нужные свойства более рациональным способом, появилось бы больше места для маневра.--[[Участник:Podkor|Podkor]] 16:17, 28 октября 2013 (CET)&lt;/div&gt;</summary>
		<author><name>Podkor</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.appsalutecreator.com/index.php?title=Machine&amp;diff=5206</id>
		<title>Machine</title>
		<link rel="alternate" type="text/html" href="https://wiki.appsalutecreator.com/index.php?title=Machine&amp;diff=5206"/>
		<updated>2013-10-11T12:10:52Z</updated>

		<summary type="html">&lt;p&gt;Podkor: /* download */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC right}}&lt;br /&gt;
'''Машина состояний''' (state machine) позволяет описывать сложное поведение игровых объектов. Для машин с типовым набором состояний и поведений вводятся отдельные типы объектов. Например, кнопка, по своей сути, является машиной состояний.&lt;br /&gt;
&lt;br /&gt;
== Введение ==&lt;br /&gt;
&lt;br /&gt;
Логика поведения машины разбивается на отдельные узлы (состояния). Машина всегда находится строго в одном состоянии. Переход из одного состояния в другое происходит либо в результате внешнего воздействия на машину, либо в результате окончания некоторых процессов протекающих внутри неё&lt;br /&gt;
&lt;br /&gt;
Любая машина состояний может быть изображена в виде графа с кружочками и стрелками. У машины всегда активно строго одно состояние (ниже это изображено на левом рисунке темным кружком):&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
[[Файл:def_states.png]]&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
Машина состояний не обладает памятью. Это означает, что для анализа того, что произойдет в данном состоянии, неважно как мы в него попали, и какова была предыстория переходов. Важно, только, что мы находимся в этом состоянии. Такое отсутствие памяти упрощает анализ логики машины, так как каждый раз мы концентрируемся на одном конкретном состоянии, а всю логику работы разбиваем на отдельные кирпичики-состояния.&lt;br /&gt;
&lt;br /&gt;
Выше на правом рисунке изображено некоторое состояние. При входе в него, происходит инициализация состояния. Если на объект оказываются внешние воздействия, то он может покинуть состояние. Наконец, внутри состояния могут работать различные процессы.&lt;br /&gt;
&lt;br /&gt;
Все команды состояния, разбиваются на три группы:&lt;br /&gt;
* '''[[#Инициализация|Инициализация]]''':&lt;br /&gt;
** '''[[#draw|draw]]''' - установка графического ресурса;&lt;br /&gt;
** '''[[#init|init]]''' - инициализация параметров машины (координаты и т.п.);&lt;br /&gt;
** '''[[#set|set]]''' - установка состояния другого объекта;&lt;br /&gt;
** '''[[#play|play]]''' - проиграть звук;&lt;br /&gt;
** '''[[#var|var]]''' - переменная, которой присваивается значение параметра объекта;&lt;br /&gt;
** '''[[#buy|buy]]''' - запуск процедуры in-app покупки;&lt;br /&gt;
** '''[[#download|download]]''' - запуск процедуры закачки контента.&lt;br /&gt;
* '''[[#Процессы|Процессы]]''':&lt;br /&gt;
** '''[[#wait|wait]]''' - задержка по времени;&lt;br /&gt;
** '''[[#move|move]]''' - равномерное движение;&lt;br /&gt;
** '''[[#rot|rot]]''' - вращение вокруг точки пивота;&lt;br /&gt;
** '''[[#alpha|alpha]]''' - изменение прозрачности;&lt;br /&gt;
** '''[[#scale|scale]]''' - изменение размера;&lt;br /&gt;
** '''[[#phys|phys]]''' - ускоренное движение;&lt;br /&gt;
** '''[[#spline|spline]]''' - движение по сплайну (по кривой).&lt;br /&gt;
* '''[[#Воздействия|Воздействия]]''':&lt;br /&gt;
** '''[[#click|click]]''' - что делать при клике на машине;&lt;br /&gt;
** '''[[#drop|drop]]''' - на машине отпущена клавиша мыши;&lt;br /&gt;
** '''[[#drag|drag]]''' - машину схватили и тащат;&lt;br /&gt;
** '''[[#throw|throw]]''' - машину схватили и кинули;&lt;br /&gt;
** '''[[#apply|apply]]''' - сработает при пересечении машины с линией или объектом;&lt;br /&gt;
** '''[[#touch_in|touch_in]]''' - наведение мыши/пальца на машину, если палец &amp;quot;тащат&amp;quot; по экрану;&lt;br /&gt;
** '''[[#touch_out|touch_out]]''' - выведение мыши из машины, если палец &amp;quot;тащат&amp;quot; по экрану;&lt;br /&gt;
** '''[[#touch_up|touch_up]]''' - отжатие мыши от машины;&lt;br /&gt;
** '''[[#mouse_in|mouse_in]]''' - наведение мыши на машину даже если не нажата кнопка мыши;&lt;br /&gt;
** '''[[#mouse_out|mouse_out]]''' - выведение мыши из машины даже если не нажата кнопка мыши.&lt;br /&gt;
&lt;br /&gt;
Кроме этого, есть команда '''[[#if|if]]''', вызываемая другими командами. В ней описываются некоторые логические условия, выполнение которых говорит команде (которая вызвала этот '''if'''), что можно завершать работу. Для разных команд использование этого параметра несколько '''отличается'''!&lt;br /&gt;
&lt;br /&gt;
Начальные понятия и методы работы с машинами состояний находятся в [[Learning|уроках]],&lt;br /&gt;
начиная с [[Checkbox как машина состояний|третьего]].&lt;br /&gt;
&lt;br /&gt;
== Свойства ==&lt;br /&gt;
&lt;br /&gt;
Общие для всех объектов свойства описаны в документе [[Object|Object]].&lt;br /&gt;
Дополнительные свойства:&lt;br /&gt;
&lt;br /&gt;
* '''Состояние''' - Состояние в котором будет находиться машина при инициализации. Если ничего не указано - первое состояние в списке состояний.&lt;br /&gt;
* '''Хранить нажатость''' - нужно ли сбрасывать нажатость при изменении состояния.&lt;br /&gt;
* '''res''' - графический ресурс машины. Может отсутствовать. Перетягивается из редактора ресурсов(поле должно быть в состоянии редактирования).&lt;br /&gt;
* '''states''' - По двойному клику, или по нажатию на кнопку с тремя точками открывается список состояний.&lt;br /&gt;
* '''прокликиваемая''' - 0 - машина не пропускает клик, 1 - машина пропускает клик, 2 - машина обрабатывает клик и пропускает его дальше.&lt;br /&gt;
&lt;br /&gt;
== Инициализация ==&lt;br /&gt;
&lt;br /&gt;
При попадании в состояние, сразу выполняются команды инициализации init, draw, set, buy, var. Если в этих командах нет параметра break, они все выполняются до запуска процессов. Параметр break (со значением 1) прерывает выполнение команд инициализации данного типа. Их можно перезапустить по окончанию команд процессов.&lt;br /&gt;
&lt;br /&gt;
=== draw ===&lt;br /&gt;
&lt;br /&gt;
Команда определяет графический ресурс (картинку, которую надо рисовать в данном состоянии). Её параметры:&lt;br /&gt;
&lt;br /&gt;
* '''res''' - ресурс картинки (перетаскивается из редактора ресурсов);&lt;br /&gt;
* '''f''' - начальный кадр;&lt;br /&gt;
* '''ft''' - длительность кадра в миллисекундах;&lt;br /&gt;
* '''loop''' - число повторов (зацикливаний анимации); если -1, то бесконечно; отсутствует или 0 - будет проигран одина раз;&lt;br /&gt;
* '''rev''' - играть анимацию в обратном порядке; 0 - прямой порядок проигрывания, 1 - обратный порядок проигрывания;&lt;br /&gt;
* '''go''' - перейти в состояние;&lt;br /&gt;
* '''if''' - номер (начиная с нуля) команды [[#if|if]] для условия перехода; можно использовать логические операторы (см. [[#if|if]]);&lt;br /&gt;
* '''break''' - прервать команды.&lt;br /&gt;
&lt;br /&gt;
Пустая команда draw (без параметров) &amp;quot;сбрасывает&amp;quot; текущую картинку и в этом состоянии ничего рисоваться не будет. Если в общих параметрах объекта (в базовой панеле свойств) задан ресурс рисования, и он во всех состояниях одинаков, то его можно в состоянии не задавать.&lt;br /&gt;
&lt;br /&gt;
Если параметра loop нет, кадры анимации проиграются один раз. Чтобы зациклить их, необходимо установить loop=-1 или нужное число раз. Аналогично параметру loop других команд, первый раз draw выполняется в любом случае. Дальнейшие её повторы определяются значением loop. Однако, в отличие от других команд, loop повторяет только '''данную''' команду draw (даже если она не первая).&lt;br /&gt;
Для работы loop '''необходимо''' чтобы в редакторе ресурсов в настройках анимации '''было отключено''' зацикливание(looped).&lt;br /&gt;
&amp;lt;br&amp;gt;Если есть анимация открывающейся и закрывающейся книги (коробки, двери и т.д.) не обязательно подгружать в проект две анимации, можно использовать одну, но запускать ее в обратном порядке, для этого есть параметр '''rev'''.&lt;br /&gt;
&lt;br /&gt;
=== init ===&lt;br /&gt;
&lt;br /&gt;
Инициализация параметров данной машины&lt;br /&gt;
&lt;br /&gt;
* '''x''','''y''' - координата точки пивота относительно сцены или родительского объекта;&lt;br /&gt;
* '''sx''','''sy''' - масштаб машины по осям (если 1, то это исходный размер; 0.5 - в два раза меньше);&lt;br /&gt;
* '''ang''' - угол поворота в градусах; отчитывается вниз от оси x, или вверх, если отрицательный;&lt;br /&gt;
* '''v''' - скорость для команды move&lt;br /&gt;
* '''vr''' - угловая скорость для команды rot&lt;br /&gt;
* '''vx''','''vy''' - начальная скорость для команды phys&lt;br /&gt;
* '''ax''','''ay''' - ускорение для команды phys&lt;br /&gt;
* '''z координата''' - координата машины по z.&lt;br /&gt;
* '''z приращение''' - приращение координаты машины по z относительно текущего&lt;br /&gt;
* '''vis''' - видимость - видимость машины (1 - видима, 0 - невидима)&lt;br /&gt;
* '''показать рейтинг''' - значение 1 означает, что при выполнении этого инита будет показано окно iOS рейтинга&lt;br /&gt;
* '''закрыть приложение''' - значение 1 означает, что при выполнении этого инита приложение будет закрыто&lt;br /&gt;
* '''перезагрузить лэйаут''' - значение 1 означает, что при выполнении этого инита будет перезагружен лэйаут&lt;br /&gt;
* '''вернуться назад''' - начение 1 означает, что при выполнении этого инита произойдет возврат на предыдущий экран&lt;br /&gt;
* '''реклама AdMob''' - 1 - показать, 0 - спрятать, -1 - не изменять состояние&lt;br /&gt;
* '''прокликиваемая''' - если 1, то картинка прозрачна для клика мышкой (пропускает объектам под ней). Если 2, то клик обрабатывается, но передается дальше&lt;br /&gt;
* '''курсор''' - меняет текущий курсор мыши на указанный графический ресурс. Перетягивается из редактора ресурсов, поле должно быть в состоянии редактирования.&lt;br /&gt;
* '''if''' - номер (начиная с нуля) команды [[#if|if]] для условия выполнения; можно использовать логические операторы (см. [[#if|if]]);&lt;br /&gt;
* '''break''' - прервать команды.&lt;br /&gt;
&lt;br /&gt;
Так же, как и при инициализации картинки ('''draw'''), вызов команды ('''init''') переопределяет только те параметры, которые в ней указаны. Остальные параметры (заданные в других состояниях или в общих свойствах объекта) остаются без изменений&lt;br /&gt;
&lt;br /&gt;
=== set ===&lt;br /&gt;
&lt;br /&gt;
Перевод другого объекта в некоторое состояние или изменение его параметров.&lt;br /&gt;
&lt;br /&gt;
* '''obj''' - изменяемый объект (выбирается из списка объектов);&lt;br /&gt;
* '''st''' - состояние в которое переводится объект.&lt;br /&gt;
* '''scr_param''' - глобальный либо текущий экран, параметры которого меняем&lt;br /&gt;
* '''scr_state''' - экран, состояние которого меняем&lt;br /&gt;
* '''parent''' - Объект, который будет установлен в качестве родителя объекту из obj. Объект obj будет оторван от текущего своего родителя и добавлен в детей объекта parent&lt;br /&gt;
* '''par''' - параметр объекта для установки, используется вместе с val, val_obj, val_txt, val_scr.&lt;br /&gt;
* '''val''' - значение параметра объекта для установки&lt;br /&gt;
* '''round''' - округлить значение, записываемое в val&lt;br /&gt;
* '''val_obj''' - id объекта, будет записано в в par&lt;br /&gt;
* '''val_txt''' - id текста, будет записано в в par&lt;br /&gt;
* '''val_scr''' - id экрана, будет записано в в par&lt;br /&gt;
* '''val_res''' - Новое значение графического ресурса (перетаскивается из редактора ресурсов). (пока не работает)&lt;br /&gt;
* '''var''' - имя переменной данной машины, значение которой присваивается в параметр par  объекта obj&lt;br /&gt;
* '''scr''' - экран на который мы хотим перейти&lt;br /&gt;
* '''user''' - 1 - сохранять значения для текущего пользователя. Для всех типов объектов кроме options этот флаг игнорируется&lt;br /&gt;
* '''if''' - номер (начиная с нуля) команды [[#if|if]] при выполнении которого происходит отработка команды set. &lt;br /&gt;
* '''break''' - прервать выполнение команд set на этой команде (запустить их снова можно из команд процессов).&lt;br /&gt;
&lt;br /&gt;
Так как все объекты (не только машины) имеют состояния, то при помощи команды set можно их менять. Стоит обратить внимание на то, что когда в параметрах (любых команд) встречается st, речь идет о состоянии другого объекта, а если go, то данной машины состояний.&lt;br /&gt;
&lt;br /&gt;
=== play ===&lt;br /&gt;
&lt;br /&gt;
Проиграть звук.&lt;br /&gt;
&lt;br /&gt;
*'''snd''' - короткий звук (перетаскивается из редактора ресурсов);&lt;br /&gt;
*'''voice''' - голос (запускается как звук, но без цикла и с громкостью голоса) (перетаскивается из редактора ресурсов);&lt;br /&gt;
*'''mus''' - длинный звук (перетаскивается из редактора ресурсов);&lt;br /&gt;
*'''preload''' - указанный звук будет загружен в память, но не будет проигрываться прямо сейчас. Для ускорения его старта потом;&lt;br /&gt;
*'''loop''' - зациклить звук (звуки);&lt;br /&gt;
*'''mus_stop''' - остановить текущую музыку (''mus_stop=1'');&lt;br /&gt;
*'''volume''' - установить громкость для всех звуком данной машины - тех что уже играют и тех, что будут запущены впоследствии;&lt;br /&gt;
*'''if''' - номер (начиная с нуля) условия перехода [[#if|if]].&lt;br /&gt;
&lt;br /&gt;
Особенности примененияния:&lt;br /&gt;
&lt;br /&gt;
*Короткий звук (''snd'') нельзя запустить в первом (инитном) состоянии машины. Для того, чтобы запустить звук сразу при загрузке экрана, нужно в первом состоянии машины записать мгновенный переход во второе состояние мамашины (например, команда ''wait'', поле ''go'', в поле выбрать второе состояние), а во втором состоянии уже запустить звук. Если звук нужно зациклить и проигрывать какое-то количество раз (''loop=1,2,3,..,n'') или бесконечно (''loop=-1''), то нужно проследить чтобы состояние, в котором запускается звук, не вызывалось повторно во время проигрывания звука, иначе возникнет наложение звуков. Если во время проигрывания звука машина меняет свое состояние, звук продолжает играть. Если в одной машине почти одновременно воспроизводится несколько звуков, то они прерывают друг друга. Если каждый звук воспроизводится в отдельной машине, то они звучат параллельно.&lt;br /&gt;
*Длинный звук (''mus'')- музыка. На экране не может воспроизводится несколько длинных звуков одновременно. Любой запуск длинного звука независимо от того, в какой машине он осуществляется, будет прекращать проигрывание предыдущего звука. Музыка, которая проигрывается на глобальном экране, проигрывается на всех экранах проекта.&lt;br /&gt;
&lt;br /&gt;
=== var ===&lt;br /&gt;
&lt;br /&gt;
Переменная, которой присваивается значение параметра объекта&lt;br /&gt;
&lt;br /&gt;
*'''name''' - имя переменной;&lt;br /&gt;
*'''obj''' - объект, используемый далее;&lt;br /&gt;
*'''par''' - имя параметра, значение которого присваивается переменной;&lt;br /&gt;
*'''val''' - значение переменной, если отсутствуют obj и par;&lt;br /&gt;
*'''user''' - если стоит &amp;quot;1&amp;quot;, то будет считываться с текущего профиля в опциях&lt;br /&gt;
*'''func''' - в выпадающем списке можно выбрать функцию (Например, random - возвращает целое случайное число из диапазона. Диапазон случайных чисел в этом случае задается аргументами функции).&lt;br /&gt;
*'''arg1''' - аргумент функции&lt;br /&gt;
*'''arg2''' - аргумент функции&lt;br /&gt;
&lt;br /&gt;
Обозначенная переменная существует (может использоваться) только в текущем состоянии. Переменная может определятся в одном состоянии только один раз. Если созданной переменной нужно изменить значение в рамках состояния, это можно сделать через другую переменную или через параметр опций ([[Options]]). Если ее значение нужно использовать в другом состоянии, то оно присваивается параметру опций, а затем заново считывается в новом состоянии. Переменные можно указывать в поле ''val'' с другими математическими действиями и цифрами, при этом каждое действие заключать в скобки. Если в поле ''val'' указать имя переменной ''А'' без скобок - воспримется строка ''А'', если указать в скобках - воспримется значение переменной.&lt;br /&gt;
&lt;br /&gt;
=== buy ===&lt;br /&gt;
&lt;br /&gt;
При переходе в состояние, данная команда открывает системное окно с предложением совершить in-app покупку. В зависимости от действий игрока, покупка может произойти (успех) или не произойти (провал).&lt;br /&gt;
&lt;br /&gt;
* '''id покупки''' - внутренний id покупки для приложения, указывается в объекте [[Store]];&lt;br /&gt;
* '''объект(успех)''' - объект, которому сообщается об удачной покупке;&lt;br /&gt;
* '''состояние(успех)''' - состояние в которое переводится выбранный объект в случае успешной покупки;&lt;br /&gt;
* '''объект(провал)''' - объект, которому сообщается о неудачной покупке;&lt;br /&gt;
* '''состояние(провал)''' - состояние в которое переводится объект в случае неудачной покупки.&lt;br /&gt;
&lt;br /&gt;
=== download ===&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
При переходе в состояние будет совершена попытку закачать контент.&lt;br /&gt;
* '''url''' - ссылка на zip архив с контентом в интернете.&lt;br /&gt;
* '''объект успех''' - объект, которому в случае успешной закачки будет задаваться указанное состояние.&lt;br /&gt;
* '''состояние (успех)''' - состояние, которое будет устанавливаться выше указанному объекту, в случае успешной закачки.&lt;br /&gt;
* '''объект (провал)''' -объект, которому, в случае неудачи закачки, будет устанавливаться указанное состояние.&lt;br /&gt;
* '''состояние (провал)''' - состояние, которое, в случае неудачи закачки,будет устанавливаться выше указанному объекту.&lt;br /&gt;
* '''счетчик прогресса''' - объект, типа счетчик, который отображает прогресс закачки контента. Крайне желательно, что бы он измерялся в диапазоне от 0 до 100.&lt;br /&gt;
 &lt;br /&gt;
Существует несколько причин при которых вызывается состояние &amp;quot;провал&amp;quot;. Для того что бы сообщить пользователю, по какой именно причине возник провал закачки, следует идентифицировать причины провала. Это возможно сделать с помощью параметра &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
downloadErrCode&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Ниже приведены значение параметра которые помогут вывести нужное текстовое сообщение :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GCUSTOM_ERROR_CODE_ERROR_UNKNOWN   = 1,    //!&amp;lt; ошибка неклассифицирована&lt;br /&gt;
    GCUSTOM_ERROR_CODE_WIFI_DISABLED   = 2,    //!&amp;lt; отключен WIFI&lt;br /&gt;
    GCUSTOM_ERROR_CODE_SDCARD_UNAVAILABLE = 3,    //!&amp;lt; SD-карта недоступна&lt;br /&gt;
    GCUSTOM_ERROR_CODE_SDCARD_FULL   = 4,    //!&amp;lt; SD-карта переполнена перед закачкой&lt;br /&gt;
    GCUSTOM_ERROR_CODE_UNZIP_FAIL   = 5     //!&amp;lt; ошибка при распаковки пака (скорее всего на SD-карте не хватает места для распаковки &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Процессы ==&lt;br /&gt;
&lt;br /&gt;
Все команды процессов, кроме параметров описанных ниже, могут содержать параметры, совпадающие с именами других команд. В этих параметрах указывается номер (начиная с нуля) команды, которую надо запустить на выполнение, после окончания действия данной команды процесса.&lt;br /&gt;
&lt;br /&gt;
Если в команде процесса есть условие '''[[#if|if]]''', то после окончания работы команды она ждет пока это условие не выполнится. Только после этого переходит к следующей команде этого же типа&lt;br /&gt;
или в другое состояние (если есть параметр go).&lt;br /&gt;
Исключением является команда wait, которая '''не''' ждёт срабатывания '''[[#if|if]]'''. Если он по окончанию wait сработал, то происходит переходит в другое состояние, если есть параметр go.&lt;br /&gt;
Если параметра go нет, то в любом случае запускается следующий wait (т.е. if относится только к переходу go).&lt;br /&gt;
&lt;br /&gt;
=== wait ===&lt;br /&gt;
 &lt;br /&gt;
Команда паузы (временной задержки). Если параметра '''t''' нет, то срабатывает сразу.&lt;br /&gt;
Может также использоваться для логических ветвлений, случайных переходов в другие состояния и т.д.&lt;br /&gt;
&lt;br /&gt;
* '''t''' - длительность выполнения команды в ms;&lt;br /&gt;
* '''dt''' - интервал от t-dt до t+dt, внутри которого команда может быть случайно прервана (при t&amp;gt;t+dt прерывается в любом случае);&lt;br /&gt;
* '''p''' - вероятность срабатывания перехода в состояние, указываемое параметром go;&lt;br /&gt;
* '''go''' - состояние, в которое нужно перейти поле окончания времени и срабатывания условия [[#if|if]], если оно указано;&lt;br /&gt;
* '''if''' - номер (начиная с нуля) команды [[#if|if]], при выполнении которой происходит переход go;&lt;br /&gt;
* '''loop''' - зациклить команды;&lt;br /&gt;
* '''break''' - прервать выполнение команд wait на этой команде (запустить их снова можно из команд процессов).&lt;br /&gt;
&lt;br /&gt;
Простейший набор параметров команды wait выглядит следующим образом:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;wait t=&amp;quot;1000&amp;quot; go=&amp;quot;next&amp;quot;/&amp;gt;    // ждем 1000ms и покидаем состояние&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Для программирования объектов со случайным поведением можно использовать последовательность команд wait с параметром вероятности перехода p (от 0 до 1):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;wait t=&amp;quot;100&amp;quot; p=&amp;quot;0.5&amp;quot; go=&amp;quot;st1&amp;quot;/&amp;gt; // через t с вероятностью 1/2 перейдет в st1&lt;br /&gt;
&amp;lt;wait go=&amp;quot;st2&amp;quot;/&amp;gt; // иначе,  перейдем в st2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Этот же синтаксис позволяет делать состояния с различным временем жизни:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;wait t=&amp;quot;100&amp;quot; p=&amp;quot;0.5&amp;quot; go=&amp;quot;next&amp;quot;/&amp;gt; // с вероятностью 1/2 живем 100ms&lt;br /&gt;
&amp;lt;wait t=&amp;quot;100&amp;quot; go=&amp;quot;next&amp;quot;/&amp;gt;       // или 200ms&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Впрочем, последнюю задачу можно решить при помощи указывания интервала dt, внутри которого произойдет окончание команды. Так, состояние, живущее от 800 до 1200ms, реализуется следующим образом:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;wait t=&amp;quot;1000&amp;quot; dt=&amp;quot;200&amp;quot; go=&amp;quot;next&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== move ===&lt;br /&gt;
&lt;br /&gt;
Перемещение по сцене:&lt;br /&gt;
* '''tx''', '''ty''' - целевые координаты в пикселях, к которым должен переместиться объект;&lt;br /&gt;
* '''dx''', '''dy''' - величина смещения от текущей (если есть - tx,ty игнорируются); можно задавать смесь tx, dy или dx,ty;&lt;br /&gt;
* '''v''' - скороcть перемещения в пикселях в секунду; для фреймовой анимации, например, ходьбы скорость рассчитывается исходя из длительности одного кадра и числа кадров на фазу движения. Поэтому, в этом случае, удобнее задавать скорость;&lt;br /&gt;
* '''t''' - время перемещения (v игнорируется);&lt;br /&gt;
* '''go''' - новое состояние - Состояние в которое нужно перейти после окончания времени;&lt;br /&gt;
* '''if''' - номер (начиная с нуля) команды [[#if|if]], при выполнении которой происходит переход go; команда ждет срабатывания условия, и не запускает следующую команду move, пока if не выполнится; &lt;br /&gt;
* '''loop'''  - зациклить команды - Начать выполнение команд движения с первой команды;&lt;br /&gt;
* '''break''' - прервать команды - Прервать выполнение команд move на этой команде (запустить их снова можно из команд процессов).&lt;br /&gt;
&lt;br /&gt;
В большинстве команд процессов, связанных с движением, величина изменения может быть задана в абсолютных или относительных величинах. Так, могут быть указаны целевые координаты tx, ty в которые надо переместиться, или смещение dx, dy относительно текущего положения объекта.&lt;br /&gt;
&lt;br /&gt;
Аналогично, скорость перемещения регулируется, либо явным заданием времени выполнения команды t, либо скоростью v. Исходя из требуемого расстояния, по этой скорости вычисляется необходимое время. Скорость задается в пикселях за cекунду (а не миллисекунду!)&lt;br /&gt;
&lt;br /&gt;
=== rot ===&lt;br /&gt;
&lt;br /&gt;
Вращение объекта вокруг точки пивота с координатами px,py. Эти координаты задаются относительно верхнего левого угла объекта в общей секции описания параметров объекта или командой init в данном состоянии.&lt;br /&gt;
* '''ta''' - целевой угол поворота объекта;&lt;br /&gt;
* '''da''' - на сколько надо повернуться (ta игнорируется);&lt;br /&gt;
* '''v''' - угловая скорость поворота в градусах в секунду;&lt;br /&gt;
* '''t''' - время поворота (v игнорируется);&lt;br /&gt;
* '''go''' - новое состояние - Состояние в которое нужно перейти после окончания времени.&lt;br /&gt;
* '''if''' - номер (начиная с нуля) команды [[#if|if]], при выполнении которой происходит переход go;  команда ждет срабатывания условия, и не запускает следующую команду rot, пока if не выполнится; &lt;br /&gt;
* '''loop'''  - зациклить команды - Начать выполнение команд движения с первой команды;&lt;br /&gt;
* '''break''' - прервать команды - Прервать выполнение команд rot на этой команде (запустить их снова можно из команд процессов).&lt;br /&gt;
&lt;br /&gt;
Угол отсчитывается от оси x. Если он положителен, то поворот происходит по часовой стрелке. Если отрицательный - против часовой.&lt;br /&gt;
&lt;br /&gt;
=== alpha ===&lt;br /&gt;
&lt;br /&gt;
Изменение прозрачности объекта. Меняется от 0 (полностью прозрачен) до 1 (непрозрачен)&lt;br /&gt;
* '''ta''' - целевая прозрачность&lt;br /&gt;
* '''da''' - на сколько надо изменить прозрачность от текущей (ta игнорируется)&lt;br /&gt;
* '''v''' - скорость изменения прозрачности (в долях единицы в ms)&lt;br /&gt;
* '''t''' - время изменения (v игнорируется)&lt;br /&gt;
* '''go''' - новое состояние - Состояние в которое нужно перейти после окончания времени.&lt;br /&gt;
* '''if''' - номер (начиная с нуля) команды [[#if|if]], при выполнении которой происходит переход go;  команда ждет срабатывания условия, и не запускает следующую команду alpha, пока if не выполнится; &lt;br /&gt;
* '''loop'''  - зациклить команды - Начать выполнение команд alpha с первой команды.&lt;br /&gt;
* '''break''' - прервать команды - Прервать выполнение команд alpha на этой команде (запустить их снова можно из команд процессов).&lt;br /&gt;
&lt;br /&gt;
Если у объекта прозрачность ''al=0.00'', то он невидим для всякого взаимодействия. Если у объекта прозрачность ''al=0.01'', то он видим для клика, но невидим для дропа(команда drop на объект не видит объект с прозрачностью ''0.01''). Если у объекта ''al=0.02'', то он видим и для клика, и для дропа.&lt;br /&gt;
&lt;br /&gt;
=== scale ===&lt;br /&gt;
&lt;br /&gt;
Изменение размеров объекта&lt;br /&gt;
* '''tx''', '''ty''' - целевой масштаб по каждой оси&lt;br /&gt;
* '''dx''', '''dy''' - на сколько изменить масштаб по каждой оси&lt;br /&gt;
* '''v''' - скорость изменения масштаба (в долях единицы в сек.)&lt;br /&gt;
* '''t''' - длительность выполнения команды (v игнорируется)&lt;br /&gt;
* '''go''' - новое состояние - Состояние в которое нужно перейти после окончания времени.&lt;br /&gt;
* '''if''' - номер (начиная с нуля) команды [[#if|if]], при выполнении которой происходит переход go;  команда ждет срабатывания условия, и не запускает следующую команду scale, пока if не выполнится; &lt;br /&gt;
* '''loop'''  - зациклить команды - Начать выполнение команд scale с первой команды.&lt;br /&gt;
* '''break''' - прервать команды - Прервать выполнение команд scale на этой команде (запустить их сново можно из команд процессов).&lt;br /&gt;
&lt;br /&gt;
=== phys ===&lt;br /&gt;
&lt;br /&gt;
Команда phys позволяет имитировать простую физику. В ней задается начальная скорость и действующая на объект сила (ускорение).&lt;br /&gt;
&lt;br /&gt;
* '''vx''', '''vy''' - начальная скорость&lt;br /&gt;
* '''ax''', '''ay''' - величина ускорения по каждой оси&lt;br /&gt;
* '''tvx''', '''tvy''' - целевая скорость&lt;br /&gt;
* '''tx''', '''ty''' - целевая координата&lt;br /&gt;
* '''go''' - новое состояние - Состояние в которое нужно перейти после окончания времени.&lt;br /&gt;
* '''if''' - номер (начиная с нуля) команды [[#if|if]], при выполнении которой происходит переход go;  команда ждет срабатывания условия, и не запускает следующую команду phys, пока if не выполнится; &lt;br /&gt;
* '''loop''' - зациклить команды - Начать выполнение команд phys с первой команды.&lt;br /&gt;
* '''break''' - прервать команды - Прервать выполнение команд phys на этой команде (запустить их снова можно из команд процессов). &lt;br /&gt;
&lt;br /&gt;
Рассмотрим подпрыгивающий мячик, который при касании с землей деформируется (вертикально сплюскивается). Это можно сделать в 3 состояния (падаем, касаемся и взлетаем). Первоначально мячик находится в координте y=-100, и имеет высоту картинки w=60. Падает он до координаты ty=0. При касании с землёй, мяч сжимается на 20 процентов (sy=0.8). При этом его центр должен опуститься на dy=0.8*w/2 = 24.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;st id=&amp;quot;down&amp;quot;&amp;gt;                                    // падаем&lt;br /&gt;
    &amp;lt;phys vy=&amp;quot;0&amp;quot; ay=&amp;quot;20&amp;quot; ty=&amp;quot;0&amp;quot; go=&amp;quot;touch&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/st&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;st id=&amp;quot;touch&amp;quot;&amp;gt;                                   // касаемся земли&lt;br /&gt;
    &amp;lt;move dy=&amp;quot;24&amp;quot; t=&amp;quot;300&amp;quot;/&amp;gt;                       // опускаем центр при сжатии&lt;br /&gt;
    &amp;lt;scale ty=&amp;quot;0.8&amp;quot; t=&amp;quot;300&amp;quot;/&amp;gt;                     // сжимаемся&lt;br /&gt;
    &amp;lt;move dy=&amp;quot;-24&amp;quot; t=&amp;quot;300&amp;quot;/&amp;gt;                      // поднимаем центр при разжатии&lt;br /&gt;
    &amp;lt;scale ty=&amp;quot;1&amp;quot; t=&amp;quot;300&amp;quot; go=&amp;quot;up&amp;quot;/&amp;gt;               // разжимаемся&lt;br /&gt;
&amp;lt;/st&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;st id=&amp;quot;up&amp;quot;&amp;gt;                                      // взлетаем&lt;br /&gt;
    &amp;lt;phys vy=&amp;quot;0&amp;quot; ty=&amp;quot;-200&amp;quot; go=&amp;quot;down&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/st&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Напомним, что если объект имеет начальную скорость взлета, равную v=sqrt(2*ay*h), то он подпрыгнет на высоту h. Однако, в данном случае, вместо задания начальной скорости при взлете, мы задаем целевую координату (ty), до которой мяч должен подпрыгнуть.&lt;br /&gt;
&lt;br /&gt;
=== spline ===&lt;br /&gt;
&lt;br /&gt;
Сплайн позволяет перемещать машину по заранее заданной траектории.&lt;br /&gt;
&lt;br /&gt;
====Параметры====&lt;br /&gt;
&lt;br /&gt;
*'''key''' - точки сплайна по которым движется &lt;br /&gt;
*'''t''' - время движения по траектории&lt;br /&gt;
*'''go''' - по окончанию переход в состояние&lt;br /&gt;
*'''if''' - условие перехода&lt;br /&gt;
*'''loop''' - количество повторений&lt;br /&gt;
*'''break''' - прервать команды на этой&lt;br /&gt;
*'''wait''' - номер запускаемого действия&lt;br /&gt;
*'''init''' - номер запускаемого действия&lt;br /&gt;
*'''alpha''' - номер запускаемого действия&lt;br /&gt;
*'''rot''' - номер запускаемого действия&lt;br /&gt;
*'''move''' - номер запускаемого действия&lt;br /&gt;
*'''set''' - номер запускаемого действия&lt;br /&gt;
*'''phys''' - номер запускаемого действия&lt;br /&gt;
&lt;br /&gt;
====Построение сплайна====&lt;br /&gt;
&lt;br /&gt;
# в состоянии машины добавляем правой кнопкой мыши действие &amp;quot;spline&amp;quot;&lt;br /&gt;
# добавляем минимально необходимые параметры: '''key''' и '''t''', указываем время движения в '''t'''&lt;br /&gt;
# выделяем для редактирования поле '''key'''&lt;br /&gt;
# записываем координаты точек через запятую, сначала x потом y, например: -211,-248,-151,-248,-91,-247,59,-246,60,101,60,159,1,190&lt;br /&gt;
Если записали все координаты вручную, то можно сохранить и проверять.&lt;br /&gt;
Или можно в окне списка состояний нажимаем на кнопку &amp;quot;build spline&amp;quot; (справа вверху).&lt;br /&gt;
[[Файл:Btn spline.jpg|500px]]&lt;br /&gt;
&lt;br /&gt;
Окно с списком состояний закроется, появится дополнительная панель с настройками сплайна и появится возможность указывать мышкой по экрану точки для сплайна.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Spline panel.jpg|500px]]&lt;br /&gt;
&lt;br /&gt;
Точки сплайна указываются кликом левой кнопки мыши по экрану.&lt;br /&gt;
&lt;br /&gt;
Возможности редактирования:&lt;br /&gt;
&lt;br /&gt;
'''режимы:'''&lt;br /&gt;
*'''add''' - по нажатию левой кнопкой мыши по экрану - будет добавлена новая точка, которая соеденится с предидущей&lt;br /&gt;
*'''select''' - по нажатию левой кнопкой мыши по точке сплайна появится возможность отредактировать её положение перетащив её или поменяв её координаты в полях x и у&lt;br /&gt;
*'''delete''' - по нажатию левой кнопкой мыши по точке сплайна точка удалится&lt;br /&gt;
&lt;br /&gt;
Чтобы удалить все точки сплайна необходимо нажать на кнопку &amp;quot;'''delete all knots'''&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Сохранить сплайн можно нажав на кнопку &amp;quot;'''Save spline'''&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Дополнительные сведения====&lt;br /&gt;
&lt;br /&gt;
* Время движения между двумя соседними точками всегда одинаково, то есть чем дальше друг от друга соседние точки, тем быстрее будет двигаться объект, чем ближе - тем медленней.&lt;br /&gt;
&lt;br /&gt;
== Воздействия ==&lt;br /&gt;
&lt;br /&gt;
=== click ===&lt;br /&gt;
&lt;br /&gt;
Команда вызывается, если на объект кликнули мышкой. Срабатывает на её нажатие.&lt;br /&gt;
* '''go''' - состояние в которое при выполнении команды надо перейти (если if нет, то в любом случае);&lt;br /&gt;
* '''if''' - номер  (начиная с нуля) команды условия [[#if|if]], при срабатывании которого, происходит переход go.&lt;br /&gt;
&lt;br /&gt;
=== touch_in ===&lt;br /&gt;
&lt;br /&gt;
Наведение мыши/пальца на машину, если палец &amp;quot;тащат&amp;quot; по экрану.&lt;br /&gt;
* '''go''' - состояние в которое при выполнении команды нужно перейти (если if нет, то в любом случае);&lt;br /&gt;
* '''if''' - номер (начиная с нуля) команды условия [[#if|if]], при срабатывании которого, происходит переход ''go''.&lt;br /&gt;
&lt;br /&gt;
=== touch_out ===&lt;br /&gt;
Выведение мыши/пальца из машины, если палец &amp;quot;тащат&amp;quot; по экрану.&lt;br /&gt;
* '''go''' - состояние в которое при клике нужно перейти;&lt;br /&gt;
* '''if''' - номер (начиная с нуля) команды условия [[#if|if]], при котором срабатывает переход ''go''.&lt;br /&gt;
&lt;br /&gt;
=== touch_up ===&lt;br /&gt;
&lt;br /&gt;
Отжатие мыши от машины&lt;br /&gt;
&lt;br /&gt;
* '''go''' - состояние в которое при отжатии мыши нужно перейти;&lt;br /&gt;
* '''if''' - номер (начиная с нуля) команды условия [[#if|if]], при котором срабатывает переход ''go''.&lt;br /&gt;
&lt;br /&gt;
=== mouse_in ===&lt;br /&gt;
&lt;br /&gt;
Срабатывает при наведение мыши/пальца на машину даже если не нажата кнопка мыши, работает на desktop-ных системах (OSX, Windows)&lt;br /&gt;
* '''go''' - состояние в которое при выполнении команды нужно перейти (если if нет, то в любом случае);&lt;br /&gt;
* '''if''' - номер (начиная с нуля) команды условия [[#if|if]], при срабатывании которого, происходит переход ''go''.&lt;br /&gt;
&lt;br /&gt;
=== mouse_out ===&lt;br /&gt;
Срабатывает при выведение мыши/пальца из машины даже если не нажата кнопка мыши, работает на desktop-ных системах (OSX, Windows)&lt;br /&gt;
* '''go''' - состояние в которое при выполнении команды нужно перейти (если if нет, то в любом случае);&lt;br /&gt;
* '''if''' - номер (начиная с нуля) команды условия [[#if|if]], при срабатывании которого, происходит переход ''go''.&lt;br /&gt;
&lt;br /&gt;
=== drag ===&lt;br /&gt;
&lt;br /&gt;
Данная команда позволяет &amp;quot;таскать&amp;quot; объект по сцене нажав и удерживая клавишу мишки или (палец в случае сенсорного устройства) на нем.Так же есть возможность ограничить разрешенную область таскания, за пределы которой  объект вытащить невозможно. [[Файл:drag.jpg|right]]&lt;br /&gt;
* '''x1''' - разрешено таскать, когда координата объекта правее;&lt;br /&gt;
* '''x2''' - разрешено таскать, когда координата объекта левее;&lt;br /&gt;
* '''y1''' - разрешено таскать, когда координата объекта ниже;&lt;br /&gt;
* '''y2''' - разрешено таскать, когда координата объекта выше;&lt;br /&gt;
* '''if''' - номер команды условия (начиная с нуля) разрешения таскания;&lt;br /&gt;
* '''obj''' - объект у которого надо изменить состояние;&lt;br /&gt;
* '''st'''  - новое состояние объекта obj;&lt;br /&gt;
* '''за пивот''' - &amp;quot;да&amp;quot; - таскать объект за пивот, &amp;quot;нет&amp;quot; - за ту точку, за которую схватили&lt;br /&gt;
&lt;br /&gt;
=== dragRot ===&lt;br /&gt;
&lt;br /&gt;
Данная команда позволяет вращать объект вокруг точки пивота.  Нажав и удерживая клавишу мишки или палец (в случае сенсорного устройства) на нем, мы можем вращать его по часовой либо против часовой стрелки. При многократном вращении вокруг своей оси значение его угла не накапливается, а обнуляется выходя за границы [360 ; -360] градусов. [[Файл:dragRot.jpg|right]]&lt;br /&gt;
* '''if''' - номер команды условия (начиная с нуля) разрешения таскания;&lt;br /&gt;
* '''obj''' - объект у которого надо изменить состояние;&lt;br /&gt;
* '''st'''  - новое состояние объекта obj;&lt;br /&gt;
&lt;br /&gt;
=== drop ===&lt;br /&gt;
&lt;br /&gt;
Если нажатая кнопка мышки отпускается, вызвается эта команда. Обычно она используется в связке с командой drag&lt;br /&gt;
* '''obj''' - объект, на который надо уронить таскаемый объект;&lt;br /&gt;
* '''go''' - состояние в которое переходим при отпускании мышки;&lt;br /&gt;
* '''if''' - номер (начиная с нуля) условия [[#if|if]] разрешения бросания.&lt;br /&gt;
&lt;br /&gt;
Рассмотрим совместное применение команд drag и drop на следующей задаче. Пусть есть ключ и ящик. Ключ можно взять мышкой и перетащить, бросив на ящик. Ящик при этом должен постепенно стать прозрачным, а ключ уменьшиться до нуля. Машина состояний для ключа выглядит следующим образом:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;st id=&amp;quot;drag&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;drag x1=&amp;quot;-350&amp;quot; x2=&amp;quot;350&amp;quot; y1=&amp;quot;-250&amp;quot; y2=&amp;quot;250&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;drop obj=&amp;quot;box&amp;quot; go=&amp;quot;open&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/st&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;st id=&amp;quot;open&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;set obj=&amp;quot;box&amp;quot; st=&amp;quot;open&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;scale tx=&amp;quot;0.01&amp;quot; ty=&amp;quot;0.01&amp;quot; t=&amp;quot;500&amp;quot; go=&amp;quot;hide&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/st&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;st id=&amp;quot;hide&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;init x=&amp;quot;268&amp;quot; y=&amp;quot;30&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;scale tx=&amp;quot;1&amp;quot; ty=&amp;quot;1&amp;quot; t=&amp;quot;500&amp;quot; go=&amp;quot;drag&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/st&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Ящик:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;st id=&amp;quot;close&amp;quot;&amp;gt;                        // начальное состояние ящика&lt;br /&gt;
    &amp;lt;init al=&amp;quot;1&amp;quot;/&amp;gt;                     // если его кто-то сюда переведет - он появится.&lt;br /&gt;
&amp;lt;/st&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;st id=&amp;quot;open&amp;quot;&amp;gt;              &lt;br /&gt;
    &amp;lt;alpha ta=&amp;quot;0&amp;quot; t=&amp;quot;500&amp;quot;/&amp;gt;            // исчезает по прозрачности за 500 ms&lt;br /&gt;
&amp;lt;/st&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== throw ===&lt;br /&gt;
 &lt;br /&gt;
Если на объект наступили мышкой, не отпуская кнопки, мышку оттащили и затем отпустили, вызывается команда throw со следующими параметрами:&lt;br /&gt;
* '''go''' - состояние, в которое, при клике, надо перейти;&lt;br /&gt;
* '''if''' - номер (начиная с нуля) команды [[#if|if]] разрешения бросания;&lt;br /&gt;
* '''force''' - получаемая скорость равна разнице пискелей от начала бросания (мышь нажата) до его конца (мышь отжата), умноженная на этот параметр. По умолчанию он равен 1.&lt;br /&gt;
&lt;br /&gt;
Сработав, эта команда задает начальные значения скорости для команды phys, поэтому должна использоваться совместно с ней (см. ниже пример).&lt;br /&gt;
&lt;br /&gt;
=== apply ===&lt;br /&gt;
&lt;br /&gt;
Вызывается, если данная машина пересеклась с другой. Обычно используется в совокупности с throw, move, phys, drag.&lt;br /&gt;
* '''obj''' - сработает , если пересеклись с этим объектом;&lt;br /&gt;
* '''x1''' - сработает, если центр объекта левее этого x-ка;&lt;br /&gt;
* '''x2''' - сработает, если центр объекта правее этого x-ка;&lt;br /&gt;
* '''y1''' - сработает, если центр объекта выше этого y-ка;&lt;br /&gt;
* '''y2''' - сработает, если центр объекта ниже этого y-ка;&lt;br /&gt;
* '''rm''' - радиус этой машины (если rm=0, то она считается прямоугольной)&lt;br /&gt;
* '''ro''' - радиус объекта obj (если ro=0, то он считается прямоугольным)&lt;br /&gt;
* '''st''' - состояние, в которое надо перевести объект obj&lt;br /&gt;
* '''go''' - состояние, в которое надо перейти при срабатывании;&lt;br /&gt;
* '''if''' - номер (начиная с нуля) команды условия [[#if|if]] разрешения применения команды apply.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Пусть, например, есть снаряд, который при помощи мышки надо кинуть в &amp;quot;тыкву&amp;quot;. Если мы промахнулись, снаряд должен вернуться обратно, а с тыквой ничего не произойти. Если мы в тыкву попадаем, снаряд также возвращается, а тыква &amp;quot;взрывается&amp;quot;:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;st id=&amp;quot;trow&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;init x=&amp;quot;-350&amp;quot; y=&amp;quot;150&amp;quot;/&amp;gt;                      // начальное положение&lt;br /&gt;
    &amp;lt;throw go=&amp;quot;fly&amp;quot;/&amp;gt;                             // бросаем&lt;br /&gt;
&amp;lt;/st&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;st id=&amp;quot;fly&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;phys ay=&amp;quot;100&amp;quot;/&amp;gt;                              // летим&lt;br /&gt;
    &amp;lt;apply y2=&amp;quot;300&amp;quot; go=&amp;quot;throw&amp;quot;/&amp;gt;                  // с землей&lt;br /&gt;
    &amp;lt;apply obj=&amp;quot;тыква&amp;quot; rm=&amp;quot;8&amp;quot; ro=&amp;quot;10&amp;quot; st=&amp;quot;bang&amp;quot;/&amp;gt; // с тыквой&lt;br /&gt;
&amp;lt;/st&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Условия ==&lt;br /&gt;
&lt;br /&gt;
=== if ===&lt;br /&gt;
&lt;br /&gt;
В состоянии может быть произвольное число команд if. Их номера (начиная с нуля) указываются&lt;br /&gt;
в параметре if других команд. Эти номера можно соединять при помощи логических связок:&lt;br /&gt;
* '''&amp;amp;''' - логическое '''и''' (вместо значка '''&amp;amp;''' можно использовать запятую ''',''');&lt;br /&gt;
* '''|''' - логическое '''или''';&lt;br /&gt;
* '''!''' - логическое '''не'''.&lt;br /&gt;
Пример записи логического выражения в поле if некоторой команды: '''(1&amp;amp;2)|(3&amp;amp;(!4))''',&lt;br /&gt;
что означает: выполняется if под номером 1 и под номером 2, или под номером 3 и не под номером 4.&lt;br /&gt;
&lt;br /&gt;
Логические связки используются также как математической логике или любом языке программирования. &lt;br /&gt;
Так:&lt;br /&gt;
* A '''&amp;amp;''' B - истинно, если истинны оба условия A и B;&lt;br /&gt;
* A '''|''' B - истинно, если истинно хотя бы одно условие (или оба);&lt;br /&gt;
* '''!''' А - истинно, если условие A ложно.&lt;br /&gt;
Скобки в логическом выражении определяют приоритет (порядок) выполнения логических операций.&lt;br /&gt;
Отметим несколько тождеств, справедливых при формировании логических высказываний:&lt;br /&gt;
* !(A &amp;amp; B) = (!A) | (!B)&lt;br /&gt;
* !(A | B) = (!A) &amp;amp; (!B)&lt;br /&gt;
* !(!A) = A&lt;br /&gt;
&lt;br /&gt;
Если при формировании условия (ниже) есть несколько проверок, то они соединены логическим '''и'''.&lt;br /&gt;
Т.е., если хотя бы одна из них не выполняется, то считается, что условие не выполнилось.&lt;br /&gt;
&lt;br /&gt;
Параметры команды:&lt;br /&gt;
* '''obj''' - находится ли объект obj в состоянии st или имеет ли его параметр par значение val;&lt;br /&gt;
* '''st''' - имя состояния в котором может находиться объект obj;&lt;br /&gt;
* '''par''' - имя параметра объекта obj, значение которого сравнивается с полем val;&lt;br /&gt;
* '''val''' - значение параметра par, которое проверяется у объекта obj;&lt;br /&gt;
* '''op''' - операция сравнения par op val. Если опреации нет, то предполагается проверка на равенство par=val. Иначе используются операторы:&lt;br /&gt;
** '''&amp;lt;''' - меньше (par &amp;lt; val);&lt;br /&gt;
** '''&amp;gt;''' - больше (par &amp;gt; val);&lt;br /&gt;
** '''!=''' - не равно (par != val);&lt;br /&gt;
** '''&amp;lt;&amp;gt;''' - не равно (par &amp;lt;&amp;gt; val);&lt;br /&gt;
** '''&amp;gt;=''' - больше или равно (par &amp;gt;= val);&lt;br /&gt;
** '''&amp;lt;=''' - меньше или равно (par &amp;lt;= val);&lt;br /&gt;
* '''curScr''' - если текущий экран совпадает с этим, то условие выполнилось;&lt;br /&gt;
* '''prScr''' - если предыдущий экран совпадает с этим, то условие выполнилось;&lt;br /&gt;
* '''wasScr''' - если был (когда либо) этот экран, то условие выполнилось.&lt;br /&gt;
* '''buy''' - был ли куплен данный inn-app (проверяется флаг поля в объекте [[Options]]);&lt;br /&gt;
* '''url''' - валиден (правилен и может быть запущен) ли данный интернет-адрес;&lt;br /&gt;
* '''is_mus''' - играет ли сейчас музыка (значение 1);&lt;br /&gt;
* '''guest''' - объект который установил состояние (используется вместо параметра obj). Если указанный объект не менял состояние этой машины, то условие не срабатывает.&lt;br /&gt;
&lt;br /&gt;
Если использовать obj, par, val, то будет происходить проверка на равенство значения параметра объекта и значения записаного в поле val.&lt;br /&gt;
Если же использовать obj, par, op, val, то будет происходить проверка в соответствии с операцией сравнения значения параметра объекта и значения записанного в поле val.&lt;br /&gt;
&lt;br /&gt;
Для проверки текущего значения прозрачности у объекта можно воспользоваться параметром ''cur_al''&lt;br /&gt;
&lt;br /&gt;
== Математика ==&lt;br /&gt;
Математика в appsalute creator представлена 4-мя основными операциями: (плюс),  (минус),  (умножить),  (поделить) &amp;lt;br&amp;gt;&lt;br /&gt;
Организована благодаря совместному использованию '''[[#var|var]]''' и '''[[#set|set]]'''. &lt;br /&gt;
=== var ===&lt;br /&gt;
Благодаря использованию '''[[#var|var]]''' существует возможность cчитать любой числовой параметр любого объекта. Например: x - координату какой-то машины, текущее значение любого объекта counter или timer и конечно же считывание значения любого параметра из опций! Каким образом это устроено? Рассмотрим подробнее '''[[#var|var]]''': &amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:VAR.png|right]]&lt;br /&gt;
*'''name''' - здесь выбираем имя для нашей будущей переменной, которой будем оперировать далее&lt;br /&gt;
*'''obj''' - выбирается объект, параметры которого мы хотим считать&lt;br /&gt;
*'''par''' - параметр, который нужно вычитать из объекта, указанного выше&lt;br /&gt;
*'''val''' - указывается числовое значение, которое будет установлено по умолчанию в случае отсутствия obj и par&lt;br /&gt;
*'''user''' - если стоит &amp;quot;1&amp;quot;, то будет считываться с текущего профиля в опциях&lt;br /&gt;
На изображении справа можно наблюдать каким образом организован '''[[#var|var]]'''. В данном случае объявлена переменная x_cor, которая cчитывает x-координату объекта actor_1, при этом cчитывание переменной происходит из текущего профиля, так, как в поле user установлено значение равное &amp;quot;1&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== set ===&lt;br /&gt;
[[Файл:SET.png|right]]&lt;br /&gt;
Использование '''[[#var|var]]''' без '''[[#set|set]]''' не имеет смысла. Так, как переменная создается, но не используется дальше. Рассмотрим следующий пример, где вычитаем x - координату из одного объекта и сохраним ее в опции, предварительно увеличив ее на 50 единиц (в данном случае 50 пикселей).&lt;br /&gt;
На рисунке справа можно наблюдать, каким образом это сделано. В состоянии '''init''' объявляется переменная '''x_cor''', которая cчитывает координату '''x''' из объекта '''actor_1''', таким образом в переменную '''x_cor''' запишется положение по '''x''' объекта '''actor_1'''. Поле '''user''' в данном случае в '''1''' не обязательно устанавливать, так как работа ведется с машинами, а не с опциями. Если бы на месте '''actor_1''' оказался объект '''options''', то это было бы просто необходимо, иначе программа считает значение не из профиля. Далее в '''[[#set|set]]''' выбран объект '''options''',  в параметр '''x_position''' которого будет сохранятся значение переменной '''x_cor''' увеличенной на 50. В поле '''round''' идет округление вычисляемого значения, если оно установлено в 1. Поле '''user ''' установлено в 1, это значит, что параметр '''x_position''' будет сохранен в профиль. После это выполняется сохранение опций путем задания объекту '''options''' состояния '''save'''.&amp;lt;br&amp;gt;&lt;br /&gt;
! ! !ВАЖНО: чтобы выполнить какие-то действия с '''[[#var|var]]''' его обязательно нужно указывать в поле '''val''' в '''set''', при этом, если он используется, то все выражение должно стоять в скобках. Если в поле '''val''' не используется переменная, то скобки необязательны.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Существует также возможность использовать '''[[#var|var]]''' совместно с '''[[#if|if]]''', а также '''[[#var|var]]''' с '''[[#move|move]]'''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== var и if ===&lt;br /&gt;
[[Файл:IF.png|right]]&lt;br /&gt;
При подробном рассмотрении '''[[#if|if]]''' можно заметить, что в нем есть поле '''val''', соответственно в этом поле можно указать переменную. Таким образом в поле '''val''' необязательно указывать константу, а можно указать какую-то переменную, которая может постоянно изменяться. Например, существует два объекта, один находится состоянии покоя, а другой находится в движении. При этом первый объект (тот, который в состоянии покоя) постоянно опрашивает положение второго объекта, и в случае, если у объекта, который движется, '''х''' координата  равна '''х''' координате первого объекта, то первый объект входит в состояние, где он начинает свое движение. На рисунке показан объект, который находится в состоянии покоя, рассмотрим его состояния:&amp;lt;br&amp;gt;&lt;br /&gt;
В данном объекте существует два состояния: '''init''' и '''move'''. В '''init''' объект опрашивает другой объект и в случае, когда условие срабатывает, то переходит в состояние '''move''', где начинает свое движение.&lt;br /&gt;
В '''init''' создаем переменную, в которую записываем положение по '''x''' объекта '''actor_2''', в '''if''' проверяется условие на соответствие координат объектов '''actor_1''' и '''actor_2''', в данном случае координата объекта '''actor_2''' представлена в виде переменной '''x_cor'''. Если условие выполняется, то происходит переход в состояние '''move''', если нет, то заново проходим состояние '''init''' и повторяем вышеописанную последовательность действий.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== var и move ===&lt;br /&gt;
Также с помощью '''[[#var|var]]''' есть возможность указать целевые координаты в '''[[#move|move]]'''. То есть, не обязательно указывать целевые координаты в виде констант, их можно указать теперь с помощью переменных. При использовании '''[[#var|var]]''' и '''[[#move|move]]''' можно организовать обмен двух объектов местами с анимацией движения. Для этого необходимо определять какой объект нажат первым, а какой вторым, сохранять их координаты через объект '''options''' и только потом менять их местами. На рисунке можно увидет, как это организовано.&lt;br /&gt;
[[Файл:var_move.png|1000px|thumb|center|]]&lt;br /&gt;
Рассмотрим подробнее состояние данной машины:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* '''init'''&amp;lt;br&amp;gt;&lt;br /&gt;
В этом состоянии ожидаем клик на объект и обнуляем параметр, который отвечает за то, какой по счету объект сейчас нажат. Так, как при обмене объектов, если мы делаем это по клику, важно знать, по какому кликнули нажали первым, а по какому вторым.&lt;br /&gt;
* '''check'''&amp;lt;br&amp;gt;&lt;br /&gt;
Проверяется параметр '''number''', если он равен '''0''', то это значит, что еще ничего не кликали и мы переходим в состояние, где в опции записываются координаты этого объекта, который считается нажатым первым. Если не равен '''0''', то считается, что этот объект нажат вторым и переходит в состояние, где в опции записываются координаты этого объекта, который считается нажатым вторым по счету.&lt;br /&gt;
* '''first_object'''&amp;lt;br&amp;gt;&lt;br /&gt;
В этом состоянии записываются координаты объекта в опции. Чтобы записать координаты в опции используются '''[[#var|var]]''' и '''[[#set|set]]''' упоминаемые выше. В опции координаты первого нажатого объекта сохраняются под параметрами '''x_first''' и '''y_first'''. В конце параметру '''number''' присваиваем значение '''1''', чтобы указать, что следующий нажатый объект будет вторым по счету. &lt;br /&gt;
* '''second_object'''&amp;lt;br&amp;gt;&lt;br /&gt;
В этом состоянии объект будет в том случае, если он будет нажатым вторым по счету, то есть после состояния '''check''' объект попадет в это состояние, где он запишет свои текущие координаты под параметрами '''x_second''' и '''y_second'''. Запись координат происходит таким же самым образом, что и в состоянии '''first_object'''. После этого он автоматически переходит в следующее состояние.&lt;br /&gt;
* '''move_first'''&amp;lt;br&amp;gt;&lt;br /&gt;
В этом состоянии объект будет в том случае, если он был нажат первым, поэтому он будет двигаться на место второго нажатого объекта, который сохранил свои координты в параметры'''x_second''' и '''y_second'''. Движение происходит следующим образом: сперва в переменную вычитываем координаты второго объекта, а потом в '''move''' вместо целевых координат записываем переменные, которые обязательно должны быть взяты в скобки.&lt;br /&gt;
* '''move_second'''&amp;lt;br&amp;gt;&lt;br /&gt;
В этом состоянии объект будет в том случае, если он был нажат вторым, поэтому он будет двигаться на место первого нажатого объекта, который сохранил свои координты в параметры '''x_first''' и '''y_first'''. Движение происходит следующим образом: сперва в переменную вычитываем координаты первого объекта, а потом в '''move''' вместо целевых координат записываем переменные, которые обязательно должны быть взяты в скобки.&lt;br /&gt;
&lt;br /&gt;
В результате проделанных манипуляций с машинами по кликам на две машины, они обменяются местами с анимацией движения. Это может быть очень полезным во многих минииграх!!!&lt;br /&gt;
&lt;br /&gt;
=== Важно знать ===&lt;br /&gt;
* Переменная действует в рамках одного состояния, если нужно, чтобы она была глобальной, нужно сохранить ее в опции и потом в нужный момент считывать ее из опций.&lt;br /&gt;
* Если складываем два числа, то в поле '''val''' они должны быть записаны в скобках: (5+3).&lt;br /&gt;
* Если возникает необходимость написать какое-то более сложное арифметическое вычисление, то следует помнить, что на одно действие приходятся одни скобки. Например: (((5+3)\2)*2).&lt;br /&gt;
* Количество открывающих и закрывающих скобок должно быть одинаковым.&lt;br /&gt;
* В скобках можно писать переменную, если она была объявлена выше: (5+a).&lt;br /&gt;
* Переменная может состоять из цифр и букв и знака нижнего подчеркивания.&lt;br /&gt;
* Иногда бывает необходимым использование '''round''' в '''set''', так например, если какой-то параметр получен с помощью арифметических вычислений и потом используется его в каком-то условии, и условие проверяет параметр, как целочисленное значение, то могут возникнуть ошибки. Так, как число будет записано в следующем виде 123.0000 и программа будет считать, что оно не целочисленное, а дробное. И чтобы избавится от лишних нулей  в дробной части следует округлять число.&lt;br /&gt;
* Действия, которые требуют времени, такие как move, rot, wait и другие перестают работать для уменьшения вычислительной нагрузки на устройство.&lt;br /&gt;
* Действия, которые не требуют времени, такие как set, init и другие продолжают функционировать.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Если с помощью переменной менять объекту любой параметр, например, координату X, то она запомнится (запишется как значение по умолчанию).&lt;br /&gt;
Тогда при повторном попадании на экран считается не тот X, который указан в свойствах, а тот, который установлен через переменную.&lt;br /&gt;
Если нужно при ините экрана возвращать начальные значения параметров, то можно сделать это двумя способами:&lt;br /&gt;
- не использовать переменную;&lt;br /&gt;
- создать отдельное состояние, которое будет &amp;quot;вручную&amp;quot; устанавливать начальные значения параметрам при ините экрана.&lt;br /&gt;
Если координата (или другой параметр) меняется другим способом, то будут автоматически при ините экрана подтягиваться значения из свойств объекта.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Примеры применений ===&lt;br /&gt;
С помощью математики можно организовать следующее:&lt;br /&gt;
* динамические опции (изменение звука и музыки с помощью ползунка);&lt;br /&gt;
* анимацию каунтера в играх (по окончанию уровня можно наблюдать, как изменяются очки);&lt;br /&gt;
* подсчет очков (гибкая система подсчета очков);&lt;br /&gt;
* обмен объектов местами (использование var и move)&lt;br /&gt;
* увеличение z-координаты любого объекта (когда необходимо, чтобы нажатый или таскаемый объект был выше других по z);&lt;br /&gt;
* простейший калькулятор;&lt;br /&gt;
* и много других.&lt;br /&gt;
&lt;br /&gt;
== Копирование машины состояния с сохранением ссылки на себя ==&lt;br /&gt;
Довольно часто бывает, что машина состояний ссылается только на глобальные объекты и на саму себя. При этом, если мы просто скопируем объект, он будет ссылаться на свою предыдущую копию. Этого можно избежать, сделав 3 шага:&lt;br /&gt;
1. Переместить объект в отдельную сцену&lt;br /&gt;
2. Скопировать данную сцену(имеется в виду обычное копирование, без ссылки)&lt;br /&gt;
3. Перенести объект и его копию обратно, в нужную сцену&lt;br /&gt;
4. Созданые сцены можно удалить :)&lt;br /&gt;
&lt;br /&gt;
== Random ==&lt;br /&gt;
На момент, когда пишется данная статья, понятие вероятности существует только в команде wait и в текстовом поле(объект [[Text]]) можно показать случайный текст. Однако, и текущей функциональности достаточно, чтобы сделать генератор случайных чисел:&lt;br /&gt;
[[Файл:Random.jpg]]&lt;br /&gt;
Или в виде xml:&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;obj type=&amp;quot;machine&amp;quot; id=&amp;quot;&amp;lt;Вставьте сюда ваш идентификатор объекта&amp;gt;&amp;quot; nm=&amp;quot;random&amp;quot; sync=&amp;quot;1&amp;quot; x=&amp;quot;800&amp;quot; y=&amp;quot;1200&amp;quot; w=&amp;quot;1&amp;quot; h=&amp;quot;1&amp;quot; al=&amp;quot;0&amp;quot; trace=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                &amp;lt;st id=&amp;quot;init&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;369&amp;quot; par=&amp;quot;random.val&amp;quot; val=&amp;quot;0&amp;quot; user=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;369&amp;quot; par=&amp;quot;random.precision&amp;quot; val=&amp;quot;0.01&amp;quot; user=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;369&amp;quot; par=&amp;quot;random.add&amp;quot; val=&amp;quot;1&amp;quot; user=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;369&amp;quot; st=&amp;quot;save&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                &amp;lt;/st&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                &amp;lt;st id=&amp;quot;count&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;369&amp;quot; par=&amp;quot;random.val&amp;quot; val=&amp;quot;0&amp;quot; user=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;369&amp;quot; par=&amp;quot;random.add&amp;quot; val=&amp;quot;1&amp;quot; user=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;369&amp;quot; st=&amp;quot;save&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                    &amp;lt;wait go=&amp;quot;iterate&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                &amp;lt;/st&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                &amp;lt;st id=&amp;quot;iterate&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;add&amp;quot; obj=&amp;quot;369&amp;quot; par=&amp;quot;random.add&amp;quot; user=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;369&amp;quot; par=&amp;quot;random.add&amp;quot; val=&amp;quot;((add)/2)&amp;quot; user=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                    &amp;lt;wait if=&amp;quot;0&amp;quot; go=&amp;quot;complete&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                    &amp;lt;wait p=&amp;quot;0.5&amp;quot; go=&amp;quot;add&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                    &amp;lt;wait go=&amp;quot;iterate&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;369&amp;quot; par=&amp;quot;random.precision&amp;quot; op=&amp;quot;&amp;amp;gt;&amp;quot; val=&amp;quot;(add)&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                &amp;lt;/st&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                &amp;lt;st id=&amp;quot;add&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;add&amp;quot; obj=&amp;quot;369&amp;quot; par=&amp;quot;random.add&amp;quot; user=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;val&amp;quot; obj=&amp;quot;369&amp;quot; par=&amp;quot;random.val&amp;quot; user=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;369&amp;quot; par=&amp;quot;random.val&amp;quot; val=&amp;quot;(add+val)&amp;quot; user=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                    &amp;lt;wait go=&amp;quot;iterate&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                &amp;lt;/st&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                &amp;lt;st id=&amp;quot;complete&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;369&amp;quot; st=&amp;quot;save&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                &amp;lt;/st&amp;gt;&lt;br /&gt;
&lt;br /&gt;
            &amp;lt;/obj&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
прим. Объект с id=&amp;quot;369&amp;quot; - объект типа [[Options]]&lt;br /&gt;
&lt;br /&gt;
=== Краткое описание алгоритма ===&lt;br /&gt;
1. Задаются точность и обнуляется значение(val)&lt;br /&gt;
&lt;br /&gt;
2. Устанавливается добавляемое значение (add)&lt;br /&gt;
&lt;br /&gt;
3. add делится на двое. Если срабатывает wait - add добавляется к val. Если add становится меньше допустимой точности - переходим к п. 4. Если не один из переходов не сработал - повторяем п. 3.&lt;br /&gt;
&lt;br /&gt;
4. Окончание работы объекта, сохранение опций&lt;br /&gt;
&lt;br /&gt;
=== Как пользоваться? ===&lt;br /&gt;
&lt;br /&gt;
1. Задаём переменной Options-&amp;gt;random.precision необходимую точность (обычно 0.01 для игровых проектов достаточно)&lt;br /&gt;
&lt;br /&gt;
2. Переводим объект random в состояние count&lt;br /&gt;
&lt;br /&gt;
3. Ждём определённое время (200 милисекунд, в принципе достаточно, если не успеете - получите результат с меньшей точностью), либо, если уж боитесь - в цикле(переходя wait-ами между 2-мя состояниями) проверяйте перешёл ли random в состояние complete&lt;br /&gt;
&lt;br /&gt;
4. Результат вычислений заносится в переменную Options-&amp;gt;random.val . val принимает значение от 0 до 1 (не включая 1)&lt;br /&gt;
&lt;br /&gt;
=== Какие могут возникнуть проблемы ===&lt;br /&gt;
&lt;br /&gt;
1. Если 2 объекта захотят одновременно вызвать random. Решение проблемы: Создать 2 объекта random. И ещё, обязательно переименовать в каждом объекте группу параметров, в который параметры будут заноситься (Например: random1.val, random2.val).&lt;br /&gt;
&lt;br /&gt;
2. Не следует сохранять в Options промежуточные вычисления, т. к. это очень существенно замедлит вычисления&lt;br /&gt;
&lt;br /&gt;
3. Если машина невидима(vis = 0), то она остаётся функционировать, но частично:&lt;br /&gt;
&lt;br /&gt;
Предположим, что есть машина А, у которой перед загрузкой экрана vis=0, в ней в состоянии по-умолчанию есть движение, init и несколько set-ов на другие объекты. При загрузке экрана выполнятся set-ы, init, но объект двигаться как указано не будет.&lt;br /&gt;
&lt;br /&gt;
Если необходимо чтобы объект двигался невидимым - следует использовать изменение прозрачности машины, или init для перемещения.&lt;br /&gt;
&lt;br /&gt;
== Random 2 ==&lt;br /&gt;
Улучшенный вариант предыдущего генератора случайных чисел ([[Random]]).&lt;br /&gt;
Суть состоит в том, что объект записывает переменные внутрь себя, минуя запись объект [Options].&lt;br /&gt;
[[Файл:Random2.jpg]]&lt;br /&gt;
&lt;br /&gt;
Исходный xml-код имеет вид:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 &amp;lt;obj id=&amp;quot;4759&amp;quot; type=&amp;quot;machine&amp;quot; nm=&amp;quot;random_new&amp;quot; sync=&amp;quot;1&amp;quot; x=&amp;quot;800&amp;quot; y=&amp;quot;1200&amp;quot; w=&amp;quot;1&amp;quot; h=&amp;quot;1&amp;quot; al=&amp;quot;0&amp;quot; trace=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;st id=&amp;quot;init&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;4759&amp;quot; par=&amp;quot;val&amp;quot; val=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;4759&amp;quot; par=&amp;quot;precision&amp;quot; val=&amp;quot;0.01&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;4759&amp;quot; par=&amp;quot;add&amp;quot; val=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/st&amp;gt;&lt;br /&gt;
                &amp;lt;st id=&amp;quot;count&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;4759&amp;quot; par=&amp;quot;val&amp;quot; val=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;4759&amp;quot; par=&amp;quot;add&amp;quot; val=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;wait go=&amp;quot;iterate&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/st&amp;gt;&lt;br /&gt;
                &amp;lt;st id=&amp;quot;iterate&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;add&amp;quot; obj=&amp;quot;4759&amp;quot; par=&amp;quot;add&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;4759&amp;quot; par=&amp;quot;add&amp;quot; val=&amp;quot;((add)/2)&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;wait if=&amp;quot;0&amp;quot; go=&amp;quot;complete&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;wait p=&amp;quot;0.5&amp;quot; go=&amp;quot;add&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;wait go=&amp;quot;iterate&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;4759&amp;quot; par=&amp;quot;precision&amp;quot; op=&amp;quot;&amp;amp;gt;&amp;quot; val=&amp;quot;(add)&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/st&amp;gt;&lt;br /&gt;
                &amp;lt;st id=&amp;quot;add&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;add&amp;quot; obj=&amp;quot;4759&amp;quot; par=&amp;quot;add&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;val&amp;quot; obj=&amp;quot;4759&amp;quot; par=&amp;quot;val&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;4759&amp;quot; par=&amp;quot;val&amp;quot; val=&amp;quot;(add+val)&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;wait go=&amp;quot;iterate&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/st&amp;gt;&lt;br /&gt;
                &amp;lt;st id=&amp;quot;complete&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;/obj&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Краткое описание алгоритма ===&lt;br /&gt;
См. объект [[Random]]&lt;br /&gt;
&lt;br /&gt;
=== Как пользоваться? ===&lt;br /&gt;
См. объект [[Random]]&lt;br /&gt;
&lt;br /&gt;
=== Достоинства и недостатки ===&lt;br /&gt;
Достоинства: можно создавать несколько копий, при этом не нужно лезть внутрь объекта (если хотите иметь несколько генераторов в одном экране, скопируйте генератор в другой экран, а потом перенесите обратно - ссылка внутри объекта на самого себя сохранится).&lt;br /&gt;
&lt;br /&gt;
Недостатки: Как и в случае с объектом Random, нужно выдержать время, чтобы генератор сработал. Таким образом, к генератору может безопасно обращаться только 1 объект.&lt;br /&gt;
&lt;br /&gt;
== Random-псевдо ==&lt;br /&gt;
Генератор псевдослучайных чисел. Быстрый генератор, по сравнению с [[Random2]].&lt;br /&gt;
Суть состоит в том, что последовательность случайных чисел задаётся по формуле:&lt;br /&gt;
&lt;br /&gt;
Хорошее среднее значение (0.47) даёт формула:&lt;br /&gt;
A=10000*i*/(i+1)&lt;br /&gt;
Даллее, от числа А оставляется только дробная часть.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Random_pseudo.jpg]]&lt;br /&gt;
&lt;br /&gt;
Исходный xml-код имеет вид:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 &amp;lt;obj id=&amp;quot;4908&amp;quot; type=&amp;quot;machine&amp;quot; nm=&amp;quot;random_pseudo&amp;quot; sync=&amp;quot;1&amp;quot; x=&amp;quot;800&amp;quot; y=&amp;quot;800&amp;quot; w=&amp;quot;100&amp;quot; h=&amp;quot;100&amp;quot; trace=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;st id=&amp;quot;init&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;4908&amp;quot; par=&amp;quot;index&amp;quot; val=&amp;quot;101&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;4908&amp;quot; par=&amp;quot;val&amp;quot; val=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/st&amp;gt;&lt;br /&gt;
                &amp;lt;st id=&amp;quot;count&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a1&amp;quot; obj=&amp;quot;4908&amp;quot; par=&amp;quot;index&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a&amp;quot; obj=&amp;quot;4908&amp;quot; par=&amp;quot;a&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;ar&amp;quot; obj=&amp;quot;4908&amp;quot; par=&amp;quot;a_round&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;4908&amp;quot; par=&amp;quot;a&amp;quot; val=&amp;quot;(((a1)/(a1+1))*10000)&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;4908&amp;quot; par=&amp;quot;a_round&amp;quot; val=&amp;quot;(a)&amp;quot; round=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;4908&amp;quot; par=&amp;quot;val&amp;quot; val=&amp;quot;(a-ar)&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;4908&amp;quot; par=&amp;quot;index&amp;quot; val=&amp;quot;(a1+1)&amp;quot; if=&amp;quot;(!0)&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;4908&amp;quot; par=&amp;quot;index&amp;quot; val=&amp;quot;101&amp;quot; if=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;4908&amp;quot; par=&amp;quot;index&amp;quot; op=&amp;quot;&amp;amp;gt;&amp;quot; val=&amp;quot;201&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/st&amp;gt;&lt;br /&gt;
            &amp;lt;/obj&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Краткое описание алгоритма ===&lt;br /&gt;
1. Устанавливается начальное значение индекса index=101 (экспериментальное)&lt;br /&gt;
&lt;br /&gt;
2. Подсчитывается значение а= index*10000/(index+1)&lt;br /&gt;
&lt;br /&gt;
3. Отбрасывается целая часть а&lt;br /&gt;
&lt;br /&gt;
4. Запись результата во внутренню переменную val&lt;br /&gt;
&lt;br /&gt;
5. Если индекс стал больше 200- ставим его снова 101.&lt;br /&gt;
&lt;br /&gt;
=== Как пользоваться? ===&lt;br /&gt;
1. Переводим объект random_pseudo в состояние count&lt;br /&gt;
2. Считываем результат из переменной val&lt;br /&gt;
&lt;br /&gt;
=== Какие могут возникнуть проблемы? ===&lt;br /&gt;
Проблема, собственно, только одна - бедность данного генератора, т. к. он имеет всего 100 различных значений. Однако, для производства игр, такого количества вполне достаточно.&lt;br /&gt;
&lt;br /&gt;
=== Достоинства и недостатки ===&lt;br /&gt;
Достоинства: результат достигается обычным переводом в состояние, без применения итераций, благодаря этому, к данному генератору случайных чисел может иметь доступ неограниченное число объектов.&lt;br /&gt;
&lt;br /&gt;
Недостатки: (они уже описаны выше) малое количество выдаваемых значений, цикличность последовательности.&lt;br /&gt;
&lt;br /&gt;
== Guest ==&lt;br /&gt;
&lt;br /&gt;
'''Guest (гость)''' - объект, который перевел машину в текущее состояние. Пример: кнопка ''btn1'' по клику переводит машину ''mch1'' в состояние ''st1'', в этом состоянии у машины ''mch1'' гостем является кнопка ''btn1''. Гостем может быть объект любого типа, если он может менять состояние другому объекту (например: хидден-объект по нахождению может менять состояние объекту, кнопка, машина, пэчворк и т.д.)&lt;br /&gt;
&lt;br /&gt;
В машине состояний можно считывать (проверять) и передавать параметры и состояния гостя. Любое поле ''obj'' в выпадающем списке содержит строку ''guest'', что позволяет работать с гостем, как с любым другим объектом.&lt;br /&gt;
&lt;br /&gt;
=== Пример использования ===&lt;br /&gt;
&lt;br /&gt;
[[Файл:Guest1.jpg|left]]&lt;br /&gt;
Пускай экран содержит 3 кнопки (''btn1'', ''btn2'' и ''btn3'') и одну машину ''mch1''. Нужно сделать так, чтобы по клику на любую из кнопок машина перемещалась в ее координаты и переводила кнопку в состояние ''disable''. Так же по клику на кнопку ''btn2'', машина должна перейти в состояние ''bonus''.&amp;lt;br&amp;gt;&lt;br /&gt;
Всем трем кнопкам по клику пропишем передавать объекту ''mch1'' состояние ''check''.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Создадим в машине три состояния: ''init'' - состояние в котором машина будет находиться по умолчанию, ''check'' - состояние, которое будет вызываться тремя кнопками, в этом состоянии у машины ''mch1'' одна из трех кнопок будет гостем, ''bonus'' - последнее состояние.&amp;lt;br&amp;gt;&lt;br /&gt;
Две команды ''var'' считывают у гостя координаты, т.к. мы не знаем, какая именно кнопка перевела машину ''mch1'' в состояние ''check'', то обращаемся к гостю, а не к кнопкам. За ними следует две команды ''set'', которые передают координаты гостя машине. Еще один ''set'' переводит гостя в состояние ''disable''. И через ''wait'' осуществляется переход в состояние ''bonus'', если гость ''btn2''.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
При смене состояния гость сохраняется, т.е. в состоянии bonus гостем останется btn2.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Если машина изначально сама себе меняет состояния, то у нее нет гостя.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Файл:Guest2.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Массив (Array) ==&lt;br /&gt;
&lt;br /&gt;
В данном объекте реализован массив, имеющий максимальную длинну в 20 элементов.&lt;br /&gt;
&lt;br /&gt;
=== Свойства объекта массив: ===&lt;br /&gt;
&lt;br /&gt;
len - длинна массива. Длинна массива может как считываться, так и записываться. Влияет на количество сохраняемых объектов в Options.&lt;br /&gt;
&lt;br /&gt;
index1 - индекс элемента. (данный массив можно расширить до многомерного и использовать несколько индексов)&lt;br /&gt;
&lt;br /&gt;
val - значение элемента массива, с индексом index1&lt;br /&gt;
&lt;br /&gt;
a1..a20 - внутренние элементы массива(обращаться можно через свойство par объекта). Предполагается, что пользователь редактора к ним обращаться напрямую не будет, однако иногда для удобства полезны.&lt;br /&gt;
&lt;br /&gt;
=== Состояния объекта массив: ===&lt;br /&gt;
&lt;br /&gt;
get - при вызове этого состояния во внутреннюю переменную val записывается значение элемента с индексом index1&lt;br /&gt;
&lt;br /&gt;
set - при вызове этого состояния во внутреннюю переменную a1..a20, соответствующую индексу index1 записывается значение val&lt;br /&gt;
&lt;br /&gt;
load - загрузить значения массива из xml.&lt;br /&gt;
&lt;br /&gt;
save - сохранить элементы массива от 1 до len&lt;br /&gt;
&lt;br /&gt;
=== Как использовать? ===&lt;br /&gt;
&lt;br /&gt;
1. Загружаем массив, переводя объект array в состояние load&lt;br /&gt;
&lt;br /&gt;
2. Записываем значения массива&lt;br /&gt;
&lt;br /&gt;
 а). Задаём значение свойству index1 объекта array (устанавливаем индекс ячейки, в которую будет заноситься число)&lt;br /&gt;
 б). Задаём значение свойству val объекта array (устанавливаем значение, которое будет заноситься в ячейку с индексом index1)&lt;br /&gt;
 в). Переводим объект array в состояние set&lt;br /&gt;
&lt;br /&gt;
3. Считываем значения массива&lt;br /&gt;
 а). Задаём значение свойству index1 объекта array (устанавливаем индекс ячейки, из которой будет считываться число)&lt;br /&gt;
 б). Переводим объект array в состояние get&lt;br /&gt;
 в). Считываем значение из свойства val объекта array&lt;br /&gt;
&lt;br /&gt;
4. Сохраняем массив, переводя объект array в состояние save. Если хотите изменить количество сохраняемых эелментов - предварительно измените параметр len.&lt;br /&gt;
&lt;br /&gt;
=== Копирование объекта ===&lt;br /&gt;
&lt;br /&gt;
При копировании, необходимо заменить в состояниях load и save array.имя_параметра на другое имя. Например, array2.имя_параметра. Копировать следует через использование доп. сцены (см. выше)&lt;br /&gt;
&lt;br /&gt;
=== Достоинства ===&lt;br /&gt;
&lt;br /&gt;
Позволяет избежать необходимости каждый раз создавать большое количество if-ов и set-ов, если необходимо работать с нумерованным списком. Можно один раз создать структуру и копировать её неограниченное количество раз&lt;br /&gt;
&lt;br /&gt;
=== Недостатки ===&lt;br /&gt;
&lt;br /&gt;
Данный объект содержит довольно большое количество кода, поэтому при большом их обилии/длинне может занизить скорость работы сцены и скорость загрузки сцены.&lt;br /&gt;
&lt;br /&gt;
=== Исходный XML код===&lt;br /&gt;
Прим. id=&amp;quot;369&amp;quot; - идентификатор объекта Options, сохраняющего все переменные приложения. id=&amp;quot;7845&amp;quot; - идентификатор объекта&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;obj id=&amp;quot;7845&amp;quot; type=&amp;quot;machine&amp;quot; nm=&amp;quot;array&amp;quot; sync=&amp;quot;1&amp;quot; w=&amp;quot;1&amp;quot; h=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;st id=&amp;quot;init&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;st id=&amp;quot;get&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a1&amp;quot; obj=&amp;quot;7845&amp;quot; par=&amp;quot;a1&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a2&amp;quot; obj=&amp;quot;7845&amp;quot; par=&amp;quot;a2&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a3&amp;quot; obj=&amp;quot;7845&amp;quot; par=&amp;quot;a3&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a4&amp;quot; obj=&amp;quot;7845&amp;quot; par=&amp;quot;a4&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a5&amp;quot; obj=&amp;quot;7845&amp;quot; par=&amp;quot;a5&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a6&amp;quot; obj=&amp;quot;7845&amp;quot; par=&amp;quot;a6&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a7&amp;quot; obj=&amp;quot;7845&amp;quot; par=&amp;quot;a7&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a8&amp;quot; obj=&amp;quot;7845&amp;quot; par=&amp;quot;a8&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a9&amp;quot; obj=&amp;quot;7845&amp;quot; par=&amp;quot;a9&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a10&amp;quot; obj=&amp;quot;7845&amp;quot; par=&amp;quot;a10&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a11&amp;quot; obj=&amp;quot;7845&amp;quot; par=&amp;quot;a11&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a12&amp;quot; obj=&amp;quot;7845&amp;quot; par=&amp;quot;a12&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a13&amp;quot; obj=&amp;quot;7845&amp;quot; par=&amp;quot;a13&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a14&amp;quot; obj=&amp;quot;7845&amp;quot; par=&amp;quot;a14&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a15&amp;quot; obj=&amp;quot;7845&amp;quot; par=&amp;quot;a15&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a16&amp;quot; obj=&amp;quot;7845&amp;quot; par=&amp;quot;a16&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a17&amp;quot; obj=&amp;quot;7845&amp;quot; par=&amp;quot;a17&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a18&amp;quot; obj=&amp;quot;7845&amp;quot; par=&amp;quot;a18&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a19&amp;quot; obj=&amp;quot;7845&amp;quot; par=&amp;quot;a19&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a20&amp;quot; obj=&amp;quot;7845&amp;quot; par=&amp;quot;a20&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;val&amp;quot; val=&amp;quot;(a1)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;val&amp;quot; val=&amp;quot;(a2)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;val&amp;quot; val=&amp;quot;(a3)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;val&amp;quot; val=&amp;quot;(a4)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;3&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;val&amp;quot; val=&amp;quot;(a5)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;4&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;val&amp;quot; val=&amp;quot;(a6)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;5&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;val&amp;quot; val=&amp;quot;(a7)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;6&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;val&amp;quot; val=&amp;quot;(a8)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;7&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;val&amp;quot; val=&amp;quot;(a9)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;8&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;val&amp;quot; val=&amp;quot;(a10)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;9&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;val&amp;quot; val=&amp;quot;(a11)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;10&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;val&amp;quot; val=&amp;quot;(a12)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;11&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;val&amp;quot; val=&amp;quot;(a13)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;12&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;val&amp;quot; val=&amp;quot;(a14)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;13&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;val&amp;quot; val=&amp;quot;(a15)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;14&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;val&amp;quot; val=&amp;quot;(a16)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;15&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;val&amp;quot; val=&amp;quot;(a17)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;16&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;val&amp;quot; val=&amp;quot;(a18)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;17&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;val&amp;quot; val=&amp;quot;(a19)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;18&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;val&amp;quot; val=&amp;quot;(a20)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;19&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;index1&amp;quot; val=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;index1&amp;quot; val=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;index1&amp;quot; val=&amp;quot;3&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;index1&amp;quot; val=&amp;quot;4&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;index1&amp;quot; val=&amp;quot;5&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;index1&amp;quot; val=&amp;quot;6&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;index1&amp;quot; val=&amp;quot;7&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;index1&amp;quot; val=&amp;quot;8&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;index1&amp;quot; val=&amp;quot;9&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;index1&amp;quot; val=&amp;quot;10&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;index1&amp;quot; val=&amp;quot;11&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;index1&amp;quot; val=&amp;quot;12&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;index1&amp;quot; val=&amp;quot;13&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;index1&amp;quot; val=&amp;quot;14&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;index1&amp;quot; val=&amp;quot;15&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;index1&amp;quot; val=&amp;quot;16&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;index1&amp;quot; val=&amp;quot;17&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;index1&amp;quot; val=&amp;quot;18&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;index1&amp;quot; val=&amp;quot;19&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;index1&amp;quot; val=&amp;quot;20&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/st&amp;gt;&lt;br /&gt;
                &amp;lt;st id=&amp;quot;set&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;val&amp;quot; obj=&amp;quot;7845&amp;quot; par=&amp;quot;val&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;a1&amp;quot; val=&amp;quot;(val)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;a2&amp;quot; val=&amp;quot;(val)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;a3&amp;quot; val=&amp;quot;(val)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;a4&amp;quot; val=&amp;quot;(val)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;3&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;a5&amp;quot; val=&amp;quot;(val)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;4&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;a6&amp;quot; val=&amp;quot;(val)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;5&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;a7&amp;quot; val=&amp;quot;(val)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;6&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;a8&amp;quot; val=&amp;quot;(val)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;7&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;a9&amp;quot; val=&amp;quot;(val)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;8&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;a10&amp;quot; val=&amp;quot;(val)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;9&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;a11&amp;quot; val=&amp;quot;(val)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;10&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;a12&amp;quot; val=&amp;quot;(val)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;11&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;a13&amp;quot; val=&amp;quot;(val)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;12&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;a14&amp;quot; val=&amp;quot;(val)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;13&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;a15&amp;quot; val=&amp;quot;(val)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;14&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;a16&amp;quot; val=&amp;quot;(val)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;15&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;a17&amp;quot; val=&amp;quot;(val)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;16&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;a18&amp;quot; val=&amp;quot;(val)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;17&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;a19&amp;quot; val=&amp;quot;(val)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;18&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;a20&amp;quot; val=&amp;quot;(val)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;19&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;index1&amp;quot; val=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;index1&amp;quot; val=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;index1&amp;quot; val=&amp;quot;3&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;index1&amp;quot; val=&amp;quot;4&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;index1&amp;quot; val=&amp;quot;5&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;index1&amp;quot; val=&amp;quot;6&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;index1&amp;quot; val=&amp;quot;7&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;index1&amp;quot; val=&amp;quot;8&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;index1&amp;quot; val=&amp;quot;9&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;index1&amp;quot; val=&amp;quot;10&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;index1&amp;quot; val=&amp;quot;11&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;index1&amp;quot; val=&amp;quot;12&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;index1&amp;quot; val=&amp;quot;13&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;index1&amp;quot; val=&amp;quot;14&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;index1&amp;quot; val=&amp;quot;15&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;index1&amp;quot; val=&amp;quot;16&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;index1&amp;quot; val=&amp;quot;17&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;index1&amp;quot; val=&amp;quot;18&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;index1&amp;quot; val=&amp;quot;19&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;index1&amp;quot; val=&amp;quot;20&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/st&amp;gt;&lt;br /&gt;
                &amp;lt;st id=&amp;quot;load&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a1&amp;quot; obj=&amp;quot;369&amp;quot; par=&amp;quot;array.a1&amp;quot; user=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a2&amp;quot; obj=&amp;quot;369&amp;quot; par=&amp;quot;array.a2&amp;quot; user=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a3&amp;quot; obj=&amp;quot;369&amp;quot; par=&amp;quot;array.a3&amp;quot; user=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a4&amp;quot; obj=&amp;quot;369&amp;quot; par=&amp;quot;array.a4&amp;quot; user=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a5&amp;quot; obj=&amp;quot;369&amp;quot; par=&amp;quot;array.a5&amp;quot; user=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a6&amp;quot; obj=&amp;quot;369&amp;quot; par=&amp;quot;array.a6&amp;quot; user=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a7&amp;quot; obj=&amp;quot;369&amp;quot; par=&amp;quot;array.a7&amp;quot; user=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a8&amp;quot; obj=&amp;quot;369&amp;quot; par=&amp;quot;array.a8&amp;quot; user=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a9&amp;quot; obj=&amp;quot;369&amp;quot; par=&amp;quot;array.a9&amp;quot; user=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a10&amp;quot; obj=&amp;quot;369&amp;quot; par=&amp;quot;array.a10&amp;quot; user=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a11&amp;quot; obj=&amp;quot;369&amp;quot; par=&amp;quot;array.a11&amp;quot; user=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a12&amp;quot; obj=&amp;quot;369&amp;quot; par=&amp;quot;array.a12&amp;quot; user=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a13&amp;quot; obj=&amp;quot;369&amp;quot; par=&amp;quot;array.a13&amp;quot; user=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a14&amp;quot; obj=&amp;quot;369&amp;quot; par=&amp;quot;array.a14&amp;quot; user=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a15&amp;quot; obj=&amp;quot;369&amp;quot; par=&amp;quot;array.a15&amp;quot; user=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a16&amp;quot; obj=&amp;quot;369&amp;quot; par=&amp;quot;array.a16&amp;quot; user=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a17&amp;quot; obj=&amp;quot;369&amp;quot; par=&amp;quot;array.a17&amp;quot; user=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a18&amp;quot; obj=&amp;quot;369&amp;quot; par=&amp;quot;array.a18&amp;quot; user=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a19&amp;quot; obj=&amp;quot;369&amp;quot; par=&amp;quot;array.a19&amp;quot; user=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a20&amp;quot; obj=&amp;quot;369&amp;quot; par=&amp;quot;array.a20&amp;quot; user=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;a1&amp;quot; val=&amp;quot;(a1)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;a2&amp;quot; val=&amp;quot;(a2)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;a3&amp;quot; val=&amp;quot;(a3)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;a4&amp;quot; val=&amp;quot;(a4)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;3&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;a5&amp;quot; val=&amp;quot;(a5)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;4&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;a6&amp;quot; val=&amp;quot;(a6)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;5&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;a7&amp;quot; val=&amp;quot;(a7)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;6&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;a8&amp;quot; val=&amp;quot;(a8)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;7&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;a9&amp;quot; val=&amp;quot;(a9)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;8&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;a10&amp;quot; val=&amp;quot;(a10)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;9&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;a11&amp;quot; val=&amp;quot;(a11)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;10&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;a12&amp;quot; val=&amp;quot;(a12)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;11&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;a13&amp;quot; val=&amp;quot;(a13)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;12&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;a14&amp;quot; val=&amp;quot;(a14)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;13&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;a15&amp;quot; val=&amp;quot;(a15)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;14&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;a16&amp;quot; val=&amp;quot;(a16)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;15&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;a17&amp;quot; val=&amp;quot;(a17)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;16&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;a18&amp;quot; val=&amp;quot;(a18)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;17&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;a19&amp;quot; val=&amp;quot;(a19)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;18&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;a20&amp;quot; val=&amp;quot;(a20)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;19&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;len&amp;quot; op=&amp;quot;&amp;amp;gt;&amp;quot; val=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;len&amp;quot; op=&amp;quot;&amp;amp;gt;&amp;quot; val=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;len&amp;quot; op=&amp;quot;&amp;amp;gt;&amp;quot; val=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;len&amp;quot; op=&amp;quot;&amp;amp;gt;&amp;quot; val=&amp;quot;3&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;len&amp;quot; op=&amp;quot;&amp;amp;gt;&amp;quot; val=&amp;quot;4&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;len&amp;quot; op=&amp;quot;&amp;amp;gt;&amp;quot; val=&amp;quot;5&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;len&amp;quot; op=&amp;quot;&amp;amp;gt;&amp;quot; val=&amp;quot;6&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;len&amp;quot; op=&amp;quot;&amp;amp;gt;&amp;quot; val=&amp;quot;7&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;len&amp;quot; op=&amp;quot;&amp;amp;gt;&amp;quot; val=&amp;quot;8&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;len&amp;quot; op=&amp;quot;&amp;amp;gt;&amp;quot; val=&amp;quot;9&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;len&amp;quot; op=&amp;quot;&amp;amp;gt;&amp;quot; val=&amp;quot;10&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;len&amp;quot; op=&amp;quot;&amp;amp;gt;&amp;quot; val=&amp;quot;11&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;len&amp;quot; op=&amp;quot;&amp;amp;gt;&amp;quot; val=&amp;quot;12&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;len&amp;quot; op=&amp;quot;&amp;amp;gt;&amp;quot; val=&amp;quot;13&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;len&amp;quot; op=&amp;quot;&amp;amp;gt;&amp;quot; val=&amp;quot;14&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;len&amp;quot; op=&amp;quot;&amp;amp;gt;&amp;quot; val=&amp;quot;15&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;len&amp;quot; op=&amp;quot;&amp;amp;gt;&amp;quot; val=&amp;quot;16&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;len&amp;quot; op=&amp;quot;&amp;amp;gt;&amp;quot; val=&amp;quot;17&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;len&amp;quot; op=&amp;quot;&amp;amp;gt;&amp;quot; val=&amp;quot;18&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;len&amp;quot; op=&amp;quot;&amp;amp;gt;&amp;quot; val=&amp;quot;19&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/st&amp;gt;&lt;br /&gt;
                &amp;lt;st id=&amp;quot;save&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;len&amp;quot; obj=&amp;quot;7845&amp;quot; par=&amp;quot;len&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a1&amp;quot; obj=&amp;quot;7845&amp;quot; par=&amp;quot;a1&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a2&amp;quot; obj=&amp;quot;7845&amp;quot; par=&amp;quot;a2&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a3&amp;quot; obj=&amp;quot;7845&amp;quot; par=&amp;quot;a3&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a4&amp;quot; obj=&amp;quot;7845&amp;quot; par=&amp;quot;a4&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a5&amp;quot; obj=&amp;quot;7845&amp;quot; par=&amp;quot;a5&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a6&amp;quot; obj=&amp;quot;7845&amp;quot; par=&amp;quot;a6&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a7&amp;quot; obj=&amp;quot;7845&amp;quot; par=&amp;quot;a7&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a8&amp;quot; obj=&amp;quot;7845&amp;quot; par=&amp;quot;a8&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a9&amp;quot; obj=&amp;quot;7845&amp;quot; par=&amp;quot;a9&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a10&amp;quot; obj=&amp;quot;7845&amp;quot; par=&amp;quot;a10&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a11&amp;quot; obj=&amp;quot;7845&amp;quot; par=&amp;quot;a11&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a12&amp;quot; obj=&amp;quot;7845&amp;quot; par=&amp;quot;a12&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a13&amp;quot; obj=&amp;quot;7845&amp;quot; par=&amp;quot;a13&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a14&amp;quot; obj=&amp;quot;7845&amp;quot; par=&amp;quot;a14&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a15&amp;quot; obj=&amp;quot;7845&amp;quot; par=&amp;quot;a15&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a16&amp;quot; obj=&amp;quot;7845&amp;quot; par=&amp;quot;a16&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a17&amp;quot; obj=&amp;quot;7845&amp;quot; par=&amp;quot;a17&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a18&amp;quot; obj=&amp;quot;7845&amp;quot; par=&amp;quot;a18&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a19&amp;quot; obj=&amp;quot;7845&amp;quot; par=&amp;quot;a19&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a20&amp;quot; obj=&amp;quot;7845&amp;quot; par=&amp;quot;a20&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;369&amp;quot; par=&amp;quot;array.a1&amp;quot; val=&amp;quot;(a1)&amp;quot; round=&amp;quot;1&amp;quot; user=&amp;quot;1&amp;quot; if=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;369&amp;quot; par=&amp;quot;array.a2&amp;quot; val=&amp;quot;(a2)&amp;quot; round=&amp;quot;1&amp;quot; user=&amp;quot;1&amp;quot; if=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;369&amp;quot; par=&amp;quot;array.a3&amp;quot; val=&amp;quot;(a3)&amp;quot; round=&amp;quot;1&amp;quot; user=&amp;quot;1&amp;quot; if=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;369&amp;quot; par=&amp;quot;array.a4&amp;quot; val=&amp;quot;(a4)&amp;quot; round=&amp;quot;1&amp;quot; user=&amp;quot;1&amp;quot; if=&amp;quot;3&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;369&amp;quot; par=&amp;quot;array.a5&amp;quot; val=&amp;quot;(a5)&amp;quot; round=&amp;quot;1&amp;quot; user=&amp;quot;1&amp;quot; if=&amp;quot;4&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;369&amp;quot; par=&amp;quot;array.a6&amp;quot; val=&amp;quot;(a6)&amp;quot; round=&amp;quot;1&amp;quot; user=&amp;quot;1&amp;quot; if=&amp;quot;5&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;369&amp;quot; par=&amp;quot;array.a7&amp;quot; val=&amp;quot;(a7)&amp;quot; round=&amp;quot;1&amp;quot; user=&amp;quot;1&amp;quot; if=&amp;quot;6&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;369&amp;quot; par=&amp;quot;array.a8&amp;quot; val=&amp;quot;(a8)&amp;quot; round=&amp;quot;1&amp;quot; user=&amp;quot;1&amp;quot; if=&amp;quot;7&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;369&amp;quot; par=&amp;quot;array.a9&amp;quot; val=&amp;quot;(a9)&amp;quot; round=&amp;quot;1&amp;quot; user=&amp;quot;1&amp;quot; if=&amp;quot;8&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;369&amp;quot; par=&amp;quot;array.a10&amp;quot; val=&amp;quot;(a10)&amp;quot; round=&amp;quot;1&amp;quot; user=&amp;quot;1&amp;quot; if=&amp;quot;9&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;369&amp;quot; par=&amp;quot;array.a11&amp;quot; val=&amp;quot;(a11)&amp;quot; round=&amp;quot;1&amp;quot; user=&amp;quot;1&amp;quot; if=&amp;quot;10&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;369&amp;quot; par=&amp;quot;array.a12&amp;quot; val=&amp;quot;(a12)&amp;quot; round=&amp;quot;1&amp;quot; user=&amp;quot;1&amp;quot; if=&amp;quot;11&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;369&amp;quot; par=&amp;quot;array.a13&amp;quot; val=&amp;quot;(a13)&amp;quot; round=&amp;quot;1&amp;quot; user=&amp;quot;1&amp;quot; if=&amp;quot;12&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;369&amp;quot; par=&amp;quot;array.a14&amp;quot; val=&amp;quot;(a14)&amp;quot; round=&amp;quot;1&amp;quot; user=&amp;quot;1&amp;quot; if=&amp;quot;13&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;369&amp;quot; par=&amp;quot;array.a15&amp;quot; val=&amp;quot;(a15)&amp;quot; round=&amp;quot;1&amp;quot; user=&amp;quot;1&amp;quot; if=&amp;quot;14&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;369&amp;quot; par=&amp;quot;array.a16&amp;quot; val=&amp;quot;(a16)&amp;quot; round=&amp;quot;1&amp;quot; user=&amp;quot;1&amp;quot; if=&amp;quot;15&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;369&amp;quot; par=&amp;quot;array.a17&amp;quot; val=&amp;quot;(a17)&amp;quot; round=&amp;quot;1&amp;quot; user=&amp;quot;1&amp;quot; if=&amp;quot;16&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;369&amp;quot; par=&amp;quot;array.a18&amp;quot; val=&amp;quot;(a18)&amp;quot; round=&amp;quot;1&amp;quot; user=&amp;quot;1&amp;quot; if=&amp;quot;17&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;369&amp;quot; par=&amp;quot;array.a19&amp;quot; val=&amp;quot;(a19)&amp;quot; round=&amp;quot;1&amp;quot; user=&amp;quot;1&amp;quot; if=&amp;quot;18&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;369&amp;quot; par=&amp;quot;array.a20&amp;quot; val=&amp;quot;(a20)&amp;quot; round=&amp;quot;1&amp;quot; user=&amp;quot;1&amp;quot; if=&amp;quot;19&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;369&amp;quot; par=&amp;quot;array.len&amp;quot; val=&amp;quot;(len)&amp;quot; round=&amp;quot;1&amp;quot; user=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;len&amp;quot; op=&amp;quot;&amp;amp;gt;&amp;quot; val=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;len&amp;quot; op=&amp;quot;&amp;amp;gt;&amp;quot; val=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;len&amp;quot; op=&amp;quot;&amp;amp;gt;&amp;quot; val=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;len&amp;quot; op=&amp;quot;&amp;amp;gt;&amp;quot; val=&amp;quot;3&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;len&amp;quot; op=&amp;quot;&amp;amp;gt;&amp;quot; val=&amp;quot;4&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;len&amp;quot; op=&amp;quot;&amp;amp;gt;&amp;quot; val=&amp;quot;5&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;len&amp;quot; op=&amp;quot;&amp;amp;gt;&amp;quot; val=&amp;quot;6&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;len&amp;quot; op=&amp;quot;&amp;amp;gt;&amp;quot; val=&amp;quot;7&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;len&amp;quot; op=&amp;quot;&amp;amp;gt;&amp;quot; val=&amp;quot;8&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;len&amp;quot; op=&amp;quot;&amp;amp;gt;&amp;quot; val=&amp;quot;9&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;len&amp;quot; op=&amp;quot;&amp;amp;gt;&amp;quot; val=&amp;quot;10&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;len&amp;quot; op=&amp;quot;&amp;amp;gt;&amp;quot; val=&amp;quot;11&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;len&amp;quot; op=&amp;quot;&amp;amp;gt;&amp;quot; val=&amp;quot;12&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;len&amp;quot; op=&amp;quot;&amp;amp;gt;&amp;quot; val=&amp;quot;13&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;len&amp;quot; op=&amp;quot;&amp;amp;gt;&amp;quot; val=&amp;quot;14&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;len&amp;quot; op=&amp;quot;&amp;amp;gt;&amp;quot; val=&amp;quot;15&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;len&amp;quot; op=&amp;quot;&amp;amp;gt;&amp;quot; val=&amp;quot;16&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;len&amp;quot; op=&amp;quot;&amp;amp;gt;&amp;quot; val=&amp;quot;17&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;len&amp;quot; op=&amp;quot;&amp;amp;gt;&amp;quot; val=&amp;quot;18&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;len&amp;quot; op=&amp;quot;&amp;amp;gt;&amp;quot; val=&amp;quot;19&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/st&amp;gt;&lt;br /&gt;
            &amp;lt;/obj&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Машина состояний объекта ===&lt;br /&gt;
[[Файл:array.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Пример использования==&lt;br /&gt;
&lt;br /&gt;
[http://fs5.absolutist.com/files/wikisample/machine.rar Download]&lt;/div&gt;</summary>
		<author><name>Podkor</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.appsalutecreator.com/index.php?title=Economics&amp;diff=5158</id>
		<title>Economics</title>
		<link rel="alternate" type="text/html" href="https://wiki.appsalutecreator.com/index.php?title=Economics&amp;diff=5158"/>
		<updated>2013-09-18T07:57:29Z</updated>

		<summary type="html">&lt;p&gt;Podkor: /* Состояния */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Объект Economics служит для реализации сложной игровой механики типа &amp;quot;ферма&amp;quot;. Он осуществляет связь между игровыми локациями, накопленным опытом, текущим количеством энергии, денег и кристаллов (можно использовать и другие названия ресурсов), а также управляет объектами коллекций, магазина, инвентаря и игровых заданий.&lt;br /&gt;
&lt;br /&gt;
= Свойства =&lt;br /&gt;
&lt;br /&gt;
*'''предметы''' - Объект типа eitems.&lt;br /&gt;
*'''задачи''' - Объект типа taskorganizer.&lt;br /&gt;
&lt;br /&gt;
==Параметры==&lt;br /&gt;
===Основные параметры===&lt;br /&gt;
&lt;br /&gt;
*'''Уровни''' - опыт, необходимый для перехода на следующий уровень. Последовательность чисел через запятую.&lt;br /&gt;
*'''Уровни парабола''' - Три числа через запятую, задающие коэффициенты параболы, которые определяют необходимый опыт после уже перечисленных уровней.&lt;br /&gt;
*'''Энергия''' - максимум энергии на каждом из уровней. Последовательность чисел через запятую. Последнее значение будет зациклено для всех последующих уровней.&lt;br /&gt;
*'''Энергия прибавка''' - Число определяющее прибавку к максимуму энергии после уже перечисленных уровней.&lt;br /&gt;
*'''Ресурс 1''' - количество ресурса 1 добавляемое за уровень. Последовательность чисел через запятую. Последнее значение будет зациклено для всех последующих уровней.&lt;br /&gt;
*'''Ресурс 2''' - количество ресурса 2 добавляемое за уровень. Последовательность чисел через запятую. Последнее значение будет зациклено для всех последующих уровней.&lt;br /&gt;
*'''Перезарядка''' - время за которое восстанавливается единица энергии в ms.&lt;br /&gt;
*'''нач. ресурс 1''' - Начальное значение ресурса 1.&lt;br /&gt;
*'''нач. ресурс 2''' - Начальное значение ресурса 2.&lt;br /&gt;
*'''время напоминания''' - время напоминания о задачах на каждом из уровней. Записывается в виде последовательности чисел через запятую. Последнее значение будет зациклено для всех последующих уровней. Время изменяется в часах.&lt;br /&gt;
*'''напоминание об энергии''' - уведомление перетаскивается с текстового редактора, представляет собой напоминание о том что энергия восстановилась. Например, &amp;quot;Ваше энергия полностью восстановлена&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
===Основные счетчики===&lt;br /&gt;
Этот раздел содержит необходимые объекты для подсчета (counter, timer, progressbar).&lt;br /&gt;
&lt;br /&gt;
*'''Уровень''' - счетчик текущего уровня игрока.&lt;br /&gt;
*'''Прогресс в уровне (счетчик)''' - Набранный на этом уровне опыт и остаток до следующего уровня (счетчик).&lt;br /&gt;
*'''Прогресс в уровне (бар)''' - Набранный на этом уровне опыт и остаток до следующего уровня (прогрессбар).&lt;br /&gt;
*'''Опыта до уровня''' - счетчик показывающий сколько опыта необходимо для перехода с текущего уровня на следующий.&lt;br /&gt;
*'''Текущая энергия''' - прогрессбар текущей энергии.&lt;br /&gt;
*'''Максимальная энергия''' - счетчик, который отображает значение максимальной энергии.&lt;br /&gt;
*'''Таймер энергии''' - таймер отображающий время до восстановления единицы энергии.&lt;br /&gt;
*'''Таймер всей энергии''' - таймер, который отображает время до восстановления всей энергии.&lt;br /&gt;
*'''Ресурс 1''' - счетчик первого ресурса (денег).&lt;br /&gt;
*'''Ресурс 2''' - счетчик второго ресурса (кристаллов).&lt;br /&gt;
*'''анимация рес.1''' - Анимационный объект награды в ресурсе 1. Должен иметь состояние show.&lt;br /&gt;
*'''анимация рес.2''' - Анимационный объект награды в ресурсе 2. Должен иметь состояние show.&lt;br /&gt;
*'''анимация опыт''' - Анимационный объект награды в опыте. Должен иметь состояние show.&lt;br /&gt;
&lt;br /&gt;
===Окно перед локацией===&lt;br /&gt;
Настройка окна, которое всплывает перед посещением локации. В этом окне отображается информация о локации которую мы хотим посетить.&lt;br /&gt;
&lt;br /&gt;
*'''Окно''' - некая машина, олицетворяющая собой само окно превью. Должна иметь состояния ''open'' - открыта, ''open_lvl'' - не хватает лвл, ''open_buy'' - разница в уровнях позволяет нам купить анлок, ''open_item'' - не хватает предмета для анлока,  ''open_unlock'' - состояние вызываемое окну перед локацией после успешной покупки предмета для анлока, ''open_energy'' - состояние вызываемое окну перед локацией в случае нехватки энергии.&lt;br /&gt;
*'''Превью локации''' - графический ресурс для отображения превью локации. В это поле можно поставить любую картинку для того, чтобы корректно разместить ее в &amp;quot;окне перед локацией&amp;quot;. Далее экономикс сам будет подставлять нужные превью.&lt;br /&gt;
*'''Название локации''' - текстовый объект, в который будет подставляться название локации.&lt;br /&gt;
*'''Описание локации''' - текстовый объект, в который будет подставляться описание локации.&lt;br /&gt;
*'''Уровень мастерства''' - счетчик уровня мастерства.&lt;br /&gt;
*'''Прогрессбар уровня мастерства''' - прогрессбар, который отображает уровень мастерства.&lt;br /&gt;
*'''Текущий уровень''' - счетчик текущего уровня мастерства.&lt;br /&gt;
*'''Необходимая энергия''' - счетчик необходимой энергии.&lt;br /&gt;
*'''Аномальная энергия''' - счетчик, который отображает дополнительную энергию при наличии аномалии в локации.&lt;br /&gt;
*'''Призовой ресурс 1''' - счетчик призовых денег.&lt;br /&gt;
*'''Аномальный ресурс 1''' - счетчик, который отображает количество дополнительных призовых денег, которые даются за игру в локацию с наличием аномалии.&lt;br /&gt;
*'''Призовой ресурс 2''' - счетчик призовых кристаллов.&lt;br /&gt;
*'''Призовой опыт''' - счетчик призового опыта.&lt;br /&gt;
*'''Аномальный опыт''' - счетчик, который отображает значение дополнительного опыта, который дается за игру в локацию с наличием аномалии.&lt;br /&gt;
*'''Таблица коллекции''' - таблица, в которой будут отображаться предметы, которые можно найти в данной локации.&lt;br /&gt;
&lt;br /&gt;
''для закрытой по уровню локации''&lt;br /&gt;
*'''Режим игры''' - машина, которой будут устанавливаться состояния в зависимости от режима игры (может быть смешанный, текст или силуэт). TODO пока обладает только режимом text.&lt;br /&gt;
&lt;br /&gt;
*'''индикатор уровня''' - счетчик с необходимым для локации уровнем.&lt;br /&gt;
&lt;br /&gt;
''для локации c ценой''&lt;br /&gt;
&lt;br /&gt;
*'''цена ресурс 1''' - Стоимость анлока локации в ресурсе 1.&lt;br /&gt;
*'''цена ресурс 2''' - Стоимость анлока локации в ресурсе 2.&lt;br /&gt;
&lt;br /&gt;
''для локации c требуемым предметом''&lt;br /&gt;
&lt;br /&gt;
*'''предмет''' - иконка необходимого для локации предмета.&lt;br /&gt;
*'''название предмета''' - в этом поле указывается название, необходимого для локации предмета.&lt;br /&gt;
*'''счетчик цены''' - счетчик, который отображает стоимость предмета.&lt;br /&gt;
*'''иконка цены'''  - иконка цены предмета, представляет собой картинку, которая перетаскивается из базы ресурсов.&lt;br /&gt;
*'''кнопка купить''' - Будет видна, если предмет нужно купить. Передает экономиксу состояние unlock_item.&lt;br /&gt;
*'''кнопка искать''' - Будет видна, если предмет поисковый.&lt;br /&gt;
*'''блок аномалии''' - контейнер, представляющий собой машину, которая содержит всю информацию про аномалию. Должна содержать в себе состояния hide и show.&lt;br /&gt;
*'''иконка аномалии''' - иконка аномалии.&lt;br /&gt;
*'''название аномалии''' - текстовый объект, который будет отображать название аномалии.&lt;br /&gt;
*'''описание аномалии''' - текстовый объект, который будет отображать описание аномалии.&lt;br /&gt;
*'''иконка предмета''' - иконка предмета, необходимого для того что бы прогнать аномалию.&lt;br /&gt;
*'''кнопка прогнать предметом''' - кнопка по нажатию которой, можно прогнать аномалию используя предмет.&lt;br /&gt;
*'''кнопка купить предмет''' -  кнопка по нажатию которой, можно купить предмет для прогона аномалии.&lt;br /&gt;
*'''кнопка прогнать миниигрой''' - кнопка по нажатию которой, можно прогнать аномалию миниигрой.&lt;br /&gt;
&lt;br /&gt;
===Окно после локации===&lt;br /&gt;
&lt;br /&gt;
Настройка окна, которое всплывает после посещения локации. В этом окне отображается информация о полученных очках и предметах за исследование локации.&lt;br /&gt;
&lt;br /&gt;
*'''Окно''' - некая машина, олицетворяющая собой само окно превью. Должна иметь состояние ''open''.&lt;br /&gt;
*'''Название локации''' - текстовый объект, в который будет подставляться название локации.&lt;br /&gt;
*'''Описание локации''' - текстовый объект, в который будет подставляться описание локации.&lt;br /&gt;
*'''Уровень мастерства''' - счетчик уровня мастерства.&lt;br /&gt;
*'''Прогрессбар мастерства''' - прогрессбар, который отображает уровень мастерства.&lt;br /&gt;
*'''Текущий уровень''' - счетчик текущего уровня мастерства.&lt;br /&gt;
*'''Призовой ресурс 1''' - счетчик призовых денег.&lt;br /&gt;
*'''Аномальный ресурс 1''' - счетчик, который отображает количество дополнительных денег за прохождение локации с аномалией.&lt;br /&gt;
*'''Призовой ресурс 2''' - счетчик призовых кристаллов.&lt;br /&gt;
*'''Призовой опыт''' - счетчик призового опыта.&lt;br /&gt;
*'''Аномальный опыт''' - счетчик, отображающий дополнительный призовой опыт, который дается за прохождение локации с аномалией.&lt;br /&gt;
*'''Таблица коллекции''' - таблица, в которой будут отображаться предметы, которые можно найти в данной локации.&lt;br /&gt;
*'''ничего не найдено''' - Любой объект, так или иначе сообщающий игроку, что он не нашел ничего ценного.&lt;br /&gt;
&lt;br /&gt;
===Окно перед монстром===&lt;br /&gt;
*'''окно''' - некая машина, олицетворяющая собой само окно превью. Должна иметь состояние open.&lt;br /&gt;
*'''превью монстра ''' - картинка, отображающая превью монстра.&lt;br /&gt;
*'''название монстра''' - текстовый объект, показывающий название монстра.&lt;br /&gt;
*'''описание монстра''' - текстовый объект, показывающий описание монстра.&lt;br /&gt;
*'''необходимая энергия''' - счетчик, отображающий количество необходимой энергии.&lt;br /&gt;
*'''призовой ресурс 1''' - счетчик, отображающий количество призовых денег.&lt;br /&gt;
*'''призовой опыт''' - счетчик, отображающий количество призового опыта.&lt;br /&gt;
*'''таблица коллекции''' - таблица, в которой будут отображаться предметы, которые можно отжать у данного монстра.&lt;br /&gt;
*'''иконка предмета''' - картинка, которая отображает предмет необходимый для игры с монстром.&lt;br /&gt;
*'''нужно предметов''' - счетчик, который отображает необходимое количество предметов.&lt;br /&gt;
*'''есть предметов''' - счетчик, который отображает текущее количество предметов, находящееся в наличии.&lt;br /&gt;
*'''суммарная стоимость''' - счетчик, который отображает суммарную стоимость недостающих предметов.&lt;br /&gt;
*'''кнопка купить''' - кнопка, по нажатию которой, происходит покупка недостающих предметов.&lt;br /&gt;
*'''кнопка прогнать''' - кнопка, по нажатию которой, можно прогнать монстра не играя в игру, эту кнопку можно не задавать.&lt;br /&gt;
&lt;br /&gt;
===Окно после монстра===&lt;br /&gt;
&lt;br /&gt;
*'''окно''' - некая машина, олицетворяющая собой само окно превью. Должна иметь состояние open.&lt;br /&gt;
*'''превью монстар''' - картинка, отображающая превью монстра.&lt;br /&gt;
*'''название монстра''' - текстовый объект, показывающий название монстра.&lt;br /&gt;
*'''описание монстра''' - текстовый объект, показывающий описание монстра.&lt;br /&gt;
*'''призовой ресурс 1''' - счетчик, отображающий количество призовых денег.&lt;br /&gt;
*'''призовой опыт''' - счетчик, отображающий количество призового опыта.&lt;br /&gt;
*'''таблица коллекции''' - таблица, в которой будут отображаться предметы, которые можно отжать у данного монстра.&lt;br /&gt;
*'''ничего не найдено''' - любой объект, сообщающий игроку, так или иначе, что он не нашел ничего ценного на данной локации.&lt;br /&gt;
&lt;br /&gt;
===Окно коллекций===&lt;br /&gt;
&lt;br /&gt;
*'''Шаблон коллекции''' - ссылка на объект типа ecollection который будет использоваться в качестве исходного для всех коллекций.&lt;br /&gt;
*'''Таблица''' - таблица, куда по ссылке будут добавлены шаблоны коллекции.&lt;br /&gt;
*'''алерт''' - некая машина, олицетворяющая собой само окно предмета. Должна иметь состояние open. Окно с информацией о предмете всплывает в окне с коллекциями.&lt;br /&gt;
*'''иконка''' - Иконка предмета.&lt;br /&gt;
*'''текст (объект)''' - Текстовый объект в окошке.&lt;br /&gt;
*'''описание (объект)''' - Текстовый объект в окошке, в который сложим описание предмета.&lt;br /&gt;
*'''имя коллекции (объект)''' - В это поле будет записано имя коллекции, к которой относится предмет.&lt;br /&gt;
*'''цифры''' - фреймовая анимация содержащая в себе цифры. Последний фрейм анимации - отметка много.&lt;br /&gt;
&lt;br /&gt;
===Окошко коллекционного предмета===&lt;br /&gt;
&lt;br /&gt;
*'''окно''' - Некая машина, олицетворяющая собой само окно предмета. Должна иметь состояние open. Окошко всплывает при клике на предмет в таблице окна перед/после локации.&lt;br /&gt;
*'''иконка''' - Иконка предмета.&lt;br /&gt;
*'''текст (объект)''' - Текстовый объект в окошке.&lt;br /&gt;
*'''описание (объект)''' - Текстовый объект в окошке, в который сложим описание предмета.&lt;br /&gt;
*'''имя коллекции (объект)''' - В это поле будет записано имя коллекции, к которой относится предмет.&lt;br /&gt;
&lt;br /&gt;
===Окошко поздравления со сдачей коллекции===&lt;br /&gt;
&lt;br /&gt;
*'''окно''' - некая машина,содержащая необходимую информацию, олицетворяющая само окно предмета. Должна иметь в себе состояние open.&lt;br /&gt;
*'''иконка''' - картинка отображающая иконку предмета-награды.&lt;br /&gt;
*'''текст(объект)''' -  текстовый объект, отображающий название коллекции.&lt;br /&gt;
*'''призовой ресурс 1''' - счетчик, отображающий количество призовых денег.&lt;br /&gt;
*'''призовой опыт''' - счетчик, отображающий количество призовых денег.&lt;br /&gt;
&lt;br /&gt;
===Окошко инвентарного предмета===&lt;br /&gt;
&lt;br /&gt;
*'''окно''' - Некая машина, олицетворяющая собой само окно предмета. Должна иметь состояние open. Окошко всплывает при клике на предмет в таблице окна перед/после локации.&lt;br /&gt;
*'''иконка''' - Иконка предмета.&lt;br /&gt;
*'''текст (объект)''' - Текстовый объект в окошке.&lt;br /&gt;
*'''описание (объект)''' - Текстовый объект в окошке, в который сложим описание предмета.&lt;br /&gt;
&lt;br /&gt;
===Окошко поздравления с получением уровня===&lt;br /&gt;
&lt;br /&gt;
*'''окно''' - некая машина, содержащая необходимую информацию, олицетворяющая собой само окно предмета. Должна иметь состояние open.&lt;br /&gt;
*'''уровень''' - счетчик, отображающий номер полученного уровня.&lt;br /&gt;
*'''энергия''' - счетчик, отображающий количество энергии, которая прибавляется к максимуму.&lt;br /&gt;
*'''ресурс 1''' - счетчик, отображающий количество денег.&lt;br /&gt;
*'''ресурс 2''' - счетчик, отображающий количество кристаллов.&lt;br /&gt;
&lt;br /&gt;
===Окошко поздравления с получением уровня и открытием локации===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*'''окно''' - некая машина, содержащая необходимую информацию, олицетворяющая собой само поздравительное окошко. Должна иметь состояние open.&lt;br /&gt;
&lt;br /&gt;
*'''уровень''' - счетчик, отображающий номер полученного уровня.&lt;br /&gt;
&lt;br /&gt;
*'''энергия''' - счетчик, отображающий количество энергии, которая прибавляется к максимуму.&lt;br /&gt;
&lt;br /&gt;
*'''ресурс 1''' - счетчик, отображающий количество денег.&lt;br /&gt;
&lt;br /&gt;
*'''ресурс 2''' - счетчик, отображающий количество кристаллов.&lt;br /&gt;
&lt;br /&gt;
*'''иконка локации''' - картинка, отображающая иконку локации, которая стала доступна&lt;br /&gt;
&lt;br /&gt;
*'''описание локации''' - текстовый объект, который отображает описание локации, которая стала доступна.&lt;br /&gt;
&lt;br /&gt;
===Окошко получения уровня на локации===&lt;br /&gt;
&lt;br /&gt;
*'''окно''' - некая машина, содержащая необходимую информацию, олицетворяющая собой само поздравительное окошко. Должна иметь состояние open.&lt;br /&gt;
*'''опции''' - поле в опциях, в которое записывается уровень по локации.&lt;br /&gt;
&lt;br /&gt;
===Окошко, когда не хватает чарджера (общее) ===&lt;br /&gt;
&lt;br /&gt;
*'''окно''' - некая машина, содержащая необходимую информацию, олицетворяющая собой само уведомительное окошко. Должна иметь состояние open.&lt;br /&gt;
*'''иконка''' - картинка, отображающая иконку предмета, который игрок получит за сдачу коллекции.&lt;br /&gt;
*'''текст''' - текстовый объект, который будет отображать описание коллекции.&lt;br /&gt;
*'''суммарная цена ресурса 1''' - счетчик, отображающий суммарную цену всех необходимых чарджеров, представлена в виде ресурса 1 (деньги).&lt;br /&gt;
*'''суммарная цена ресурса 2''' - счетчик, отображающий суммарную цену всех необходимых чарджеров, представлена в виде ресурса 2 (кристаллы).&lt;br /&gt;
*'''кнопка купить все''' - кнопка, по нажатию которой, происходит покупка необходимых предметов. Если в кнопке есть необходимость она будет появляться, в противном случае - сама исчезать.&lt;br /&gt;
&lt;br /&gt;
===Окошко, которое выезжает когда найден коллекционный предмет ===&lt;br /&gt;
&lt;br /&gt;
*'''окно''' - некая машина, содержащая необходимую информацию, олицетворяет собой само поздравительное окошко. Должна иметь состояние show.&lt;br /&gt;
*'''текст''' - текстовый объект, который используется для отображения названия коллекции.&lt;br /&gt;
*'''таблица''' - таблица, в которую складываются объекты коллекции.&lt;br /&gt;
&lt;br /&gt;
=== Настройки симуляции ===&lt;br /&gt;
&lt;br /&gt;
*'''время''' - время симуляции, измеряется в секундах.&lt;br /&gt;
&lt;br /&gt;
*'''минимум в локации''' - нижняя граница диапазона времени проводимого игроком в хиддене. Отображается в виде доли от времени из настроек локации.&lt;br /&gt;
&lt;br /&gt;
*'''максимум в локации''' - верхняя граница диапазона времени проводимого игроком в хиддене. Отображается в виде доли от времени из настроек локации.&lt;br /&gt;
*'''порог покупки''' - число, указывающее какую долю, от ресурсов игрока, должна составлять цена локации, что бы он решился её купить.&lt;br /&gt;
*'''порог покупки предмета''' - число, указывающее какую долю,от ресурсов игрока, должна составлять цена предмета, что бы он решился его купить.&lt;br /&gt;
*'''вероятность задачи''' - число, отображающее вероятность того, что симуляция будет выбирать не из всех доступных локаций, а из связанных с заданиями.&lt;br /&gt;
*'''вероятность матча''' -  число, отображающее вероятность того, что симуляция будет играть в матч.&lt;br /&gt;
*'''изначально хинтов''' - изначальное количество хинтов.&lt;br /&gt;
*'''предметов на хинт''' - на сколько найденных предметов игрок израсходует хинт.&lt;br /&gt;
*'''цена хинта монеты''' - сколько монет (ресурс 1), стоит некий усредненный хинт.&lt;br /&gt;
*'''цена хинта клисталлы''' - сколько кристаллов (ресурс 2), стоит некий усредненный хинт.&lt;br /&gt;
*'''хидденов подряд''' - игрок будет пытаться пройти не менее данного числа хидденов подряд.&lt;br /&gt;
*'''восстановить энергии''' - некое усредненное количество энергии для восстановления.&lt;br /&gt;
*'''цена энергии монеты''' - сколько монет стоит энергия (цена в ресурсе 1).&lt;br /&gt;
*'''цена энергии кристаллы''' - сколько кристаллов стоит энергия (цена в ресурсе 2).&lt;br /&gt;
*'''вероятность победы в матче'' - число, отображающее вероятность победы в матче.&lt;br /&gt;
*'''время в матче''' - условное время пребывания в матче.&lt;br /&gt;
*'''вероятность покупки за реал''' - каждый раз когда игроку не хватает денег или кристаллов - проверяем эту вероятность.&lt;br /&gt;
*'''цена монеты в деньгах''' - цена монеты в деньгах.&lt;br /&gt;
*'''количество монет в покупке''' - количество монет в покупке.&lt;br /&gt;
*'''цена кристаллов в деньгах''' - цена кристаллов деньгах.&lt;br /&gt;
*'''количество кристаллов в покупке''' - количество кристаллов в покупке.&lt;br /&gt;
&lt;br /&gt;
==Поле economics setup==&lt;br /&gt;
По клику на &amp;quot;...&amp;quot; открывается редактор экономикса. В этом редакторе можно задать все настройки локациям и коллекциям, которые используются в игре.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Economics 1.jpg|500px]]&lt;br /&gt;
&lt;br /&gt;
Economics setup содержит 11 вкладок : локация хидден, коллекция, предметы, окошко когда не хватает чарджера (чарджер), нехватка ресурсов на чарджер, монстр, летающий объект, аномалия, сдача коллекции, временный эффект, достижение.&lt;br /&gt;
Вверху можно увидеть ряд кнопок для добавления и удаления: справа для локаций, слева для уровней мастерства.&lt;br /&gt;
&lt;br /&gt;
===Локация хидден===&lt;br /&gt;
&lt;br /&gt;
Форма редактора экономикса разделена на 4 колонки. В первой колонке мы видим список локаций, используемых в игре. Имена локаций можно изменять. Добавляются новые локации по нажатию на кнопку ''Добавить локацию'', удаляются кнопкой ''Удалить локацию''. Во второй колонке отображаются свойства выделенной локации.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Economics 2.jpg|right]]&lt;br /&gt;
*'''Объект на карте''' - это объект ведущий в локацию с карты. Должен иметь как минимум состояния open и closed, которые ему будет вызывать экономикс.&lt;br /&gt;
*'''индиктор уровня''' - каунтер, который будет отображать номер уровня, начиная с которого локация доступна.&lt;br /&gt;
*'''Экран''' - экран, в котором расположен локация.&lt;br /&gt;
*'''Превью локации''' - графический ресурс для отображения превью локации из базы ресурсов.&lt;br /&gt;
*'''Имя локации''' - название локации, перетаскивается из текстовой базы.&lt;br /&gt;
*'''Описание локации''' - описание, перетаскивается из текстовой базы.&lt;br /&gt;
*'''Уровень''' - уровень требуемый для того, чтобы играть в локацию.&lt;br /&gt;
*'''Результат''' - имя поля в опциях, куда локацией будет занесен результат. Расчитываем найти там число.&lt;br /&gt;
*'''Связанный хидден лист''' - хидден-лист, связанный с локацией.&lt;br /&gt;
*'''необходимый предмет''' - предмет необходимый для входа в локацию. Может быть как коллекционным, так и инвентарным.&lt;br /&gt;
*'''разница в уровнях''' - разница в уровнях, при которой можно купить доступ в локацию.&lt;br /&gt;
*'''цена ресурс 1''' - если наш уровень ниже необходимого на разницу из верхнего поля, мы можем разлочить локацию за деньги.&lt;br /&gt;
*'''цена ресурс 2''' - если наш уровень ниже необходимого на разницу из верхнего поля, мы можем разлочить локацию за кристаллы.&lt;br /&gt;
*'''достижение''' - достижение, которое будет открываться по мере игры в эту локацию.&lt;br /&gt;
*'''процент''' - проценты достижения из предыдущего поля.&lt;br /&gt;
&lt;br /&gt;
В третей  колонке записываются уровни мастерства. Их можно переименовать. Добавляются кнопкой ''Добавить уровень мастерства''. Удаляются кнопкой ''Удалить уровень мастерства''. В четвертой колонке настраивается выделенный уровень мастерства.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Economics 3.jpg|right]]&lt;br /&gt;
*'''энергия''' - энергия требуемая для того, чтобы играть в локацию.&lt;br /&gt;
*'''ресурс 1''' - деньги даваемые за прохождение локации.&lt;br /&gt;
*'''ресурс 2''' - кристаллы даваемые за прохождение локации.&lt;br /&gt;
*'''опыт''' - опыт даваемый за прохождение локации.&lt;br /&gt;
*'''кол-во объектов''' - максимальное количество доступных для поиска объектов в одной игровой сессии.&lt;br /&gt;
*'''время игры''' - общее время игры (если -1, то игнорируется).&lt;br /&gt;
*'''режим игры''' - режим игры: 0 - случайный, 1- слова, 2 - силуэты.&lt;br /&gt;
*'''аномалия''' - вероятность возникновения аномалии в локациях.&lt;br /&gt;
*'''доступные аномалии''' - перечень доступных на данном уровне мастерства аномалий. Записываются в виде чисел через запятую. Доступные значения 0, 1, 2, 3.&lt;br /&gt;
*'''множитель''' - коэффициент, на который умножаются набранные очки. при расчете перехода на следующий уровень. Может быть меньше 1.&lt;br /&gt;
*'''постоянный прирост''' - постоянный прирост, если он больше 0, то будет использоваться ВМЕСТО реально набранных в хиддене очков и множителя.&lt;br /&gt;
*'''очки''' - очки, которые нужно набрать для перехода на следующий уровень мастерства. Набранные в локции очки умножаются на множитель и суммируются. Когда превысят это значение - произойдет переход.&lt;br /&gt;
*'''Предметы''' - id коллекционных предметов, которые можно найти на локации. Не обязаны принадлежать к одной коллекции. Перетаскиваются из текстового редактора. Будет использоваться их иконка.&lt;br /&gt;
*'''Вероятность''' - вероятность найти один из коллекционных предметов из предыдущего поля.&lt;br /&gt;
*'''Вероятность 2''' - вероятность найти один из коллекционных предметов из предыдущего поля.&lt;br /&gt;
*'''Вероятность 3''' - вероятность найти один из коллекционных предметов из предыдущего поля.&lt;br /&gt;
*'''Инвентарь''' - id инвентарных предметов, которые можно найти на локации. Перетаскиваются из текстового редактора.&lt;br /&gt;
*'''Вероятность инв.''' - вероятность найти один из инвентарных предметов из предыдущего поля.&lt;br /&gt;
*'''Вероятность инв. 2''' - вероятность найти один из инвентарных предметов из предыдущего поля.&lt;br /&gt;
*'''Вероятность инв. 3''' - вероятность найти один из инвентарных предметов из предыдущего поля.&lt;br /&gt;
&lt;br /&gt;
===Коллекция===&lt;br /&gt;
&lt;br /&gt;
Во вкладке ''Коллекция'' используются только первые две колонки. В первой колонке отображаются добавленные коллекции. Добавляются кнопкой ''Добавить локацию''. Удаляются кнопкой ''Удалить локацию''. Коллекции можно переименовывать. Второй столбик содержит id предметов входящих в коллекции. Перетаскиваются из текстового редактора. Будет использоваться их иконка. Ресурс 1 и ресурс 2 - ресурсы, которые даются за сдачу коллекции. Опыт - опыт, который дается за сдачу коллекции.&lt;br /&gt;
&lt;br /&gt;
*'''имя''' - Имя (а также - описание, если нужно) конкретно коллекции.&lt;br /&gt;
*'''предметы''' - id предметов входящих в коллекции. Перетаскиваются из текстового редактора. Будет использоваться их иконка.&lt;br /&gt;
*'''ресурс 1''' - деньги даваемые за сдачу коллекции.&lt;br /&gt;
*'''ресурс 2''' - кристаллы даваемые за сдачу коллекции.&lt;br /&gt;
*'''опыт''' - опыт даваемый за сдачу коллекции.&lt;br /&gt;
*'''награда''' - предмет даваемый за сдачу коллекции. Перетаскивается из текстовой базы.&lt;br /&gt;
*'''заряжатели''' - Предметы инвентаря, необходимые для сдачи коллекции. ВНИМАНИЕ: будут использоваться не более первых 4х элементов списка.&lt;br /&gt;
&lt;br /&gt;
===Предметы===&lt;br /&gt;
&lt;br /&gt;
Раздел &amp;quot;Предметы&amp;quot; позволяет добавлять список инвентарных предметов, которые могут использоваться в процессе игры, предоставлять различные бонусы. В первой колонке список предметов. Добавляется кнопкой  &amp;quot;Добавить локацию&amp;quot;, удаляется кнопкой &amp;quot;Удалить локацию&amp;quot;. Предметы могут быть переименованы. Во второй колонке записаны свойства каждого предмета.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Economics 4.jpg|350px|right]]&lt;br /&gt;
&lt;br /&gt;
*'''nm''' - имя предмета&lt;br /&gt;
&lt;br /&gt;
*'''section''' - категория предмета.&lt;br /&gt;
&lt;br /&gt;
*'''use''' - если 1, то предмет может использоваться (кнопка Use видимая).&lt;br /&gt;
&lt;br /&gt;
*'''nm''' - имя предмета (txtID).&lt;br /&gt;
&lt;br /&gt;
*'''опции''' - если это поле задано, то в него будет записываться актуальное количество объектов.&lt;br /&gt;
&lt;br /&gt;
*'''начальное количество''' - начальное  количество предметов данного типа в инвентаре.&lt;br /&gt;
&lt;br /&gt;
*'''можно продать''' - возможность продавать предмет: 1 - можно продать, 0 - нельзя продать.&lt;br /&gt;
&lt;br /&gt;
*'''уникальный''' - если 1 - то предмет уникальный пропадает после покупки, если 0 - предмет после покупки не пропадает.&lt;br /&gt;
&lt;br /&gt;
*'''res1''' - цена предмета в ресурсе 1.&lt;br /&gt;
&lt;br /&gt;
*'''res2''' - цена предмета в ресурсе 2.&lt;br /&gt;
&lt;br /&gt;
*'''sres1''' - продажа - цена предмета в ресурсе 1.&lt;br /&gt;
&lt;br /&gt;
*'''sres2''' - продаже - цена предмета в ресурсе 2.&lt;br /&gt;
&lt;br /&gt;
*'''en''' - восстанавливает энергии единовременно.&lt;br /&gt;
&lt;br /&gt;
*'''tm''' - длительность действия в секундах.&lt;br /&gt;
&lt;br /&gt;
*'''dTm''' - уменьшение времени восстановления энергии в %.&lt;br /&gt;
&lt;br /&gt;
*'''dFnd''' - увеличение вероятности нахождения предмета в %.&lt;br /&gt;
&lt;br /&gt;
*'''dExp''' - увеличение начисляемого опыта в %.&lt;br /&gt;
&lt;br /&gt;
*'''dRes1''' - увеличение полученного ресурса 1 в %.&lt;br /&gt;
&lt;br /&gt;
*'''dRes2''' - увеличение полученного ресурса 2 в %.&lt;br /&gt;
&lt;br /&gt;
*'''dOvP''' - увеличение перегруженной вероятности нахождения предметов в %.&lt;br /&gt;
&lt;br /&gt;
*'''num''' - число предметов в сундуке. Выбираются случайно из следующего поля. При 0 - следующее поле не используется.&lt;br /&gt;
&lt;br /&gt;
*'''items''' - предметы, которые можно найти в сундуке. Перетаскиваются из текстовой базы.&lt;br /&gt;
&lt;br /&gt;
*'''use_id''' - задание этого поля говорит о том, что данный предмет является оптовым пучком для предмета указанного у этом поле. Num, в этом случае, - количество.&lt;br /&gt;
&lt;br /&gt;
*'''объект''' - связанный объект, будет добавляться в инвентарь.&lt;br /&gt;
&lt;br /&gt;
*'''достижение''' - достижение, которое будет открываться по мере применения подобный предметов.&lt;br /&gt;
&lt;br /&gt;
*'''процент''' - процент достижения их предыдущего поля.&lt;br /&gt;
&lt;br /&gt;
*'''владелец''' - на данный момент - номер правильной кнопки в окне угадайки (если -1. то игнорируется).&lt;br /&gt;
&lt;br /&gt;
===Окошко когда не хватает чарджера===&lt;br /&gt;
Позволяет добавлять окна. Окно добавляется кнопкой &amp;quot;Добавить локацию&amp;quot;, окно можно переименовывать, удаляется кнопкой &amp;quot;Удалить локацию&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
*'''название''' - текстовый объект в который вкладывается название чарджера.&lt;br /&gt;
*'''иконка''' - иконка чарджера.&lt;br /&gt;
*'''описание''' - текстовый объект в который вкладывается название чарджера.&lt;br /&gt;
*'''купить''' - кнопка покупка чарджера, передает economics состояние buy_charger.&lt;br /&gt;
*'''искать''' - кнопка поиска чарджера, передает economics состояние search_charger.&lt;br /&gt;
*'''есть''' - счетчик, который показывает сколько чарджеров есть сейчас.&lt;br /&gt;
*'''нужно''' - счетчик, который показывает сколько чарджерова необходимо для сдачи коллекции.&lt;br /&gt;
*'''цена ресурса 1''' - счетчик, который показывает цену чарджера в ресурсе 1.&lt;br /&gt;
*'''цена ресурса 2''' - счетчик, который показывает цену чарджера в ресурсе 2.&lt;br /&gt;
*'''достаточно''' -  объект, который отображается вместо кнопки, в тот момент, когда чарджеров достаточное количество.&lt;br /&gt;
&lt;br /&gt;
===Нехватка ресурсов на чарджер===&lt;br /&gt;
Позволяет изменить состояние выбранному объекту при нехватке ресурсов на чарджер. Добавляется кнопкой &amp;quot;Добавить локацию&amp;quot;, можно переименовывать, удаляется кнопкой &amp;quot;Удалить локацию&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
===Монстр===&lt;br /&gt;
В первой колонке добавляется монстр, добавляется кнопкой &amp;quot;Добавить локацию&amp;quot;, если возможность переименовать, удаляется кнопкой &amp;quot;Удалить локацию&amp;quot;&lt;br /&gt;
Во второй колонке отображаются свойства выделенной колонки.&lt;br /&gt;
&lt;br /&gt;
*'''Объект на карте''' - объект, который представляет монстра на карте. Как правило окно, которое должно иметь состояние hide и show.&lt;br /&gt;
*'''Имя монстра''' - текстовый id из которого берется иконка, имя и описание монстра.&lt;br /&gt;
*'''Экран''' - экран в котором расположена локация.&lt;br /&gt;
*'''min уровень''' - уровень, при достижении которого, появляется монстр.&lt;br /&gt;
*'''max уровень''' - уровень, при достижении которого, монстр исчезает.&lt;br /&gt;
*'''необходимый предмет''' - предмет необходимый для игры с духом.&lt;br /&gt;
*'''количество''' -  количество предметов из поля &amp;quot;необходимый предмет&amp;quot;. &lt;br /&gt;
*'''связанный баттл''' - поле в котором указывается связанный баттл.&lt;br /&gt;
*'''связанный матч''' - полое в котором указывается связанный матч.&lt;br /&gt;
&lt;br /&gt;
В третей колонке записываются уровни мастерства. Их можно переименовывать. Добавляются уровни кнопкой &amp;quot;Добавить уровень мастерства&amp;quot;, удаляются кнопкой &amp;quot;Удалить уровень мастерства&amp;quot;.&lt;br /&gt;
В четвертой колонке настраивается выделенный уровень мастерства.&lt;br /&gt;
&lt;br /&gt;
*'''энергия''' - энергия необходимая для того, что бы можно было начать играть в локацию.&lt;br /&gt;
*'''ресурс1''' - деньги даваемые за прохождение локации.&lt;br /&gt;
*'''опыт''' - опыт даваемый за прохождение локации.&lt;br /&gt;
*'''постоянный прирост''' - постоянный прирост.&lt;br /&gt;
*'''очки''' - количество очков, которое необходимо набрать для перехода на следующий уровень мастерства.&lt;br /&gt;
*'''предметы''' - id коллекционных предметов, которые можно найти на локации. Предметы не обязательно должны быть из одной коллекции. Необходимые предметы перетаскиваются из текстового редактора, при этом будет использоваться их иконка.&lt;br /&gt;
*'''Вероятность''' - вероятность найти один из коллекционных предметов из поля &amp;quot;предметы&amp;quot;.&lt;br /&gt;
*'''Вероятность 2''' - вероятность найти один из коллекционных предметов из поля &amp;quot;предметы&amp;quot;.&lt;br /&gt;
*'''Вероятность 3''' - вероятность найти один из коллекционных предметов из поля &amp;quot;предметы&amp;quot;.&lt;br /&gt;
*'''Инвентарь''' - id инвентарных предметов, которые можно найти на локации. Перетаскиваются из текстового редактора.&lt;br /&gt;
*'''Вероятность инв.''' - вероятность найти один из инвентарных предметов из поля &amp;quot;инвентарь&amp;quot;.&lt;br /&gt;
*'''Вероятность инв. 2''' - вероятность найти один из инвентарных предметов из поля &amp;quot;инвентарь&amp;quot;.&lt;br /&gt;
*'''Вероятность инв. 3''' - вероятность найти один из инвентарных предметов из поля &amp;quot;инвентарь&amp;quot;.&lt;br /&gt;
*'''жизни врага''' - записываются значения вражеских жизней.&lt;br /&gt;
*'''начальные жизни врага''' - начальное значение вражеских жизней.&lt;br /&gt;
*'''регенерация врага''' - время (в ms), за которое у противника отрастает жизнь. Если установлено -1, то отрастания жизни противника на происходит.&lt;br /&gt;
*'''число цветов''' - это число будет записываться в параметр numTokenNums матча.&lt;br /&gt;
&lt;br /&gt;
===Летающий объект===&lt;br /&gt;
Впервой колонке кнопкой &amp;quot;Добавить локацию&amp;quot; добавляется летающий объект - объекты которые вылетают после прохождения локации или после покупки сундуков. Удаляется кнопкой &amp;quot;Удалить локацию&amp;quot;. Во второй колонке добавляется объект выделенного летающего объекта. Состояния hide, wait, inventory и  collection  -  обязательны для этого предмета.&lt;br /&gt;
&lt;br /&gt;
===Аномалия===&lt;br /&gt;
&lt;br /&gt;
Впервой колонке добавляется аномалия, добавляется кнопкой &amp;quot;Добавить локацию&amp;quot;, можно переименовывать, удаляется кнопкой &amp;quot;Удалить локацию&amp;quot;.&lt;br /&gt;
Во второй колонке отображаются свойства выделенной аномалии.&lt;br /&gt;
*'''id''' - поле в которое перетаскивается текстовый id, из которого используется название, описание и иконка аномалии.&lt;br /&gt;
*'''предмет''' - предмет необходимый для того, что бы изгнать аномалию.&lt;br /&gt;
*'''экран''' -  в этом поле указывается экран, в котором расположена миниигра.&lt;br /&gt;
*'''прибавка к энергии''' - указывается прибавка к энергии, поскольку для игры в аномалию будет нужно больше энергии. Например, при значении 0,5 - энергии потребуется больше в полтора раза.&lt;br /&gt;
*'''прибавка к опыту''' - указывается прибавка к опыту, поскольку игра в локацию с аномалией будет давать больше опыта. Например, при значении 0,5 - опыта приобретается больше в полтора раза.&lt;br /&gt;
*'''прибавка к ресурсу 1''' - указывается прибавка к ресурсу 1. поскольку игра в локацию с аномалией будет давать больше ресурса 1. Например, при значении 0,5 - ресурса 1 приобретается больше в полтора раза.&lt;br /&gt;
&lt;br /&gt;
===Сдача коллекции===&lt;br /&gt;
&lt;br /&gt;
В первой колонке добавляется сдача колонки, кнопкой &amp;quot;Добавить локацию&amp;quot;, удаляется кнопкой &amp;quot;Удалить локацию&amp;quot;&lt;br /&gt;
Во второй колонке устанавливается состояние объекту сдачи коллекции.&lt;br /&gt;
&lt;br /&gt;
===Временный эффект===&lt;br /&gt;
&lt;br /&gt;
в первой колонке создается временный эффект, добавляется кнопкой &amp;quot;Добавить локацию&amp;quot;, удаляется кнопкой &amp;quot;Удалить локацию&amp;quot;.&lt;br /&gt;
Во второй колонке устанавливаются свойства выделенного временного эффекта.&lt;br /&gt;
&lt;br /&gt;
*'''иконка''' - из редактора ресурсов, перетаскивается иконка временного эффекта&lt;br /&gt;
*'''таймер''' - указывается объект типа timer, который соответствует выбранному временному эффекту.&lt;br /&gt;
*'''подложка''' - из редактора ресурсов, перетаскивается картинка подложки для таймера указанного в поле &amp;quot;таймер&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
===Достижение===&lt;br /&gt;
В первой колонке записываются достижения. Добавляются кнопкой &amp;quot;Добавить локацию&amp;quot;, удаляются кнопкой &amp;quot;Удалить локацию&amp;quot;. &lt;br /&gt;
Во второй колонке отображаются свойства выбранного достижения.&lt;br /&gt;
&lt;br /&gt;
*'''достижение''' - достижение, которое будет открываться по мере применения подобных предметов.&lt;br /&gt;
&lt;br /&gt;
*'''процент''' - в виде числа, указывается процент достижения из поля &amp;quot;достижение&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
*'''режим игры''' - указывается режим игры, ели 0 - режим игры не важен для достижения, 1 - режим игры слова, 2 - режим игры силуэты.&lt;br /&gt;
&lt;br /&gt;
*'''аномалия''' - указывается аномалия необходимая для достижения, если указывается -2 -  то аномалия не важна для достижения, если указывается -1 - то для достижения может использоваться любая аномалия.&lt;br /&gt;
&lt;br /&gt;
==Состояния==&lt;br /&gt;
&lt;br /&gt;
[[Файл:Economics 5.jpg|right]]&lt;br /&gt;
Перед вызовом некоторых состояний объекту economics необходимо передать параметр '''param''' и его значение. Например когда нам нужно открыть окно перед локацией мы передаем параметр номера этой локации в списке локаций (начиная с 0).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear /br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*'''completed''' - передает состояние окончания исследования локации (необходим параметр номера локации).&lt;br /&gt;
*'''exp''' - передает состояние начисления опыта (необходим параметр количества опыта). Нужен больше для тестирования, чем для самой игры.&lt;br /&gt;
*'''play''' - передает состояния перехода на локацию для исследования.&lt;br /&gt;
*'''location''' - открывает окно перед локацией (необходим параметр номера локации).&lt;br /&gt;
*'''collection''' - заставляет экономикс заполнить таблицу коллекций. Лучше вызывать сразу перед открытием окна коллекций или во время его открытия.&lt;br /&gt;
*'''collections_scroll''' - заполняет таблицу коллекций и проматывает на коллекцию содержащую последний предмет для которого было показано окошко с информацией о предмете.&lt;br /&gt;
*'''item_collections''' - заставляет экономикс показать окошко с информацией о коллекционном предмете. Вызывается при тапе на таблицу в темплейте коллекций (объект ecollection).&lt;br /&gt;
*'''item_preview''' - заставляет экономикс показать окошко с информацией о предмете, который можно найти при обыске локации. Вызывается при тапе на таблицу с предметами в окне перед локацией.&lt;br /&gt;
*'''item_review''' - заставляет экономикс показать окошко с информацией о предмете, который нашли после обыска локации. Вызывается при тапе на таблицу с предметами в окне после локации.&lt;br /&gt;
*'''completed_animation''' - состояние запускает анимацию полученной награды за прохождение локации после &amp;quot;окна после локации&amp;quot;. Можно запускать из состояния закрытия окна после локации.&lt;br /&gt;
*'''unlock_item''' - передает состояние покупки предмета, необходимого для открытия локации. Как правило, предмет находится в окне перед локацией.&lt;br /&gt;
*'''unlock''' -  передает состояние при котором происходит разлочка локации если текущий уровень на один ниже, чем необходимый для открытии локации или значение ''разница в уровнях'', позволяет разлочить локацию. Как правило кнопка для разблокирования локации размещается в окне перед локацией.&lt;br /&gt;
*'''completed_reward''' - вызывается объектом анимации награды после прохождения локации. Если объектов несколько (опыт, монеты, кристаллы), то вызывается только один раз одним из объектов.&lt;br /&gt;
*'''search_charger''' - производит поиск недостающего чарджера.&lt;br /&gt;
*'''buy_charger''' - производит покупку недостающего чарджера.&lt;br /&gt;
&lt;br /&gt;
=Сопутствующие объекты=&lt;br /&gt;
&lt;br /&gt;
Объекты, которые используются вместе с объектом economics и имеют с ним непосредственную связь:&lt;br /&gt;
&lt;br /&gt;
* [[Файл:E_items.png]] - [[Eitems]] - объект, служащий для связи инвентаря(магазина) и экономики. &lt;br /&gt;
* [[Файл:E_store_item.png]] - [[Estoreitem]] - шаблон для ячейки магазина. &lt;br /&gt;
* [[Файл:E_inventory_item.png]] - [[Einventoryitem]] - шаблон для ячейки инвентаря. &lt;br /&gt;
* [[Файл:Taskorganizer.png]] - [[Taskorganizer]] - органайзер заданий.&lt;br /&gt;
* [[Файл:E_task_item.png]] - [[Etaskitem]] - шаблон для ячейки задания.&lt;br /&gt;
* [[Файл:E_collection.png]] - [[Ecollection]] - шаблон для строки в таблице коллекции.&lt;br /&gt;
* [[Файл:Economics.png]] - [[Economics]] - глобальная настройка игр типа ферма\билдер&lt;/div&gt;</summary>
		<author><name>Podkor</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.appsalutecreator.com/index.php?title=Text&amp;diff=5152</id>
		<title>Text</title>
		<link rel="alternate" type="text/html" href="https://wiki.appsalutecreator.com/index.php?title=Text&amp;diff=5152"/>
		<updated>2013-09-16T08:20:54Z</updated>

		<summary type="html">&lt;p&gt;Podkor: /* Параметры */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Введение ==&lt;br /&gt;
[[Файл:2223.png]]&amp;lt;br&amp;gt;&lt;br /&gt;
Для отображения текстовой информации с поддержкой многоязычности. Для управления текстовыми ресурсами используется TextEditor. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если необходимо разместить текст на сцене необходимо создать объект с типом text и перетащить на поле текстID текстовую строку из TextEditor. Также можно просто перенести их TextEditor выбранную текстовую запись, при этом автоматически создастся объект с типом Text.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Параметры объекта ==&lt;br /&gt;
&lt;br /&gt;
=== Общие параметры ===&lt;br /&gt;
(см. описание [[Object|Object]])&lt;br /&gt;
&lt;br /&gt;
=== Основные параметры ===&lt;br /&gt;
&lt;br /&gt;
*'''res''' - Графический ресурс подложки на которой выводится текст. Перетаскивается мышкой из редактора текста (поле должно находится в состоянии редактирования). Может отсутствовать.&lt;br /&gt;
*'''текстID''' - Выводимый текст перетаскивается из ресурса тектстов, для перетягивания поле в объекте Text должно быть в режиме редактирования. Решетка (#) разделяет на страницы, черта (|) - принудительный переход на новую строку.&lt;br /&gt;
*'''текст''' - Выводимый текст без использования базы текстовых ресурсов. Решетка (#) разделяет на страницы, черта (|) - принудительный переход на новую строку.&lt;br /&gt;
*'''состояние''' - в поле указывается состояние текстового объекта, в которое он перейдет при загрузке экрана (это поле часто оставляют пустым, а состояния задают машиной).&lt;br /&gt;
&lt;br /&gt;
 '''!!! - Необходимо обязательно сохранять любые изменения с текстом в редакторе TextEditor.'''&lt;br /&gt;
&lt;br /&gt;
[[Файл:Text1.PNG|800px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
=== Дополнительные параметры ===&lt;br /&gt;
&lt;br /&gt;
[[Файл:Text2.PNG|800px|thumb|right]] &lt;br /&gt;
&lt;br /&gt;
'''Группа - форматирования'''&lt;br /&gt;
&lt;br /&gt;
*'''dx''' - Бордюр (отступ текста слева и справа от границы прямоугольника объекта);&lt;br /&gt;
*'''dy''' - Бордюр (отступ текста сверху и снизу от границы прямоугольника объекта);&lt;br /&gt;
*'''отступ''' - Вертикальное расстояние между строчками в пикселях;&lt;br /&gt;
*'''h align''' - Горизонтальное форматирование. Если (c) - центрирование по горизонтали, если (r) - прижатие вправо;&lt;br /&gt;
*'''v align''' - Вертикальное форматирование. Если (c) - центрирование по вертикали.&lt;br /&gt;
[[Файл:2224.png|250px|center]]&lt;br /&gt;
[[Файл:Text11.png|250px|left]]&lt;br /&gt;
[[Файл:Text22.png|250px|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Группа - Параметры отображения текста'''&lt;br /&gt;
&lt;br /&gt;
*'''время до открытия''' - Время перед началом проявления текста (от невидимого до заданной прозрачности);&lt;br /&gt;
*'''время открытия''' - Время проявления текста и подложки до alpha в начале;&lt;br /&gt;
*'''время закрытия''' - Время исчезновения текста и подложки от alpha до 0 в конце. Если отрицательно - текст не закрывается;&lt;br /&gt;
*'''буквы''' - Задержка в ms для перехода к новой букве при подсветке;&lt;br /&gt;
*'''слова''' - Задержка в ms перед подсветкой следующего слова;&lt;br /&gt;
*'''страницы''' - Задержка в ms перед переходом к следующей странице или увяданию по alpha-каналу.&lt;br /&gt;
&lt;br /&gt;
'''Группа - Параметры используемого [[шрифт]]а'''&lt;br /&gt;
&lt;br /&gt;
*'''имя''' - Номер [[шрифт]]а - целое число, начиная с 0 (порядковый номер шрифта).&lt;br /&gt;
*'''размер''' - Размер [[шрифт]]а в поинтах.&lt;br /&gt;
*'''цвет 1''' - Цвет текста начального вида (бледный).&lt;br /&gt;
*'''цвет 2''' - Цвет прочитанного текста (контрастный). Чтение делается по буквам.&lt;br /&gt;
               &lt;br /&gt;
'''Группа - Параметры поведения текста'''&lt;br /&gt;
&lt;br /&gt;
*'''автопромотка''' - Автоматический переход на следующую страницу после завершения отображения текста;&lt;br /&gt;
* '''зациклить''' - Зациклить страницы (после последней, перейти опять на первую);&lt;br /&gt;
*'''подсветка''' - Тип подсветки: &lt;br /&gt;
**0-не подсвечивать, &lt;br /&gt;
**1-по слову; &lt;br /&gt;
**2-по букве слова (караоке); &lt;br /&gt;
**3-по букве с начала страницы.&lt;br /&gt;
*'''звук''' - 1 - есть озвучка, 0 - нет;&lt;br /&gt;
*'''случайный выбор''' - 1 - при переключении страницы будет выбираться случайная, 0 - все страницы последовательно. Если выбрана 1 - в редакторе Texts Editor между страницами надо поставить знак #. &lt;br /&gt;
&amp;lt;br&amp;gt;Например:&lt;br /&gt;
&lt;br /&gt;
[[Файл:Text3.PNG|800px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
*'''голос''' - голос для озвучки. Звуковой файл для одной реплики.&lt;br /&gt;
*'''позиционирование текста'''&lt;br /&gt;
** горизонтальное -  0 - нет выравнивания; 1 - прижать к левому краю; 2 - центр; 3 - к правому;&lt;br /&gt;
** вертикальное  - 0 - нет выравнивания; 1 - прижать к верхнему краю; 2 - центр; 3 - к нижнему.&lt;br /&gt;
&lt;br /&gt;
=== Добавляемые параметры ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Menadd.png|300px|right]]&lt;br /&gt;
Меню выбора ''Добавляемые параметры'' к объектам активируется по правой кнопки мыши. &lt;br /&gt;
&lt;br /&gt;
[[Файл:+.png]] '''голос для озвучки''' - голос для озвучки 1 реплики. Следить за тем, чтобы количество звуков совпадало с количеством реплик.&lt;br /&gt;
=== Состояния ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*'''start''' - это состояние проверяет время ''до открытия'' и переходит либо в ''beg'', если время до открытия не ноль, либо в ''open'', если время до открытия равняется нулю;&lt;br /&gt;
&lt;br /&gt;
*'''beg''' - это состояние &amp;quot;ждет&amp;quot; время ''до открытия'' и переходит в ''open'';&lt;br /&gt;
&lt;br /&gt;
*'''open''' - плавно проявляет текст до его нормального ''alpha'' в течении ''времени открытия'';&lt;br /&gt;
&lt;br /&gt;
*'''first''' - это состояние перезапускает текст без появления по ''alpha''; в этом состоянии текстовый объект мгновенно отобразит первую (или единственную) страницу текста; &lt;br /&gt;
&lt;br /&gt;
*'''next''' - в этом состоянии текстовый объект мгновенно отобразит следующую за текущей страницу текста (если текущая страница - последняя, то в этом состоянии ничего не произойдет);&lt;br /&gt;
&lt;br /&gt;
*'''close''' - плавно растворяет текст до ''alpha=0'' в течении ''времени закрытия'', после чего переходит в состояние ''end'';&lt;br /&gt;
&lt;br /&gt;
*'''end''' - в этом состоянии текстовый объект не отображается.&lt;br /&gt;
&lt;br /&gt;
=== Параметры ===&lt;br /&gt;
&lt;br /&gt;
*'''txtID''' - меняет объекту текстовый id. Перетягиваем из текстового редактора в поле ''val_txt'' необходимый текстовый id.&lt;br /&gt;
*'''fc1'''  -  предоставляет возможность изменить цвет шрифта текстового объекта. В поле ''val'' вписывается цвет в виде 16-го кода.&lt;br /&gt;
*'''sense''' -  позволяет отображать разные поля текстового id. Если установить значение 0 - у текстового объекта будет отображаться поле ''word'', если 1 - ''sentence1'', если 2 - ''sentence2''.&lt;br /&gt;
&lt;br /&gt;
== Пример применения ==&lt;br /&gt;
&lt;br /&gt;
[[Файл:Text3.PNG|800px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
[[Файл:Ex3.PNG|800px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
== Примечания и дополнения ==&lt;br /&gt;
&lt;br /&gt;
* Если у одного текстового ID слишком много страниц или же они должны меняться в запутанном порядке, то лучше создать несколько тестовых ID и по очереди присваивать их одному текстовому объекту с помощью машины состояний: команда ''set'', параметры ''obj''(текстовый объект), ''par''(txtID), ''val_txt''(текстовый ID, перетаскивается кнопкой мыши из редактора текстов).&lt;br /&gt;
* Отображать и делать невидимым текст можно несколькими способами, например, менять общие параметры vis или al, но целесообразней использовать состояния текстового объекта ''start'' и ''close''.&lt;br /&gt;
* Разделение строк в текстовой базе символом ''#'' можно использовать, если страниц 2(3). В этом случае для смены страниц используют состояние ''next''. Если страниц больше 2(3), лучше создать несколько текстовых ID и присваивать их текстовому объекту с помощью машины состояний.&lt;br /&gt;
* Значения временных параметров по умолчанию: &lt;br /&gt;
:время до открытия - 0, &lt;br /&gt;
:время открытия - 500,&lt;br /&gt;
:время закрытия - 500, &lt;br /&gt;
:буквы - 30, &lt;br /&gt;
:слова - 30, &lt;br /&gt;
:страницы - 500. &lt;br /&gt;
:Другими словами такие значения параметров равносильны нулю.&lt;br /&gt;
 '''Для постепенного открытия (закрытия) текста следует указывать временные параметры отличные от значений по умолчанию.'''&lt;/div&gt;</summary>
		<author><name>Podkor</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.appsalutecreator.com/index.php?title=Text&amp;diff=5151</id>
		<title>Text</title>
		<link rel="alternate" type="text/html" href="https://wiki.appsalutecreator.com/index.php?title=Text&amp;diff=5151"/>
		<updated>2013-09-16T08:10:49Z</updated>

		<summary type="html">&lt;p&gt;Podkor: /* Состояния */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Введение ==&lt;br /&gt;
[[Файл:2223.png]]&amp;lt;br&amp;gt;&lt;br /&gt;
Для отображения текстовой информации с поддержкой многоязычности. Для управления текстовыми ресурсами используется TextEditor. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если необходимо разместить текст на сцене необходимо создать объект с типом text и перетащить на поле текстID текстовую строку из TextEditor. Также можно просто перенести их TextEditor выбранную текстовую запись, при этом автоматически создастся объект с типом Text.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Параметры объекта ==&lt;br /&gt;
&lt;br /&gt;
=== Общие параметры ===&lt;br /&gt;
(см. описание [[Object|Object]])&lt;br /&gt;
&lt;br /&gt;
=== Основные параметры ===&lt;br /&gt;
&lt;br /&gt;
*'''res''' - Графический ресурс подложки на которой выводится текст. Перетаскивается мышкой из редактора текста (поле должно находится в состоянии редактирования). Может отсутствовать.&lt;br /&gt;
*'''текстID''' - Выводимый текст перетаскивается из ресурса тектстов, для перетягивания поле в объекте Text должно быть в режиме редактирования. Решетка (#) разделяет на страницы, черта (|) - принудительный переход на новую строку.&lt;br /&gt;
*'''текст''' - Выводимый текст без использования базы текстовых ресурсов. Решетка (#) разделяет на страницы, черта (|) - принудительный переход на новую строку.&lt;br /&gt;
*'''состояние''' - в поле указывается состояние текстового объекта, в которое он перейдет при загрузке экрана (это поле часто оставляют пустым, а состояния задают машиной).&lt;br /&gt;
&lt;br /&gt;
 '''!!! - Необходимо обязательно сохранять любые изменения с текстом в редакторе TextEditor.'''&lt;br /&gt;
&lt;br /&gt;
[[Файл:Text1.PNG|800px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
=== Дополнительные параметры ===&lt;br /&gt;
&lt;br /&gt;
[[Файл:Text2.PNG|800px|thumb|right]] &lt;br /&gt;
&lt;br /&gt;
'''Группа - форматирования'''&lt;br /&gt;
&lt;br /&gt;
*'''dx''' - Бордюр (отступ текста слева и справа от границы прямоугольника объекта);&lt;br /&gt;
*'''dy''' - Бордюр (отступ текста сверху и снизу от границы прямоугольника объекта);&lt;br /&gt;
*'''отступ''' - Вертикальное расстояние между строчками в пикселях;&lt;br /&gt;
*'''h align''' - Горизонтальное форматирование. Если (c) - центрирование по горизонтали, если (r) - прижатие вправо;&lt;br /&gt;
*'''v align''' - Вертикальное форматирование. Если (c) - центрирование по вертикали.&lt;br /&gt;
[[Файл:2224.png|250px|center]]&lt;br /&gt;
[[Файл:Text11.png|250px|left]]&lt;br /&gt;
[[Файл:Text22.png|250px|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Группа - Параметры отображения текста'''&lt;br /&gt;
&lt;br /&gt;
*'''время до открытия''' - Время перед началом проявления текста (от невидимого до заданной прозрачности);&lt;br /&gt;
*'''время открытия''' - Время проявления текста и подложки до alpha в начале;&lt;br /&gt;
*'''время закрытия''' - Время исчезновения текста и подложки от alpha до 0 в конце. Если отрицательно - текст не закрывается;&lt;br /&gt;
*'''буквы''' - Задержка в ms для перехода к новой букве при подсветке;&lt;br /&gt;
*'''слова''' - Задержка в ms перед подсветкой следующего слова;&lt;br /&gt;
*'''страницы''' - Задержка в ms перед переходом к следующей странице или увяданию по alpha-каналу.&lt;br /&gt;
&lt;br /&gt;
'''Группа - Параметры используемого [[шрифт]]а'''&lt;br /&gt;
&lt;br /&gt;
*'''имя''' - Номер [[шрифт]]а - целое число, начиная с 0 (порядковый номер шрифта).&lt;br /&gt;
*'''размер''' - Размер [[шрифт]]а в поинтах.&lt;br /&gt;
*'''цвет 1''' - Цвет текста начального вида (бледный).&lt;br /&gt;
*'''цвет 2''' - Цвет прочитанного текста (контрастный). Чтение делается по буквам.&lt;br /&gt;
               &lt;br /&gt;
'''Группа - Параметры поведения текста'''&lt;br /&gt;
&lt;br /&gt;
*'''автопромотка''' - Автоматический переход на следующую страницу после завершения отображения текста;&lt;br /&gt;
* '''зациклить''' - Зациклить страницы (после последней, перейти опять на первую);&lt;br /&gt;
*'''подсветка''' - Тип подсветки: &lt;br /&gt;
**0-не подсвечивать, &lt;br /&gt;
**1-по слову; &lt;br /&gt;
**2-по букве слова (караоке); &lt;br /&gt;
**3-по букве с начала страницы.&lt;br /&gt;
*'''звук''' - 1 - есть озвучка, 0 - нет;&lt;br /&gt;
*'''случайный выбор''' - 1 - при переключении страницы будет выбираться случайная, 0 - все страницы последовательно. Если выбрана 1 - в редакторе Texts Editor между страницами надо поставить знак #. &lt;br /&gt;
&amp;lt;br&amp;gt;Например:&lt;br /&gt;
&lt;br /&gt;
[[Файл:Text3.PNG|800px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
*'''голос''' - голос для озвучки. Звуковой файл для одной реплики.&lt;br /&gt;
*'''позиционирование текста'''&lt;br /&gt;
** горизонтальное -  0 - нет выравнивания; 1 - прижать к левому краю; 2 - центр; 3 - к правому;&lt;br /&gt;
** вертикальное  - 0 - нет выравнивания; 1 - прижать к верхнему краю; 2 - центр; 3 - к нижнему.&lt;br /&gt;
&lt;br /&gt;
=== Добавляемые параметры ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Menadd.png|300px|right]]&lt;br /&gt;
Меню выбора ''Добавляемые параметры'' к объектам активируется по правой кнопки мыши. &lt;br /&gt;
&lt;br /&gt;
[[Файл:+.png]] '''голос для озвучки''' - голос для озвучки 1 реплики. Следить за тем, чтобы количество звуков совпадало с количеством реплик.&lt;br /&gt;
=== Состояния ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*'''start''' - это состояние проверяет время ''до открытия'' и переходит либо в ''beg'', если время до открытия не ноль, либо в ''open'', если время до открытия равняется нулю;&lt;br /&gt;
&lt;br /&gt;
*'''beg''' - это состояние &amp;quot;ждет&amp;quot; время ''до открытия'' и переходит в ''open'';&lt;br /&gt;
&lt;br /&gt;
*'''open''' - плавно проявляет текст до его нормального ''alpha'' в течении ''времени открытия'';&lt;br /&gt;
&lt;br /&gt;
*'''first''' - это состояние перезапускает текст без появления по ''alpha''; в этом состоянии текстовый объект мгновенно отобразит первую (или единственную) страницу текста; &lt;br /&gt;
&lt;br /&gt;
*'''next''' - в этом состоянии текстовый объект мгновенно отобразит следующую за текущей страницу текста (если текущая страница - последняя, то в этом состоянии ничего не произойдет);&lt;br /&gt;
&lt;br /&gt;
*'''close''' - плавно растворяет текст до ''alpha=0'' в течении ''времени закрытия'', после чего переходит в состояние ''end'';&lt;br /&gt;
&lt;br /&gt;
*'''end''' - в этом состоянии текстовый объект не отображается.&lt;br /&gt;
&lt;br /&gt;
=== Параметры ===&lt;br /&gt;
&lt;br /&gt;
== Пример применения ==&lt;br /&gt;
&lt;br /&gt;
[[Файл:Text3.PNG|800px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
[[Файл:Ex3.PNG|800px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
== Примечания и дополнения ==&lt;br /&gt;
&lt;br /&gt;
* Если у одного текстового ID слишком много страниц или же они должны меняться в запутанном порядке, то лучше создать несколько тестовых ID и по очереди присваивать их одному текстовому объекту с помощью машины состояний: команда ''set'', параметры ''obj''(текстовый объект), ''par''(txtID), ''val_txt''(текстовый ID, перетаскивается кнопкой мыши из редактора текстов).&lt;br /&gt;
* Отображать и делать невидимым текст можно несколькими способами, например, менять общие параметры vis или al, но целесообразней использовать состояния текстового объекта ''start'' и ''close''.&lt;br /&gt;
* Разделение строк в текстовой базе символом ''#'' можно использовать, если страниц 2(3). В этом случае для смены страниц используют состояние ''next''. Если страниц больше 2(3), лучше создать несколько текстовых ID и присваивать их текстовому объекту с помощью машины состояний.&lt;br /&gt;
* Значения временных параметров по умолчанию: &lt;br /&gt;
:время до открытия - 0, &lt;br /&gt;
:время открытия - 500,&lt;br /&gt;
:время закрытия - 500, &lt;br /&gt;
:буквы - 30, &lt;br /&gt;
:слова - 30, &lt;br /&gt;
:страницы - 500. &lt;br /&gt;
:Другими словами такие значения параметров равносильны нулю.&lt;br /&gt;
 '''Для постепенного открытия (закрытия) текста следует указывать временные параметры отличные от значений по умолчанию.'''&lt;/div&gt;</summary>
		<author><name>Podkor</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.appsalutecreator.com/index.php?title=Text&amp;diff=5150</id>
		<title>Text</title>
		<link rel="alternate" type="text/html" href="https://wiki.appsalutecreator.com/index.php?title=Text&amp;diff=5150"/>
		<updated>2013-09-16T08:08:44Z</updated>

		<summary type="html">&lt;p&gt;Podkor: /* Добавляемые параметры */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Введение ==&lt;br /&gt;
[[Файл:2223.png]]&amp;lt;br&amp;gt;&lt;br /&gt;
Для отображения текстовой информации с поддержкой многоязычности. Для управления текстовыми ресурсами используется TextEditor. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если необходимо разместить текст на сцене необходимо создать объект с типом text и перетащить на поле текстID текстовую строку из TextEditor. Также можно просто перенести их TextEditor выбранную текстовую запись, при этом автоматически создастся объект с типом Text.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Параметры объекта ==&lt;br /&gt;
&lt;br /&gt;
=== Общие параметры ===&lt;br /&gt;
(см. описание [[Object|Object]])&lt;br /&gt;
&lt;br /&gt;
=== Основные параметры ===&lt;br /&gt;
&lt;br /&gt;
*'''res''' - Графический ресурс подложки на которой выводится текст. Перетаскивается мышкой из редактора текста (поле должно находится в состоянии редактирования). Может отсутствовать.&lt;br /&gt;
*'''текстID''' - Выводимый текст перетаскивается из ресурса тектстов, для перетягивания поле в объекте Text должно быть в режиме редактирования. Решетка (#) разделяет на страницы, черта (|) - принудительный переход на новую строку.&lt;br /&gt;
*'''текст''' - Выводимый текст без использования базы текстовых ресурсов. Решетка (#) разделяет на страницы, черта (|) - принудительный переход на новую строку.&lt;br /&gt;
*'''состояние''' - в поле указывается состояние текстового объекта, в которое он перейдет при загрузке экрана (это поле часто оставляют пустым, а состояния задают машиной).&lt;br /&gt;
&lt;br /&gt;
 '''!!! - Необходимо обязательно сохранять любые изменения с текстом в редакторе TextEditor.'''&lt;br /&gt;
&lt;br /&gt;
[[Файл:Text1.PNG|800px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
=== Дополнительные параметры ===&lt;br /&gt;
&lt;br /&gt;
[[Файл:Text2.PNG|800px|thumb|right]] &lt;br /&gt;
&lt;br /&gt;
'''Группа - форматирования'''&lt;br /&gt;
&lt;br /&gt;
*'''dx''' - Бордюр (отступ текста слева и справа от границы прямоугольника объекта);&lt;br /&gt;
*'''dy''' - Бордюр (отступ текста сверху и снизу от границы прямоугольника объекта);&lt;br /&gt;
*'''отступ''' - Вертикальное расстояние между строчками в пикселях;&lt;br /&gt;
*'''h align''' - Горизонтальное форматирование. Если (c) - центрирование по горизонтали, если (r) - прижатие вправо;&lt;br /&gt;
*'''v align''' - Вертикальное форматирование. Если (c) - центрирование по вертикали.&lt;br /&gt;
[[Файл:2224.png|250px|center]]&lt;br /&gt;
[[Файл:Text11.png|250px|left]]&lt;br /&gt;
[[Файл:Text22.png|250px|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Группа - Параметры отображения текста'''&lt;br /&gt;
&lt;br /&gt;
*'''время до открытия''' - Время перед началом проявления текста (от невидимого до заданной прозрачности);&lt;br /&gt;
*'''время открытия''' - Время проявления текста и подложки до alpha в начале;&lt;br /&gt;
*'''время закрытия''' - Время исчезновения текста и подложки от alpha до 0 в конце. Если отрицательно - текст не закрывается;&lt;br /&gt;
*'''буквы''' - Задержка в ms для перехода к новой букве при подсветке;&lt;br /&gt;
*'''слова''' - Задержка в ms перед подсветкой следующего слова;&lt;br /&gt;
*'''страницы''' - Задержка в ms перед переходом к следующей странице или увяданию по alpha-каналу.&lt;br /&gt;
&lt;br /&gt;
'''Группа - Параметры используемого [[шрифт]]а'''&lt;br /&gt;
&lt;br /&gt;
*'''имя''' - Номер [[шрифт]]а - целое число, начиная с 0 (порядковый номер шрифта).&lt;br /&gt;
*'''размер''' - Размер [[шрифт]]а в поинтах.&lt;br /&gt;
*'''цвет 1''' - Цвет текста начального вида (бледный).&lt;br /&gt;
*'''цвет 2''' - Цвет прочитанного текста (контрастный). Чтение делается по буквам.&lt;br /&gt;
               &lt;br /&gt;
'''Группа - Параметры поведения текста'''&lt;br /&gt;
&lt;br /&gt;
*'''автопромотка''' - Автоматический переход на следующую страницу после завершения отображения текста;&lt;br /&gt;
* '''зациклить''' - Зациклить страницы (после последней, перейти опять на первую);&lt;br /&gt;
*'''подсветка''' - Тип подсветки: &lt;br /&gt;
**0-не подсвечивать, &lt;br /&gt;
**1-по слову; &lt;br /&gt;
**2-по букве слова (караоке); &lt;br /&gt;
**3-по букве с начала страницы.&lt;br /&gt;
*'''звук''' - 1 - есть озвучка, 0 - нет;&lt;br /&gt;
*'''случайный выбор''' - 1 - при переключении страницы будет выбираться случайная, 0 - все страницы последовательно. Если выбрана 1 - в редакторе Texts Editor между страницами надо поставить знак #. &lt;br /&gt;
&amp;lt;br&amp;gt;Например:&lt;br /&gt;
&lt;br /&gt;
[[Файл:Text3.PNG|800px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
*'''голос''' - голос для озвучки. Звуковой файл для одной реплики.&lt;br /&gt;
*'''позиционирование текста'''&lt;br /&gt;
** горизонтальное -  0 - нет выравнивания; 1 - прижать к левому краю; 2 - центр; 3 - к правому;&lt;br /&gt;
** вертикальное  - 0 - нет выравнивания; 1 - прижать к верхнему краю; 2 - центр; 3 - к нижнему.&lt;br /&gt;
&lt;br /&gt;
=== Добавляемые параметры ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Menadd.png|300px|right]]&lt;br /&gt;
Меню выбора ''Добавляемые параметры'' к объектам активируется по правой кнопки мыши. &lt;br /&gt;
&lt;br /&gt;
[[Файл:+.png]] '''голос для озвучки''' - голос для озвучки 1 реплики. Следить за тем, чтобы количество звуков совпадало с количеством реплик.&lt;br /&gt;
=== Состояния ===&lt;br /&gt;
&lt;br /&gt;
''start'' - это состояние проверяет время ''до открытия'' и переходит либо в ''beg'', если время до открытия не ноль, либо в ''open'', если время до открытия равняется нулю;&lt;br /&gt;
 ''beg'' - это состояние &amp;quot;ждет&amp;quot; время ''до открытия'' и переходит в ''open'';&lt;br /&gt;
&lt;br /&gt;
''open'' - плавно проявляет текст до его нормального ''alpha'' в течении ''времени открытия'';&lt;br /&gt;
&lt;br /&gt;
''first'' - это состояние перезапускает текст без появления по ''alpha''; в этом состоянии текстовый объект мгновенно отобразит первую (или единственную) страницу текста; &lt;br /&gt;
&lt;br /&gt;
''next'' - в этом состоянии текстовый объект мгновенно отобразит следующую за текущей страницу текста (если текущая страница - последняя, то в этом состоянии ничего не произойдет);&lt;br /&gt;
&lt;br /&gt;
''close'' - плавно растворяет текст до ''alpha=0'' в течении ''времени закрытия'', после чеге переходит в состояние ''end'';&lt;br /&gt;
&lt;br /&gt;
''end'' - в этом состоянии текстовый объект не отображается.&lt;br /&gt;
&lt;br /&gt;
=== Параметры ===&lt;br /&gt;
&lt;br /&gt;
== Пример применения ==&lt;br /&gt;
&lt;br /&gt;
[[Файл:Text3.PNG|800px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
[[Файл:Ex3.PNG|800px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
== Примечания и дополнения ==&lt;br /&gt;
&lt;br /&gt;
* Если у одного текстового ID слишком много страниц или же они должны меняться в запутанном порядке, то лучше создать несколько тестовых ID и по очереди присваивать их одному текстовому объекту с помощью машины состояний: команда ''set'', параметры ''obj''(текстовый объект), ''par''(txtID), ''val_txt''(текстовый ID, перетаскивается кнопкой мыши из редактора текстов).&lt;br /&gt;
* Отображать и делать невидимым текст можно несколькими способами, например, менять общие параметры vis или al, но целесообразней использовать состояния текстового объекта ''start'' и ''close''.&lt;br /&gt;
* Разделение строк в текстовой базе символом ''#'' можно использовать, если страниц 2(3). В этом случае для смены страниц используют состояние ''next''. Если страниц больше 2(3), лучше создать несколько текстовых ID и присваивать их текстовому объекту с помощью машины состояний.&lt;br /&gt;
* Значения временных параметров по умолчанию: &lt;br /&gt;
:время до открытия - 0, &lt;br /&gt;
:время открытия - 500,&lt;br /&gt;
:время закрытия - 500, &lt;br /&gt;
:буквы - 30, &lt;br /&gt;
:слова - 30, &lt;br /&gt;
:страницы - 500. &lt;br /&gt;
:Другими словами такие значения параметров равносильны нулю.&lt;br /&gt;
 '''Для постепенного открытия (закрытия) текста следует указывать временные параметры отличные от значений по умолчанию.'''&lt;/div&gt;</summary>
		<author><name>Podkor</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.appsalutecreator.com/index.php?title=Text&amp;diff=5149</id>
		<title>Text</title>
		<link rel="alternate" type="text/html" href="https://wiki.appsalutecreator.com/index.php?title=Text&amp;diff=5149"/>
		<updated>2013-09-16T08:07:51Z</updated>

		<summary type="html">&lt;p&gt;Podkor: /* Основные параметры */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Введение ==&lt;br /&gt;
[[Файл:2223.png]]&amp;lt;br&amp;gt;&lt;br /&gt;
Для отображения текстовой информации с поддержкой многоязычности. Для управления текстовыми ресурсами используется TextEditor. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если необходимо разместить текст на сцене необходимо создать объект с типом text и перетащить на поле текстID текстовую строку из TextEditor. Также можно просто перенести их TextEditor выбранную текстовую запись, при этом автоматически создастся объект с типом Text.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Параметры объекта ==&lt;br /&gt;
&lt;br /&gt;
=== Общие параметры ===&lt;br /&gt;
(см. описание [[Object|Object]])&lt;br /&gt;
&lt;br /&gt;
=== Основные параметры ===&lt;br /&gt;
&lt;br /&gt;
*'''res''' - Графический ресурс подложки на которой выводится текст. Перетаскивается мышкой из редактора текста (поле должно находится в состоянии редактирования). Может отсутствовать.&lt;br /&gt;
*'''текстID''' - Выводимый текст перетаскивается из ресурса тектстов, для перетягивания поле в объекте Text должно быть в режиме редактирования. Решетка (#) разделяет на страницы, черта (|) - принудительный переход на новую строку.&lt;br /&gt;
*'''текст''' - Выводимый текст без использования базы текстовых ресурсов. Решетка (#) разделяет на страницы, черта (|) - принудительный переход на новую строку.&lt;br /&gt;
*'''состояние''' - в поле указывается состояние текстового объекта, в которое он перейдет при загрузке экрана (это поле часто оставляют пустым, а состояния задают машиной).&lt;br /&gt;
&lt;br /&gt;
 '''!!! - Необходимо обязательно сохранять любые изменения с текстом в редакторе TextEditor.'''&lt;br /&gt;
&lt;br /&gt;
[[Файл:Text1.PNG|800px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
=== Дополнительные параметры ===&lt;br /&gt;
&lt;br /&gt;
[[Файл:Text2.PNG|800px|thumb|right]] &lt;br /&gt;
&lt;br /&gt;
'''Группа - форматирования'''&lt;br /&gt;
&lt;br /&gt;
*'''dx''' - Бордюр (отступ текста слева и справа от границы прямоугольника объекта);&lt;br /&gt;
*'''dy''' - Бордюр (отступ текста сверху и снизу от границы прямоугольника объекта);&lt;br /&gt;
*'''отступ''' - Вертикальное расстояние между строчками в пикселях;&lt;br /&gt;
*'''h align''' - Горизонтальное форматирование. Если (c) - центрирование по горизонтали, если (r) - прижатие вправо;&lt;br /&gt;
*'''v align''' - Вертикальное форматирование. Если (c) - центрирование по вертикали.&lt;br /&gt;
[[Файл:2224.png|250px|center]]&lt;br /&gt;
[[Файл:Text11.png|250px|left]]&lt;br /&gt;
[[Файл:Text22.png|250px|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Группа - Параметры отображения текста'''&lt;br /&gt;
&lt;br /&gt;
*'''время до открытия''' - Время перед началом проявления текста (от невидимого до заданной прозрачности);&lt;br /&gt;
*'''время открытия''' - Время проявления текста и подложки до alpha в начале;&lt;br /&gt;
*'''время закрытия''' - Время исчезновения текста и подложки от alpha до 0 в конце. Если отрицательно - текст не закрывается;&lt;br /&gt;
*'''буквы''' - Задержка в ms для перехода к новой букве при подсветке;&lt;br /&gt;
*'''слова''' - Задержка в ms перед подсветкой следующего слова;&lt;br /&gt;
*'''страницы''' - Задержка в ms перед переходом к следующей странице или увяданию по alpha-каналу.&lt;br /&gt;
&lt;br /&gt;
'''Группа - Параметры используемого [[шрифт]]а'''&lt;br /&gt;
&lt;br /&gt;
*'''имя''' - Номер [[шрифт]]а - целое число, начиная с 0 (порядковый номер шрифта).&lt;br /&gt;
*'''размер''' - Размер [[шрифт]]а в поинтах.&lt;br /&gt;
*'''цвет 1''' - Цвет текста начального вида (бледный).&lt;br /&gt;
*'''цвет 2''' - Цвет прочитанного текста (контрастный). Чтение делается по буквам.&lt;br /&gt;
               &lt;br /&gt;
'''Группа - Параметры поведения текста'''&lt;br /&gt;
&lt;br /&gt;
*'''автопромотка''' - Автоматический переход на следующую страницу после завершения отображения текста;&lt;br /&gt;
* '''зациклить''' - Зациклить страницы (после последней, перейти опять на первую);&lt;br /&gt;
*'''подсветка''' - Тип подсветки: &lt;br /&gt;
**0-не подсвечивать, &lt;br /&gt;
**1-по слову; &lt;br /&gt;
**2-по букве слова (караоке); &lt;br /&gt;
**3-по букве с начала страницы.&lt;br /&gt;
*'''звук''' - 1 - есть озвучка, 0 - нет;&lt;br /&gt;
*'''случайный выбор''' - 1 - при переключении страницы будет выбираться случайная, 0 - все страницы последовательно. Если выбрана 1 - в редакторе Texts Editor между страницами надо поставить знак #. &lt;br /&gt;
&amp;lt;br&amp;gt;Например:&lt;br /&gt;
&lt;br /&gt;
[[Файл:Text3.PNG|800px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
*'''голос''' - голос для озвучки. Звуковой файл для одной реплики.&lt;br /&gt;
*'''позиционирование текста'''&lt;br /&gt;
** горизонтальное -  0 - нет выравнивания; 1 - прижать к левому краю; 2 - центр; 3 - к правому;&lt;br /&gt;
** вертикальное  - 0 - нет выравнивания; 1 - прижать к верхнему краю; 2 - центр; 3 - к нижнему.&lt;br /&gt;
&lt;br /&gt;
=== Добавляемые параметры ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Menadd.png|300px|right]]&lt;br /&gt;
Меню выбора ''Добавляемые параметры'' к объектам активируется по правой кнопки мыши. &lt;br /&gt;
&lt;br /&gt;
[[Файл:+.png]] '''голос для озвучки''' - голос для озвучки 1 реплики. Следить за тем, чтобы количество звуков совпадало с количеством реплик.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Пример применения ==&lt;br /&gt;
&lt;br /&gt;
[[Файл:Text3.PNG|800px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
[[Файл:Ex3.PNG|800px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
== Примечания и дополнения ==&lt;br /&gt;
&lt;br /&gt;
* Если у одного текстового ID слишком много страниц или же они должны меняться в запутанном порядке, то лучше создать несколько тестовых ID и по очереди присваивать их одному текстовому объекту с помощью машины состояний: команда ''set'', параметры ''obj''(текстовый объект), ''par''(txtID), ''val_txt''(текстовый ID, перетаскивается кнопкой мыши из редактора текстов).&lt;br /&gt;
* Отображать и делать невидимым текст можно несколькими способами, например, менять общие параметры vis или al, но целесообразней использовать состояния текстового объекта ''start'' и ''close''.&lt;br /&gt;
* Разделение строк в текстовой базе символом ''#'' можно использовать, если страниц 2(3). В этом случае для смены страниц используют состояние ''next''. Если страниц больше 2(3), лучше создать несколько текстовых ID и присваивать их текстовому объекту с помощью машины состояний.&lt;br /&gt;
* Значения временных параметров по умолчанию: &lt;br /&gt;
:время до открытия - 0, &lt;br /&gt;
:время открытия - 500,&lt;br /&gt;
:время закрытия - 500, &lt;br /&gt;
:буквы - 30, &lt;br /&gt;
:слова - 30, &lt;br /&gt;
:страницы - 500. &lt;br /&gt;
:Другими словами такие значения параметров равносильны нулю.&lt;br /&gt;
 '''Для постепенного открытия (закрытия) текста следует указывать временные параметры отличные от значений по умолчанию.'''&lt;/div&gt;</summary>
		<author><name>Podkor</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.appsalutecreator.com/index.php?title=Etaskitem&amp;diff=5131</id>
		<title>Etaskitem</title>
		<link rel="alternate" type="text/html" href="https://wiki.appsalutecreator.com/index.php?title=Etaskitem&amp;diff=5131"/>
		<updated>2013-09-12T12:41:57Z</updated>

		<summary type="html">&lt;p&gt;Podkor: /* Свойства */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Шаблон/форма отдельного подзадания в общем задании.&lt;br /&gt;
&lt;br /&gt;
=Свойства=&lt;br /&gt;
&lt;br /&gt;
[[Файл:Etaskitem1.jpg|right|200px]]&lt;br /&gt;
*'''alpha''' - прозрачность: от 0 (объект полностью прозрачен) до 1(объект не прозрачен).&lt;br /&gt;
*'''taskorganizer''' - Объект типа taskorganizer.&lt;br /&gt;
*'''иконка''' - Иконка предмета задания.&lt;br /&gt;
*'''описание''' - Текстовый объект куда будет занесено описание объекта.&lt;br /&gt;
*'''кнопка искать''' - Кнопка поиска. Видна, если объект коллекционный. Должна вызывать объекту Economics состояние ''search_task''.&lt;br /&gt;
*'''кнопка коллекции''' - Кнопка ведущая в коллекции. Видна, если задание состоит в сдаче коллекции. Должна вызывать объекту Economics состояние ''search_task''.&lt;br /&gt;
*'''кнопка купить''' - Кнопка покупки. Видна, если объект инвентарный. Должна вызывать объекту Etaskitem состояние buy.&lt;br /&gt;
*'''кнопка инвентарь''' - кнопка по нажатию на которую происходит переход на инвентарь. Кнопка видна, если подзадача требует применить предмет и он есть в наличии.&lt;br /&gt;
*'''кнопка магазин''' -  кнопка по нажатию на которую происходит переход в магазин. Кнопки видна, если подзадача требует применить предмет, но его нет в наличии.&lt;br /&gt;
*'''надпись успеха''' - Объект, видимый если данная часть задания выполнена.&lt;br /&gt;
*'''счетчик''' - счетчик, отображающий количество предметов.&lt;br /&gt;
&lt;br /&gt;
Пример ячеек подзадач:&lt;br /&gt;
&lt;br /&gt;
[[Файл:Etaskitem2.jpg|300px]]&lt;br /&gt;
=Состояния=&lt;br /&gt;
*'''set_filter''' - при переходе, например в инвентарь или в магазин, сразу открывает тот раздел в котором находится нужный предмет.&lt;br /&gt;
&lt;br /&gt;
=Сопутствующие объекты=&lt;br /&gt;
&lt;br /&gt;
Объекты, которые используются вместе с объектом economics и имеют с ним непосредственную связь:&lt;br /&gt;
&lt;br /&gt;
* [[Файл:E_items.png]] - [[Eitems]] - объект, служащий для связи инвентаря(магазина) и экономики. &lt;br /&gt;
* [[Файл:E_store_item.png]] - [[Estoreitem]] - шаблон для ячейки магазина. &lt;br /&gt;
* [[Файл:E_inventory_item.png]] - [[Einventoryitem]] - шаблон для ячейки инвентаря. &lt;br /&gt;
* [[Файл:Taskorganizer.png]] - [[Taskorganizer]] - органайзер заданий.&lt;br /&gt;
* [[Файл:E_task_item.png]] - [[Etaskitem]] - шаблон для ячейки задания.&lt;br /&gt;
* [[Файл:E_collection.png]] - [[Ecollection]] - шаблон для строки в таблице коллекции.&lt;br /&gt;
* [[Файл:Economics.png]] - [[Economics]] - глобальная настройка игр типа ферма\билдер&lt;/div&gt;</summary>
		<author><name>Podkor</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.appsalutecreator.com/index.php?title=Taskorganizer&amp;diff=5129</id>
		<title>Taskorganizer</title>
		<link rel="alternate" type="text/html" href="https://wiki.appsalutecreator.com/index.php?title=Taskorganizer&amp;diff=5129"/>
		<updated>2013-09-12T09:06:29Z</updated>

		<summary type="html">&lt;p&gt;Podkor: /* Taskorganizer setup */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC right}}&lt;br /&gt;
Менеджер задач и квестов&lt;br /&gt;
&lt;br /&gt;
=Свойства=&lt;br /&gt;
[[Файл:Task.jpg|250px|thumb|right]]&lt;br /&gt;
[[Файл:Task_1.jpg|250px|thumb|right]]&lt;br /&gt;
'''Общие параметры'''&lt;br /&gt;
*'''economics''' - Объект типа экономикс.&lt;br /&gt;
*'''предметы''' - Объект типа eitems.&lt;br /&gt;
*'''таблица''' - Таблица куда будут помещены иконки заданий. При тапе на таблицу объекту Taskorganizer вызывается состояние show. Иконки подтягиваются из текстовой базы (icon1).&lt;br /&gt;
*'''добавлять иконки''' - 1 - добавлять в таблицу иконки, 0 - тексты из текстового id (поле word).&lt;br /&gt;
*'''шаблон предмета''' - Объект типа etaskitem будет использоваться при показе превью задания.&lt;br /&gt;
*'''фильтрация''' - Категория, которые должны будут отобразиться в таблице логов при вызове состояния logbook. Пустая строка - все.&lt;br /&gt;
*'''таблица логов''' - Таблица куда будут помещены записи лог бука.&lt;br /&gt;
*'''новая запись''' - Объект, которому будет вызвано состояние show при добавлении новой записи в логбук.&lt;br /&gt;
*'''новое задание''' - Графический ресурс, который будет отмечать новые задания. Смещение должно достигаться пивотом.&lt;br /&gt;
*'''уведомление''' - Текстовый айди заголовка связанных с задачами уведомлений.&lt;br /&gt;
*'''вероятность уведомления''' - Подменная вероятность нахождения предмета нужного для задания по уведомлению с которого мы пришли. 0 - использовать значение по умолчанию.&lt;br /&gt;
*'''выполнять непрочитанные''' - 1 - выполнять непрочитанные таски, 0 - нет.&lt;br /&gt;
*'''хронологический порядок''' - 1 - записывать задачи в хронологическом порядке, 0 - нет.&lt;br /&gt;
'''Группа угадайка'''&lt;br /&gt;
*'''показывать через''' - Через какое количество обычных задач показывать угадайку.&lt;br /&gt;
*'''с уровня''' - Угадайка будет генерироваться только начиная с данного уровня.&lt;br /&gt;
*'''машина''' - Объект, которому при активации будет вызвано состояние show. Она же после угадайки будет переведена в состояние win или fail.&lt;br /&gt;
*'''иконка''' - Объект, в который сложим иконку предмета.&lt;br /&gt;
*'''иконка для таблицы''' - Иконка соответствующая угадайке в таблице задач.&lt;br /&gt;
*'''ресурс 1''' - Деньги даваемые за выполнение задания.&lt;br /&gt;
*'''ресурс 2''' - Кристаллы даваемые за выполнение задания.&lt;br /&gt;
*'''опыт''' - Опыт даваемый за выполнение задания.&lt;br /&gt;
*'''награда ресурс 1''' - Счетчик, которому будет присвоено количество призового ресурса 1.&lt;br /&gt;
*'''награда ресурс 2''' - Счетчик, которому будет присвоено количество призового ресурса 2.&lt;br /&gt;
*'''награда опыт''' - Счетчик, которому будет присвоено количество призового опыта.&lt;br /&gt;
'''Группа рулетка'''&lt;br /&gt;
*'''показывать через''' - Через какое количество обычных задач показывать рулетку.&lt;br /&gt;
*'''с уровня''' - Рулетка будет генерироваться только начиная с данного уровня.&lt;br /&gt;
*'''машина''' - Объект, которому при активации будет вызвано состояние show.&lt;br /&gt;
*'''иконка для таблицы''' - Иконка соответствующая рулетке в таблице задач.&lt;br /&gt;
'''Группа генерируемые'''&lt;br /&gt;
*'''активных задач''' - Эти задачи будут генерироваться, когда активных задач столько или меньше.&lt;br /&gt;
*'''с уровня''' - Эти задачи будут генерироваться только начиная с данного уровня.&lt;br /&gt;
*'''максимально''' - Будет сгенерированно случайное количество задач от 1 до n.&lt;br /&gt;
*'''машина''' - Объект, которому при активации будет вызвано состояние show. Она же после угадайки будет переведена в состояние win или fail.&lt;br /&gt;
*'''название''' - Текстовый объект, в который будет сложено название локации.&lt;br /&gt;
*'''превью''' - Объект, в который сложим превью локации для генерируемой задачи.&lt;br /&gt;
*'''иконка для таблицы''' - Иконка соответствующая генерируемому таску в таблице задач.&lt;br /&gt;
*'''ресурс 1''' - Деньги даваемые за выполнение задания.&lt;br /&gt;
*'''ресурс 2''' - Кристаллы даваемые за выполнение задания.&lt;br /&gt;
*'''опыт''' - Опыт даваемый за выполнение задания.&lt;br /&gt;
*'''награда ресурс 1''' - Счетчик, которому будет присвоено количество призового ресурса 1.&lt;br /&gt;
*'''награда ресурс 2''' - Счетчик, которому будет присвоено количество призового ресурса 2.&lt;br /&gt;
*'''награда опыт''' - Счетчик, которому будет присвоено количество призового опыта.&lt;br /&gt;
*'''изменить состояние объекта - новое задание''' - Позволяет изменять состояние объекту каждый раз при появлении нового задания, находится в taskorganizer setup.&lt;br /&gt;
&lt;br /&gt;
=Taskorganizer setup=&lt;br /&gt;
[[Файл:Task 2.jpg|250px|thumb|right]]&lt;br /&gt;
&lt;br /&gt;
*'''id''' - Идентификатор задания. Используется в других заданиях. По общей концепции - строковый айди.&lt;br /&gt;
*'''хинт''' - Список строк-подсказок для задачи.&lt;br /&gt;
*'''название (объект)''' - Текстовый объект, в который мы сложим название задания.&lt;br /&gt;
*'''машина''' - Объект, которому при активации задания будет вызвано состояние show, а при повторном открытии задания show_old.&lt;br /&gt;
*'''таблица''' - Таблица куда будут помещены темплейты предметов данного задания.&lt;br /&gt;
*'''описание (объект)''' - Текстовый объект, в который мы сложим описание задания. Описание подтягивается из текстовой базы из второго столбика (sentence1) текстового id задания.&lt;br /&gt;
*'''награда (ресурс 1)''' - Счетчик отображающий награду в ресурсе 1 за выполнение задания.&lt;br /&gt;
*'''награда (ресурс 2)''' - Счетчик отображающий награду в ресурсе 2 за выполнение задания.&lt;br /&gt;
*'''награда (опыт)''' - Счетчик отображающий награду в опыте за выполнение задания.&lt;br /&gt;
*'''таблица хинта''' - Таблица, в которую будем складывать хинты.&lt;br /&gt;
&lt;br /&gt;
'''Необходимое для логбука'''&lt;br /&gt;
&lt;br /&gt;
*'''для журнала''' - 0 - задача предназначена для списка задач, 1 - задача предназначена для журнала.&lt;br /&gt;
*'''категория''' - Категория к которой относится задача/запись. Пока используется только задачами для логбука.&lt;br /&gt;
&lt;br /&gt;
'''Критерии появления'''&lt;br /&gt;
&lt;br /&gt;
*'''уровень''' - Минимальный уровень, при котором может появиться задание.&lt;br /&gt;
*'''аномалия''' - В какой-либо локации присутствует аномалия данного типа. -1 - не учитывать условие.&lt;br /&gt;
*'''локация''' - Локация для которой будем проверять мастерство. -1 - не учитывать условие.&lt;br /&gt;
*'''мастерство''' - Уровень мастерства, который должен быть достигнут в локиции. -1 - не учитывать условие.&lt;br /&gt;
*'''завершены до''' - Задания, которые должны быть завершены до появления этого.&lt;br /&gt;
*'''получены до''' - Задания, которые должны быть получены до появления этого.&lt;br /&gt;
*'''не завершены до''' - Задания, которые должны быть НЕ завершены до появления этого.&lt;br /&gt;
*'''объект до''' - Объект, который должен находиться в состоянии_до для появления задания.&lt;br /&gt;
*'''состояние до''' - Состояние объекта_до, в котором вызывается генерация задания.&lt;br /&gt;
*'''коллекционные''' - Коллекционные предметы, которые должны быть найдены для появления задания.&lt;br /&gt;
*'''вероятность нужного''' - Когда мы будем проходить локации, в которых есть предметы необходимые для задания - мы будем подменять вероятность из локации вот этой вероятностью.  0 - использовать дефолтную.&lt;br /&gt;
&lt;br /&gt;
'''Критерии завершения'''&lt;br /&gt;
&lt;br /&gt;
*'''с аномалией''' - Задача выполняется при нахождение локации с аномалией данного типа. Не путать с аномалией необходимой для возникновения задания. -1 - не учитывать аномалию. &lt;br /&gt;
*'''задачи''' - Задания, выполнение которых требуется для выполнения данной.&lt;br /&gt;
*'''предметы''' - Задание завершается, когда получены следующие предметы (коллекционные и инвентарные единым списком).&lt;br /&gt;
*'''объект''' - Объект, который должен находиться в определенном состоянии,для завершения задания.&lt;br /&gt;
*'''состояние''' - Состояние объекта, в котором вызывается проверка задания.&lt;br /&gt;
&lt;br /&gt;
'''Награда'''&lt;br /&gt;
&lt;br /&gt;
*'''ресурс 1''' - Деньги даваемые за выполнение задания.&lt;br /&gt;
*'''ресурс 2''' - Кристаллы даваемые за выполнение задания.&lt;br /&gt;
*'''опыт''' - Опыт даваемый за выполнение задания.&lt;br /&gt;
*'''перевести объект''' - При выполнении задания этот объект будет переведен в новое состояние.&lt;br /&gt;
*'''в состояние''' - Состояние для объекта из предыдущего поля.&lt;br /&gt;
&lt;br /&gt;
=Состояния=&lt;br /&gt;
&lt;br /&gt;
*'''Show''' - При вызове этого состояния из таблицы с иконками заданий открывается соответствующая машина задания, прописанная в группе '''задание'''.&lt;br /&gt;
*'''Check''' - При вызове проверяется выполнение текущих заданий.&lt;br /&gt;
*'''Generate''' - При вызове подбирается подходящее задание в зависимости от прогресса игрока.&lt;br /&gt;
*'''log_check''' - При вызове состояния проверяется доступны ли новые записи в логбук.&lt;br /&gt;
*'''log_show''' - Заполняет таблицу логбука записями с текущим фильтром.&lt;br /&gt;
*'''refresh''' - Удаляет иконку выполненного задания из таблицы. Лучше всего вызывать после Check.&lt;br /&gt;
*'''add_hint''' - Добавляет в таблицу хинтов следующий текстовый ID из поля хинты текущего таска. Если все хинты показаны, то в опции записывается параметр haveHints=0.&lt;br /&gt;
*'''task_prev''' - Используется, если открыта машина-шаблон текущего задания. В этом состоянии показывается предыдущее по списку таблицы задание.&lt;br /&gt;
*'''task_next''' - Показывает следующее по списку таблицы задание.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Состояния task_prev и task_next работают циклически, после первой задачи показывают последнюю и наоборот.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
ПРИМЕЧАНИЕ:  при проверке задач для логбука для последней выполненной будет перезаписано поле filter автоматически.&lt;br /&gt;
&lt;br /&gt;
=Сопутствующие объекты=&lt;br /&gt;
&lt;br /&gt;
Объекты, которые используются вместе с объектом economics и имеют с ним непосредственную связь:&lt;br /&gt;
&lt;br /&gt;
* [[Файл:E_items.png]] - [[Eitems]] - объект, служащий для связи инвентаря(магазина) и экономики. &lt;br /&gt;
* [[Файл:E_store_item.png]] - [[Estoreitem]] - шаблон для ячейки магазина. &lt;br /&gt;
* [[Файл:E_inventory_item.png]] - [[Einventoryitem]] - шаблон для ячейки инвентаря. &lt;br /&gt;
* [[Файл:Taskorganizer.png]] - [[Taskorganizer]] - органайзер заданий.&lt;br /&gt;
* [[Файл:E_task_item.png]] - [[Etaskitem]] - шаблон для ячейки задания.&lt;br /&gt;
* [[Файл:E_collection.png]] - [[Ecollection]] - шаблон для строки в таблице коллекции.&lt;br /&gt;
* [[Файл:Economics.png]] - [[Economics]] - глобальная настройка игр типа ферма\билдер&lt;br /&gt;
&lt;br /&gt;
=Пример проекта=&lt;br /&gt;
S:\!MOBILE\!!!EditorGames\Wiki_sample\Taskorganizer&lt;/div&gt;</summary>
		<author><name>Podkor</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.appsalutecreator.com/index.php?title=Economics&amp;diff=5122</id>
		<title>Economics</title>
		<link rel="alternate" type="text/html" href="https://wiki.appsalutecreator.com/index.php?title=Economics&amp;diff=5122"/>
		<updated>2013-09-09T12:30:14Z</updated>

		<summary type="html">&lt;p&gt;Podkor: /* Состояния */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Объект Economics служит для реализации сложной игровой механики типа &amp;quot;ферма&amp;quot;. Он осуществляет связь между игровыми локациями, накопленным опытом, текущим количеством энергии, денег и кристаллов (можно использовать и другие названия ресурсов), а также управляет объектами коллекций, магазина, инвентаря и игровых заданий.&lt;br /&gt;
&lt;br /&gt;
= Свойства =&lt;br /&gt;
&lt;br /&gt;
*'''предметы''' - Объект типа eitems.&lt;br /&gt;
*'''задачи''' - Объект типа taskorganizer.&lt;br /&gt;
&lt;br /&gt;
==Параметры==&lt;br /&gt;
===Основные параметры===&lt;br /&gt;
&lt;br /&gt;
*'''Уровни''' - опыт, необходимый для перехода на следующий уровень. Последовательность чисел через запятую.&lt;br /&gt;
*'''Уровни парабола''' - Три числа через запятую, задающие коэффициенты параболы, которые определяют необходимый опыт после уже перечисленных уровней.&lt;br /&gt;
*'''Энергия''' - максимум энергии на каждом из уровней. Последовательность чисел через запятую. Последнее значение будет зациклено для всех последующих уровней.&lt;br /&gt;
*'''Энергия прибавка''' - Число определяющее прибавку к максимуму энергии после уже перечисленных уровней.&lt;br /&gt;
*'''Ресурс 1''' - количество ресурса 1 добавляемое за уровень. Последовательность чисел через запятую. Последнее значение будет зациклено для всех последующих уровней.&lt;br /&gt;
*'''Ресурс 2''' - количество ресурса 2 добавляемое за уровень. Последовательность чисел через запятую. Последнее значение будет зациклено для всех последующих уровней.&lt;br /&gt;
*'''Перезарядка''' - время за которое восстанавливается единица энергии в ms.&lt;br /&gt;
*'''нач. ресурс 1''' - Начальное значение ресурса 1.&lt;br /&gt;
*'''нач. ресурс 2''' - Начальное значение ресурса 2.&lt;br /&gt;
*'''время напоминания''' - время напоминания о задачах на каждом из уровней. Записывается в виде последовательности чисел через запятую. Последнее значение будет зациклено для всех последующих уровней. Время изменяется в часах.&lt;br /&gt;
*'''напоминание об энергии''' - уведомление перетаскивается с текстового редактора, представляет собой напоминание о том что энергия восстановилась. Например, &amp;quot;Ваше энергия полностью восстановлена&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
===Основные счетчики===&lt;br /&gt;
Этот раздел содержит необходимые объекты для подсчета (counter, timer, progressbar).&lt;br /&gt;
&lt;br /&gt;
*'''Уровень''' - счетчик текущего уровня игрока.&lt;br /&gt;
*'''Прогресс в уровне (счетчик)''' - Набранный на этом уровне опыт и остаток до следующего уровня (счетчик).&lt;br /&gt;
*'''Прогресс в уровне (бар)''' - Набранный на этом уровне опыт и остаток до следующего уровня (прогрессбар).&lt;br /&gt;
*'''Опыта до уровня''' - счетчик показывающий сколько опыта необходимо для перехода с текущего уровня на следующий.&lt;br /&gt;
*'''Текущая энергия''' - прогрессбар текущей энергии.&lt;br /&gt;
*'''Максимальная энергия''' - счетчик, который отображает значение максимальной энергии.&lt;br /&gt;
*'''Таймер энергии''' - таймер отображающий время до восстановления единицы энергии.&lt;br /&gt;
*'''Таймер всей энергии''' - таймер, который отображает время до восстановления всей энергии.&lt;br /&gt;
*'''Ресурс 1''' - счетчик первого ресурса (денег).&lt;br /&gt;
*'''Ресурс 2''' - счетчик второго ресурса (кристаллов).&lt;br /&gt;
*'''анимация рес.1''' - Анимационный объект награды в ресурсе 1. Должен иметь состояние show.&lt;br /&gt;
*'''анимация рес.2''' - Анимационный объект награды в ресурсе 2. Должен иметь состояние show.&lt;br /&gt;
*'''анимация опыт''' - Анимационный объект награды в опыте. Должен иметь состояние show.&lt;br /&gt;
&lt;br /&gt;
===Окно перед локацией===&lt;br /&gt;
Настройка окна, которое всплывает перед посещением локации. В этом окне отображается информация о локации которую мы хотим посетить.&lt;br /&gt;
&lt;br /&gt;
*'''Окно''' - некая машина, олицетворяющая собой само окно превью. Должна иметь состояния ''open'' - открыта, ''open_lvl'' - не хватает лвл, ''open_buy'' - разница в уровнях позволяет нам купить анлок, ''open_item'' - не хватает предмета для анлока,  ''open_unlock'' - состояние вызываемое окну перед локацией после успешной покупки предмета для анлока, ''open_energy'' - состояние вызываемое окну перед локацией в случае нехватки энергии.&lt;br /&gt;
*'''Превью локации''' - графический ресурс для отображения превью локации. В это поле можно поставить любую картинку для того, чтобы корректно разместить ее в &amp;quot;окне перед локацией&amp;quot;. Далее экономикс сам будет подставлять нужные превью.&lt;br /&gt;
*'''Название локации''' - текстовый объект, в который будет подставляться название локации.&lt;br /&gt;
*'''Описание локации''' - текстовый объект, в который будет подставляться описание локации.&lt;br /&gt;
*'''Уровень мастерства''' - счетчик уровня мастерства.&lt;br /&gt;
*'''Прогрессбар уровня мастерства''' - прогрессбар, который отображает уровень мастерства.&lt;br /&gt;
*'''Текущий уровень''' - счетчик текущего уровня мастерства.&lt;br /&gt;
*'''Необходимая энергия''' - счетчик необходимой энергии.&lt;br /&gt;
*'''Аномальная энергия''' - счетчик, который отображает дополнительную энергию при наличии аномалии в локации.&lt;br /&gt;
*'''Призовой ресурс 1''' - счетчик призовых денег.&lt;br /&gt;
*'''Аномальный ресурс 1''' - счетчик, который отображает количество дополнительных призовых денег, которые даются за игру в локацию с наличием аномалии.&lt;br /&gt;
*'''Призовой ресурс 2''' - счетчик призовых кристаллов.&lt;br /&gt;
*'''Призовой опыт''' - счетчик призового опыта.&lt;br /&gt;
*'''Аномальный опыт''' - счетчик, который отображает значение дополнительного опыта, который дается за игру в локацию с наличием аномалии.&lt;br /&gt;
*'''Таблица коллекции''' - таблица, в которой будут отображаться предметы, которые можно найти в данной локации.&lt;br /&gt;
&lt;br /&gt;
''для закрытой по уровню локации''&lt;br /&gt;
*'''Режим игры''' - машина, которой будут устанавливаться состояния в зависимости от режима игры (может быть смешанный, текст или силуэт). TODO пока обладает только режимом text.&lt;br /&gt;
&lt;br /&gt;
*'''индикатор уровня''' - счетчик с необходимым для локации уровнем.&lt;br /&gt;
&lt;br /&gt;
''для локации c ценой''&lt;br /&gt;
&lt;br /&gt;
*'''цена ресурс 1''' - Стоимость анлока локации в ресурсе 1.&lt;br /&gt;
*'''цена ресурс 2''' - Стоимость анлока локации в ресурсе 2.&lt;br /&gt;
&lt;br /&gt;
''для локации c требуемым предметом''&lt;br /&gt;
&lt;br /&gt;
*'''предмет''' - иконка необходимого для локации предмета.&lt;br /&gt;
*'''название предмета''' - в этом поле указывается название, необходимого для локации предмета.&lt;br /&gt;
*'''счетчик цены''' - счетчик, который отображает стоимость предмета.&lt;br /&gt;
*'''иконка цены'''  - иконка цены предмета, представляет собой картинку, которая перетаскивается из базы ресурсов.&lt;br /&gt;
*'''кнопка купить''' - Будет видна, если предмет нужно купить. Передает экономиксу состояние unlock_item.&lt;br /&gt;
*'''кнопка искать''' - Будет видна, если предмет поисковый.&lt;br /&gt;
*'''блок аномалии''' - контейнер, представляющий собой машину, которая содержит всю информацию про аномалию. Должна содержать в себе состояния hide и show.&lt;br /&gt;
*'''иконка аномалии''' - иконка аномалии.&lt;br /&gt;
*'''название аномалии''' - текстовый объект, который будет отображать название аномалии.&lt;br /&gt;
*'''описание аномалии''' - текстовый объект, который будет отображать описание аномалии.&lt;br /&gt;
*'''иконка предмета''' - иконка предмета, необходимого для того что бы прогнать аномалию.&lt;br /&gt;
*'''кнопка прогнать предметом''' - кнопка по нажатию которой, можно прогнать аномалию используя предмет.&lt;br /&gt;
*'''кнопка купить предмет''' -  кнопка по нажатию которой, можно купить предмет для прогона аномалии.&lt;br /&gt;
*'''кнопка прогнать миниигрой''' - кнопка по нажатию которой, можно прогнать аномалию миниигрой.&lt;br /&gt;
&lt;br /&gt;
===Окно после локации===&lt;br /&gt;
&lt;br /&gt;
Настройка окна, которое всплывает после посещения локации. В этом окне отображается информация о полученных очках и предметах за исследование локации.&lt;br /&gt;
&lt;br /&gt;
*'''Окно''' - некая машина, олицетворяющая собой само окно превью. Должна иметь состояние ''open''.&lt;br /&gt;
*'''Название локации''' - текстовый объект, в который будет подставляться название локации.&lt;br /&gt;
*'''Описание локации''' - текстовый объект, в который будет подставляться описание локации.&lt;br /&gt;
*'''Уровень мастерства''' - счетчик уровня мастерства.&lt;br /&gt;
*'''Прогрессбар мастерства''' - прогрессбар, который отображает уровень мастерства.&lt;br /&gt;
*'''Текущий уровень''' - счетчик текущего уровня мастерства.&lt;br /&gt;
*'''Призовой ресурс 1''' - счетчик призовых денег.&lt;br /&gt;
*'''Аномальный ресурс 1''' - счетчик, который отображает количество дополнительных денег за прохождение локации с аномалией.&lt;br /&gt;
*'''Призовой ресурс 2''' - счетчик призовых кристаллов.&lt;br /&gt;
*'''Призовой опыт''' - счетчик призового опыта.&lt;br /&gt;
*'''Аномальный опыт''' - счетчик, отображающий дополнительный призовой опыт, который дается за прохождение локации с аномалией.&lt;br /&gt;
*'''Таблица коллекции''' - таблица, в которой будут отображаться предметы, которые можно найти в данной локации.&lt;br /&gt;
*'''ничего не найдено''' - Любой объект, так или иначе сообщающий игроку, что он не нашел ничего ценного.&lt;br /&gt;
&lt;br /&gt;
===Окно перед монстром===&lt;br /&gt;
*'''окно''' - некая машина, олицетворяющая собой само окно превью. Должна иметь состояние open.&lt;br /&gt;
*'''превью монстра ''' - картинка, отображающая превью монстра.&lt;br /&gt;
*'''название монстра''' - текстовый объект, показывающий название монстра.&lt;br /&gt;
*'''описание монстра''' - текстовый объект, показывающий описание монстра.&lt;br /&gt;
*'''необходимая энергия''' - счетчик, отображающий количество необходимой энергии.&lt;br /&gt;
*'''призовой ресурс 1''' - счетчик, отображающий количество призовых денег.&lt;br /&gt;
*'''призовой опыт''' - счетчик, отображающий количество призового опыта.&lt;br /&gt;
*'''таблица коллекции''' - таблица, в которой будут отображаться предметы, которые можно отжать у данного монстра.&lt;br /&gt;
*'''иконка предмета''' - картинка, которая отображает предмет необходимый для игры с монстром.&lt;br /&gt;
*'''нужно предметов''' - счетчик, который отображает необходимое количество предметов.&lt;br /&gt;
*'''есть предметов''' - счетчик, который отображает текущее количество предметов, находящееся в наличии.&lt;br /&gt;
*'''суммарная стоимость''' - счетчик, который отображает суммарную стоимость недостающих предметов.&lt;br /&gt;
*'''кнопка купить''' - кнопка, по нажатию которой, происходит покупка недостающих предметов.&lt;br /&gt;
*'''кнопка прогнать''' - кнопка, по нажатию которой, можно прогнать монстра не играя в игру, эту кнопку можно не задавать.&lt;br /&gt;
&lt;br /&gt;
===Окно после монстра===&lt;br /&gt;
&lt;br /&gt;
*'''окно''' - некая машина, олицетворяющая собой само окно превью. Должна иметь состояние open.&lt;br /&gt;
*'''превью монстар''' - картинка, отображающая превью монстра.&lt;br /&gt;
*'''название монстра''' - текстовый объект, показывающий название монстра.&lt;br /&gt;
*'''описание монстра''' - текстовый объект, показывающий описание монстра.&lt;br /&gt;
*'''призовой ресурс 1''' - счетчик, отображающий количество призовых денег.&lt;br /&gt;
*'''призовой опыт''' - счетчик, отображающий количество призового опыта.&lt;br /&gt;
*'''таблица коллекции''' - таблица, в которой будут отображаться предметы, которые можно отжать у данного монстра.&lt;br /&gt;
*'''ничего не найдено''' - любой объект, сообщающий игроку, так или иначе, что он не нашел ничего ценного на данной локации.&lt;br /&gt;
&lt;br /&gt;
===Окно коллекций===&lt;br /&gt;
&lt;br /&gt;
*'''Шаблон коллекции''' - ссылка на объект типа ecollection который будет использоваться в качестве исходного для всех коллекций.&lt;br /&gt;
*'''Таблица''' - таблица, куда по ссылке будут добавлены шаблоны коллекции.&lt;br /&gt;
*'''алерт''' - некая машина, олицетворяющая собой само окно предмета. Должна иметь состояние open. Окно с информацией о предмете всплывает в окне с коллекциями.&lt;br /&gt;
*'''иконка''' - Иконка предмета.&lt;br /&gt;
*'''текст (объект)''' - Текстовый объект в окошке.&lt;br /&gt;
*'''описание (объект)''' - Текстовый объект в окошке, в который сложим описание предмета.&lt;br /&gt;
*'''имя коллекции (объект)''' - В это поле будет записано имя коллекции, к которой относится предмет.&lt;br /&gt;
*'''цифры''' - фреймовая анимация содержащая в себе цифры. Последний фрейм анимации - отметка много.&lt;br /&gt;
&lt;br /&gt;
===Окошко коллекционного предмета===&lt;br /&gt;
&lt;br /&gt;
*'''окно''' - Некая машина, олицетворяющая собой само окно предмета. Должна иметь состояние open. Окошко всплывает при клике на предмет в таблице окна перед/после локации.&lt;br /&gt;
*'''иконка''' - Иконка предмета.&lt;br /&gt;
*'''текст (объект)''' - Текстовый объект в окошке.&lt;br /&gt;
*'''описание (объект)''' - Текстовый объект в окошке, в который сложим описание предмета.&lt;br /&gt;
*'''имя коллекции (объект)''' - В это поле будет записано имя коллекции, к которой относится предмет.&lt;br /&gt;
&lt;br /&gt;
===Окошко поздравления со сдачей коллекции===&lt;br /&gt;
&lt;br /&gt;
*'''окно''' - некая машина,содержащая необходимую информацию, олицетворяющая само окно предмета. Должна иметь в себе состояние open.&lt;br /&gt;
*'''иконка''' - картинка отображающая иконку предмета-награды.&lt;br /&gt;
*'''текст(объект)''' -  текстовый объект, отображающий название коллекции.&lt;br /&gt;
*'''призовой ресурс 1''' - счетчик, отображающий количество призовых денег.&lt;br /&gt;
*'''призовой опыт''' - счетчик, отображающий количество призовых денег.&lt;br /&gt;
&lt;br /&gt;
===Окошко инвентарного предмета===&lt;br /&gt;
&lt;br /&gt;
*'''окно''' - Некая машина, олицетворяющая собой само окно предмета. Должна иметь состояние open. Окошко всплывает при клике на предмет в таблице окна перед/после локации.&lt;br /&gt;
*'''иконка''' - Иконка предмета.&lt;br /&gt;
*'''текст (объект)''' - Текстовый объект в окошке.&lt;br /&gt;
*'''описание (объект)''' - Текстовый объект в окошке, в который сложим описание предмета.&lt;br /&gt;
&lt;br /&gt;
===Окошко поздравления с получением уровня===&lt;br /&gt;
&lt;br /&gt;
*'''окно''' - некая машина, содержащая необходимую информацию, олицетворяющая собой само окно предмета. Должна иметь состояние open.&lt;br /&gt;
*'''уровень''' - счетчик, отображающий номер полученного уровня.&lt;br /&gt;
*'''энергия''' - счетчик, отображающий количество энергии, которая прибавляется к максимуму.&lt;br /&gt;
*'''ресурс 1''' - счетчик, отображающий количество денег.&lt;br /&gt;
*'''ресурс 2''' - счетчик, отображающий количество кристаллов.&lt;br /&gt;
&lt;br /&gt;
===Окошко поздравления с получением уровня и открытием локации===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*'''окно''' - некая машина, содержащая необходимую информацию, олицетворяющая собой само поздравительное окошко. Должна иметь состояние open.&lt;br /&gt;
&lt;br /&gt;
*'''уровень''' - счетчик, отображающий номер полученного уровня.&lt;br /&gt;
&lt;br /&gt;
*'''энергия''' - счетчик, отображающий количество энергии, которая прибавляется к максимуму.&lt;br /&gt;
&lt;br /&gt;
*'''ресурс 1''' - счетчик, отображающий количество денег.&lt;br /&gt;
&lt;br /&gt;
*'''ресурс 2''' - счетчик, отображающий количество кристаллов.&lt;br /&gt;
&lt;br /&gt;
*'''иконка локации''' - картинка, отображающая иконку локации, которая стала доступна&lt;br /&gt;
&lt;br /&gt;
*'''описание локации''' - текстовый объект, который отображает описание локации, которая стала доступна.&lt;br /&gt;
&lt;br /&gt;
===Окошко получения уровня на локации===&lt;br /&gt;
&lt;br /&gt;
*'''окно''' - некая машина, содержащая необходимую информацию, олицетворяющая собой само поздравительное окошко. Должна иметь состояние open.&lt;br /&gt;
*'''опции''' - поле в опциях, в которое записывается уровень по локации.&lt;br /&gt;
&lt;br /&gt;
===Окошко, когда не хватает чарджера (общее) ===&lt;br /&gt;
&lt;br /&gt;
*'''окно''' - некая машина, содержащая необходимую информацию, олицетворяющая собой само уведомительное окошко. Должна иметь состояние open.&lt;br /&gt;
*'''иконка''' - картинка, отображающая иконку предмета, который игрок получит за сдачу коллекции.&lt;br /&gt;
*'''текст''' - текстовый объект, который будет отображать описание коллекции.&lt;br /&gt;
*'''суммарная цена ресурса 1''' - счетчик, отображающий суммарную цену всех необходимых чарджеров, представлена в виде ресурса 1 (деньги).&lt;br /&gt;
*'''суммарная цена ресурса 2''' - счетчик, отображающий суммарную цену всех необходимых чарджеров, представлена в виде ресурса 2 (кристаллы).&lt;br /&gt;
*'''кнопка купить все''' - кнопка, по нажатию которой, происходит покупка необходимых предметов. Если в кнопке есть необходимость она будет появляться, в противном случае - сама исчезать.&lt;br /&gt;
&lt;br /&gt;
===Окошко, которое выезжает когда найден коллекционный предмет ===&lt;br /&gt;
&lt;br /&gt;
*'''окно''' - некая машина, содержащая необходимую информацию, олицетворяет собой само поздравительное окошко. Должна иметь состояние show.&lt;br /&gt;
*'''текст''' - текстовый объект, который используется для отображения названия коллекции.&lt;br /&gt;
*'''таблица''' - таблица, в которую складываются объекты коллекции.&lt;br /&gt;
&lt;br /&gt;
=== Настройки симуляции ===&lt;br /&gt;
&lt;br /&gt;
*'''время''' - время симуляции, измеряется в секундах.&lt;br /&gt;
&lt;br /&gt;
*'''минимум в локации''' - нижняя граница диапазона времени проводимого игроком в хиддене. Отображается в виде доли от времени из настроек локации.&lt;br /&gt;
&lt;br /&gt;
*'''максимум в локации''' - верхняя граница диапазона времени проводимого игроком в хиддене. Отображается в виде доли от времени из настроек локации.&lt;br /&gt;
*'''порог покупки''' - число, указывающее какую долю, от ресурсов игрока, должна составлять цена локации, что бы он решился её купить.&lt;br /&gt;
*'''порог покупки предмета''' - число, указывающее какую долю,от ресурсов игрока, должна составлять цена предмета, что бы он решился его купить.&lt;br /&gt;
*'''вероятность задачи''' - число, отображающее вероятность того, что симуляция будет выбирать не из всех доступных локаций, а из связанных с заданиями.&lt;br /&gt;
*'''вероятность матча''' -  число, отображающее вероятность того, что симуляция будет играть в матч.&lt;br /&gt;
*'''изначально хинтов''' - изначальное количество хинтов.&lt;br /&gt;
*'''предметов на хинт''' - на сколько найденных предметов игрок израсходует хинт.&lt;br /&gt;
*'''цена хинта монеты''' - сколько монет (ресурс 1), стоит некий усредненный хинт.&lt;br /&gt;
*'''цена хинта клисталлы''' - сколько кристаллов (ресурс 2), стоит некий усредненный хинт.&lt;br /&gt;
*'''хидденов подряд''' - игрок будет пытаться пройти не менее данного числа хидденов подряд.&lt;br /&gt;
*'''восстановить энергии''' - некое усредненное количество энергии для восстановления.&lt;br /&gt;
*'''цена энергии монеты''' - сколько монет стоит энергия (цена в ресурсе 1).&lt;br /&gt;
*'''цена энергии кристаллы''' - сколько кристаллов стоит энергия (цена в ресурсе 2).&lt;br /&gt;
*'''вероятность победы в матче'' - число, отображающее вероятность победы в матче.&lt;br /&gt;
*'''время в матче''' - условное время пребывания в матче.&lt;br /&gt;
*'''вероятность покупки за реал''' - каждый раз когда игроку не хватает денег или кристаллов - проверяем эту вероятность.&lt;br /&gt;
*'''цена монеты в деньгах''' - цена монеты в деньгах.&lt;br /&gt;
*'''количество монет в покупке''' - количество монет в покупке.&lt;br /&gt;
*'''цена кристаллов в деньгах''' - цена кристаллов деньгах.&lt;br /&gt;
*'''количество кристаллов в покупке''' - количество кристаллов в покупке.&lt;br /&gt;
&lt;br /&gt;
==Поле economics setup==&lt;br /&gt;
По клику на &amp;quot;...&amp;quot; открывается редактор экономикса. В этом редакторе можно задать все настройки локациям и коллекциям, которые используются в игре.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Economics 1.jpg|500px]]&lt;br /&gt;
&lt;br /&gt;
Economics setup содержит 11 вкладок : локация хидден, коллекция, предметы, окошко когда не хватает чарджера (чарджер), нехватка ресурсов на чарджер, монстр, летающий объект, аномалия, сдача коллекции, временный эффект, достижение.&lt;br /&gt;
Вверху можно увидеть ряд кнопок для добавления и удаления: справа для локаций, слева для уровней мастерства.&lt;br /&gt;
&lt;br /&gt;
===Локация хидден===&lt;br /&gt;
&lt;br /&gt;
Форма редактора экономикса разделена на 4 колонки. В первой колонке мы видим список локаций, используемых в игре. Имена локаций можно изменять. Добавляются новые локации по нажатию на кнопку ''Добавить локацию'', удаляются кнопкой ''Удалить локацию''. Во второй колонке отображаются свойства выделенной локации.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Economics 2.jpg|right]]&lt;br /&gt;
*'''Объект на карте''' - это объект ведущий в локацию с карты. Должен иметь как минимум состояния open и closed, которые ему будет вызывать экономикс.&lt;br /&gt;
*'''индиктор уровня''' - каунтер, который будет отображать номер уровня, начиная с которого локация доступна.&lt;br /&gt;
*'''Экран''' - экран, в котором расположен локация.&lt;br /&gt;
*'''Превью локации''' - графический ресурс для отображения превью локации из базы ресурсов.&lt;br /&gt;
*'''Имя локации''' - название локации, перетаскивается из текстовой базы.&lt;br /&gt;
*'''Описание локации''' - описание, перетаскивается из текстовой базы.&lt;br /&gt;
*'''Уровень''' - уровень требуемый для того, чтобы играть в локацию.&lt;br /&gt;
*'''Результат''' - имя поля в опциях, куда локацией будет занесен результат. Расчитываем найти там число.&lt;br /&gt;
*'''Связанный хидден лист''' - хидден-лист, связанный с локацией.&lt;br /&gt;
*'''необходимый предмет''' - предмет необходимый для входа в локацию. Может быть как коллекционным, так и инвентарным.&lt;br /&gt;
*'''разница в уровнях''' - разница в уровнях, при которой можно купить доступ в локацию.&lt;br /&gt;
*'''цена ресурс 1''' - если наш уровень ниже необходимого на разницу из верхнего поля, мы можем разлочить локацию за деньги.&lt;br /&gt;
*'''цена ресурс 2''' - если наш уровень ниже необходимого на разницу из верхнего поля, мы можем разлочить локацию за кристаллы.&lt;br /&gt;
*'''достижение''' - достижение, которое будет открываться по мере игры в эту локацию.&lt;br /&gt;
*'''процент''' - проценты достижения из предыдущего поля.&lt;br /&gt;
&lt;br /&gt;
В третей  колонке записываются уровни мастерства. Их можно переименовать. Добавляются кнопкой ''Добавить уровень мастерства''. Удаляются кнопкой ''Удалить уровень мастерства''. В четвертой колонке настраивается выделенный уровень мастерства.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Economics 3.jpg|right]]&lt;br /&gt;
*'''энергия''' - энергия требуемая для того, чтобы играть в локацию.&lt;br /&gt;
*'''ресурс 1''' - деньги даваемые за прохождение локации.&lt;br /&gt;
*'''ресурс 2''' - кристаллы даваемые за прохождение локации.&lt;br /&gt;
*'''опыт''' - опыт даваемый за прохождение локации.&lt;br /&gt;
*'''кол-во объектов''' - максимальное количество доступных для поиска объектов в одной игровой сессии.&lt;br /&gt;
*'''время игры''' - общее время игры (если -1, то игнорируется).&lt;br /&gt;
*'''режим игры''' - режим игры: 0 - случайный, 1- слова, 2 - силуэты.&lt;br /&gt;
*'''аномалия''' - вероятность возникновения аномалии в локациях.&lt;br /&gt;
*'''доступные аномалии''' - перечень доступных на данном уровне мастерства аномалий. Записываются в виде чисел через запятую. Доступные значения 0, 1, 2, 3.&lt;br /&gt;
*'''множитель''' - коэффициент, на который умножаются набранные очки. при расчете перехода на следующий уровень. Может быть меньше 1.&lt;br /&gt;
*'''постоянный прирост''' - постоянный прирост, если он больше 0, то будет использоваться ВМЕСТО реально набранных в хиддене очков и множителя.&lt;br /&gt;
*'''очки''' - очки, которые нужно набрать для перехода на следующий уровень мастерства. Набранные в локции очки умножаются на множитель и суммируются. Когда превысят это значение - произойдет переход.&lt;br /&gt;
*'''Предметы''' - id коллекционных предметов, которые можно найти на локации. Не обязаны принадлежать к одной коллекции. Перетаскиваются из текстового редактора. Будет использоваться их иконка.&lt;br /&gt;
*'''Вероятность''' - вероятность найти один из коллекционных предметов из предыдущего поля.&lt;br /&gt;
*'''Вероятность 2''' - вероятность найти один из коллекционных предметов из предыдущего поля.&lt;br /&gt;
*'''Вероятность 3''' - вероятность найти один из коллекционных предметов из предыдущего поля.&lt;br /&gt;
*'''Инвентарь''' - id инвентарных предметов, которые можно найти на локации. Перетаскиваются из текстового редактора.&lt;br /&gt;
*'''Вероятность инв.''' - вероятность найти один из инвентарных предметов из предыдущего поля.&lt;br /&gt;
*'''Вероятность инв. 2''' - вероятность найти один из инвентарных предметов из предыдущего поля.&lt;br /&gt;
*'''Вероятность инв. 3''' - вероятность найти один из инвентарных предметов из предыдущего поля.&lt;br /&gt;
&lt;br /&gt;
===Коллекция===&lt;br /&gt;
&lt;br /&gt;
Во вкладке ''Коллекция'' используются только первые две колонки. В первой колонке отображаются добавленные коллекции. Добавляются кнопкой ''Добавить локацию''. Удаляются кнопкой ''Удалить локацию''. Коллекции можно переименовывать. Второй столбик содержит id предметов входящих в коллекции. Перетаскиваются из текстового редактора. Будет использоваться их иконка. Ресурс 1 и ресурс 2 - ресурсы, которые даются за сдачу коллекции. Опыт - опыт, который дается за сдачу коллекции.&lt;br /&gt;
&lt;br /&gt;
*'''имя''' - Имя (а также - описание, если нужно) конкретно коллекции.&lt;br /&gt;
*'''предметы''' - id предметов входящих в коллекции. Перетаскиваются из текстового редактора. Будет использоваться их иконка.&lt;br /&gt;
*'''ресурс 1''' - деньги даваемые за сдачу коллекции.&lt;br /&gt;
*'''ресурс 2''' - кристаллы даваемые за сдачу коллекции.&lt;br /&gt;
*'''опыт''' - опыт даваемый за сдачу коллекции.&lt;br /&gt;
*'''награда''' - предмет даваемый за сдачу коллекции. Перетаскивается из текстовой базы.&lt;br /&gt;
*'''заряжатели''' - Предметы инвентаря, необходимые для сдачи коллекции. ВНИМАНИЕ: будут использоваться не более первых 4х элементов списка.&lt;br /&gt;
&lt;br /&gt;
===Предметы===&lt;br /&gt;
&lt;br /&gt;
Раздел &amp;quot;Предметы&amp;quot; позволяет добавлять список инвентарных предметов, которые могут использоваться в процессе игры, предоставлять различные бонусы. В первой колонке список предметов. Добавляется кнопкой  &amp;quot;Добавить локацию&amp;quot;, удаляется кнопкой &amp;quot;Удалить локацию&amp;quot;. Предметы могут быть переименованы. Во второй колонке записаны свойства каждого предмета.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Economics 4.jpg|350px|right]]&lt;br /&gt;
&lt;br /&gt;
*'''nm''' - имя предмета&lt;br /&gt;
&lt;br /&gt;
*'''section''' - категория предмета.&lt;br /&gt;
&lt;br /&gt;
*'''use''' - если 1, то предмет может использоваться (кнопка Use видимая).&lt;br /&gt;
&lt;br /&gt;
*'''nm''' - имя предмета (txtID).&lt;br /&gt;
&lt;br /&gt;
*'''опции''' - если это поле задано, то в него будет записываться актуальное количество объектов.&lt;br /&gt;
&lt;br /&gt;
*'''начальное количество''' - начальное  количество предметов данного типа в инвентаре.&lt;br /&gt;
&lt;br /&gt;
*'''можно продать''' - возможность продавать предмет: 1 - можно продать, 0 - нельзя продать.&lt;br /&gt;
&lt;br /&gt;
*'''уникальный''' - если 1 - то предмет уникальный пропадает после покупки, если 0 - предмет после покупки не пропадает.&lt;br /&gt;
&lt;br /&gt;
*'''res1''' - цена предмета в ресурсе 1.&lt;br /&gt;
&lt;br /&gt;
*'''res2''' - цена предмета в ресурсе 2.&lt;br /&gt;
&lt;br /&gt;
*'''sres1''' - продажа - цена предмета в ресурсе 1.&lt;br /&gt;
&lt;br /&gt;
*'''sres2''' - продаже - цена предмета в ресурсе 2.&lt;br /&gt;
&lt;br /&gt;
*'''en''' - восстанавливает энергии единовременно.&lt;br /&gt;
&lt;br /&gt;
*'''tm''' - длительность действия в секундах.&lt;br /&gt;
&lt;br /&gt;
*'''dTm''' - уменьшение времени восстановления энергии в %.&lt;br /&gt;
&lt;br /&gt;
*'''dFnd''' - увеличение вероятности нахождения предмета в %.&lt;br /&gt;
&lt;br /&gt;
*'''dExp''' - увеличение начисляемого опыта в %.&lt;br /&gt;
&lt;br /&gt;
*'''dRes1''' - увеличение полученного ресурса 1 в %.&lt;br /&gt;
&lt;br /&gt;
*'''dRes2''' - увеличение полученного ресурса 2 в %.&lt;br /&gt;
&lt;br /&gt;
*'''dOvP''' - увеличение перегруженной вероятности нахождения предметов в %.&lt;br /&gt;
&lt;br /&gt;
*'''num''' - число предметов в сундуке. Выбираются случайно из следующего поля. При 0 - следующее поле не используется.&lt;br /&gt;
&lt;br /&gt;
*'''items''' - предметы, которые можно найти в сундуке. Перетаскиваются из текстовой базы.&lt;br /&gt;
&lt;br /&gt;
*'''use_id''' - задание этого поля говорит о том, что данный предмет является оптовым пучком для предмета указанного у этом поле. Num, в этом случае, - количество.&lt;br /&gt;
&lt;br /&gt;
*'''объект''' - связанный объект, будет добавляться в инвентарь.&lt;br /&gt;
&lt;br /&gt;
*'''достижение''' - достижение, которое будет открываться по мере применения подобный предметов.&lt;br /&gt;
&lt;br /&gt;
*'''процент''' - процент достижения их предыдущего поля.&lt;br /&gt;
&lt;br /&gt;
*'''владелец''' - на данный момент - номер правильной кнопки в окне угадайки (если -1. то игнорируется).&lt;br /&gt;
&lt;br /&gt;
===Окошко когда не хватает чарджера===&lt;br /&gt;
Позволяет добавлять окна. Окно добавляется кнопкой &amp;quot;Добавить локацию&amp;quot;, окно можно переименовывать, удаляется кнопкой &amp;quot;Удалить локацию&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
*'''название''' - текстовый объект в который вкладывается название чарджера.&lt;br /&gt;
*'''иконка''' - иконка чарджера.&lt;br /&gt;
*'''описание''' - текстовый объект в который вкладывается название чарджера.&lt;br /&gt;
*'''купить''' - кнопка покупка чарджера, передает economics состояние buy_charger.&lt;br /&gt;
*'''искать''' - кнопка поиска чарджера, передает economics состояние search_charger.&lt;br /&gt;
*'''есть''' - счетчик, который показывает сколько чарджеров есть сейчас.&lt;br /&gt;
*'''нужно''' - счетчик, который показывает сколько чарджерова необходимо для сдачи коллекции.&lt;br /&gt;
*'''цена ресурса 1''' - счетчик, который показывает цену чарджера в ресурсе 1.&lt;br /&gt;
*'''цена ресурса 2''' - счетчик, который показывает цену чарджера в ресурсе 2.&lt;br /&gt;
*'''достаточно''' -  объект, который отображается вместо кнопки, в тот момент, когда чарджеров достаточное количество.&lt;br /&gt;
&lt;br /&gt;
===Нехватка ресурсов на чарджер===&lt;br /&gt;
Позволяет изменить состояние выбранному объекту при нехватке ресурсов на чарджер. Добавляется кнопкой &amp;quot;Добавить локацию&amp;quot;, можно переименовывать, удаляется кнопкой &amp;quot;Удалить локацию&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
===Монстр===&lt;br /&gt;
В первой колонке добавляется монстр, добавляется кнопкой &amp;quot;Добавить локацию&amp;quot;, если возможность переименовать, удаляется кнопкой &amp;quot;Удалить локацию&amp;quot;&lt;br /&gt;
Во второй колонке отображаются свойства выделенной колонки.&lt;br /&gt;
&lt;br /&gt;
*'''Объект на карте''' - объект, который представляет монстра на карте. Как правило окно, которое должно иметь состояние hide и show.&lt;br /&gt;
*'''Имя монстра''' - текстовый id из которого берется иконка, имя и описание монстра.&lt;br /&gt;
*'''Экран''' - экран в котором расположена локация.&lt;br /&gt;
*'''min уровень''' - уровень, при достижении которого, появляется монстр.&lt;br /&gt;
*'''max уровень''' - уровень, при достижении которого, монстр исчезает.&lt;br /&gt;
*'''необходимый предмет''' - предмет необходимый для игры с духом.&lt;br /&gt;
*'''количество''' -  количество предметов из поля &amp;quot;необходимый предмет&amp;quot;. &lt;br /&gt;
*'''связанный баттл''' - поле в котором указывается связанный баттл.&lt;br /&gt;
*'''связанный матч''' - полое в котором указывается связанный матч.&lt;br /&gt;
&lt;br /&gt;
В третей колонке записываются уровни мастерства. Их можно переименовывать. Добавляются уровни кнопкой &amp;quot;Добавить уровень мастерства&amp;quot;, удаляются кнопкой &amp;quot;Удалить уровень мастерства&amp;quot;.&lt;br /&gt;
В четвертой колонке настраивается выделенный уровень мастерства.&lt;br /&gt;
&lt;br /&gt;
*'''энергия''' - энергия необходимая для того, что бы можно было начать играть в локацию.&lt;br /&gt;
*'''ресурс1''' - деньги даваемые за прохождение локации.&lt;br /&gt;
*'''опыт''' - опыт даваемый за прохождение локации.&lt;br /&gt;
*'''постоянный прирост''' - постоянный прирост.&lt;br /&gt;
*'''очки''' - количество очков, которое необходимо набрать для перехода на следующий уровень мастерства.&lt;br /&gt;
*'''предметы''' - id коллекционных предметов, которые можно найти на локации. Предметы не обязательно должны быть из одной коллекции. Необходимые предметы перетаскиваются из текстового редактора, при этом будет использоваться их иконка.&lt;br /&gt;
*'''Вероятность''' - вероятность найти один из коллекционных предметов из поля &amp;quot;предметы&amp;quot;.&lt;br /&gt;
*'''Вероятность 2''' - вероятность найти один из коллекционных предметов из поля &amp;quot;предметы&amp;quot;.&lt;br /&gt;
*'''Вероятность 3''' - вероятность найти один из коллекционных предметов из поля &amp;quot;предметы&amp;quot;.&lt;br /&gt;
*'''Инвентарь''' - id инвентарных предметов, которые можно найти на локации. Перетаскиваются из текстового редактора.&lt;br /&gt;
*'''Вероятность инв.''' - вероятность найти один из инвентарных предметов из поля &amp;quot;инвентарь&amp;quot;.&lt;br /&gt;
*'''Вероятность инв. 2''' - вероятность найти один из инвентарных предметов из поля &amp;quot;инвентарь&amp;quot;.&lt;br /&gt;
*'''Вероятность инв. 3''' - вероятность найти один из инвентарных предметов из поля &amp;quot;инвентарь&amp;quot;.&lt;br /&gt;
*'''жизни врага''' - записываются значения вражеских жизней.&lt;br /&gt;
*'''начальные жизни врага''' - начальное значение вражеских жизней.&lt;br /&gt;
*'''регенерация врага''' - время (в ms), за которое у противника отрастает жизнь. Если установлено -1, то отрастания жизни противника на происходит.&lt;br /&gt;
*'''число цветов''' - это число будет записываться в параметр numTokenNums матча.&lt;br /&gt;
&lt;br /&gt;
===Летающий объект===&lt;br /&gt;
Впервой колонке кнопкой &amp;quot;Добавить локацию&amp;quot; добавляется летающий объект - объекты которые вылетают после прохождения локации или после покупки сундуков. Удаляется кнопкой &amp;quot;Удалить локацию&amp;quot;. Во второй колонке добавляется объект выделенного летающего объекта. Состояния hide, wait, inventory и  collection  -  обязательны для этого предмета.&lt;br /&gt;
&lt;br /&gt;
===Аномалия===&lt;br /&gt;
&lt;br /&gt;
Впервой колонке добавляется аномалия, добавляется кнопкой &amp;quot;Добавить локацию&amp;quot;, можно переименовывать, удаляется кнопкой &amp;quot;Удалить локацию&amp;quot;.&lt;br /&gt;
Во второй колонке отображаются свойства выделенной аномалии.&lt;br /&gt;
*'''id''' - поле в которое перетаскивается текстовый id, из которого используется название, описание и иконка аномалии.&lt;br /&gt;
*'''предмет''' - предмет необходимый для того, что бы изгнать аномалию.&lt;br /&gt;
*'''экран''' -  в этом поле указывается экран, в котором расположена миниигра.&lt;br /&gt;
*'''прибавка к энергии''' - указывается прибавка к энергии, поскольку для игры в аномалию будет нужно больше энергии. Например, при значении 0,5 - энергии потребуется больше в полтора раза.&lt;br /&gt;
*'''прибавка к опыту''' - указывается прибавка к опыту, поскольку игра в локацию с аномалией будет давать больше опыта. Например, при значении 0,5 - опыта приобретается больше в полтора раза.&lt;br /&gt;
*'''прибавка к ресурсу 1''' - указывается прибавка к ресурсу 1. поскольку игра в локацию с аномалией будет давать больше ресурса 1. Например, при значении 0,5 - ресурса 1 приобретается больше в полтора раза.&lt;br /&gt;
&lt;br /&gt;
===Сдача коллекции===&lt;br /&gt;
&lt;br /&gt;
В первой колонке добавляется сдача колонки, кнопкой &amp;quot;Добавить локацию&amp;quot;, удаляется кнопкой &amp;quot;Удалить локацию&amp;quot;&lt;br /&gt;
Во второй колонке устанавливается состояние объекту сдачи коллекции.&lt;br /&gt;
&lt;br /&gt;
===Временный эффект===&lt;br /&gt;
&lt;br /&gt;
в первой колонке создается временный эффект, добавляется кнопкой &amp;quot;Добавить локацию&amp;quot;, удаляется кнопкой &amp;quot;Удалить локацию&amp;quot;.&lt;br /&gt;
Во второй колонке устанавливаются свойства выделенного временного эффекта.&lt;br /&gt;
&lt;br /&gt;
*'''иконка''' - из редактора ресурсов, перетаскивается иконка временного эффекта&lt;br /&gt;
*'''таймер''' - указывается объект типа timer, который соответствует выбранному временному эффекту.&lt;br /&gt;
*'''подложка''' - из редактора ресурсов, перетаскивается картинка подложки для таймера указанного в поле &amp;quot;таймер&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
===Достижение===&lt;br /&gt;
В первой колонке записываются достижения. Добавляются кнопкой &amp;quot;Добавить локацию&amp;quot;, удаляются кнопкой &amp;quot;Удалить локацию&amp;quot;. &lt;br /&gt;
Во второй колонке отображаются свойства выбранного достижения.&lt;br /&gt;
&lt;br /&gt;
*'''достижение''' - достижение, которое будет открываться по мере применения подобных предметов.&lt;br /&gt;
&lt;br /&gt;
*'''процент''' - в виде числа, указывается процент достижения из поля &amp;quot;достижение&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
*'''режим игры''' - указывается режим игры, ели 0 - режим игры не важен для достижения, 1 - режим игры слова, 2 - режим игры силуэты.&lt;br /&gt;
&lt;br /&gt;
*'''аномалия''' - указывается аномалия необходимая для достижения, если указывается -2 -  то аномалия не важна для достижения, если указывается -1 - то для достижения может использоваться любая аномалия.&lt;br /&gt;
&lt;br /&gt;
==Состояния==&lt;br /&gt;
&lt;br /&gt;
[[Файл:Economics 5.jpg|right]]&lt;br /&gt;
Перед вызовом некоторых состояний объекту economics необходимо передать параметр '''param''' и его значение. Например когда нам нужно открыть окно перед локацией мы передаем параметр номера этой локации в списке локаций (начиная с 0).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear /br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*'''completed''' - передает состояние окончания исследования локации (необходим параметр номера локации).&lt;br /&gt;
*'''exp''' - передает состояние начисления опыта (необходим параметр количества опыта). Нужен больше для тестирования, чем для самой игры.&lt;br /&gt;
*'''play''' - передает состояния перехода на локацию для исследования.&lt;br /&gt;
*'''location''' - открывает окно перед локацией (необходим параметр номера локации).&lt;br /&gt;
*'''collection''' - заставляет экономикс заполнить таблицу коллекций. Лучше вызывать сразу перед открытием окна коллекций или во время его открытия.&lt;br /&gt;
*'''collections_scroll''' - заполняет таблицу коллекций и проматывает на коллекцию содержащую последний предмет для которого было показано окошко с информацией о предмете.&lt;br /&gt;
*'''item_collections''' - заставляет экономикс показать окошко с информацией о коллекционном предмете. Вызывается при тапе на таблицу в темплейте коллекций (объект ecollection).&lt;br /&gt;
*'''item_preview''' - заставляет экономикс показать окошко с информацией о предмете, который можно найти при обыске локации. Вызывается при тапе на таблицу с предметами в окне перед локацией.&lt;br /&gt;
*'''item_review''' - заставляет экономикс показать окошко с информацией о предмете, который нашли после обыска локации. Вызывается при тапе на таблицу с предметами в окне после локации.&lt;br /&gt;
*'''completed_animation''' - состояние запускает анимацию полученной награды за прохождение локации после &amp;quot;окна после локации&amp;quot;. Можно запускать из состояния закрытия окна после локации.&lt;br /&gt;
*'''completed_reward''' - вызывается объектом анимации награды после прохождения локации. Если объектов несколько (опыт, монеты, кристаллы), то вызывается только один раз одним из объектов.&lt;br /&gt;
*'''search_charger''' - производит поиск недостающего чарджера.&lt;br /&gt;
*'''buy_charger''' - производит покупку недостающего чарджера.&lt;br /&gt;
&lt;br /&gt;
=Сопутствующие объекты=&lt;br /&gt;
&lt;br /&gt;
Объекты, которые используются вместе с объектом economics и имеют с ним непосредственную связь:&lt;br /&gt;
&lt;br /&gt;
* [[Файл:E_items.png]] - [[Eitems]] - объект, служащий для связи инвентаря(магазина) и экономики. &lt;br /&gt;
* [[Файл:E_store_item.png]] - [[Estoreitem]] - шаблон для ячейки магазина. &lt;br /&gt;
* [[Файл:E_inventory_item.png]] - [[Einventoryitem]] - шаблон для ячейки инвентаря. &lt;br /&gt;
* [[Файл:Taskorganizer.png]] - [[Taskorganizer]] - органайзер заданий.&lt;br /&gt;
* [[Файл:E_task_item.png]] - [[Etaskitem]] - шаблон для ячейки задания.&lt;br /&gt;
* [[Файл:E_collection.png]] - [[Ecollection]] - шаблон для строки в таблице коллекции.&lt;br /&gt;
* [[Файл:Economics.png]] - [[Economics]] - глобальная настройка игр типа ферма\билдер&lt;/div&gt;</summary>
		<author><name>Podkor</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.appsalutecreator.com/index.php?title=Economics&amp;diff=5121</id>
		<title>Economics</title>
		<link rel="alternate" type="text/html" href="https://wiki.appsalutecreator.com/index.php?title=Economics&amp;diff=5121"/>
		<updated>2013-09-09T12:20:37Z</updated>

		<summary type="html">&lt;p&gt;Podkor: /* Окошко когда не хватает чарджера */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Объект Economics служит для реализации сложной игровой механики типа &amp;quot;ферма&amp;quot;. Он осуществляет связь между игровыми локациями, накопленным опытом, текущим количеством энергии, денег и кристаллов (можно использовать и другие названия ресурсов), а также управляет объектами коллекций, магазина, инвентаря и игровых заданий.&lt;br /&gt;
&lt;br /&gt;
= Свойства =&lt;br /&gt;
&lt;br /&gt;
*'''предметы''' - Объект типа eitems.&lt;br /&gt;
*'''задачи''' - Объект типа taskorganizer.&lt;br /&gt;
&lt;br /&gt;
==Параметры==&lt;br /&gt;
===Основные параметры===&lt;br /&gt;
&lt;br /&gt;
*'''Уровни''' - опыт, необходимый для перехода на следующий уровень. Последовательность чисел через запятую.&lt;br /&gt;
*'''Уровни парабола''' - Три числа через запятую, задающие коэффициенты параболы, которые определяют необходимый опыт после уже перечисленных уровней.&lt;br /&gt;
*'''Энергия''' - максимум энергии на каждом из уровней. Последовательность чисел через запятую. Последнее значение будет зациклено для всех последующих уровней.&lt;br /&gt;
*'''Энергия прибавка''' - Число определяющее прибавку к максимуму энергии после уже перечисленных уровней.&lt;br /&gt;
*'''Ресурс 1''' - количество ресурса 1 добавляемое за уровень. Последовательность чисел через запятую. Последнее значение будет зациклено для всех последующих уровней.&lt;br /&gt;
*'''Ресурс 2''' - количество ресурса 2 добавляемое за уровень. Последовательность чисел через запятую. Последнее значение будет зациклено для всех последующих уровней.&lt;br /&gt;
*'''Перезарядка''' - время за которое восстанавливается единица энергии в ms.&lt;br /&gt;
*'''нач. ресурс 1''' - Начальное значение ресурса 1.&lt;br /&gt;
*'''нач. ресурс 2''' - Начальное значение ресурса 2.&lt;br /&gt;
*'''время напоминания''' - время напоминания о задачах на каждом из уровней. Записывается в виде последовательности чисел через запятую. Последнее значение будет зациклено для всех последующих уровней. Время изменяется в часах.&lt;br /&gt;
*'''напоминание об энергии''' - уведомление перетаскивается с текстового редактора, представляет собой напоминание о том что энергия восстановилась. Например, &amp;quot;Ваше энергия полностью восстановлена&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
===Основные счетчики===&lt;br /&gt;
Этот раздел содержит необходимые объекты для подсчета (counter, timer, progressbar).&lt;br /&gt;
&lt;br /&gt;
*'''Уровень''' - счетчик текущего уровня игрока.&lt;br /&gt;
*'''Прогресс в уровне (счетчик)''' - Набранный на этом уровне опыт и остаток до следующего уровня (счетчик).&lt;br /&gt;
*'''Прогресс в уровне (бар)''' - Набранный на этом уровне опыт и остаток до следующего уровня (прогрессбар).&lt;br /&gt;
*'''Опыта до уровня''' - счетчик показывающий сколько опыта необходимо для перехода с текущего уровня на следующий.&lt;br /&gt;
*'''Текущая энергия''' - прогрессбар текущей энергии.&lt;br /&gt;
*'''Максимальная энергия''' - счетчик, который отображает значение максимальной энергии.&lt;br /&gt;
*'''Таймер энергии''' - таймер отображающий время до восстановления единицы энергии.&lt;br /&gt;
*'''Таймер всей энергии''' - таймер, который отображает время до восстановления всей энергии.&lt;br /&gt;
*'''Ресурс 1''' - счетчик первого ресурса (денег).&lt;br /&gt;
*'''Ресурс 2''' - счетчик второго ресурса (кристаллов).&lt;br /&gt;
*'''анимация рес.1''' - Анимационный объект награды в ресурсе 1. Должен иметь состояние show.&lt;br /&gt;
*'''анимация рес.2''' - Анимационный объект награды в ресурсе 2. Должен иметь состояние show.&lt;br /&gt;
*'''анимация опыт''' - Анимационный объект награды в опыте. Должен иметь состояние show.&lt;br /&gt;
&lt;br /&gt;
===Окно перед локацией===&lt;br /&gt;
Настройка окна, которое всплывает перед посещением локации. В этом окне отображается информация о локации которую мы хотим посетить.&lt;br /&gt;
&lt;br /&gt;
*'''Окно''' - некая машина, олицетворяющая собой само окно превью. Должна иметь состояния ''open'' - открыта, ''open_lvl'' - не хватает лвл, ''open_buy'' - разница в уровнях позволяет нам купить анлок, ''open_item'' - не хватает предмета для анлока,  ''open_unlock'' - состояние вызываемое окну перед локацией после успешной покупки предмета для анлока, ''open_energy'' - состояние вызываемое окну перед локацией в случае нехватки энергии.&lt;br /&gt;
*'''Превью локации''' - графический ресурс для отображения превью локации. В это поле можно поставить любую картинку для того, чтобы корректно разместить ее в &amp;quot;окне перед локацией&amp;quot;. Далее экономикс сам будет подставлять нужные превью.&lt;br /&gt;
*'''Название локации''' - текстовый объект, в который будет подставляться название локации.&lt;br /&gt;
*'''Описание локации''' - текстовый объект, в который будет подставляться описание локации.&lt;br /&gt;
*'''Уровень мастерства''' - счетчик уровня мастерства.&lt;br /&gt;
*'''Прогрессбар уровня мастерства''' - прогрессбар, который отображает уровень мастерства.&lt;br /&gt;
*'''Текущий уровень''' - счетчик текущего уровня мастерства.&lt;br /&gt;
*'''Необходимая энергия''' - счетчик необходимой энергии.&lt;br /&gt;
*'''Аномальная энергия''' - счетчик, который отображает дополнительную энергию при наличии аномалии в локации.&lt;br /&gt;
*'''Призовой ресурс 1''' - счетчик призовых денег.&lt;br /&gt;
*'''Аномальный ресурс 1''' - счетчик, который отображает количество дополнительных призовых денег, которые даются за игру в локацию с наличием аномалии.&lt;br /&gt;
*'''Призовой ресурс 2''' - счетчик призовых кристаллов.&lt;br /&gt;
*'''Призовой опыт''' - счетчик призового опыта.&lt;br /&gt;
*'''Аномальный опыт''' - счетчик, который отображает значение дополнительного опыта, который дается за игру в локацию с наличием аномалии.&lt;br /&gt;
*'''Таблица коллекции''' - таблица, в которой будут отображаться предметы, которые можно найти в данной локации.&lt;br /&gt;
&lt;br /&gt;
''для закрытой по уровню локации''&lt;br /&gt;
*'''Режим игры''' - машина, которой будут устанавливаться состояния в зависимости от режима игры (может быть смешанный, текст или силуэт). TODO пока обладает только режимом text.&lt;br /&gt;
&lt;br /&gt;
*'''индикатор уровня''' - счетчик с необходимым для локации уровнем.&lt;br /&gt;
&lt;br /&gt;
''для локации c ценой''&lt;br /&gt;
&lt;br /&gt;
*'''цена ресурс 1''' - Стоимость анлока локации в ресурсе 1.&lt;br /&gt;
*'''цена ресурс 2''' - Стоимость анлока локации в ресурсе 2.&lt;br /&gt;
&lt;br /&gt;
''для локации c требуемым предметом''&lt;br /&gt;
&lt;br /&gt;
*'''предмет''' - иконка необходимого для локации предмета.&lt;br /&gt;
*'''название предмета''' - в этом поле указывается название, необходимого для локации предмета.&lt;br /&gt;
*'''счетчик цены''' - счетчик, который отображает стоимость предмета.&lt;br /&gt;
*'''иконка цены'''  - иконка цены предмета, представляет собой картинку, которая перетаскивается из базы ресурсов.&lt;br /&gt;
*'''кнопка купить''' - Будет видна, если предмет нужно купить. Передает экономиксу состояние unlock_item.&lt;br /&gt;
*'''кнопка искать''' - Будет видна, если предмет поисковый.&lt;br /&gt;
*'''блок аномалии''' - контейнер, представляющий собой машину, которая содержит всю информацию про аномалию. Должна содержать в себе состояния hide и show.&lt;br /&gt;
*'''иконка аномалии''' - иконка аномалии.&lt;br /&gt;
*'''название аномалии''' - текстовый объект, который будет отображать название аномалии.&lt;br /&gt;
*'''описание аномалии''' - текстовый объект, который будет отображать описание аномалии.&lt;br /&gt;
*'''иконка предмета''' - иконка предмета, необходимого для того что бы прогнать аномалию.&lt;br /&gt;
*'''кнопка прогнать предметом''' - кнопка по нажатию которой, можно прогнать аномалию используя предмет.&lt;br /&gt;
*'''кнопка купить предмет''' -  кнопка по нажатию которой, можно купить предмет для прогона аномалии.&lt;br /&gt;
*'''кнопка прогнать миниигрой''' - кнопка по нажатию которой, можно прогнать аномалию миниигрой.&lt;br /&gt;
&lt;br /&gt;
===Окно после локации===&lt;br /&gt;
&lt;br /&gt;
Настройка окна, которое всплывает после посещения локации. В этом окне отображается информация о полученных очках и предметах за исследование локации.&lt;br /&gt;
&lt;br /&gt;
*'''Окно''' - некая машина, олицетворяющая собой само окно превью. Должна иметь состояние ''open''.&lt;br /&gt;
*'''Название локации''' - текстовый объект, в который будет подставляться название локации.&lt;br /&gt;
*'''Описание локации''' - текстовый объект, в который будет подставляться описание локации.&lt;br /&gt;
*'''Уровень мастерства''' - счетчик уровня мастерства.&lt;br /&gt;
*'''Прогрессбар мастерства''' - прогрессбар, который отображает уровень мастерства.&lt;br /&gt;
*'''Текущий уровень''' - счетчик текущего уровня мастерства.&lt;br /&gt;
*'''Призовой ресурс 1''' - счетчик призовых денег.&lt;br /&gt;
*'''Аномальный ресурс 1''' - счетчик, который отображает количество дополнительных денег за прохождение локации с аномалией.&lt;br /&gt;
*'''Призовой ресурс 2''' - счетчик призовых кристаллов.&lt;br /&gt;
*'''Призовой опыт''' - счетчик призового опыта.&lt;br /&gt;
*'''Аномальный опыт''' - счетчик, отображающий дополнительный призовой опыт, который дается за прохождение локации с аномалией.&lt;br /&gt;
*'''Таблица коллекции''' - таблица, в которой будут отображаться предметы, которые можно найти в данной локации.&lt;br /&gt;
*'''ничего не найдено''' - Любой объект, так или иначе сообщающий игроку, что он не нашел ничего ценного.&lt;br /&gt;
&lt;br /&gt;
===Окно перед монстром===&lt;br /&gt;
*'''окно''' - некая машина, олицетворяющая собой само окно превью. Должна иметь состояние open.&lt;br /&gt;
*'''превью монстра ''' - картинка, отображающая превью монстра.&lt;br /&gt;
*'''название монстра''' - текстовый объект, показывающий название монстра.&lt;br /&gt;
*'''описание монстра''' - текстовый объект, показывающий описание монстра.&lt;br /&gt;
*'''необходимая энергия''' - счетчик, отображающий количество необходимой энергии.&lt;br /&gt;
*'''призовой ресурс 1''' - счетчик, отображающий количество призовых денег.&lt;br /&gt;
*'''призовой опыт''' - счетчик, отображающий количество призового опыта.&lt;br /&gt;
*'''таблица коллекции''' - таблица, в которой будут отображаться предметы, которые можно отжать у данного монстра.&lt;br /&gt;
*'''иконка предмета''' - картинка, которая отображает предмет необходимый для игры с монстром.&lt;br /&gt;
*'''нужно предметов''' - счетчик, который отображает необходимое количество предметов.&lt;br /&gt;
*'''есть предметов''' - счетчик, который отображает текущее количество предметов, находящееся в наличии.&lt;br /&gt;
*'''суммарная стоимость''' - счетчик, который отображает суммарную стоимость недостающих предметов.&lt;br /&gt;
*'''кнопка купить''' - кнопка, по нажатию которой, происходит покупка недостающих предметов.&lt;br /&gt;
*'''кнопка прогнать''' - кнопка, по нажатию которой, можно прогнать монстра не играя в игру, эту кнопку можно не задавать.&lt;br /&gt;
&lt;br /&gt;
===Окно после монстра===&lt;br /&gt;
&lt;br /&gt;
*'''окно''' - некая машина, олицетворяющая собой само окно превью. Должна иметь состояние open.&lt;br /&gt;
*'''превью монстар''' - картинка, отображающая превью монстра.&lt;br /&gt;
*'''название монстра''' - текстовый объект, показывающий название монстра.&lt;br /&gt;
*'''описание монстра''' - текстовый объект, показывающий описание монстра.&lt;br /&gt;
*'''призовой ресурс 1''' - счетчик, отображающий количество призовых денег.&lt;br /&gt;
*'''призовой опыт''' - счетчик, отображающий количество призового опыта.&lt;br /&gt;
*'''таблица коллекции''' - таблица, в которой будут отображаться предметы, которые можно отжать у данного монстра.&lt;br /&gt;
*'''ничего не найдено''' - любой объект, сообщающий игроку, так или иначе, что он не нашел ничего ценного на данной локации.&lt;br /&gt;
&lt;br /&gt;
===Окно коллекций===&lt;br /&gt;
&lt;br /&gt;
*'''Шаблон коллекции''' - ссылка на объект типа ecollection который будет использоваться в качестве исходного для всех коллекций.&lt;br /&gt;
*'''Таблица''' - таблица, куда по ссылке будут добавлены шаблоны коллекции.&lt;br /&gt;
*'''алерт''' - некая машина, олицетворяющая собой само окно предмета. Должна иметь состояние open. Окно с информацией о предмете всплывает в окне с коллекциями.&lt;br /&gt;
*'''иконка''' - Иконка предмета.&lt;br /&gt;
*'''текст (объект)''' - Текстовый объект в окошке.&lt;br /&gt;
*'''описание (объект)''' - Текстовый объект в окошке, в который сложим описание предмета.&lt;br /&gt;
*'''имя коллекции (объект)''' - В это поле будет записано имя коллекции, к которой относится предмет.&lt;br /&gt;
*'''цифры''' - фреймовая анимация содержащая в себе цифры. Последний фрейм анимации - отметка много.&lt;br /&gt;
&lt;br /&gt;
===Окошко коллекционного предмета===&lt;br /&gt;
&lt;br /&gt;
*'''окно''' - Некая машина, олицетворяющая собой само окно предмета. Должна иметь состояние open. Окошко всплывает при клике на предмет в таблице окна перед/после локации.&lt;br /&gt;
*'''иконка''' - Иконка предмета.&lt;br /&gt;
*'''текст (объект)''' - Текстовый объект в окошке.&lt;br /&gt;
*'''описание (объект)''' - Текстовый объект в окошке, в который сложим описание предмета.&lt;br /&gt;
*'''имя коллекции (объект)''' - В это поле будет записано имя коллекции, к которой относится предмет.&lt;br /&gt;
&lt;br /&gt;
===Окошко поздравления со сдачей коллекции===&lt;br /&gt;
&lt;br /&gt;
*'''окно''' - некая машина,содержащая необходимую информацию, олицетворяющая само окно предмета. Должна иметь в себе состояние open.&lt;br /&gt;
*'''иконка''' - картинка отображающая иконку предмета-награды.&lt;br /&gt;
*'''текст(объект)''' -  текстовый объект, отображающий название коллекции.&lt;br /&gt;
*'''призовой ресурс 1''' - счетчик, отображающий количество призовых денег.&lt;br /&gt;
*'''призовой опыт''' - счетчик, отображающий количество призовых денег.&lt;br /&gt;
&lt;br /&gt;
===Окошко инвентарного предмета===&lt;br /&gt;
&lt;br /&gt;
*'''окно''' - Некая машина, олицетворяющая собой само окно предмета. Должна иметь состояние open. Окошко всплывает при клике на предмет в таблице окна перед/после локации.&lt;br /&gt;
*'''иконка''' - Иконка предмета.&lt;br /&gt;
*'''текст (объект)''' - Текстовый объект в окошке.&lt;br /&gt;
*'''описание (объект)''' - Текстовый объект в окошке, в который сложим описание предмета.&lt;br /&gt;
&lt;br /&gt;
===Окошко поздравления с получением уровня===&lt;br /&gt;
&lt;br /&gt;
*'''окно''' - некая машина, содержащая необходимую информацию, олицетворяющая собой само окно предмета. Должна иметь состояние open.&lt;br /&gt;
*'''уровень''' - счетчик, отображающий номер полученного уровня.&lt;br /&gt;
*'''энергия''' - счетчик, отображающий количество энергии, которая прибавляется к максимуму.&lt;br /&gt;
*'''ресурс 1''' - счетчик, отображающий количество денег.&lt;br /&gt;
*'''ресурс 2''' - счетчик, отображающий количество кристаллов.&lt;br /&gt;
&lt;br /&gt;
===Окошко поздравления с получением уровня и открытием локации===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*'''окно''' - некая машина, содержащая необходимую информацию, олицетворяющая собой само поздравительное окошко. Должна иметь состояние open.&lt;br /&gt;
&lt;br /&gt;
*'''уровень''' - счетчик, отображающий номер полученного уровня.&lt;br /&gt;
&lt;br /&gt;
*'''энергия''' - счетчик, отображающий количество энергии, которая прибавляется к максимуму.&lt;br /&gt;
&lt;br /&gt;
*'''ресурс 1''' - счетчик, отображающий количество денег.&lt;br /&gt;
&lt;br /&gt;
*'''ресурс 2''' - счетчик, отображающий количество кристаллов.&lt;br /&gt;
&lt;br /&gt;
*'''иконка локации''' - картинка, отображающая иконку локации, которая стала доступна&lt;br /&gt;
&lt;br /&gt;
*'''описание локации''' - текстовый объект, который отображает описание локации, которая стала доступна.&lt;br /&gt;
&lt;br /&gt;
===Окошко получения уровня на локации===&lt;br /&gt;
&lt;br /&gt;
*'''окно''' - некая машина, содержащая необходимую информацию, олицетворяющая собой само поздравительное окошко. Должна иметь состояние open.&lt;br /&gt;
*'''опции''' - поле в опциях, в которое записывается уровень по локации.&lt;br /&gt;
&lt;br /&gt;
===Окошко, когда не хватает чарджера (общее) ===&lt;br /&gt;
&lt;br /&gt;
*'''окно''' - некая машина, содержащая необходимую информацию, олицетворяющая собой само уведомительное окошко. Должна иметь состояние open.&lt;br /&gt;
*'''иконка''' - картинка, отображающая иконку предмета, который игрок получит за сдачу коллекции.&lt;br /&gt;
*'''текст''' - текстовый объект, который будет отображать описание коллекции.&lt;br /&gt;
*'''суммарная цена ресурса 1''' - счетчик, отображающий суммарную цену всех необходимых чарджеров, представлена в виде ресурса 1 (деньги).&lt;br /&gt;
*'''суммарная цена ресурса 2''' - счетчик, отображающий суммарную цену всех необходимых чарджеров, представлена в виде ресурса 2 (кристаллы).&lt;br /&gt;
*'''кнопка купить все''' - кнопка, по нажатию которой, происходит покупка необходимых предметов. Если в кнопке есть необходимость она будет появляться, в противном случае - сама исчезать.&lt;br /&gt;
&lt;br /&gt;
===Окошко, которое выезжает когда найден коллекционный предмет ===&lt;br /&gt;
&lt;br /&gt;
*'''окно''' - некая машина, содержащая необходимую информацию, олицетворяет собой само поздравительное окошко. Должна иметь состояние show.&lt;br /&gt;
*'''текст''' - текстовый объект, который используется для отображения названия коллекции.&lt;br /&gt;
*'''таблица''' - таблица, в которую складываются объекты коллекции.&lt;br /&gt;
&lt;br /&gt;
=== Настройки симуляции ===&lt;br /&gt;
&lt;br /&gt;
*'''время''' - время симуляции, измеряется в секундах.&lt;br /&gt;
&lt;br /&gt;
*'''минимум в локации''' - нижняя граница диапазона времени проводимого игроком в хиддене. Отображается в виде доли от времени из настроек локации.&lt;br /&gt;
&lt;br /&gt;
*'''максимум в локации''' - верхняя граница диапазона времени проводимого игроком в хиддене. Отображается в виде доли от времени из настроек локации.&lt;br /&gt;
*'''порог покупки''' - число, указывающее какую долю, от ресурсов игрока, должна составлять цена локации, что бы он решился её купить.&lt;br /&gt;
*'''порог покупки предмета''' - число, указывающее какую долю,от ресурсов игрока, должна составлять цена предмета, что бы он решился его купить.&lt;br /&gt;
*'''вероятность задачи''' - число, отображающее вероятность того, что симуляция будет выбирать не из всех доступных локаций, а из связанных с заданиями.&lt;br /&gt;
*'''вероятность матча''' -  число, отображающее вероятность того, что симуляция будет играть в матч.&lt;br /&gt;
*'''изначально хинтов''' - изначальное количество хинтов.&lt;br /&gt;
*'''предметов на хинт''' - на сколько найденных предметов игрок израсходует хинт.&lt;br /&gt;
*'''цена хинта монеты''' - сколько монет (ресурс 1), стоит некий усредненный хинт.&lt;br /&gt;
*'''цена хинта клисталлы''' - сколько кристаллов (ресурс 2), стоит некий усредненный хинт.&lt;br /&gt;
*'''хидденов подряд''' - игрок будет пытаться пройти не менее данного числа хидденов подряд.&lt;br /&gt;
*'''восстановить энергии''' - некое усредненное количество энергии для восстановления.&lt;br /&gt;
*'''цена энергии монеты''' - сколько монет стоит энергия (цена в ресурсе 1).&lt;br /&gt;
*'''цена энергии кристаллы''' - сколько кристаллов стоит энергия (цена в ресурсе 2).&lt;br /&gt;
*'''вероятность победы в матче'' - число, отображающее вероятность победы в матче.&lt;br /&gt;
*'''время в матче''' - условное время пребывания в матче.&lt;br /&gt;
*'''вероятность покупки за реал''' - каждый раз когда игроку не хватает денег или кристаллов - проверяем эту вероятность.&lt;br /&gt;
*'''цена монеты в деньгах''' - цена монеты в деньгах.&lt;br /&gt;
*'''количество монет в покупке''' - количество монет в покупке.&lt;br /&gt;
*'''цена кристаллов в деньгах''' - цена кристаллов деньгах.&lt;br /&gt;
*'''количество кристаллов в покупке''' - количество кристаллов в покупке.&lt;br /&gt;
&lt;br /&gt;
==Поле economics setup==&lt;br /&gt;
По клику на &amp;quot;...&amp;quot; открывается редактор экономикса. В этом редакторе можно задать все настройки локациям и коллекциям, которые используются в игре.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Economics 1.jpg|500px]]&lt;br /&gt;
&lt;br /&gt;
Economics setup содержит 11 вкладок : локация хидден, коллекция, предметы, окошко когда не хватает чарджера (чарджер), нехватка ресурсов на чарджер, монстр, летающий объект, аномалия, сдача коллекции, временный эффект, достижение.&lt;br /&gt;
Вверху можно увидеть ряд кнопок для добавления и удаления: справа для локаций, слева для уровней мастерства.&lt;br /&gt;
&lt;br /&gt;
===Локация хидден===&lt;br /&gt;
&lt;br /&gt;
Форма редактора экономикса разделена на 4 колонки. В первой колонке мы видим список локаций, используемых в игре. Имена локаций можно изменять. Добавляются новые локации по нажатию на кнопку ''Добавить локацию'', удаляются кнопкой ''Удалить локацию''. Во второй колонке отображаются свойства выделенной локации.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Economics 2.jpg|right]]&lt;br /&gt;
*'''Объект на карте''' - это объект ведущий в локацию с карты. Должен иметь как минимум состояния open и closed, которые ему будет вызывать экономикс.&lt;br /&gt;
*'''индиктор уровня''' - каунтер, который будет отображать номер уровня, начиная с которого локация доступна.&lt;br /&gt;
*'''Экран''' - экран, в котором расположен локация.&lt;br /&gt;
*'''Превью локации''' - графический ресурс для отображения превью локации из базы ресурсов.&lt;br /&gt;
*'''Имя локации''' - название локации, перетаскивается из текстовой базы.&lt;br /&gt;
*'''Описание локации''' - описание, перетаскивается из текстовой базы.&lt;br /&gt;
*'''Уровень''' - уровень требуемый для того, чтобы играть в локацию.&lt;br /&gt;
*'''Результат''' - имя поля в опциях, куда локацией будет занесен результат. Расчитываем найти там число.&lt;br /&gt;
*'''Связанный хидден лист''' - хидден-лист, связанный с локацией.&lt;br /&gt;
*'''необходимый предмет''' - предмет необходимый для входа в локацию. Может быть как коллекционным, так и инвентарным.&lt;br /&gt;
*'''разница в уровнях''' - разница в уровнях, при которой можно купить доступ в локацию.&lt;br /&gt;
*'''цена ресурс 1''' - если наш уровень ниже необходимого на разницу из верхнего поля, мы можем разлочить локацию за деньги.&lt;br /&gt;
*'''цена ресурс 2''' - если наш уровень ниже необходимого на разницу из верхнего поля, мы можем разлочить локацию за кристаллы.&lt;br /&gt;
*'''достижение''' - достижение, которое будет открываться по мере игры в эту локацию.&lt;br /&gt;
*'''процент''' - проценты достижения из предыдущего поля.&lt;br /&gt;
&lt;br /&gt;
В третей  колонке записываются уровни мастерства. Их можно переименовать. Добавляются кнопкой ''Добавить уровень мастерства''. Удаляются кнопкой ''Удалить уровень мастерства''. В четвертой колонке настраивается выделенный уровень мастерства.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Economics 3.jpg|right]]&lt;br /&gt;
*'''энергия''' - энергия требуемая для того, чтобы играть в локацию.&lt;br /&gt;
*'''ресурс 1''' - деньги даваемые за прохождение локации.&lt;br /&gt;
*'''ресурс 2''' - кристаллы даваемые за прохождение локации.&lt;br /&gt;
*'''опыт''' - опыт даваемый за прохождение локации.&lt;br /&gt;
*'''кол-во объектов''' - максимальное количество доступных для поиска объектов в одной игровой сессии.&lt;br /&gt;
*'''время игры''' - общее время игры (если -1, то игнорируется).&lt;br /&gt;
*'''режим игры''' - режим игры: 0 - случайный, 1- слова, 2 - силуэты.&lt;br /&gt;
*'''аномалия''' - вероятность возникновения аномалии в локациях.&lt;br /&gt;
*'''доступные аномалии''' - перечень доступных на данном уровне мастерства аномалий. Записываются в виде чисел через запятую. Доступные значения 0, 1, 2, 3.&lt;br /&gt;
*'''множитель''' - коэффициент, на который умножаются набранные очки. при расчете перехода на следующий уровень. Может быть меньше 1.&lt;br /&gt;
*'''постоянный прирост''' - постоянный прирост, если он больше 0, то будет использоваться ВМЕСТО реально набранных в хиддене очков и множителя.&lt;br /&gt;
*'''очки''' - очки, которые нужно набрать для перехода на следующий уровень мастерства. Набранные в локции очки умножаются на множитель и суммируются. Когда превысят это значение - произойдет переход.&lt;br /&gt;
*'''Предметы''' - id коллекционных предметов, которые можно найти на локации. Не обязаны принадлежать к одной коллекции. Перетаскиваются из текстового редактора. Будет использоваться их иконка.&lt;br /&gt;
*'''Вероятность''' - вероятность найти один из коллекционных предметов из предыдущего поля.&lt;br /&gt;
*'''Вероятность 2''' - вероятность найти один из коллекционных предметов из предыдущего поля.&lt;br /&gt;
*'''Вероятность 3''' - вероятность найти один из коллекционных предметов из предыдущего поля.&lt;br /&gt;
*'''Инвентарь''' - id инвентарных предметов, которые можно найти на локации. Перетаскиваются из текстового редактора.&lt;br /&gt;
*'''Вероятность инв.''' - вероятность найти один из инвентарных предметов из предыдущего поля.&lt;br /&gt;
*'''Вероятность инв. 2''' - вероятность найти один из инвентарных предметов из предыдущего поля.&lt;br /&gt;
*'''Вероятность инв. 3''' - вероятность найти один из инвентарных предметов из предыдущего поля.&lt;br /&gt;
&lt;br /&gt;
===Коллекция===&lt;br /&gt;
&lt;br /&gt;
Во вкладке ''Коллекция'' используются только первые две колонки. В первой колонке отображаются добавленные коллекции. Добавляются кнопкой ''Добавить локацию''. Удаляются кнопкой ''Удалить локацию''. Коллекции можно переименовывать. Второй столбик содержит id предметов входящих в коллекции. Перетаскиваются из текстового редактора. Будет использоваться их иконка. Ресурс 1 и ресурс 2 - ресурсы, которые даются за сдачу коллекции. Опыт - опыт, который дается за сдачу коллекции.&lt;br /&gt;
&lt;br /&gt;
*'''имя''' - Имя (а также - описание, если нужно) конкретно коллекции.&lt;br /&gt;
*'''предметы''' - id предметов входящих в коллекции. Перетаскиваются из текстового редактора. Будет использоваться их иконка.&lt;br /&gt;
*'''ресурс 1''' - деньги даваемые за сдачу коллекции.&lt;br /&gt;
*'''ресурс 2''' - кристаллы даваемые за сдачу коллекции.&lt;br /&gt;
*'''опыт''' - опыт даваемый за сдачу коллекции.&lt;br /&gt;
*'''награда''' - предмет даваемый за сдачу коллекции. Перетаскивается из текстовой базы.&lt;br /&gt;
*'''заряжатели''' - Предметы инвентаря, необходимые для сдачи коллекции. ВНИМАНИЕ: будут использоваться не более первых 4х элементов списка.&lt;br /&gt;
&lt;br /&gt;
===Предметы===&lt;br /&gt;
&lt;br /&gt;
Раздел &amp;quot;Предметы&amp;quot; позволяет добавлять список инвентарных предметов, которые могут использоваться в процессе игры, предоставлять различные бонусы. В первой колонке список предметов. Добавляется кнопкой  &amp;quot;Добавить локацию&amp;quot;, удаляется кнопкой &amp;quot;Удалить локацию&amp;quot;. Предметы могут быть переименованы. Во второй колонке записаны свойства каждого предмета.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Economics 4.jpg|350px|right]]&lt;br /&gt;
&lt;br /&gt;
*'''nm''' - имя предмета&lt;br /&gt;
&lt;br /&gt;
*'''section''' - категория предмета.&lt;br /&gt;
&lt;br /&gt;
*'''use''' - если 1, то предмет может использоваться (кнопка Use видимая).&lt;br /&gt;
&lt;br /&gt;
*'''nm''' - имя предмета (txtID).&lt;br /&gt;
&lt;br /&gt;
*'''опции''' - если это поле задано, то в него будет записываться актуальное количество объектов.&lt;br /&gt;
&lt;br /&gt;
*'''начальное количество''' - начальное  количество предметов данного типа в инвентаре.&lt;br /&gt;
&lt;br /&gt;
*'''можно продать''' - возможность продавать предмет: 1 - можно продать, 0 - нельзя продать.&lt;br /&gt;
&lt;br /&gt;
*'''уникальный''' - если 1 - то предмет уникальный пропадает после покупки, если 0 - предмет после покупки не пропадает.&lt;br /&gt;
&lt;br /&gt;
*'''res1''' - цена предмета в ресурсе 1.&lt;br /&gt;
&lt;br /&gt;
*'''res2''' - цена предмета в ресурсе 2.&lt;br /&gt;
&lt;br /&gt;
*'''sres1''' - продажа - цена предмета в ресурсе 1.&lt;br /&gt;
&lt;br /&gt;
*'''sres2''' - продаже - цена предмета в ресурсе 2.&lt;br /&gt;
&lt;br /&gt;
*'''en''' - восстанавливает энергии единовременно.&lt;br /&gt;
&lt;br /&gt;
*'''tm''' - длительность действия в секундах.&lt;br /&gt;
&lt;br /&gt;
*'''dTm''' - уменьшение времени восстановления энергии в %.&lt;br /&gt;
&lt;br /&gt;
*'''dFnd''' - увеличение вероятности нахождения предмета в %.&lt;br /&gt;
&lt;br /&gt;
*'''dExp''' - увеличение начисляемого опыта в %.&lt;br /&gt;
&lt;br /&gt;
*'''dRes1''' - увеличение полученного ресурса 1 в %.&lt;br /&gt;
&lt;br /&gt;
*'''dRes2''' - увеличение полученного ресурса 2 в %.&lt;br /&gt;
&lt;br /&gt;
*'''dOvP''' - увеличение перегруженной вероятности нахождения предметов в %.&lt;br /&gt;
&lt;br /&gt;
*'''num''' - число предметов в сундуке. Выбираются случайно из следующего поля. При 0 - следующее поле не используется.&lt;br /&gt;
&lt;br /&gt;
*'''items''' - предметы, которые можно найти в сундуке. Перетаскиваются из текстовой базы.&lt;br /&gt;
&lt;br /&gt;
*'''use_id''' - задание этого поля говорит о том, что данный предмет является оптовым пучком для предмета указанного у этом поле. Num, в этом случае, - количество.&lt;br /&gt;
&lt;br /&gt;
*'''объект''' - связанный объект, будет добавляться в инвентарь.&lt;br /&gt;
&lt;br /&gt;
*'''достижение''' - достижение, которое будет открываться по мере применения подобный предметов.&lt;br /&gt;
&lt;br /&gt;
*'''процент''' - процент достижения их предыдущего поля.&lt;br /&gt;
&lt;br /&gt;
*'''владелец''' - на данный момент - номер правильной кнопки в окне угадайки (если -1. то игнорируется).&lt;br /&gt;
&lt;br /&gt;
===Окошко когда не хватает чарджера===&lt;br /&gt;
Позволяет добавлять окна. Окно добавляется кнопкой &amp;quot;Добавить локацию&amp;quot;, окно можно переименовывать, удаляется кнопкой &amp;quot;Удалить локацию&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
*'''название''' - текстовый объект в который вкладывается название чарджера.&lt;br /&gt;
*'''иконка''' - иконка чарджера.&lt;br /&gt;
*'''описание''' - текстовый объект в который вкладывается название чарджера.&lt;br /&gt;
*'''купить''' - кнопка покупка чарджера, передает economics состояние buy_charger.&lt;br /&gt;
*'''искать''' - кнопка поиска чарджера, передает economics состояние search_charger.&lt;br /&gt;
*'''есть''' - счетчик, который показывает сколько чарджеров есть сейчас.&lt;br /&gt;
*'''нужно''' - счетчик, который показывает сколько чарджерова необходимо для сдачи коллекции.&lt;br /&gt;
*'''цена ресурса 1''' - счетчик, который показывает цену чарджера в ресурсе 1.&lt;br /&gt;
*'''цена ресурса 2''' - счетчик, который показывает цену чарджера в ресурсе 2.&lt;br /&gt;
*'''достаточно''' -  объект, который отображается вместо кнопки, в тот момент, когда чарджеров достаточное количество.&lt;br /&gt;
&lt;br /&gt;
===Нехватка ресурсов на чарджер===&lt;br /&gt;
Позволяет изменить состояние выбранному объекту при нехватке ресурсов на чарджер. Добавляется кнопкой &amp;quot;Добавить локацию&amp;quot;, можно переименовывать, удаляется кнопкой &amp;quot;Удалить локацию&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
===Монстр===&lt;br /&gt;
В первой колонке добавляется монстр, добавляется кнопкой &amp;quot;Добавить локацию&amp;quot;, если возможность переименовать, удаляется кнопкой &amp;quot;Удалить локацию&amp;quot;&lt;br /&gt;
Во второй колонке отображаются свойства выделенной колонки.&lt;br /&gt;
&lt;br /&gt;
*'''Объект на карте''' - объект, который представляет монстра на карте. Как правило окно, которое должно иметь состояние hide и show.&lt;br /&gt;
*'''Имя монстра''' - текстовый id из которого берется иконка, имя и описание монстра.&lt;br /&gt;
*'''Экран''' - экран в котором расположена локация.&lt;br /&gt;
*'''min уровень''' - уровень, при достижении которого, появляется монстр.&lt;br /&gt;
*'''max уровень''' - уровень, при достижении которого, монстр исчезает.&lt;br /&gt;
*'''необходимый предмет''' - предмет необходимый для игры с духом.&lt;br /&gt;
*'''количество''' -  количество предметов из поля &amp;quot;необходимый предмет&amp;quot;. &lt;br /&gt;
*'''связанный баттл''' - поле в котором указывается связанный баттл.&lt;br /&gt;
*'''связанный матч''' - полое в котором указывается связанный матч.&lt;br /&gt;
&lt;br /&gt;
В третей колонке записываются уровни мастерства. Их можно переименовывать. Добавляются уровни кнопкой &amp;quot;Добавить уровень мастерства&amp;quot;, удаляются кнопкой &amp;quot;Удалить уровень мастерства&amp;quot;.&lt;br /&gt;
В четвертой колонке настраивается выделенный уровень мастерства.&lt;br /&gt;
&lt;br /&gt;
*'''энергия''' - энергия необходимая для того, что бы можно было начать играть в локацию.&lt;br /&gt;
*'''ресурс1''' - деньги даваемые за прохождение локации.&lt;br /&gt;
*'''опыт''' - опыт даваемый за прохождение локации.&lt;br /&gt;
*'''постоянный прирост''' - постоянный прирост.&lt;br /&gt;
*'''очки''' - количество очков, которое необходимо набрать для перехода на следующий уровень мастерства.&lt;br /&gt;
*'''предметы''' - id коллекционных предметов, которые можно найти на локации. Предметы не обязательно должны быть из одной коллекции. Необходимые предметы перетаскиваются из текстового редактора, при этом будет использоваться их иконка.&lt;br /&gt;
*'''Вероятность''' - вероятность найти один из коллекционных предметов из поля &amp;quot;предметы&amp;quot;.&lt;br /&gt;
*'''Вероятность 2''' - вероятность найти один из коллекционных предметов из поля &amp;quot;предметы&amp;quot;.&lt;br /&gt;
*'''Вероятность 3''' - вероятность найти один из коллекционных предметов из поля &amp;quot;предметы&amp;quot;.&lt;br /&gt;
*'''Инвентарь''' - id инвентарных предметов, которые можно найти на локации. Перетаскиваются из текстового редактора.&lt;br /&gt;
*'''Вероятность инв.''' - вероятность найти один из инвентарных предметов из поля &amp;quot;инвентарь&amp;quot;.&lt;br /&gt;
*'''Вероятность инв. 2''' - вероятность найти один из инвентарных предметов из поля &amp;quot;инвентарь&amp;quot;.&lt;br /&gt;
*'''Вероятность инв. 3''' - вероятность найти один из инвентарных предметов из поля &amp;quot;инвентарь&amp;quot;.&lt;br /&gt;
*'''жизни врага''' - записываются значения вражеских жизней.&lt;br /&gt;
*'''начальные жизни врага''' - начальное значение вражеских жизней.&lt;br /&gt;
*'''регенерация врага''' - время (в ms), за которое у противника отрастает жизнь. Если установлено -1, то отрастания жизни противника на происходит.&lt;br /&gt;
*'''число цветов''' - это число будет записываться в параметр numTokenNums матча.&lt;br /&gt;
&lt;br /&gt;
===Летающий объект===&lt;br /&gt;
Впервой колонке кнопкой &amp;quot;Добавить локацию&amp;quot; добавляется летающий объект - объекты которые вылетают после прохождения локации или после покупки сундуков. Удаляется кнопкой &amp;quot;Удалить локацию&amp;quot;. Во второй колонке добавляется объект выделенного летающего объекта. Состояния hide, wait, inventory и  collection  -  обязательны для этого предмета.&lt;br /&gt;
&lt;br /&gt;
===Аномалия===&lt;br /&gt;
&lt;br /&gt;
Впервой колонке добавляется аномалия, добавляется кнопкой &amp;quot;Добавить локацию&amp;quot;, можно переименовывать, удаляется кнопкой &amp;quot;Удалить локацию&amp;quot;.&lt;br /&gt;
Во второй колонке отображаются свойства выделенной аномалии.&lt;br /&gt;
*'''id''' - поле в которое перетаскивается текстовый id, из которого используется название, описание и иконка аномалии.&lt;br /&gt;
*'''предмет''' - предмет необходимый для того, что бы изгнать аномалию.&lt;br /&gt;
*'''экран''' -  в этом поле указывается экран, в котором расположена миниигра.&lt;br /&gt;
*'''прибавка к энергии''' - указывается прибавка к энергии, поскольку для игры в аномалию будет нужно больше энергии. Например, при значении 0,5 - энергии потребуется больше в полтора раза.&lt;br /&gt;
*'''прибавка к опыту''' - указывается прибавка к опыту, поскольку игра в локацию с аномалией будет давать больше опыта. Например, при значении 0,5 - опыта приобретается больше в полтора раза.&lt;br /&gt;
*'''прибавка к ресурсу 1''' - указывается прибавка к ресурсу 1. поскольку игра в локацию с аномалией будет давать больше ресурса 1. Например, при значении 0,5 - ресурса 1 приобретается больше в полтора раза.&lt;br /&gt;
&lt;br /&gt;
===Сдача коллекции===&lt;br /&gt;
&lt;br /&gt;
В первой колонке добавляется сдача колонки, кнопкой &amp;quot;Добавить локацию&amp;quot;, удаляется кнопкой &amp;quot;Удалить локацию&amp;quot;&lt;br /&gt;
Во второй колонке устанавливается состояние объекту сдачи коллекции.&lt;br /&gt;
&lt;br /&gt;
===Временный эффект===&lt;br /&gt;
&lt;br /&gt;
в первой колонке создается временный эффект, добавляется кнопкой &amp;quot;Добавить локацию&amp;quot;, удаляется кнопкой &amp;quot;Удалить локацию&amp;quot;.&lt;br /&gt;
Во второй колонке устанавливаются свойства выделенного временного эффекта.&lt;br /&gt;
&lt;br /&gt;
*'''иконка''' - из редактора ресурсов, перетаскивается иконка временного эффекта&lt;br /&gt;
*'''таймер''' - указывается объект типа timer, который соответствует выбранному временному эффекту.&lt;br /&gt;
*'''подложка''' - из редактора ресурсов, перетаскивается картинка подложки для таймера указанного в поле &amp;quot;таймер&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
===Достижение===&lt;br /&gt;
В первой колонке записываются достижения. Добавляются кнопкой &amp;quot;Добавить локацию&amp;quot;, удаляются кнопкой &amp;quot;Удалить локацию&amp;quot;. &lt;br /&gt;
Во второй колонке отображаются свойства выбранного достижения.&lt;br /&gt;
&lt;br /&gt;
*'''достижение''' - достижение, которое будет открываться по мере применения подобных предметов.&lt;br /&gt;
&lt;br /&gt;
*'''процент''' - в виде числа, указывается процент достижения из поля &amp;quot;достижение&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
*'''режим игры''' - указывается режим игры, ели 0 - режим игры не важен для достижения, 1 - режим игры слова, 2 - режим игры силуэты.&lt;br /&gt;
&lt;br /&gt;
*'''аномалия''' - указывается аномалия необходимая для достижения, если указывается -2 -  то аномалия не важна для достижения, если указывается -1 - то для достижения может использоваться любая аномалия.&lt;br /&gt;
&lt;br /&gt;
==Состояния==&lt;br /&gt;
&lt;br /&gt;
[[Файл:Economics 5.jpg|right]]&lt;br /&gt;
Перед вызовом некоторых состояний объекту economics необходимо передать параметр '''param''' и его значение. Например когда нам нужно открыть окно перед локацией мы передаем параметр номера этой локации в списке локаций (начиная с 0).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear /br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*'''completed''' - передает состояние окончания исследования локации (необходим параметр номера локации).&lt;br /&gt;
*'''exp''' - передает состояние начисления опыта (необходим параметр количества опыта). Нужен больше для тестирования, чем для самой игры.&lt;br /&gt;
*'''play''' - передает состояния перехода на локацию для исследования.&lt;br /&gt;
*'''location''' - открывает окно перед локацией (необходим параметр номера локации).&lt;br /&gt;
*'''collection''' - заставляет экономикс заполнить таблицу коллекций. Лучше вызывать сразу перед открытием окна коллекций или во время его открытия.&lt;br /&gt;
*'''collections_scroll''' - заполняет таблицу коллекций и проматывает на коллекцию содержащую последний предмет для которого было показано окошко с информацией о предмете.&lt;br /&gt;
*'''item_collections''' - заставляет экономикс показать окошко с информацией о коллекционном предмете. Вызывается при тапе на таблицу в темплейте коллекций (объект ecollection).&lt;br /&gt;
*'''item_preview''' - заставляет экономикс показать окошко с информацией о предмете, который можно найти при обыске локации. Вызывается при тапе на таблицу с предметами в окне перед локацией.&lt;br /&gt;
*'''item_review''' - заставляет экономикс показать окошко с информацией о предмете, который нашли после обыска локации. Вызывается при тапе на таблицу с предметами в окне после локации.&lt;br /&gt;
*'''completed_animation''' - состояние запускает анимацию полученной награды за прохождение локации после &amp;quot;окна после локации&amp;quot;. Можно запускать из состояния закрытия окна после локации.&lt;br /&gt;
*'''completed_reward''' - вызывается объектом анимации награды после прохождения локации. Если объектов несколько (опыт, монеты, кристаллы), то вызывается только один раз одним из объектов.&lt;br /&gt;
&lt;br /&gt;
=Сопутствующие объекты=&lt;br /&gt;
&lt;br /&gt;
Объекты, которые используются вместе с объектом economics и имеют с ним непосредственную связь:&lt;br /&gt;
&lt;br /&gt;
* [[Файл:E_items.png]] - [[Eitems]] - объект, служащий для связи инвентаря(магазина) и экономики. &lt;br /&gt;
* [[Файл:E_store_item.png]] - [[Estoreitem]] - шаблон для ячейки магазина. &lt;br /&gt;
* [[Файл:E_inventory_item.png]] - [[Einventoryitem]] - шаблон для ячейки инвентаря. &lt;br /&gt;
* [[Файл:Taskorganizer.png]] - [[Taskorganizer]] - органайзер заданий.&lt;br /&gt;
* [[Файл:E_task_item.png]] - [[Etaskitem]] - шаблон для ячейки задания.&lt;br /&gt;
* [[Файл:E_collection.png]] - [[Ecollection]] - шаблон для строки в таблице коллекции.&lt;br /&gt;
* [[Файл:Economics.png]] - [[Economics]] - глобальная настройка игр типа ферма\билдер&lt;/div&gt;</summary>
		<author><name>Podkor</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.appsalutecreator.com/index.php?title=Gamecenter&amp;diff=5108</id>
		<title>Gamecenter</title>
		<link rel="alternate" type="text/html" href="https://wiki.appsalutecreator.com/index.php?title=Gamecenter&amp;diff=5108"/>
		<updated>2013-09-05T09:10:50Z</updated>

		<summary type="html">&lt;p&gt;Podkor: /* Проверка получения achievement */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Объект используется для отправки данных на gamecenter. Отправлять можно набранные очки (score) или достижения (achievement).&lt;br /&gt;
&lt;br /&gt;
== Параметры и модификаторы ==&lt;br /&gt;
&lt;br /&gt;
[[Файл:Gc1.jpg|right]]&lt;br /&gt;
* положение - определяет положение объекта на сцене.&lt;br /&gt;
* размер - определяет размер объекта на сцене.&lt;br /&gt;
* achievement - достижение, которое будем отправлять.&lt;br /&gt;
* achievement percent - на сколько процентов завершено достижение.&lt;br /&gt;
* score - очки, которые мы будем отправлять.&lt;br /&gt;
* score category - категория, в которую мы отправляем очки (ссылка на leaderboard).&lt;br /&gt;
* состояние - состояние, которое мы передаем объекту gamecenter&lt;br /&gt;
 '''authenticate''' - состояние, по которому начинается авторизация мобильного &lt;br /&gt;
 устройства на геймцентре.&lt;br /&gt;
 '''score''' - состояние, по которому отправляются очки.&lt;br /&gt;
 '''achievement''' - состояние, по которому отправляются достижения.&lt;br /&gt;
 '''score_show''' - состояние, по которому можно посмотреть очки на геймцентре.&lt;br /&gt;
 '''achievements_show''' - состояние, по которому можно посмотреть достижения.&lt;br /&gt;
&lt;br /&gt;
== Пример применения ==&lt;br /&gt;
&lt;br /&gt;
На геймцентр можно отправлять очки и достижения. Для того, чтобы к объекту gamecenter был доступ, его лучше размещать на глобальном экране. Рассмотрим на примере отправку очков и достижений.&lt;br /&gt;
&lt;br /&gt;
=== Очки ===&lt;br /&gt;
&lt;br /&gt;
Для того, чтобы объект gamecenter мог обмениваться данными с геймцентром, он должен сначала авторизироваться. Проводить авторизацию нужно на экране, предшествующему экрану, где нужно отправлять очки. Для этого можно сделать отдельную машину.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Gc2.jpg]]&lt;br /&gt;
&lt;br /&gt;
Для отправки очков нужно будет последовательно заполнить все параметры. Приведу пример, как это делается в машине соcтояний.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Gc3.jpg]]&lt;br /&gt;
&lt;br /&gt;
Чтобы посмотреть очки мы передаем объекту gamecenter состояние score_show.&lt;br /&gt;
&lt;br /&gt;
=== Достижения ===&lt;br /&gt;
&lt;br /&gt;
Аналогично очкам, для отправки достижений нужно сначала авторизироваться. Для отправки достижений необходимо последовательно заполнить следующие параметры.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Gc4.jpg]]&lt;br /&gt;
&lt;br /&gt;
Для просмотра достижений нужно передать объекту gamecenter состояние achievements_show.&lt;br /&gt;
&lt;br /&gt;
Отличительной особенностью достижений является то, что при успешной авторизации в опции записывается параметр, отвечающий за то или иное достижение. Поэтому эту информацию всегда можно считать из опций и использовать в игре. Выглядит она в опциях как параметр [[Файл:Gc5.jpg]], значение которого = 1.&lt;br /&gt;
&lt;br /&gt;
== Примечания и дополнения ==&lt;br /&gt;
&lt;br /&gt;
Для того, чтобы понимать что происходит с объектом gamecenter по логу viewer, приведен ряд значений, которые может получать GGamecenter (state=n, где n - номер состояния):&lt;br /&gt;
&lt;br /&gt;
 n     состояние                          пояснение&lt;br /&gt;
 0    ST_IDLE=0,                         // состояние простоя&lt;br /&gt;
 1    ST_NOT_SUPPORTED,                  // геймцентр не поддерживается на устройстве&lt;br /&gt;
 2    ST_AUTHENTICATE,                   // попытаться авторизоваться&lt;br /&gt;
 3    ST_AUTHENTICATION_ERROR,           // ошибка авторизации&lt;br /&gt;
 4    ST_AUTHENTICATED,                  // успешно авторизовались&lt;br /&gt;
 5    ST_REPORT_ACHIEVEMENT,             // запостить ачивку&lt;br /&gt;
 6    ST_ACHIEVEMENT_SUCCESS,            // ачивка успешно отправлена&lt;br /&gt;
 7    ST_ACHIEVEMENT_FAILED,             // не удалось отправить ачивку&lt;br /&gt;
 8    ST_SHOW_ACHIEVEMENTS,              // показать стандартный гуи с ачивками&lt;br /&gt;
 9    ST_REPORT_SCORE,                   // отправить очки&lt;br /&gt;
 10   ST_SCORE_SUCCESS,                  // очки успешно отправлены&lt;br /&gt;
 11   ST_SCORE_FAILED,                   // не удалось отправить очки&lt;br /&gt;
 12   ST_SHOW_LEADERBOARDS,              // показать стандартный гуи с очками&lt;br /&gt;
&lt;br /&gt;
Например, GGameCenter::state old_state = 1, state = 5, &lt;br /&gt;
&amp;lt;br&amp;gt; где:&lt;br /&gt;
&amp;lt;br&amp;gt; old_state - предыдущее состояние, &lt;br /&gt;
&amp;lt;br&amp;gt; state - текущее состояние.&lt;br /&gt;
=== Проверка получения achievement ===&lt;br /&gt;
&lt;br /&gt;
Есть возможность проверять из редактора (на компьютере) приходят ли achievements - для этого в файлике Viewer_Log нужно найти строчку:&lt;br /&gt;
 &lt;br /&gt;
 GGameCenter::reportAchievement achievement = %s, percent = %d&lt;br /&gt;
&amp;lt;br&amp;gt;где,&lt;br /&gt;
&amp;lt;br&amp;gt;%s - имя ачивмента (ссылочка которую дают маркетологи)&lt;br /&gt;
&amp;lt;br&amp;gt;%d - число процента&lt;/div&gt;</summary>
		<author><name>Podkor</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.appsalutecreator.com/index.php?title=Gamecenter&amp;diff=5107</id>
		<title>Gamecenter</title>
		<link rel="alternate" type="text/html" href="https://wiki.appsalutecreator.com/index.php?title=Gamecenter&amp;diff=5107"/>
		<updated>2013-09-05T09:09:36Z</updated>

		<summary type="html">&lt;p&gt;Podkor: /* Проверка получения achievement */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Объект используется для отправки данных на gamecenter. Отправлять можно набранные очки (score) или достижения (achievement).&lt;br /&gt;
&lt;br /&gt;
== Параметры и модификаторы ==&lt;br /&gt;
&lt;br /&gt;
[[Файл:Gc1.jpg|right]]&lt;br /&gt;
* положение - определяет положение объекта на сцене.&lt;br /&gt;
* размер - определяет размер объекта на сцене.&lt;br /&gt;
* achievement - достижение, которое будем отправлять.&lt;br /&gt;
* achievement percent - на сколько процентов завершено достижение.&lt;br /&gt;
* score - очки, которые мы будем отправлять.&lt;br /&gt;
* score category - категория, в которую мы отправляем очки (ссылка на leaderboard).&lt;br /&gt;
* состояние - состояние, которое мы передаем объекту gamecenter&lt;br /&gt;
 '''authenticate''' - состояние, по которому начинается авторизация мобильного &lt;br /&gt;
 устройства на геймцентре.&lt;br /&gt;
 '''score''' - состояние, по которому отправляются очки.&lt;br /&gt;
 '''achievement''' - состояние, по которому отправляются достижения.&lt;br /&gt;
 '''score_show''' - состояние, по которому можно посмотреть очки на геймцентре.&lt;br /&gt;
 '''achievements_show''' - состояние, по которому можно посмотреть достижения.&lt;br /&gt;
&lt;br /&gt;
== Пример применения ==&lt;br /&gt;
&lt;br /&gt;
На геймцентр можно отправлять очки и достижения. Для того, чтобы к объекту gamecenter был доступ, его лучше размещать на глобальном экране. Рассмотрим на примере отправку очков и достижений.&lt;br /&gt;
&lt;br /&gt;
=== Очки ===&lt;br /&gt;
&lt;br /&gt;
Для того, чтобы объект gamecenter мог обмениваться данными с геймцентром, он должен сначала авторизироваться. Проводить авторизацию нужно на экране, предшествующему экрану, где нужно отправлять очки. Для этого можно сделать отдельную машину.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Gc2.jpg]]&lt;br /&gt;
&lt;br /&gt;
Для отправки очков нужно будет последовательно заполнить все параметры. Приведу пример, как это делается в машине соcтояний.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Gc3.jpg]]&lt;br /&gt;
&lt;br /&gt;
Чтобы посмотреть очки мы передаем объекту gamecenter состояние score_show.&lt;br /&gt;
&lt;br /&gt;
=== Достижения ===&lt;br /&gt;
&lt;br /&gt;
Аналогично очкам, для отправки достижений нужно сначала авторизироваться. Для отправки достижений необходимо последовательно заполнить следующие параметры.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Gc4.jpg]]&lt;br /&gt;
&lt;br /&gt;
Для просмотра достижений нужно передать объекту gamecenter состояние achievements_show.&lt;br /&gt;
&lt;br /&gt;
Отличительной особенностью достижений является то, что при успешной авторизации в опции записывается параметр, отвечающий за то или иное достижение. Поэтому эту информацию всегда можно считать из опций и использовать в игре. Выглядит она в опциях как параметр [[Файл:Gc5.jpg]], значение которого = 1.&lt;br /&gt;
&lt;br /&gt;
== Примечания и дополнения ==&lt;br /&gt;
&lt;br /&gt;
Для того, чтобы понимать что происходит с объектом gamecenter по логу viewer, приведен ряд значений, которые может получать GGamecenter (state=n, где n - номер состояния):&lt;br /&gt;
&lt;br /&gt;
 n     состояние                          пояснение&lt;br /&gt;
 0    ST_IDLE=0,                         // состояние простоя&lt;br /&gt;
 1    ST_NOT_SUPPORTED,                  // геймцентр не поддерживается на устройстве&lt;br /&gt;
 2    ST_AUTHENTICATE,                   // попытаться авторизоваться&lt;br /&gt;
 3    ST_AUTHENTICATION_ERROR,           // ошибка авторизации&lt;br /&gt;
 4    ST_AUTHENTICATED,                  // успешно авторизовались&lt;br /&gt;
 5    ST_REPORT_ACHIEVEMENT,             // запостить ачивку&lt;br /&gt;
 6    ST_ACHIEVEMENT_SUCCESS,            // ачивка успешно отправлена&lt;br /&gt;
 7    ST_ACHIEVEMENT_FAILED,             // не удалось отправить ачивку&lt;br /&gt;
 8    ST_SHOW_ACHIEVEMENTS,              // показать стандартный гуи с ачивками&lt;br /&gt;
 9    ST_REPORT_SCORE,                   // отправить очки&lt;br /&gt;
 10   ST_SCORE_SUCCESS,                  // очки успешно отправлены&lt;br /&gt;
 11   ST_SCORE_FAILED,                   // не удалось отправить очки&lt;br /&gt;
 12   ST_SHOW_LEADERBOARDS,              // показать стандартный гуи с очками&lt;br /&gt;
&lt;br /&gt;
Например, GGameCenter::state old_state = 1, state = 5, &lt;br /&gt;
&amp;lt;br&amp;gt; где:&lt;br /&gt;
&amp;lt;br&amp;gt; old_state - предыдущее состояние, &lt;br /&gt;
&amp;lt;br&amp;gt; state - текущее состояние.&lt;br /&gt;
=== Проверка получения achievement ===&lt;br /&gt;
&lt;br /&gt;
Есть возможность проверять из редактора (на компьютере) приходят ли achievements - для этого в файлике Viewer_Log нужно найти строчку:&lt;br /&gt;
 &lt;br /&gt;
GGameCenter::reportAchievement achievement = %s, percent = %d&lt;br /&gt;
&lt;br /&gt;
где,&lt;br /&gt;
%s - имя ачивмента (ссылочка которую дают маркетологи)&lt;br /&gt;
%d - число процента&lt;/div&gt;</summary>
		<author><name>Podkor</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.appsalutecreator.com/index.php?title=Gamecenter&amp;diff=5106</id>
		<title>Gamecenter</title>
		<link rel="alternate" type="text/html" href="https://wiki.appsalutecreator.com/index.php?title=Gamecenter&amp;diff=5106"/>
		<updated>2013-09-05T09:09:09Z</updated>

		<summary type="html">&lt;p&gt;Podkor: /* Проверка получения achievement */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Объект используется для отправки данных на gamecenter. Отправлять можно набранные очки (score) или достижения (achievement).&lt;br /&gt;
&lt;br /&gt;
== Параметры и модификаторы ==&lt;br /&gt;
&lt;br /&gt;
[[Файл:Gc1.jpg|right]]&lt;br /&gt;
* положение - определяет положение объекта на сцене.&lt;br /&gt;
* размер - определяет размер объекта на сцене.&lt;br /&gt;
* achievement - достижение, которое будем отправлять.&lt;br /&gt;
* achievement percent - на сколько процентов завершено достижение.&lt;br /&gt;
* score - очки, которые мы будем отправлять.&lt;br /&gt;
* score category - категория, в которую мы отправляем очки (ссылка на leaderboard).&lt;br /&gt;
* состояние - состояние, которое мы передаем объекту gamecenter&lt;br /&gt;
 '''authenticate''' - состояние, по которому начинается авторизация мобильного &lt;br /&gt;
 устройства на геймцентре.&lt;br /&gt;
 '''score''' - состояние, по которому отправляются очки.&lt;br /&gt;
 '''achievement''' - состояние, по которому отправляются достижения.&lt;br /&gt;
 '''score_show''' - состояние, по которому можно посмотреть очки на геймцентре.&lt;br /&gt;
 '''achievements_show''' - состояние, по которому можно посмотреть достижения.&lt;br /&gt;
&lt;br /&gt;
== Пример применения ==&lt;br /&gt;
&lt;br /&gt;
На геймцентр можно отправлять очки и достижения. Для того, чтобы к объекту gamecenter был доступ, его лучше размещать на глобальном экране. Рассмотрим на примере отправку очков и достижений.&lt;br /&gt;
&lt;br /&gt;
=== Очки ===&lt;br /&gt;
&lt;br /&gt;
Для того, чтобы объект gamecenter мог обмениваться данными с геймцентром, он должен сначала авторизироваться. Проводить авторизацию нужно на экране, предшествующему экрану, где нужно отправлять очки. Для этого можно сделать отдельную машину.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Gc2.jpg]]&lt;br /&gt;
&lt;br /&gt;
Для отправки очков нужно будет последовательно заполнить все параметры. Приведу пример, как это делается в машине соcтояний.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Gc3.jpg]]&lt;br /&gt;
&lt;br /&gt;
Чтобы посмотреть очки мы передаем объекту gamecenter состояние score_show.&lt;br /&gt;
&lt;br /&gt;
=== Достижения ===&lt;br /&gt;
&lt;br /&gt;
Аналогично очкам, для отправки достижений нужно сначала авторизироваться. Для отправки достижений необходимо последовательно заполнить следующие параметры.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Gc4.jpg]]&lt;br /&gt;
&lt;br /&gt;
Для просмотра достижений нужно передать объекту gamecenter состояние achievements_show.&lt;br /&gt;
&lt;br /&gt;
Отличительной особенностью достижений является то, что при успешной авторизации в опции записывается параметр, отвечающий за то или иное достижение. Поэтому эту информацию всегда можно считать из опций и использовать в игре. Выглядит она в опциях как параметр [[Файл:Gc5.jpg]], значение которого = 1.&lt;br /&gt;
&lt;br /&gt;
== Примечания и дополнения ==&lt;br /&gt;
&lt;br /&gt;
Для того, чтобы понимать что происходит с объектом gamecenter по логу viewer, приведен ряд значений, которые может получать GGamecenter (state=n, где n - номер состояния):&lt;br /&gt;
&lt;br /&gt;
 n     состояние                          пояснение&lt;br /&gt;
 0    ST_IDLE=0,                         // состояние простоя&lt;br /&gt;
 1    ST_NOT_SUPPORTED,                  // геймцентр не поддерживается на устройстве&lt;br /&gt;
 2    ST_AUTHENTICATE,                   // попытаться авторизоваться&lt;br /&gt;
 3    ST_AUTHENTICATION_ERROR,           // ошибка авторизации&lt;br /&gt;
 4    ST_AUTHENTICATED,                  // успешно авторизовались&lt;br /&gt;
 5    ST_REPORT_ACHIEVEMENT,             // запостить ачивку&lt;br /&gt;
 6    ST_ACHIEVEMENT_SUCCESS,            // ачивка успешно отправлена&lt;br /&gt;
 7    ST_ACHIEVEMENT_FAILED,             // не удалось отправить ачивку&lt;br /&gt;
 8    ST_SHOW_ACHIEVEMENTS,              // показать стандартный гуи с ачивками&lt;br /&gt;
 9    ST_REPORT_SCORE,                   // отправить очки&lt;br /&gt;
 10   ST_SCORE_SUCCESS,                  // очки успешно отправлены&lt;br /&gt;
 11   ST_SCORE_FAILED,                   // не удалось отправить очки&lt;br /&gt;
 12   ST_SHOW_LEADERBOARDS,              // показать стандартный гуи с очками&lt;br /&gt;
&lt;br /&gt;
Например, GGameCenter::state old_state = 1, state = 5, &lt;br /&gt;
&amp;lt;br&amp;gt; где:&lt;br /&gt;
&amp;lt;br&amp;gt; old_state - предыдущее состояние, &lt;br /&gt;
&amp;lt;br&amp;gt; state - текущее состояние.&lt;br /&gt;
=== Проверка получения achievement ===&lt;br /&gt;
&lt;br /&gt;
Есть возможность проверять из редактора (на компьютере) приходят ли achievements:&lt;br /&gt;
 для этого в файлике Viewer_Log нужно найти строчку &lt;br /&gt;
GGameCenter::reportAchievement achievement = %s, percent = %d&lt;br /&gt;
&lt;br /&gt;
где,&lt;br /&gt;
%s - имя ачивмента (ссылочка которую дают маркетологи)&lt;br /&gt;
%d - число процента&lt;/div&gt;</summary>
		<author><name>Podkor</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.appsalutecreator.com/index.php?title=Gamecenter&amp;diff=5105</id>
		<title>Gamecenter</title>
		<link rel="alternate" type="text/html" href="https://wiki.appsalutecreator.com/index.php?title=Gamecenter&amp;diff=5105"/>
		<updated>2013-09-05T09:04:34Z</updated>

		<summary type="html">&lt;p&gt;Podkor: /* Примечания и дополнения */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Объект используется для отправки данных на gamecenter. Отправлять можно набранные очки (score) или достижения (achievement).&lt;br /&gt;
&lt;br /&gt;
== Параметры и модификаторы ==&lt;br /&gt;
&lt;br /&gt;
[[Файл:Gc1.jpg|right]]&lt;br /&gt;
* положение - определяет положение объекта на сцене.&lt;br /&gt;
* размер - определяет размер объекта на сцене.&lt;br /&gt;
* achievement - достижение, которое будем отправлять.&lt;br /&gt;
* achievement percent - на сколько процентов завершено достижение.&lt;br /&gt;
* score - очки, которые мы будем отправлять.&lt;br /&gt;
* score category - категория, в которую мы отправляем очки (ссылка на leaderboard).&lt;br /&gt;
* состояние - состояние, которое мы передаем объекту gamecenter&lt;br /&gt;
 '''authenticate''' - состояние, по которому начинается авторизация мобильного &lt;br /&gt;
 устройства на геймцентре.&lt;br /&gt;
 '''score''' - состояние, по которому отправляются очки.&lt;br /&gt;
 '''achievement''' - состояние, по которому отправляются достижения.&lt;br /&gt;
 '''score_show''' - состояние, по которому можно посмотреть очки на геймцентре.&lt;br /&gt;
 '''achievements_show''' - состояние, по которому можно посмотреть достижения.&lt;br /&gt;
&lt;br /&gt;
== Пример применения ==&lt;br /&gt;
&lt;br /&gt;
На геймцентр можно отправлять очки и достижения. Для того, чтобы к объекту gamecenter был доступ, его лучше размещать на глобальном экране. Рассмотрим на примере отправку очков и достижений.&lt;br /&gt;
&lt;br /&gt;
=== Очки ===&lt;br /&gt;
&lt;br /&gt;
Для того, чтобы объект gamecenter мог обмениваться данными с геймцентром, он должен сначала авторизироваться. Проводить авторизацию нужно на экране, предшествующему экрану, где нужно отправлять очки. Для этого можно сделать отдельную машину.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Gc2.jpg]]&lt;br /&gt;
&lt;br /&gt;
Для отправки очков нужно будет последовательно заполнить все параметры. Приведу пример, как это делается в машине соcтояний.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Gc3.jpg]]&lt;br /&gt;
&lt;br /&gt;
Чтобы посмотреть очки мы передаем объекту gamecenter состояние score_show.&lt;br /&gt;
&lt;br /&gt;
=== Достижения ===&lt;br /&gt;
&lt;br /&gt;
Аналогично очкам, для отправки достижений нужно сначала авторизироваться. Для отправки достижений необходимо последовательно заполнить следующие параметры.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Gc4.jpg]]&lt;br /&gt;
&lt;br /&gt;
Для просмотра достижений нужно передать объекту gamecenter состояние achievements_show.&lt;br /&gt;
&lt;br /&gt;
Отличительной особенностью достижений является то, что при успешной авторизации в опции записывается параметр, отвечающий за то или иное достижение. Поэтому эту информацию всегда можно считать из опций и использовать в игре. Выглядит она в опциях как параметр [[Файл:Gc5.jpg]], значение которого = 1.&lt;br /&gt;
&lt;br /&gt;
== Примечания и дополнения ==&lt;br /&gt;
&lt;br /&gt;
Для того, чтобы понимать что происходит с объектом gamecenter по логу viewer, приведен ряд значений, которые может получать GGamecenter (state=n, где n - номер состояния):&lt;br /&gt;
&lt;br /&gt;
 n     состояние                          пояснение&lt;br /&gt;
 0    ST_IDLE=0,                         // состояние простоя&lt;br /&gt;
 1    ST_NOT_SUPPORTED,                  // геймцентр не поддерживается на устройстве&lt;br /&gt;
 2    ST_AUTHENTICATE,                   // попытаться авторизоваться&lt;br /&gt;
 3    ST_AUTHENTICATION_ERROR,           // ошибка авторизации&lt;br /&gt;
 4    ST_AUTHENTICATED,                  // успешно авторизовались&lt;br /&gt;
 5    ST_REPORT_ACHIEVEMENT,             // запостить ачивку&lt;br /&gt;
 6    ST_ACHIEVEMENT_SUCCESS,            // ачивка успешно отправлена&lt;br /&gt;
 7    ST_ACHIEVEMENT_FAILED,             // не удалось отправить ачивку&lt;br /&gt;
 8    ST_SHOW_ACHIEVEMENTS,              // показать стандартный гуи с ачивками&lt;br /&gt;
 9    ST_REPORT_SCORE,                   // отправить очки&lt;br /&gt;
 10   ST_SCORE_SUCCESS,                  // очки успешно отправлены&lt;br /&gt;
 11   ST_SCORE_FAILED,                   // не удалось отправить очки&lt;br /&gt;
 12   ST_SHOW_LEADERBOARDS,              // показать стандартный гуи с очками&lt;br /&gt;
&lt;br /&gt;
Например, GGameCenter::state old_state = 1, state = 5, &lt;br /&gt;
&amp;lt;br&amp;gt; где:&lt;br /&gt;
&amp;lt;br&amp;gt; old_state - предыдущее состояние, &lt;br /&gt;
&amp;lt;br&amp;gt; state - текущее состояние.&lt;br /&gt;
=== Проверка получения achievement ===&lt;/div&gt;</summary>
		<author><name>Podkor</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.appsalutecreator.com/index.php?title=Gamecenter&amp;diff=5104</id>
		<title>Gamecenter</title>
		<link rel="alternate" type="text/html" href="https://wiki.appsalutecreator.com/index.php?title=Gamecenter&amp;diff=5104"/>
		<updated>2013-09-05T09:04:12Z</updated>

		<summary type="html">&lt;p&gt;Podkor: /* Примечания и дополнения */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Объект используется для отправки данных на gamecenter. Отправлять можно набранные очки (score) или достижения (achievement).&lt;br /&gt;
&lt;br /&gt;
== Параметры и модификаторы ==&lt;br /&gt;
&lt;br /&gt;
[[Файл:Gc1.jpg|right]]&lt;br /&gt;
* положение - определяет положение объекта на сцене.&lt;br /&gt;
* размер - определяет размер объекта на сцене.&lt;br /&gt;
* achievement - достижение, которое будем отправлять.&lt;br /&gt;
* achievement percent - на сколько процентов завершено достижение.&lt;br /&gt;
* score - очки, которые мы будем отправлять.&lt;br /&gt;
* score category - категория, в которую мы отправляем очки (ссылка на leaderboard).&lt;br /&gt;
* состояние - состояние, которое мы передаем объекту gamecenter&lt;br /&gt;
 '''authenticate''' - состояние, по которому начинается авторизация мобильного &lt;br /&gt;
 устройства на геймцентре.&lt;br /&gt;
 '''score''' - состояние, по которому отправляются очки.&lt;br /&gt;
 '''achievement''' - состояние, по которому отправляются достижения.&lt;br /&gt;
 '''score_show''' - состояние, по которому можно посмотреть очки на геймцентре.&lt;br /&gt;
 '''achievements_show''' - состояние, по которому можно посмотреть достижения.&lt;br /&gt;
&lt;br /&gt;
== Пример применения ==&lt;br /&gt;
&lt;br /&gt;
На геймцентр можно отправлять очки и достижения. Для того, чтобы к объекту gamecenter был доступ, его лучше размещать на глобальном экране. Рассмотрим на примере отправку очков и достижений.&lt;br /&gt;
&lt;br /&gt;
=== Очки ===&lt;br /&gt;
&lt;br /&gt;
Для того, чтобы объект gamecenter мог обмениваться данными с геймцентром, он должен сначала авторизироваться. Проводить авторизацию нужно на экране, предшествующему экрану, где нужно отправлять очки. Для этого можно сделать отдельную машину.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Gc2.jpg]]&lt;br /&gt;
&lt;br /&gt;
Для отправки очков нужно будет последовательно заполнить все параметры. Приведу пример, как это делается в машине соcтояний.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Gc3.jpg]]&lt;br /&gt;
&lt;br /&gt;
Чтобы посмотреть очки мы передаем объекту gamecenter состояние score_show.&lt;br /&gt;
&lt;br /&gt;
=== Достижения ===&lt;br /&gt;
&lt;br /&gt;
Аналогично очкам, для отправки достижений нужно сначала авторизироваться. Для отправки достижений необходимо последовательно заполнить следующие параметры.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Gc4.jpg]]&lt;br /&gt;
&lt;br /&gt;
Для просмотра достижений нужно передать объекту gamecenter состояние achievements_show.&lt;br /&gt;
&lt;br /&gt;
Отличительной особенностью достижений является то, что при успешной авторизации в опции записывается параметр, отвечающий за то или иное достижение. Поэтому эту информацию всегда можно считать из опций и использовать в игре. Выглядит она в опциях как параметр [[Файл:Gc5.jpg]], значение которого = 1.&lt;br /&gt;
&lt;br /&gt;
== Примечания и дополнения ==&lt;br /&gt;
&lt;br /&gt;
Для того, чтобы понимать что происходит с объектом gamecenter по логу viewer, приведен ряд значений, которые может получать GGamecenter (state=n, где n - номер состояния):&lt;br /&gt;
&lt;br /&gt;
 n     состояние                          пояснение&lt;br /&gt;
 0    ST_IDLE=0,                         // состояние простоя&lt;br /&gt;
 1    ST_NOT_SUPPORTED,                  // геймцентр не поддерживается на устройстве&lt;br /&gt;
 2    ST_AUTHENTICATE,                   // попытаться авторизоваться&lt;br /&gt;
 3    ST_AUTHENTICATION_ERROR,           // ошибка авторизации&lt;br /&gt;
 4    ST_AUTHENTICATED,                  // успешно авторизовались&lt;br /&gt;
 5    ST_REPORT_ACHIEVEMENT,             // запостить ачивку&lt;br /&gt;
 6    ST_ACHIEVEMENT_SUCCESS,            // ачивка успешно отправлена&lt;br /&gt;
 7    ST_ACHIEVEMENT_FAILED,             // не удалось отправить ачивку&lt;br /&gt;
 8    ST_SHOW_ACHIEVEMENTS,              // показать стандартный гуи с ачивками&lt;br /&gt;
 9    ST_REPORT_SCORE,                   // отправить очки&lt;br /&gt;
 10   ST_SCORE_SUCCESS,                  // очки успешно отправлены&lt;br /&gt;
 11   ST_SCORE_FAILED,                   // не удалось отправить очки&lt;br /&gt;
 12   ST_SHOW_LEADERBOARDS,              // показать стандартный гуи с очками&lt;br /&gt;
&lt;br /&gt;
Например, GGameCenter::state old_state = 1, state = 5, &lt;br /&gt;
&amp;lt;br&amp;gt; где:&lt;br /&gt;
&amp;lt;br&amp;gt; old_state - предыдущее состояние, &lt;br /&gt;
&amp;lt;br&amp;gt; state - текущее состояние.&lt;br /&gt;
&lt;br /&gt;
'''Проверка получения achievement'''&lt;/div&gt;</summary>
		<author><name>Podkor</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.appsalutecreator.com/index.php?title=Machine&amp;diff=5060</id>
		<title>Machine</title>
		<link rel="alternate" type="text/html" href="https://wiki.appsalutecreator.com/index.php?title=Machine&amp;diff=5060"/>
		<updated>2013-08-21T07:25:13Z</updated>

		<summary type="html">&lt;p&gt;Podkor: /* Параметры */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC right}}&lt;br /&gt;
'''Машина состояний''' (state machine) позволяет описывать сложное поведение игровых объектов. Для машин с типовым набором состояний и поведений вводятся отдельные типы объектов. Например, кнопка, по своей сути, является машиной состояний.&lt;br /&gt;
&lt;br /&gt;
== Введение ==&lt;br /&gt;
&lt;br /&gt;
Логика поведения машины разбивается на отдельные узлы (состояния). Машина всегда находится строго в одном состоянии. Переход из одного состояния в другое происходит либо в результате внешнего воздействия на машину, либо в результате окончания некоторых процессов протекающих внутри неё&lt;br /&gt;
&lt;br /&gt;
Любая машина состояний может быть изображена в виде графа с кружочками и стрелками. У машины всегда активно строго одно состояние (ниже это изображено на левом рисунке темным кружком):&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
[[Файл:def_states.png]]&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
Машина состояний не обладает памятью. Это означает, что для анализа того, что произойдет в данном состоянии, неважно как мы в него попали, и какова была предыстория переходов. Важно, только, что мы находимся в этом состоянии. Такое отсутствие памяти упрощает анализ логики машины, так как каждый раз мы концентрируемся на одном конкретном состоянии, а всю логику работы разбиваем на отдельные кирпичики-состояния.&lt;br /&gt;
&lt;br /&gt;
Выше на правом рисунке изображено некоторое состояние. При входе в него, происходит инициализация состояния. Если на объект оказываются внешние воздействия, то он может покинуть состояние. Наконец, внутри состояния могут работать различные процессы.&lt;br /&gt;
&lt;br /&gt;
Все команды состояния, разбиваются на три группы:&lt;br /&gt;
* '''[[#Инициализация|Инициализация]]''':&lt;br /&gt;
** '''[[#draw|draw]]''' - установка графического ресурса;&lt;br /&gt;
** '''[[#init|init]]''' - инициализация параметров машины (координаты и т.п.);&lt;br /&gt;
** '''[[#set|set]]''' - установка состояния другого объекта;&lt;br /&gt;
** '''[[#play|play]]''' - проиграть звук;&lt;br /&gt;
** '''[[#var|var]]''' - переменная, которой присваивается значение параметра объекта;&lt;br /&gt;
** '''[[#buy|buy]]''' - запуск процедуры in-app покупки;&lt;br /&gt;
** '''[[#download|download]]''' - запуск процедуры закачки контента.&lt;br /&gt;
* '''[[#Процессы|Процессы]]''':&lt;br /&gt;
** '''[[#wait|wait]]''' - задержка по времени;&lt;br /&gt;
** '''[[#move|move]]''' - равномерное движение;&lt;br /&gt;
** '''[[#rot|rot]]''' - вращение вокруг точки пивота;&lt;br /&gt;
** '''[[#alpha|alpha]]''' - изменение прозрачности;&lt;br /&gt;
** '''[[#scale|scale]]''' - изменение размера;&lt;br /&gt;
** '''[[#phys|phys]]''' - ускоренное движение;&lt;br /&gt;
** '''[[#spline|spline]]''' - движение по сплайну (по кривой).&lt;br /&gt;
* '''[[#Воздействия|Воздействия]]''':&lt;br /&gt;
** '''[[#click|click]]''' - что делать при клике на машине;&lt;br /&gt;
** '''[[#drop|drop]]''' - на машине отпущена клавиша мыши;&lt;br /&gt;
** '''[[#drag|drag]]''' - машину схватили и тащат;&lt;br /&gt;
** '''[[#throw|throw]]''' - машину схватили и кинули;&lt;br /&gt;
** '''[[#apply|apply]]''' - сработает при пересечении машины с линией или объектом;&lt;br /&gt;
** '''[[#touch_in|touch_in]]''' - наведение мыши/пальца на машину, если палец &amp;quot;тащат&amp;quot; по экрану;&lt;br /&gt;
** '''[[#touch_out|touch_out]]''' - выведение мыши из машины, если палец &amp;quot;тащат&amp;quot; по экрану;&lt;br /&gt;
** '''[[#touch_up|touch_up]]''' - отжатие мыши от машины;&lt;br /&gt;
** '''[[#mouse_in|mouse_in]]''' - наведение мыши на машину даже если не нажата кнопка мыши;&lt;br /&gt;
** '''[[#mouse_out|mouse_out]]''' - выведение мыши из машины даже если не нажата кнопка мыши.&lt;br /&gt;
&lt;br /&gt;
Кроме этого, есть команда '''[[#if|if]]''', вызываемая другими командами. В ней описываются некоторые логические условия, выполнение которых говорит команде (которая вызвала этот '''if'''), что можно завершать работу. Для разных команд использование этого параметра несколько '''отличается'''!&lt;br /&gt;
&lt;br /&gt;
Начальные понятия и методы работы с машинами состояний находятся в [[Learning|уроках]],&lt;br /&gt;
начиная с [[Checkbox как машина состояний|третьего]].&lt;br /&gt;
&lt;br /&gt;
== Свойства ==&lt;br /&gt;
&lt;br /&gt;
Общие для всех объектов свойства описаны в документе [[Object|Object]].&lt;br /&gt;
Дополнительные свойства:&lt;br /&gt;
&lt;br /&gt;
* '''Состояние''' - Состояние в котором будет находиться машина при инициализации. Если ничего не указано - первое состояние в списке состояний.&lt;br /&gt;
* '''Хранить нажатость''' - нужно ли сбрасывать нажатость при изменении состояния.&lt;br /&gt;
* '''res''' - графический ресурс машины. Может отсутствовать. Перетягивается из редактора ресурсов(поле должно быть в состоянии редактирования).&lt;br /&gt;
* '''states''' - По двойному клику, или по нажатию на кнопку с тремя точками открывается список состояний.&lt;br /&gt;
* '''прокликиваемая''' - 0 - машина не пропускает клик, 1 - машина пропускает клик, 2 - машина обрабатывает клик и пропускает его дальше.&lt;br /&gt;
&lt;br /&gt;
== Инициализация ==&lt;br /&gt;
&lt;br /&gt;
При попадании в состояние, сразу выполняются команды инициализации init, draw, set, buy, var. Если в этих командах нет параметра break, они все выполняются до запуска процессов. Параметр break (со значением 1) прерывает выполнение команд инициализации данного типа. Их можно перезапустить по окончанию команд процессов.&lt;br /&gt;
&lt;br /&gt;
=== draw ===&lt;br /&gt;
&lt;br /&gt;
Команда определяет графический ресурс (картинку, которую надо рисовать в данном состоянии). Её параметры:&lt;br /&gt;
&lt;br /&gt;
* '''res''' - ресурс картинки (перетаскивается из редактора ресурсов);&lt;br /&gt;
* '''f''' - начальный кадр;&lt;br /&gt;
* '''ft''' - длительность кадра в миллисекундах;&lt;br /&gt;
* '''loop''' - число повторов (зацикливаний анимации); если -1, то бесконечно; отсутствует или 0 - будет проигран одина раз;&lt;br /&gt;
* '''rev''' - играть анимацию в обратном порядке; 0 - прямой порядок проигрывания, 1 - обратный порядок проигрывания;&lt;br /&gt;
* '''go''' - перейти в состояние;&lt;br /&gt;
* '''if''' - номер (начиная с нуля) команды [[#if|if]] для условия перехода; можно использовать логические операторы (см. [[#if|if]]);&lt;br /&gt;
* '''break''' - прервать команды.&lt;br /&gt;
&lt;br /&gt;
Пустая команда draw (без параметров) &amp;quot;сбрасывает&amp;quot; текущую картинку и в этом состоянии ничего рисоваться не будет. Если в общих параметрах объекта (в базовой панеле свойств) задан ресурс рисования, и он во всех состояниях одинаков, то его можно в состоянии не задавать.&lt;br /&gt;
&lt;br /&gt;
Если параметра loop нет, кадры анимации проиграются один раз. Чтобы зациклить их, необходимо установить loop=-1 или нужное число раз. Аналогично параметру loop других команд, первый раз draw выполняется в любом случае. Дальнейшие её повторы определяются значением loop. Однако, в отличие от других команд, loop повторяет только '''данную''' команду draw (даже если она не первая).&lt;br /&gt;
Для работы loop '''необходимо''' чтобы в редакторе ресурсов в настройках анимации '''было отключено''' зацикливание(looped).&lt;br /&gt;
&amp;lt;br&amp;gt;Если есть анимация открывающейся и закрывающейся книги (коробки, двери и т.д.) не обязательно подгружать в проект две анимации, можно использовать одну, но запускать ее в обратном порядке, для этого есть параметр '''rev'''.&lt;br /&gt;
&lt;br /&gt;
=== init ===&lt;br /&gt;
&lt;br /&gt;
Инициализация параметров данной машины&lt;br /&gt;
&lt;br /&gt;
* '''x''','''y''' - координата точки пивота относительно сцены или родительского объекта;&lt;br /&gt;
* '''sx''','''sy''' - масштаб машины по осям (если 1, то это исходный размер; 0.5 - в два раза меньше);&lt;br /&gt;
* '''ang''' - угол поворота в градусах; отчитывается вниз от оси x, или вверх, если отрицательный;&lt;br /&gt;
* '''v''' - скорость для команды move&lt;br /&gt;
* '''vr''' - угловая скорость для команды rot&lt;br /&gt;
* '''vx''','''vy''' - начальная скорость для команды phys&lt;br /&gt;
* '''ax''','''ay''' - ускорение для команды phys&lt;br /&gt;
* '''z координата''' - координата машины по z.&lt;br /&gt;
* '''z приращение''' - приращение координаты машины по z относительно текущего&lt;br /&gt;
* '''vis''' - видимость - видимость машины (1 - видима, 0 - невидима)&lt;br /&gt;
* '''показать рейтинг''' - значение 1 означает, что при выполнении этого инита будет показано окно iOS рейтинга&lt;br /&gt;
* '''закрыть приложение''' - значение 1 означает, что при выполнении этого инита приложение будет закрыто&lt;br /&gt;
* '''перезагрузить лэйаут''' - значение 1 означает, что при выполнении этого инита будет перезагружен лэйаут&lt;br /&gt;
* '''вернуться назад''' - начение 1 означает, что при выполнении этого инита произойдет возврат на предыдущий экран&lt;br /&gt;
* '''реклама AdMob''' - 1 - показать, 0 - спрятать, -1 - не изменять состояние&lt;br /&gt;
* '''прокликиваемая''' - если 1, то картинка прозрачна для клика мышкой (пропускает объектам под ней). Если 2, то клик обрабатывается, но передается дальше&lt;br /&gt;
* '''курсор''' - меняет текущий курсор мыши на указанный графический ресурс. Перетягивается из редактора ресурсов, поле должно быть в состоянии редактирования.&lt;br /&gt;
* '''if''' - номер (начиная с нуля) команды [[#if|if]] для условия выполнения; можно использовать логические операторы (см. [[#if|if]]);&lt;br /&gt;
* '''break''' - прервать команды.&lt;br /&gt;
&lt;br /&gt;
Так же, как и при инициализации картинки ('''draw'''), вызов команды ('''init''') переопределяет только те параметры, которые в ней указаны. Остальные параметры (заданные в других состояниях или в общих свойствах объекта) остаются без изменений&lt;br /&gt;
&lt;br /&gt;
=== set ===&lt;br /&gt;
&lt;br /&gt;
Перевод другого объекта в некоторое состояние или изменение его параметров.&lt;br /&gt;
&lt;br /&gt;
* '''obj''' - изменяемый объект (выбирается из списка объектов);&lt;br /&gt;
* '''st''' - состояние в которое переводится объект.&lt;br /&gt;
* '''scr_param''' - глобальный либо текущий экран, параметры которого меняем&lt;br /&gt;
* '''scr_state''' - экран, состояние которого меняем&lt;br /&gt;
* '''parent''' - Объект, который будет установлен в качестве родителя объекту из obj. Объект obj будет оторван от текущего своего родителя и добавлен в детей объекта parent&lt;br /&gt;
* '''par''' - параметр объекта для установки, используется вместе с val, val_obj, val_txt, val_scr.&lt;br /&gt;
* '''val''' - значение параметра объекта для установки&lt;br /&gt;
* '''round''' - округлить значение, записываемое в val&lt;br /&gt;
* '''val_obj''' - id объекта, будет записано в в par&lt;br /&gt;
* '''val_txt''' - id текста, будет записано в в par&lt;br /&gt;
* '''val_scr''' - id экрана, будет записано в в par&lt;br /&gt;
* '''val_res''' - Новое значение графического ресурса (перетаскивается из редактора ресурсов). (пока не работает)&lt;br /&gt;
* '''var''' - имя переменной данной машины, значение которой присваивается в параметр par  объекта obj&lt;br /&gt;
* '''scr''' - экран на который мы хотим перейти&lt;br /&gt;
* '''user''' - 1 - сохранять значения для текущего пользователя. Для всех типов объектов кроме options этот флаг игнорируется&lt;br /&gt;
* '''if''' - номер (начиная с нуля) команды [[#if|if]] при выполнении которого происходит отработка команды set. &lt;br /&gt;
* '''break''' - прервать выполнение команд set на этой команде (запустить их снова можно из команд процессов).&lt;br /&gt;
&lt;br /&gt;
Так как все объекты (не только машины) имеют состояния, то при помощи команды set можно их менять. Стоит обратить внимание на то, что когда в параметрах (любых команд) встречается st, речь идет о состоянии другого объекта, а если go, то данной машины состояний.&lt;br /&gt;
&lt;br /&gt;
=== play ===&lt;br /&gt;
&lt;br /&gt;
Проиграть звук.&lt;br /&gt;
&lt;br /&gt;
*'''snd''' - короткий звук (перетаскивается из редактора ресурсов);&lt;br /&gt;
*'''voice''' - голос (запускается как звук, но без цикла и с громкостью голоса) (перетаскивается из редактора ресурсов);&lt;br /&gt;
*'''mus''' - длинный звук (перетаскивается из редактора ресурсов);&lt;br /&gt;
*'''preload''' - указанный звук будет загружен в память, но не будет проигрываться прямо сейчас. Для ускорения его старта потом;&lt;br /&gt;
*'''loop''' - зациклить звук (звуки);&lt;br /&gt;
*'''mus_stop''' - остановить текущую музыку (''mus_stop=1'');&lt;br /&gt;
*'''volume''' - установить громкость для всех звуком данной машины - тех что уже играют и тех, что будут запущены впоследствии;&lt;br /&gt;
*'''if''' - номер (начиная с нуля) условия перехода [[#if|if]].&lt;br /&gt;
&lt;br /&gt;
Особенности примененияния:&lt;br /&gt;
&lt;br /&gt;
*Короткий звук (''snd'') нельзя запустить в первом (инитном) состоянии машины. Для того, чтобы запустить звук сразу при загрузке экрана, нужно в первом состоянии машины записать мгновенный переход во второе состояние мамашины (например, команда ''wait'', поле ''go'', в поле выбрать второе состояние), а во втором состоянии уже запустить звук. Если звук нужно зациклить и проигрывать какое-то количество раз (''loop=1,2,3,..,n'') или бесконечно (''loop=-1''), то нужно проследить чтобы состояние, в котором запускается звук, не вызывалось повторно во время проигрывания звука, иначе возникнет наложение звуков. Если во время проигрывания звука машина меняет свое состояние, звук продолжает играть. Если в одной машине почти одновременно воспроизводится несколько звуков, то они прерывают друг друга. Если каждый звук воспроизводится в отдельной машине, то они звучат параллельно.&lt;br /&gt;
*Длинный звук (''mus'')- музыка. На экране не может воспроизводится несколько длинных звуков одновременно. Любой запуск длинного звука независимо от того, в какой машине он осуществляется, будет прекращать проигрывание предыдущего звука. Музыка, которая проигрывается на глобальном экране, проигрывается на всех экранах проекта.&lt;br /&gt;
&lt;br /&gt;
=== var ===&lt;br /&gt;
&lt;br /&gt;
Переменная, которой присваивается значение параметра объекта&lt;br /&gt;
&lt;br /&gt;
*'''name''' - имя переменной;&lt;br /&gt;
*'''obj''' - объект, используемый далее;&lt;br /&gt;
*'''par''' - имя параметра, значение которого присваивается переменной;&lt;br /&gt;
*'''val''' - значение переменной, если отсутствуют obj и par;&lt;br /&gt;
*'''user''' - если стоит &amp;quot;1&amp;quot;, то будет считываться с текущего профиля в опциях&lt;br /&gt;
*'''func''' - в выпадающем списке можно выбрать функцию (Например, random - возвращает целое случайное число из диапазона. Диапазон случайных чисел в этом случае задается аргументами функции).&lt;br /&gt;
*'''arg1''' - аргумент функции&lt;br /&gt;
*'''arg2''' - аргумент функции&lt;br /&gt;
&lt;br /&gt;
Обозначенная переменная существует (может использоваться) только в текущем состоянии. Переменная может определятся в одном состоянии только один раз. Если созданной переменной нужно изменить значение в рамках состояния, это можно сделать через другую переменную или через параметр опций ([[Options]]). Если ее значение нужно использовать в другом состоянии, то оно присваивается параметру опций, а затем заново считывается в новом состоянии. Переменные можно указывать в поле ''val'' с другими математическими действиями и цифрами, при этом каждое действие заключать в скобки. Если в поле ''val'' указать имя переменной ''А'' без скобок - воспримется строка ''А'', если указать в скобках - воспримется значение переменной.&lt;br /&gt;
&lt;br /&gt;
=== buy ===&lt;br /&gt;
&lt;br /&gt;
При переходе в состояние, данная команда открывает системное окно с предложением совершить in-app покупку. В зависимости от действий игрока, покупка может произойти (успех) или не произойти (провал).&lt;br /&gt;
&lt;br /&gt;
* '''id покупки''' - внутренний id покупки для приложения, указывается в объекте [[Store]];&lt;br /&gt;
* '''объект(успех)''' - объект, которому сообщается об удачной покупке;&lt;br /&gt;
* '''состояние(успех)''' - состояние в которое переводится выбранный объект в случае успешной покупки;&lt;br /&gt;
* '''объект(провал)''' - объект, которому сообщается о неудачной покупке;&lt;br /&gt;
* '''состояние(провал)''' - состояние в которое переводится объект в случае неудачной покупки.&lt;br /&gt;
&lt;br /&gt;
=== download ===&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
При переходе в состояние будет совершена попытку закачать контент.&lt;br /&gt;
* '''url''' - ссылка на zip архив с контентом в интернете.&lt;br /&gt;
* '''объект успех''' - объект, которому в случае успешной закачки будет задаваться указанное состояние.&lt;br /&gt;
* '''состояние (успех)''' - состояние, которое будет устанавливаться выше указанному объекту, в случае успешной закачки.&lt;br /&gt;
* '''объект (провал)''' -объект, которому, в случае неудачи закачки, будет устанавливаться указанное состояние.&lt;br /&gt;
* '''состояние (провал)''' - состояние, которое, в случае неудачи закачки,будет устанавливаться выше указанному объекту.&lt;br /&gt;
* '''счетчик прогресса''' - объект, типа счетчик, который отображает прогресс закачки контента. Крайне желательно, что бы он измерялся в диапазоне от 0 до 100.&lt;br /&gt;
&lt;br /&gt;
== Процессы ==&lt;br /&gt;
&lt;br /&gt;
Все команды процессов, кроме параметров описанных ниже, могут содержать параметры, совпадающие с именами других команд. В этих параметрах указывается номер (начиная с нуля) команды, которую надо запустить на выполнение, после окончания действия данной команды процесса.&lt;br /&gt;
&lt;br /&gt;
Если в команде процесса есть условие '''[[#if|if]]''', то после окончания работы команды она ждет пока это условие не выполнится. Только после этого переходит к следующей команде этого же типа&lt;br /&gt;
или в другое состояние (если есть параметр go).&lt;br /&gt;
Исключением является команда wait, которая '''не''' ждёт срабатывания '''[[#if|if]]'''. Если он по окончанию wait сработал, то происходит переходит в другое состояние, если есть параметр go.&lt;br /&gt;
Если параметра go нет, то в любом случае запускается следующий wait (т.е. if относится только к переходу go).&lt;br /&gt;
&lt;br /&gt;
=== wait ===&lt;br /&gt;
 &lt;br /&gt;
Команда паузы (временной задержки). Если параметра '''t''' нет, то срабатывает сразу.&lt;br /&gt;
Может также использоваться для логических ветвлений, случайных переходов в другие состояния и т.д.&lt;br /&gt;
&lt;br /&gt;
* '''t''' - длительность выполнения команды в ms;&lt;br /&gt;
* '''dt''' - интервал от t-dt до t+dt, внутри которого команда может быть случайно прервана (при t&amp;gt;t+dt прерывается в любом случае);&lt;br /&gt;
* '''p''' - вероятность срабатывания перехода в состояние, указываемое параметром go;&lt;br /&gt;
* '''go''' - состояние, в которое нужно перейти поле окончания времени и срабатывания условия [[#if|if]], если оно указано;&lt;br /&gt;
* '''if''' - номер (начиная с нуля) команды [[#if|if]], при выполнении которой происходит переход go;&lt;br /&gt;
* '''loop''' - зациклить команды;&lt;br /&gt;
* '''break''' - прервать выполнение команд wait на этой команде (запустить их снова можно из команд процессов).&lt;br /&gt;
&lt;br /&gt;
Простейший набор параметров команды wait выглядит следующим образом:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;wait t=&amp;quot;1000&amp;quot; go=&amp;quot;next&amp;quot;/&amp;gt;    // ждем 1000ms и покидаем состояние&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Для программирования объектов со случайным поведением можно использовать последовательность команд wait с параметром вероятности перехода p (от 0 до 1):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;wait t=&amp;quot;100&amp;quot; p=&amp;quot;0.5&amp;quot; go=&amp;quot;st1&amp;quot;/&amp;gt; // через t с вероятностью 1/2 перейдет в st1&lt;br /&gt;
&amp;lt;wait go=&amp;quot;st2&amp;quot;/&amp;gt; // иначе,  перейдем в st2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Этот же синтаксис позволяет делать состояния с различным временем жизни:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;wait t=&amp;quot;100&amp;quot; p=&amp;quot;0.5&amp;quot; go=&amp;quot;next&amp;quot;/&amp;gt; // с вероятностью 1/2 живем 100ms&lt;br /&gt;
&amp;lt;wait t=&amp;quot;100&amp;quot; go=&amp;quot;next&amp;quot;/&amp;gt;       // или 200ms&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Впрочем, последнюю задачу можно решить при помощи указывания интервала dt, внутри которого произойдет окончание команды. Так, состояние, живущее от 800 до 1200ms, реализуется следующим образом:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;wait t=&amp;quot;1000&amp;quot; dt=&amp;quot;200&amp;quot; go=&amp;quot;next&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== move ===&lt;br /&gt;
&lt;br /&gt;
Перемещение по сцене:&lt;br /&gt;
* '''tx''', '''ty''' - целевые координаты в пикселях, к которым должен переместиться объект;&lt;br /&gt;
* '''dx''', '''dy''' - величина смещения от текущей (если есть - tx,ty игнорируются); можно задавать смесь tx, dy или dx,ty;&lt;br /&gt;
* '''v''' - скороcть перемещения в пикселях в секунду; для фреймовой анимации, например, ходьбы скорость рассчитывается исходя из длительности одного кадра и числа кадров на фазу движения. Поэтому, в этом случае, удобнее задавать скорость;&lt;br /&gt;
* '''t''' - время перемещения (v игнорируется);&lt;br /&gt;
* '''go''' - новое состояние - Состояние в которое нужно перейти после окончания времени;&lt;br /&gt;
* '''if''' - номер (начиная с нуля) команды [[#if|if]], при выполнении которой происходит переход go; команда ждет срабатывания условия, и не запускает следующую команду move, пока if не выполнится; &lt;br /&gt;
* '''loop'''  - зациклить команды - Начать выполнение команд движения с первой команды;&lt;br /&gt;
* '''break''' - прервать команды - Прервать выполнение команд move на этой команде (запустить их снова можно из команд процессов).&lt;br /&gt;
&lt;br /&gt;
В большинстве команд процессов, связанных с движением, величина изменения может быть задана в абсолютных или относительных величинах. Так, могут быть указаны целевые координаты tx, ty в которые надо переместиться, или смещение dx, dy относительно текущего положения объекта.&lt;br /&gt;
&lt;br /&gt;
Аналогично, скорость перемещения регулируется, либо явным заданием времени выполнения команды t, либо скоростью v. Исходя из требуемого расстояния, по этой скорости вычисляется необходимое время. Скорость задается в пикселях за cекунду (а не миллисекунду!)&lt;br /&gt;
&lt;br /&gt;
=== rot ===&lt;br /&gt;
&lt;br /&gt;
Вращение объекта вокруг точки пивота с координатами px,py. Эти координаты задаются относительно верхнего левого угла объекта в общей секции описания параметров объекта или командой init в данном состоянии.&lt;br /&gt;
* '''ta''' - целевой угол поворота объекта;&lt;br /&gt;
* '''da''' - на сколько надо повернуться (ta игнорируется);&lt;br /&gt;
* '''v''' - угловая скорость поворота в градусах в секунду;&lt;br /&gt;
* '''t''' - время поворота (v игнорируется);&lt;br /&gt;
* '''go''' - новое состояние - Состояние в которое нужно перейти после окончания времени.&lt;br /&gt;
* '''if''' - номер (начиная с нуля) команды [[#if|if]], при выполнении которой происходит переход go;  команда ждет срабатывания условия, и не запускает следующую команду rot, пока if не выполнится; &lt;br /&gt;
* '''loop'''  - зациклить команды - Начать выполнение команд движения с первой команды;&lt;br /&gt;
* '''break''' - прервать команды - Прервать выполнение команд rot на этой команде (запустить их снова можно из команд процессов).&lt;br /&gt;
&lt;br /&gt;
Угол отсчитывается от оси x. Если он положителен, то поворот происходит по часовой стрелке. Если отрицательный - против часовой.&lt;br /&gt;
&lt;br /&gt;
=== alpha ===&lt;br /&gt;
&lt;br /&gt;
Изменение прозрачности объекта. Меняется от 0 (полностью прозрачен) до 1 (непрозрачен)&lt;br /&gt;
* '''ta''' - целевая прозрачность&lt;br /&gt;
* '''da''' - на сколько надо изменить прозрачность от текущей (ta игнорируется)&lt;br /&gt;
* '''v''' - скорость изменения прозрачности (в долях единицы в ms)&lt;br /&gt;
* '''t''' - время изменения (v игнорируется)&lt;br /&gt;
* '''go''' - новое состояние - Состояние в которое нужно перейти после окончания времени.&lt;br /&gt;
* '''if''' - номер (начиная с нуля) команды [[#if|if]], при выполнении которой происходит переход go;  команда ждет срабатывания условия, и не запускает следующую команду alpha, пока if не выполнится; &lt;br /&gt;
* '''loop'''  - зациклить команды - Начать выполнение команд alpha с первой команды.&lt;br /&gt;
* '''break''' - прервать команды - Прервать выполнение команд alpha на этой команде (запустить их снова можно из команд процессов).&lt;br /&gt;
&lt;br /&gt;
Если у объекта прозрачность ''al=0.00'', то он невидим для всякого взаимодействия. Если у объекта прозрачность ''al=0.01'', то он видим для клика, но невидим для дропа(команда drop на объект не видит объект с прозрачностью ''0.01''). Если у объекта ''al=0.02'', то он видим и для клика, и для дропа.&lt;br /&gt;
&lt;br /&gt;
=== scale ===&lt;br /&gt;
&lt;br /&gt;
Изменение размеров объекта&lt;br /&gt;
* '''tx''', '''ty''' - целевой масштаб по каждой оси&lt;br /&gt;
* '''dx''', '''dy''' - на сколько изменить масштаб по каждой оси&lt;br /&gt;
* '''v''' - скорость изменения масштаба (в долях единицы в сек.)&lt;br /&gt;
* '''t''' - длительность выполнения команды (v игнорируется)&lt;br /&gt;
* '''go''' - новое состояние - Состояние в которое нужно перейти после окончания времени.&lt;br /&gt;
* '''if''' - номер (начиная с нуля) команды [[#if|if]], при выполнении которой происходит переход go;  команда ждет срабатывания условия, и не запускает следующую команду scale, пока if не выполнится; &lt;br /&gt;
* '''loop'''  - зациклить команды - Начать выполнение команд scale с первой команды.&lt;br /&gt;
* '''break''' - прервать команды - Прервать выполнение команд scale на этой команде (запустить их сново можно из команд процессов).&lt;br /&gt;
&lt;br /&gt;
=== phys ===&lt;br /&gt;
&lt;br /&gt;
Команда phys позволяет имитировать простую физику. В ней задается начальная скорость и действующая на объект сила (ускорение).&lt;br /&gt;
&lt;br /&gt;
* '''vx''', '''vy''' - начальная скорость&lt;br /&gt;
* '''ax''', '''ay''' - величина ускорения по каждой оси&lt;br /&gt;
* '''tvx''', '''tvy''' - целевая скорость&lt;br /&gt;
* '''tx''', '''ty''' - целевая координата&lt;br /&gt;
* '''go''' - новое состояние - Состояние в которое нужно перейти после окончания времени.&lt;br /&gt;
* '''if''' - номер (начиная с нуля) команды [[#if|if]], при выполнении которой происходит переход go;  команда ждет срабатывания условия, и не запускает следующую команду phys, пока if не выполнится; &lt;br /&gt;
* '''loop''' - зациклить команды - Начать выполнение команд phys с первой команды.&lt;br /&gt;
* '''break''' - прервать команды - Прервать выполнение команд phys на этой команде (запустить их снова можно из команд процессов). &lt;br /&gt;
&lt;br /&gt;
Рассмотрим подпрыгивающий мячик, который при касании с землей деформируется (вертикально сплюскивается). Это можно сделать в 3 состояния (падаем, касаемся и взлетаем). Первоначально мячик находится в координте y=-100, и имеет высоту картинки w=60. Падает он до координаты ty=0. При касании с землёй, мяч сжимается на 20 процентов (sy=0.8). При этом его центр должен опуститься на dy=0.8*w/2 = 24.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;st id=&amp;quot;down&amp;quot;&amp;gt;                                    // падаем&lt;br /&gt;
    &amp;lt;phys vy=&amp;quot;0&amp;quot; ay=&amp;quot;20&amp;quot; ty=&amp;quot;0&amp;quot; go=&amp;quot;touch&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/st&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;st id=&amp;quot;touch&amp;quot;&amp;gt;                                   // касаемся земли&lt;br /&gt;
    &amp;lt;move dy=&amp;quot;24&amp;quot; t=&amp;quot;300&amp;quot;/&amp;gt;                       // опускаем центр при сжатии&lt;br /&gt;
    &amp;lt;scale ty=&amp;quot;0.8&amp;quot; t=&amp;quot;300&amp;quot;/&amp;gt;                     // сжимаемся&lt;br /&gt;
    &amp;lt;move dy=&amp;quot;-24&amp;quot; t=&amp;quot;300&amp;quot;/&amp;gt;                      // поднимаем центр при разжатии&lt;br /&gt;
    &amp;lt;scale ty=&amp;quot;1&amp;quot; t=&amp;quot;300&amp;quot; go=&amp;quot;up&amp;quot;/&amp;gt;               // разжимаемся&lt;br /&gt;
&amp;lt;/st&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;st id=&amp;quot;up&amp;quot;&amp;gt;                                      // взлетаем&lt;br /&gt;
    &amp;lt;phys vy=&amp;quot;0&amp;quot; ty=&amp;quot;-200&amp;quot; go=&amp;quot;down&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/st&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Напомним, что если объект имеет начальную скорость взлета, равную v=sqrt(2*ay*h), то он подпрыгнет на высоту h. Однако, в данном случае, вместо задания начальной скорости при взлете, мы задаем целевую координату (ty), до которой мяч должен подпрыгнуть.&lt;br /&gt;
&lt;br /&gt;
=== spline ===&lt;br /&gt;
&lt;br /&gt;
Сплайн позволяет перемещать машину по заранее заданной траектории.&lt;br /&gt;
&lt;br /&gt;
====Параметры====&lt;br /&gt;
&lt;br /&gt;
*'''key''' - точки сплайна по которым движется &lt;br /&gt;
*'''t''' - время движения по траектории&lt;br /&gt;
*'''go''' - по окончанию переход в состояние&lt;br /&gt;
*'''if''' - условие перехода&lt;br /&gt;
*'''loop''' - количество повторений&lt;br /&gt;
*'''break''' - прервать команды на этой&lt;br /&gt;
*'''wait''' - номер запускаемого действия&lt;br /&gt;
*'''init''' - номер запускаемого действия&lt;br /&gt;
*'''alpha''' - номер запускаемого действия&lt;br /&gt;
*'''rot''' - номер запускаемого действия&lt;br /&gt;
*'''move''' - номер запускаемого действия&lt;br /&gt;
*'''set''' - номер запускаемого действия&lt;br /&gt;
*'''phys''' - номер запускаемого действия&lt;br /&gt;
&lt;br /&gt;
====Построение сплайна====&lt;br /&gt;
&lt;br /&gt;
# в состоянии машины добавляем правой кнопкой мыши действие &amp;quot;spline&amp;quot;&lt;br /&gt;
# добавляем минимально необходимые параметры: '''key''' и '''t''', указываем время движения в '''t'''&lt;br /&gt;
# выделяем для редактирования поле '''key'''&lt;br /&gt;
# записываем координаты точек через запятую, сначала x потом y, например: -211,-248,-151,-248,-91,-247,59,-246,60,101,60,159,1,190&lt;br /&gt;
Если записали все координаты вручную, то можно сохранить и проверять.&lt;br /&gt;
Или можно в окне списка состояний нажимаем на кнопку &amp;quot;build spline&amp;quot; (справа вверху).&lt;br /&gt;
[[Файл:Btn spline.jpg|500px]]&lt;br /&gt;
&lt;br /&gt;
Окно с списком состояний закроется, появится дополнительная панель с настройками сплайна и появится возможность указывать мышкой по экрану точки для сплайна.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Spline panel.jpg|500px]]&lt;br /&gt;
&lt;br /&gt;
Точки сплайна указываются кликом левой кнопки мыши по экрану.&lt;br /&gt;
&lt;br /&gt;
Возможности редактирования:&lt;br /&gt;
&lt;br /&gt;
'''режимы:'''&lt;br /&gt;
*'''add''' - по нажатию левой кнопкой мыши по экрану - будет добавлена новая точка, которая соеденится с предидущей&lt;br /&gt;
*'''select''' - по нажатию левой кнопкой мыши по точке сплайна появится возможность отредактировать её положение перетащив её или поменяв её координаты в полях x и у&lt;br /&gt;
*'''delete''' - по нажатию левой кнопкой мыши по точке сплайна точка удалится&lt;br /&gt;
&lt;br /&gt;
Чтобы удалить все точки сплайна необходимо нажать на кнопку &amp;quot;'''delete all knots'''&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Сохранить сплайн можно нажав на кнопку &amp;quot;'''Save spline'''&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Дополнительные сведения====&lt;br /&gt;
&lt;br /&gt;
* Время движения между двумя соседними точками всегда одинаково, то есть чем дальше друг от друга соседние точки, тем быстрее будет двигаться объект, чем ближе - тем медленней.&lt;br /&gt;
&lt;br /&gt;
== Воздействия ==&lt;br /&gt;
&lt;br /&gt;
=== click ===&lt;br /&gt;
&lt;br /&gt;
Команда вызывается, если на объект кликнули мышкой. Срабатывает на её нажатие.&lt;br /&gt;
* '''go''' - состояние в которое при выполнении команды надо перейти (если if нет, то в любом случае);&lt;br /&gt;
* '''if''' - номер  (начиная с нуля) команды условия [[#if|if]], при срабатывании которого, происходит переход go.&lt;br /&gt;
&lt;br /&gt;
=== touch_in ===&lt;br /&gt;
&lt;br /&gt;
Наведение мыши/пальца на машину, если палец &amp;quot;тащат&amp;quot; по экрану.&lt;br /&gt;
* '''go''' - состояние в которое при выполнении команды нужно перейти (если if нет, то в любом случае);&lt;br /&gt;
* '''if''' - номер (начиная с нуля) команды условия [[#if|if]], при срабатывании которого, происходит переход ''go''.&lt;br /&gt;
&lt;br /&gt;
=== touch_out ===&lt;br /&gt;
Выведение мыши/пальца из машины, если палец &amp;quot;тащат&amp;quot; по экрану.&lt;br /&gt;
* '''go''' - состояние в которое при клике нужно перейти;&lt;br /&gt;
* '''if''' - номер (начиная с нуля) команды условия [[#if|if]], при котором срабатывает переход ''go''.&lt;br /&gt;
&lt;br /&gt;
=== touch_up ===&lt;br /&gt;
&lt;br /&gt;
Отжатие мыши от машины&lt;br /&gt;
&lt;br /&gt;
* '''go''' - состояние в которое при отжатии мыши нужно перейти;&lt;br /&gt;
* '''if''' - номер (начиная с нуля) команды условия [[#if|if]], при котором срабатывает переход ''go''.&lt;br /&gt;
&lt;br /&gt;
=== mouse_in ===&lt;br /&gt;
&lt;br /&gt;
Срабатывает при наведение мыши/пальца на машину даже если не нажата кнопка мыши, работает на desktop-ных системах (OSX, Windows)&lt;br /&gt;
* '''go''' - состояние в которое при выполнении команды нужно перейти (если if нет, то в любом случае);&lt;br /&gt;
* '''if''' - номер (начиная с нуля) команды условия [[#if|if]], при срабатывании которого, происходит переход ''go''.&lt;br /&gt;
&lt;br /&gt;
=== mouse_out ===&lt;br /&gt;
Срабатывает при выведение мыши/пальца из машины даже если не нажата кнопка мыши, работает на desktop-ных системах (OSX, Windows)&lt;br /&gt;
* '''go''' - состояние в которое при выполнении команды нужно перейти (если if нет, то в любом случае);&lt;br /&gt;
* '''if''' - номер (начиная с нуля) команды условия [[#if|if]], при срабатывании которого, происходит переход ''go''.&lt;br /&gt;
&lt;br /&gt;
=== drag ===&lt;br /&gt;
&lt;br /&gt;
Данная команда позволяет &amp;quot;таскать&amp;quot; объект по сцене нажав и удерживая клавишу мишки или (палец в случае сенсорного устройства) на нем.Так же есть возможность ограничить разрешенную область таскания, за пределы которой  объект вытащить невозможно. [[Файл:drag.jpg|right]]&lt;br /&gt;
* '''x1''' - разрешено таскать, когда координата объекта правее;&lt;br /&gt;
* '''x2''' - разрешено таскать, когда координата объекта левее;&lt;br /&gt;
* '''y1''' - разрешено таскать, когда координата объекта ниже;&lt;br /&gt;
* '''y2''' - разрешено таскать, когда координата объекта выше;&lt;br /&gt;
* '''if''' - номер команды условия (начиная с нуля) разрешения таскания;&lt;br /&gt;
* '''obj''' - объект у которого надо изменить состояние;&lt;br /&gt;
* '''st'''  - новое состояние объекта obj;&lt;br /&gt;
* '''за пивот''' - &amp;quot;да&amp;quot; - таскать объект за пивот, &amp;quot;нет&amp;quot; - за ту точку, за которую схватили&lt;br /&gt;
&lt;br /&gt;
=== dragRot ===&lt;br /&gt;
&lt;br /&gt;
Данная команда позволяет вращать объект вокруг точки пивота.  Нажав и удерживая клавишу мишки или палец (в случае сенсорного устройства) на нем, мы можем вращать его по часовой либо против часовой стрелки. При многократном вращении вокруг своей оси значение его угла не накапливается, а обнуляется выходя за границы [360 ; -360] градусов. [[Файл:dragRot.jpg|right]]&lt;br /&gt;
* '''if''' - номер команды условия (начиная с нуля) разрешения таскания;&lt;br /&gt;
* '''obj''' - объект у которого надо изменить состояние;&lt;br /&gt;
* '''st'''  - новое состояние объекта obj;&lt;br /&gt;
&lt;br /&gt;
=== drop ===&lt;br /&gt;
&lt;br /&gt;
Если нажатая кнопка мышки отпускается, вызвается эта команда. Обычно она используется в связке с командой drag&lt;br /&gt;
* '''obj''' - объект, на который надо уронить таскаемый объект;&lt;br /&gt;
* '''go''' - состояние в которое переходим при отпускании мышки;&lt;br /&gt;
* '''if''' - номер (начиная с нуля) условия [[#if|if]] разрешения бросания.&lt;br /&gt;
&lt;br /&gt;
Рассмотрим совместное применение команд drag и drop на следующей задаче. Пусть есть ключ и ящик. Ключ можно взять мышкой и перетащить, бросив на ящик. Ящик при этом должен постепенно стать прозрачным, а ключ уменьшиться до нуля. Машина состояний для ключа выглядит следующим образом:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;st id=&amp;quot;drag&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;drag x1=&amp;quot;-350&amp;quot; x2=&amp;quot;350&amp;quot; y1=&amp;quot;-250&amp;quot; y2=&amp;quot;250&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;drop obj=&amp;quot;box&amp;quot; go=&amp;quot;open&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/st&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;st id=&amp;quot;open&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;set obj=&amp;quot;box&amp;quot; st=&amp;quot;open&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;scale tx=&amp;quot;0.01&amp;quot; ty=&amp;quot;0.01&amp;quot; t=&amp;quot;500&amp;quot; go=&amp;quot;hide&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/st&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;st id=&amp;quot;hide&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;init x=&amp;quot;268&amp;quot; y=&amp;quot;30&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;scale tx=&amp;quot;1&amp;quot; ty=&amp;quot;1&amp;quot; t=&amp;quot;500&amp;quot; go=&amp;quot;drag&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/st&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Ящик:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;st id=&amp;quot;close&amp;quot;&amp;gt;                        // начальное состояние ящика&lt;br /&gt;
    &amp;lt;init al=&amp;quot;1&amp;quot;/&amp;gt;                     // если его кто-то сюда переведет - он появится.&lt;br /&gt;
&amp;lt;/st&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;st id=&amp;quot;open&amp;quot;&amp;gt;              &lt;br /&gt;
    &amp;lt;alpha ta=&amp;quot;0&amp;quot; t=&amp;quot;500&amp;quot;/&amp;gt;            // исчезает по прозрачности за 500 ms&lt;br /&gt;
&amp;lt;/st&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== throw ===&lt;br /&gt;
 &lt;br /&gt;
Если на объект наступили мышкой, не отпуская кнопки, мышку оттащили и затем отпустили, вызывается команда throw со следующими параметрами:&lt;br /&gt;
* '''go''' - состояние, в которое, при клике, надо перейти;&lt;br /&gt;
* '''if''' - номер (начиная с нуля) команды [[#if|if]] разрешения бросания;&lt;br /&gt;
* '''force''' - получаемая скорость равна разнице пискелей от начала бросания (мышь нажата) до его конца (мышь отжата), умноженная на этот параметр. По умолчанию он равен 1.&lt;br /&gt;
&lt;br /&gt;
Сработав, эта команда задает начальные значения скорости для команды phys, поэтому должна использоваться совместно с ней (см. ниже пример).&lt;br /&gt;
&lt;br /&gt;
=== apply ===&lt;br /&gt;
&lt;br /&gt;
Вызывается, если данная машина пересеклась с другой. Обычно используется в совокупности с throw, move, phys, drag.&lt;br /&gt;
* '''obj''' - сработает , если пересеклись с этим объектом;&lt;br /&gt;
* '''x1''' - сработает, если центр объекта левее этого x-ка;&lt;br /&gt;
* '''x2''' - сработает, если центр объекта правее этого x-ка;&lt;br /&gt;
* '''y1''' - сработает, если центр объекта выше этого y-ка;&lt;br /&gt;
* '''y2''' - сработает, если центр объекта ниже этого y-ка;&lt;br /&gt;
* '''rm''' - радиус этой машины (если rm=0, то она считается прямоугольной)&lt;br /&gt;
* '''ro''' - радиус объекта obj (если ro=0, то он считается прямоугольным)&lt;br /&gt;
* '''st''' - состояние, в которое надо перевести объект obj&lt;br /&gt;
* '''go''' - состояние, в которое надо перейти при срабатывании;&lt;br /&gt;
* '''if''' - номер (начиная с нуля) команды условия [[#if|if]] разрешения применения команды apply.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Пусть, например, есть снаряд, который при помощи мышки надо кинуть в &amp;quot;тыкву&amp;quot;. Если мы промахнулись, снаряд должен вернуться обратно, а с тыквой ничего не произойти. Если мы в тыкву попадаем, снаряд также возвращается, а тыква &amp;quot;взрывается&amp;quot;:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;st id=&amp;quot;trow&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;init x=&amp;quot;-350&amp;quot; y=&amp;quot;150&amp;quot;/&amp;gt;                      // начальное положение&lt;br /&gt;
    &amp;lt;throw go=&amp;quot;fly&amp;quot;/&amp;gt;                             // бросаем&lt;br /&gt;
&amp;lt;/st&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;st id=&amp;quot;fly&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;phys ay=&amp;quot;100&amp;quot;/&amp;gt;                              // летим&lt;br /&gt;
    &amp;lt;apply y2=&amp;quot;300&amp;quot; go=&amp;quot;throw&amp;quot;/&amp;gt;                  // с землей&lt;br /&gt;
    &amp;lt;apply obj=&amp;quot;тыква&amp;quot; rm=&amp;quot;8&amp;quot; ro=&amp;quot;10&amp;quot; st=&amp;quot;bang&amp;quot;/&amp;gt; // с тыквой&lt;br /&gt;
&amp;lt;/st&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Условия ==&lt;br /&gt;
&lt;br /&gt;
=== if ===&lt;br /&gt;
&lt;br /&gt;
В состоянии может быть произвольное число команд if. Их номера (начиная с нуля) указываются&lt;br /&gt;
в параметре if других команд. Эти номера можно соединять при помощи логических связок:&lt;br /&gt;
* '''&amp;amp;''' - логическое '''и''' (вместо значка '''&amp;amp;''' можно использовать запятую ''',''');&lt;br /&gt;
* '''|''' - логическое '''или''';&lt;br /&gt;
* '''!''' - логическое '''не'''.&lt;br /&gt;
Пример записи логического выражения в поле if некоторой команды: '''(1&amp;amp;2)|(3&amp;amp;(!4))''',&lt;br /&gt;
что означает: выполняется if под номером 1 и под номером 2, или под номером 3 и не под номером 4.&lt;br /&gt;
&lt;br /&gt;
Логические связки используются также как математической логике или любом языке программирования. &lt;br /&gt;
Так:&lt;br /&gt;
* A '''&amp;amp;''' B - истинно, если истинны оба условия A и B;&lt;br /&gt;
* A '''|''' B - истинно, если истинно хотя бы одно условие (или оба);&lt;br /&gt;
* '''!''' А - истинно, если условие A ложно.&lt;br /&gt;
Скобки в логическом выражении определяют приоритет (порядок) выполнения логических операций.&lt;br /&gt;
Отметим несколько тождеств, справедливых при формировании логических высказываний:&lt;br /&gt;
* !(A &amp;amp; B) = (!A) | (!B)&lt;br /&gt;
* !(A | B) = (!A) &amp;amp; (!B)&lt;br /&gt;
* !(!A) = A&lt;br /&gt;
&lt;br /&gt;
Если при формировании условия (ниже) есть несколько проверок, то они соединены логическим '''и'''.&lt;br /&gt;
Т.е., если хотя бы одна из них не выполняется, то считается, что условие не выполнилось.&lt;br /&gt;
&lt;br /&gt;
Параметры команды:&lt;br /&gt;
* '''obj''' - находится ли объект obj в состоянии st или имеет ли его параметр par значение val;&lt;br /&gt;
* '''st''' - имя состояния в котором может находиться объект obj;&lt;br /&gt;
* '''par''' - имя параметра объекта obj, значение которого сравнивается с полем val;&lt;br /&gt;
* '''val''' - значение параметра par, которое проверяется у объекта obj;&lt;br /&gt;
* '''op''' - операция сравнения par op val. Если опреации нет, то предполагается проверка на равенство par=val. Иначе используются операторы:&lt;br /&gt;
** '''&amp;lt;''' - меньше (par &amp;lt; val);&lt;br /&gt;
** '''&amp;gt;''' - больше (par &amp;gt; val);&lt;br /&gt;
** '''!=''' - не равно (par != val);&lt;br /&gt;
** '''&amp;lt;&amp;gt;''' - не равно (par &amp;lt;&amp;gt; val);&lt;br /&gt;
** '''&amp;gt;=''' - больше или равно (par &amp;gt;= val);&lt;br /&gt;
** '''&amp;lt;=''' - меньше или равно (par &amp;lt;= val);&lt;br /&gt;
* '''curScr''' - если текущий экран совпадает с этим, то условие выполнилось;&lt;br /&gt;
* '''prScr''' - если предыдущий экран совпадает с этим, то условие выполнилось;&lt;br /&gt;
* '''wasScr''' - если был (когда либо) этот экран, то условие выполнилось.&lt;br /&gt;
* '''buy''' - был ли куплен данный inn-app (проверяется флаг поля в объекте [[Options]]);&lt;br /&gt;
* '''url''' - валиден (правилен и может быть запущен) ли данный интернет-адрес;&lt;br /&gt;
* '''is_mus''' - играет ли сейчас музыка (значение 1);&lt;br /&gt;
* '''guest''' - объект который установил состояние (используется вместо параметра obj). Если указанный объект не менял состояние этой машины, то условие не срабатывает.&lt;br /&gt;
&lt;br /&gt;
Если использовать obj, par, val, то будет происходить проверка на равенство значения параметра объекта и значения записаного в поле val.&lt;br /&gt;
Если же использовать obj, par, op, val, то будет происходить проверка в соответствии с операцией сравнения значения параметра объекта и значения записанного в поле val.&lt;br /&gt;
&lt;br /&gt;
Для проверки текущего значения прозрачности у объекта можно воспользоваться параметром ''cur_al''&lt;br /&gt;
&lt;br /&gt;
== Математика ==&lt;br /&gt;
Математика в appsalute creator представлена 4-мя основными операциями: (плюс),  (минус),  (умножить),  (поделить) &amp;lt;br&amp;gt;&lt;br /&gt;
Организована благодаря совместному использованию '''[[#var|var]]''' и '''[[#set|set]]'''. &lt;br /&gt;
=== var ===&lt;br /&gt;
Благодаря использованию '''[[#var|var]]''' существует возможность cчитать любой числовой параметр любого объекта. Например: x - координату какой-то машины, текущее значение любого объекта counter или timer и конечно же считывание значения любого параметра из опций! Каким образом это устроено? Рассмотрим подробнее '''[[#var|var]]''': &amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:VAR.png|right]]&lt;br /&gt;
*'''name''' - здесь выбираем имя для нашей будущей переменной, которой будем оперировать далее&lt;br /&gt;
*'''obj''' - выбирается объект, параметры которого мы хотим считать&lt;br /&gt;
*'''par''' - параметр, который нужно вычитать из объекта, указанного выше&lt;br /&gt;
*'''val''' - указывается числовое значение, которое будет установлено по умолчанию в случае отсутствия obj и par&lt;br /&gt;
*'''user''' - если стоит &amp;quot;1&amp;quot;, то будет считываться с текущего профиля в опциях&lt;br /&gt;
На изображении справа можно наблюдать каким образом организован '''[[#var|var]]'''. В данном случае объявлена переменная x_cor, которая cчитывает x-координату объекта actor_1, при этом cчитывание переменной происходит из текущего профиля, так, как в поле user установлено значение равное &amp;quot;1&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== set ===&lt;br /&gt;
[[Файл:SET.png|right]]&lt;br /&gt;
Использование '''[[#var|var]]''' без '''[[#set|set]]''' не имеет смысла. Так, как переменная создается, но не используется дальше. Рассмотрим следующий пример, где вычитаем x - координату из одного объекта и сохраним ее в опции, предварительно увеличив ее на 50 единиц (в данном случае 50 пикселей).&lt;br /&gt;
На рисунке справа можно наблюдать, каким образом это сделано. В состоянии '''init''' объявляется переменная '''x_cor''', которая cчитывает координату '''x''' из объекта '''actor_1''', таким образом в переменную '''x_cor''' запишется положение по '''x''' объекта '''actor_1'''. Поле '''user''' в данном случае в '''1''' не обязательно устанавливать, так как работа ведется с машинами, а не с опциями. Если бы на месте '''actor_1''' оказался объект '''options''', то это было бы просто необходимо, иначе программа считает значение не из профиля. Далее в '''[[#set|set]]''' выбран объект '''options''',  в параметр '''x_position''' которого будет сохранятся значение переменной '''x_cor''' увеличенной на 50. В поле '''round''' идет округление вычисляемого значения, если оно установлено в 1. Поле '''user ''' установлено в 1, это значит, что параметр '''x_position''' будет сохранен в профиль. После это выполняется сохранение опций путем задания объекту '''options''' состояния '''save'''.&amp;lt;br&amp;gt;&lt;br /&gt;
! ! !ВАЖНО: чтобы выполнить какие-то действия с '''[[#var|var]]''' его обязательно нужно указывать в поле '''val''' в '''set''', при этом, если он используется, то все выражение должно стоять в скобках. Если в поле '''val''' не используется переменная, то скобки необязательны.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Существует также возможность использовать '''[[#var|var]]''' совместно с '''[[#if|if]]''', а также '''[[#var|var]]''' с '''[[#move|move]]'''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== var и if ===&lt;br /&gt;
[[Файл:IF.png|right]]&lt;br /&gt;
При подробном рассмотрении '''[[#if|if]]''' можно заметить, что в нем есть поле '''val''', соответственно в этом поле можно указать переменную. Таким образом в поле '''val''' необязательно указывать константу, а можно указать какую-то переменную, которая может постоянно изменяться. Например, существует два объекта, один находится состоянии покоя, а другой находится в движении. При этом первый объект (тот, который в состоянии покоя) постоянно опрашивает положение второго объекта, и в случае, если у объекта, который движется, '''х''' координата  равна '''х''' координате первого объекта, то первый объект входит в состояние, где он начинает свое движение. На рисунке показан объект, который находится в состоянии покоя, рассмотрим его состояния:&amp;lt;br&amp;gt;&lt;br /&gt;
В данном объекте существует два состояния: '''init''' и '''move'''. В '''init''' объект опрашивает другой объект и в случае, когда условие срабатывает, то переходит в состояние '''move''', где начинает свое движение.&lt;br /&gt;
В '''init''' создаем переменную, в которую записываем положение по '''x''' объекта '''actor_2''', в '''if''' проверяется условие на соответствие координат объектов '''actor_1''' и '''actor_2''', в данном случае координата объекта '''actor_2''' представлена в виде переменной '''x_cor'''. Если условие выполняется, то происходит переход в состояние '''move''', если нет, то заново проходим состояние '''init''' и повторяем вышеописанную последовательность действий.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== var и move ===&lt;br /&gt;
Также с помощью '''[[#var|var]]''' есть возможность указать целевые координаты в '''[[#move|move]]'''. То есть, не обязательно указывать целевые координаты в виде констант, их можно указать теперь с помощью переменных. При использовании '''[[#var|var]]''' и '''[[#move|move]]''' можно организовать обмен двух объектов местами с анимацией движения. Для этого необходимо определять какой объект нажат первым, а какой вторым, сохранять их координаты через объект '''options''' и только потом менять их местами. На рисунке можно увидет, как это организовано.&lt;br /&gt;
[[Файл:var_move.png|1000px|thumb|center|]]&lt;br /&gt;
Рассмотрим подробнее состояние данной машины:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* '''init'''&amp;lt;br&amp;gt;&lt;br /&gt;
В этом состоянии ожидаем клик на объект и обнуляем параметр, который отвечает за то, какой по счету объект сейчас нажат. Так, как при обмене объектов, если мы делаем это по клику, важно знать, по какому кликнули нажали первым, а по какому вторым.&lt;br /&gt;
* '''check'''&amp;lt;br&amp;gt;&lt;br /&gt;
Проверяется параметр '''number''', если он равен '''0''', то это значит, что еще ничего не кликали и мы переходим в состояние, где в опции записываются координаты этого объекта, который считается нажатым первым. Если не равен '''0''', то считается, что этот объект нажат вторым и переходит в состояние, где в опции записываются координаты этого объекта, который считается нажатым вторым по счету.&lt;br /&gt;
* '''first_object'''&amp;lt;br&amp;gt;&lt;br /&gt;
В этом состоянии записываются координаты объекта в опции. Чтобы записать координаты в опции используются '''[[#var|var]]''' и '''[[#set|set]]''' упоминаемые выше. В опции координаты первого нажатого объекта сохраняются под параметрами '''x_first''' и '''y_first'''. В конце параметру '''number''' присваиваем значение '''1''', чтобы указать, что следующий нажатый объект будет вторым по счету. &lt;br /&gt;
* '''second_object'''&amp;lt;br&amp;gt;&lt;br /&gt;
В этом состоянии объект будет в том случае, если он будет нажатым вторым по счету, то есть после состояния '''check''' объект попадет в это состояние, где он запишет свои текущие координаты под параметрами '''x_second''' и '''y_second'''. Запись координат происходит таким же самым образом, что и в состоянии '''first_object'''. После этого он автоматически переходит в следующее состояние.&lt;br /&gt;
* '''move_first'''&amp;lt;br&amp;gt;&lt;br /&gt;
В этом состоянии объект будет в том случае, если он был нажат первым, поэтому он будет двигаться на место второго нажатого объекта, который сохранил свои координты в параметры'''x_second''' и '''y_second'''. Движение происходит следующим образом: сперва в переменную вычитываем координаты второго объекта, а потом в '''move''' вместо целевых координат записываем переменные, которые обязательно должны быть взяты в скобки.&lt;br /&gt;
* '''move_second'''&amp;lt;br&amp;gt;&lt;br /&gt;
В этом состоянии объект будет в том случае, если он был нажат вторым, поэтому он будет двигаться на место первого нажатого объекта, который сохранил свои координты в параметры '''x_first''' и '''y_first'''. Движение происходит следующим образом: сперва в переменную вычитываем координаты первого объекта, а потом в '''move''' вместо целевых координат записываем переменные, которые обязательно должны быть взяты в скобки.&lt;br /&gt;
&lt;br /&gt;
В результате проделанных манипуляций с машинами по кликам на две машины, они обменяются местами с анимацией движения. Это может быть очень полезным во многих минииграх!!!&lt;br /&gt;
&lt;br /&gt;
=== Важно знать ===&lt;br /&gt;
* Переменная действует в рамках одного состояния, если нужно, чтобы она была глобальной, нужно сохранить ее в опции и потом в нужный момент считывать ее из опций.&lt;br /&gt;
* Если складываем два числа, то в поле '''val''' они должны быть записаны в скобках: (5+3).&lt;br /&gt;
* Если возникает необходимость написать какое-то более сложное арифметическое вычисление, то следует помнить, что на одно действие приходятся одни скобки. Например: (((5+3)\2)*2).&lt;br /&gt;
* Количество открывающих и закрывающих скобок должно быть одинаковым.&lt;br /&gt;
* В скобках можно писать переменную, если она была объявлена выше: (5+a).&lt;br /&gt;
* Переменная может состоять из цифр и букв и знака нижнего подчеркивания.&lt;br /&gt;
* Иногда бывает необходимым использование '''round''' в '''set''', так например, если какой-то параметр получен с помощью арифметических вычислений и потом используется его в каком-то условии, и условие проверяет параметр, как целочисленное значение, то могут возникнуть ошибки. Так, как число будет записано в следующем виде 123.0000 и программа будет считать, что оно не целочисленное, а дробное. И чтобы избавится от лишних нулей  в дробной части следует округлять число.&lt;br /&gt;
* Действия, которые требуют времени, такие как move, rot, wait и другие перестают работать для уменьшения вычислительной нагрузки на устройство.&lt;br /&gt;
* Действия, которые не требуют времени, такие как set, init и другие продолжают функционировать.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Если с помощью переменной менять объекту любой параметр, например, координату X, то она запомнится (запишется как значение по умолчанию).&lt;br /&gt;
Тогда при повторном попадании на экран считается не тот X, который указан в свойствах, а тот, который установлен через переменную.&lt;br /&gt;
Если нужно при ините экрана возвращать начальные значения параметров, то можно сделать это двумя способами:&lt;br /&gt;
- не использовать переменную;&lt;br /&gt;
- создать отдельное состояние, которое будет &amp;quot;вручную&amp;quot; устанавливать начальные значения параметрам при ините экрана.&lt;br /&gt;
Если координата (или другой параметр) меняется другим способом, то будут автоматически при ините экрана подтягиваться значения из свойств объекта.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Примеры применений ===&lt;br /&gt;
С помощью математики можно организовать следующее:&lt;br /&gt;
* динамические опции (изменение звука и музыки с помощью ползунка);&lt;br /&gt;
* анимацию каунтера в играх (по окончанию уровня можно наблюдать, как изменяются очки);&lt;br /&gt;
* подсчет очков (гибкая система подсчета очков);&lt;br /&gt;
* обмен объектов местами (использование var и move)&lt;br /&gt;
* увеличение z-координаты любого объекта (когда необходимо, чтобы нажатый или таскаемый объект был выше других по z);&lt;br /&gt;
* простейший калькулятор;&lt;br /&gt;
* и много других.&lt;br /&gt;
&lt;br /&gt;
== Копирование машины состояния с сохранением ссылки на себя ==&lt;br /&gt;
Довольно часто бывает, что машина состояний ссылается только на глобальные объекты и на саму себя. При этом, если мы просто скопируем объект, он будет ссылаться на свою предыдущую копию. Этого можно избежать, сделав 3 шага:&lt;br /&gt;
1. Переместить объект в отдельную сцену&lt;br /&gt;
2. Скопировать данную сцену(имеется в виду обычное копирование, без ссылки)&lt;br /&gt;
3. Перенести объект и его копию обратно, в нужную сцену&lt;br /&gt;
4. Созданые сцены можно удалить :)&lt;br /&gt;
&lt;br /&gt;
== Random ==&lt;br /&gt;
На момент, когда пишется данная статья, понятие вероятности существует только в команде wait и в текстовом поле(объект [[Text]]) можно показать случайный текст. Однако, и текущей функциональности достаточно, чтобы сделать генератор случайных чисел:&lt;br /&gt;
[[Файл:Random.jpg]]&lt;br /&gt;
Или в виде xml:&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;obj type=&amp;quot;machine&amp;quot; id=&amp;quot;&amp;lt;Вставьте сюда ваш идентификатор объекта&amp;gt;&amp;quot; nm=&amp;quot;random&amp;quot; sync=&amp;quot;1&amp;quot; x=&amp;quot;800&amp;quot; y=&amp;quot;1200&amp;quot; w=&amp;quot;1&amp;quot; h=&amp;quot;1&amp;quot; al=&amp;quot;0&amp;quot; trace=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                &amp;lt;st id=&amp;quot;init&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;369&amp;quot; par=&amp;quot;random.val&amp;quot; val=&amp;quot;0&amp;quot; user=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;369&amp;quot; par=&amp;quot;random.precision&amp;quot; val=&amp;quot;0.01&amp;quot; user=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;369&amp;quot; par=&amp;quot;random.add&amp;quot; val=&amp;quot;1&amp;quot; user=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;369&amp;quot; st=&amp;quot;save&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                &amp;lt;/st&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                &amp;lt;st id=&amp;quot;count&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;369&amp;quot; par=&amp;quot;random.val&amp;quot; val=&amp;quot;0&amp;quot; user=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;369&amp;quot; par=&amp;quot;random.add&amp;quot; val=&amp;quot;1&amp;quot; user=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;369&amp;quot; st=&amp;quot;save&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                    &amp;lt;wait go=&amp;quot;iterate&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                &amp;lt;/st&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                &amp;lt;st id=&amp;quot;iterate&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;add&amp;quot; obj=&amp;quot;369&amp;quot; par=&amp;quot;random.add&amp;quot; user=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;369&amp;quot; par=&amp;quot;random.add&amp;quot; val=&amp;quot;((add)/2)&amp;quot; user=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                    &amp;lt;wait if=&amp;quot;0&amp;quot; go=&amp;quot;complete&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                    &amp;lt;wait p=&amp;quot;0.5&amp;quot; go=&amp;quot;add&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                    &amp;lt;wait go=&amp;quot;iterate&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;369&amp;quot; par=&amp;quot;random.precision&amp;quot; op=&amp;quot;&amp;amp;gt;&amp;quot; val=&amp;quot;(add)&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                &amp;lt;/st&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                &amp;lt;st id=&amp;quot;add&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;add&amp;quot; obj=&amp;quot;369&amp;quot; par=&amp;quot;random.add&amp;quot; user=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;val&amp;quot; obj=&amp;quot;369&amp;quot; par=&amp;quot;random.val&amp;quot; user=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;369&amp;quot; par=&amp;quot;random.val&amp;quot; val=&amp;quot;(add+val)&amp;quot; user=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                    &amp;lt;wait go=&amp;quot;iterate&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                &amp;lt;/st&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                &amp;lt;st id=&amp;quot;complete&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;369&amp;quot; st=&amp;quot;save&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                &amp;lt;/st&amp;gt;&lt;br /&gt;
&lt;br /&gt;
            &amp;lt;/obj&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
прим. Объект с id=&amp;quot;369&amp;quot; - объект типа [[Options]]&lt;br /&gt;
&lt;br /&gt;
=== Краткое описание алгоритма ===&lt;br /&gt;
1. Задаются точность и обнуляется значение(val)&lt;br /&gt;
&lt;br /&gt;
2. Устанавливается добавляемое значение (add)&lt;br /&gt;
&lt;br /&gt;
3. add делится на двое. Если срабатывает wait - add добавляется к val. Если add становится меньше допустимой точности - переходим к п. 4. Если не один из переходов не сработал - повторяем п. 3.&lt;br /&gt;
&lt;br /&gt;
4. Окончание работы объекта, сохранение опций&lt;br /&gt;
&lt;br /&gt;
=== Как пользоваться? ===&lt;br /&gt;
&lt;br /&gt;
1. Задаём переменной Options-&amp;gt;random.precision необходимую точность (обычно 0.01 для игровых проектов достаточно)&lt;br /&gt;
&lt;br /&gt;
2. Переводим объект random в состояние count&lt;br /&gt;
&lt;br /&gt;
3. Ждём определённое время (200 милисекунд, в принципе достаточно, если не успеете - получите результат с меньшей точностью), либо, если уж боитесь - в цикле(переходя wait-ами между 2-мя состояниями) проверяйте перешёл ли random в состояние complete&lt;br /&gt;
&lt;br /&gt;
4. Результат вычислений заносится в переменную Options-&amp;gt;random.val . val принимает значение от 0 до 1 (не включая 1)&lt;br /&gt;
&lt;br /&gt;
=== Какие могут возникнуть проблемы ===&lt;br /&gt;
&lt;br /&gt;
1. Если 2 объекта захотят одновременно вызвать random. Решение проблемы: Создать 2 объекта random. И ещё, обязательно переименовать в каждом объекте группу параметров, в который параметры будут заноситься (Например: random1.val, random2.val).&lt;br /&gt;
&lt;br /&gt;
2. Не следует сохранять в Options промежуточные вычисления, т. к. это очень существенно замедлит вычисления&lt;br /&gt;
&lt;br /&gt;
3. Если машина невидима(vis = 0), то она остаётся функционировать, но частично:&lt;br /&gt;
&lt;br /&gt;
Предположим, что есть машина А, у которой перед загрузкой экрана vis=0, в ней в состоянии по-умолчанию есть движение, init и несколько set-ов на другие объекты. При загрузке экрана выполнятся set-ы, init, но объект двигаться как указано не будет.&lt;br /&gt;
&lt;br /&gt;
Если необходимо чтобы объект двигался невидимым - следует использовать изменение прозрачности машины, или init для перемещения.&lt;br /&gt;
&lt;br /&gt;
== Random 2 ==&lt;br /&gt;
Улучшенный вариант предыдущего генератора случайных чисел ([[Random]]).&lt;br /&gt;
Суть состоит в том, что объект записывает переменные внутрь себя, минуя запись объект [Options].&lt;br /&gt;
[[Файл:Random2.jpg]]&lt;br /&gt;
&lt;br /&gt;
Исходный xml-код имеет вид:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 &amp;lt;obj id=&amp;quot;4759&amp;quot; type=&amp;quot;machine&amp;quot; nm=&amp;quot;random_new&amp;quot; sync=&amp;quot;1&amp;quot; x=&amp;quot;800&amp;quot; y=&amp;quot;1200&amp;quot; w=&amp;quot;1&amp;quot; h=&amp;quot;1&amp;quot; al=&amp;quot;0&amp;quot; trace=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;st id=&amp;quot;init&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;4759&amp;quot; par=&amp;quot;val&amp;quot; val=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;4759&amp;quot; par=&amp;quot;precision&amp;quot; val=&amp;quot;0.01&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;4759&amp;quot; par=&amp;quot;add&amp;quot; val=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/st&amp;gt;&lt;br /&gt;
                &amp;lt;st id=&amp;quot;count&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;4759&amp;quot; par=&amp;quot;val&amp;quot; val=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;4759&amp;quot; par=&amp;quot;add&amp;quot; val=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;wait go=&amp;quot;iterate&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/st&amp;gt;&lt;br /&gt;
                &amp;lt;st id=&amp;quot;iterate&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;add&amp;quot; obj=&amp;quot;4759&amp;quot; par=&amp;quot;add&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;4759&amp;quot; par=&amp;quot;add&amp;quot; val=&amp;quot;((add)/2)&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;wait if=&amp;quot;0&amp;quot; go=&amp;quot;complete&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;wait p=&amp;quot;0.5&amp;quot; go=&amp;quot;add&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;wait go=&amp;quot;iterate&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;4759&amp;quot; par=&amp;quot;precision&amp;quot; op=&amp;quot;&amp;amp;gt;&amp;quot; val=&amp;quot;(add)&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/st&amp;gt;&lt;br /&gt;
                &amp;lt;st id=&amp;quot;add&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;add&amp;quot; obj=&amp;quot;4759&amp;quot; par=&amp;quot;add&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;val&amp;quot; obj=&amp;quot;4759&amp;quot; par=&amp;quot;val&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;4759&amp;quot; par=&amp;quot;val&amp;quot; val=&amp;quot;(add+val)&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;wait go=&amp;quot;iterate&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/st&amp;gt;&lt;br /&gt;
                &amp;lt;st id=&amp;quot;complete&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;/obj&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Краткое описание алгоритма ===&lt;br /&gt;
См. объект [[Random]]&lt;br /&gt;
&lt;br /&gt;
=== Как пользоваться? ===&lt;br /&gt;
См. объект [[Random]]&lt;br /&gt;
&lt;br /&gt;
=== Достоинства и недостатки ===&lt;br /&gt;
Достоинства: можно создавать несколько копий, при этом не нужно лезть внутрь объекта (если хотите иметь несколько генераторов в одном экране, скопируйте генератор в другой экран, а потом перенесите обратно - ссылка внутри объекта на самого себя сохранится).&lt;br /&gt;
&lt;br /&gt;
Недостатки: Как и в случае с объектом Random, нужно выдержать время, чтобы генератор сработал. Таким образом, к генератору может безопасно обращаться только 1 объект.&lt;br /&gt;
&lt;br /&gt;
== Random-псевдо ==&lt;br /&gt;
Генератор псевдослучайных чисел. Быстрый генератор, по сравнению с [[Random2]].&lt;br /&gt;
Суть состоит в том, что последовательность случайных чисел задаётся по формуле:&lt;br /&gt;
&lt;br /&gt;
Хорошее среднее значение (0.47) даёт формула:&lt;br /&gt;
A=10000*i*/(i+1)&lt;br /&gt;
Даллее, от числа А оставляется только дробная часть.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Random_pseudo.jpg]]&lt;br /&gt;
&lt;br /&gt;
Исходный xml-код имеет вид:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 &amp;lt;obj id=&amp;quot;4908&amp;quot; type=&amp;quot;machine&amp;quot; nm=&amp;quot;random_pseudo&amp;quot; sync=&amp;quot;1&amp;quot; x=&amp;quot;800&amp;quot; y=&amp;quot;800&amp;quot; w=&amp;quot;100&amp;quot; h=&amp;quot;100&amp;quot; trace=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;st id=&amp;quot;init&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;4908&amp;quot; par=&amp;quot;index&amp;quot; val=&amp;quot;101&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;4908&amp;quot; par=&amp;quot;val&amp;quot; val=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/st&amp;gt;&lt;br /&gt;
                &amp;lt;st id=&amp;quot;count&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a1&amp;quot; obj=&amp;quot;4908&amp;quot; par=&amp;quot;index&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a&amp;quot; obj=&amp;quot;4908&amp;quot; par=&amp;quot;a&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;ar&amp;quot; obj=&amp;quot;4908&amp;quot; par=&amp;quot;a_round&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;4908&amp;quot; par=&amp;quot;a&amp;quot; val=&amp;quot;(((a1)/(a1+1))*10000)&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;4908&amp;quot; par=&amp;quot;a_round&amp;quot; val=&amp;quot;(a)&amp;quot; round=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;4908&amp;quot; par=&amp;quot;val&amp;quot; val=&amp;quot;(a-ar)&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;4908&amp;quot; par=&amp;quot;index&amp;quot; val=&amp;quot;(a1+1)&amp;quot; if=&amp;quot;(!0)&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;4908&amp;quot; par=&amp;quot;index&amp;quot; val=&amp;quot;101&amp;quot; if=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;4908&amp;quot; par=&amp;quot;index&amp;quot; op=&amp;quot;&amp;amp;gt;&amp;quot; val=&amp;quot;201&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/st&amp;gt;&lt;br /&gt;
            &amp;lt;/obj&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Краткое описание алгоритма ===&lt;br /&gt;
1. Устанавливается начальное значение индекса index=101 (экспериментальное)&lt;br /&gt;
&lt;br /&gt;
2. Подсчитывается значение а= index*10000/(index+1)&lt;br /&gt;
&lt;br /&gt;
3. Отбрасывается целая часть а&lt;br /&gt;
&lt;br /&gt;
4. Запись результата во внутренню переменную val&lt;br /&gt;
&lt;br /&gt;
5. Если индекс стал больше 200- ставим его снова 101.&lt;br /&gt;
&lt;br /&gt;
=== Как пользоваться? ===&lt;br /&gt;
1. Переводим объект random_pseudo в состояние count&lt;br /&gt;
2. Считываем результат из переменной val&lt;br /&gt;
&lt;br /&gt;
=== Какие могут возникнуть проблемы? ===&lt;br /&gt;
Проблема, собственно, только одна - бедность данного генератора, т. к. он имеет всего 100 различных значений. Однако, для производства игр, такого количества вполне достаточно.&lt;br /&gt;
&lt;br /&gt;
=== Достоинства и недостатки ===&lt;br /&gt;
Достоинства: результат достигается обычным переводом в состояние, без применения итераций, благодаря этому, к данному генератору случайных чисел может иметь доступ неограниченное число объектов.&lt;br /&gt;
&lt;br /&gt;
Недостатки: (они уже описаны выше) малое количество выдаваемых значений, цикличность последовательности.&lt;br /&gt;
&lt;br /&gt;
== Guest ==&lt;br /&gt;
&lt;br /&gt;
'''Guest (гость)''' - объект, который перевел машину в текущее состояние. Пример: кнопка ''btn1'' по клику переводит машину ''mch1'' в состояние ''st1'', в этом состоянии у машины ''mch1'' гостем является кнопка ''btn1''. Гостем может быть объект любого типа, если он может менять состояние другому объекту (например: хидден-объект по нахождению может менять состояние объекту, кнопка, машина, пэчворк и т.д.)&lt;br /&gt;
&lt;br /&gt;
В машине состояний можно считывать (проверять) и передавать параметры и состояния гостя. Любое поле ''obj'' в выпадающем списке содержит строку ''guest'', что позволяет работать с гостем, как с любым другим объектом.&lt;br /&gt;
&lt;br /&gt;
=== Пример использования ===&lt;br /&gt;
&lt;br /&gt;
[[Файл:Guest1.jpg|left]]&lt;br /&gt;
Пускай экран содержит 3 кнопки (''btn1'', ''btn2'' и ''btn3'') и одну машину ''mch1''. Нужно сделать так, чтобы по клику на любую из кнопок машина перемещалась в ее координаты и переводила кнопку в состояние ''disable''. Так же по клику на кнопку ''btn2'', машина должна перейти в состояние ''bonus''.&amp;lt;br&amp;gt;&lt;br /&gt;
Всем трем кнопкам по клику пропишем передавать объекту ''mch1'' состояние ''check''.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Создадим в машине три состояния: ''init'' - состояние в котором машина будет находиться по умолчанию, ''check'' - состояние, которое будет вызываться тремя кнопками, в этом состоянии у машины ''mch1'' одна из трех кнопок будет гостем, ''bonus'' - последнее состояние.&amp;lt;br&amp;gt;&lt;br /&gt;
Две команды ''var'' считывают у гостя координаты, т.к. мы не знаем, какая именно кнопка перевела машину ''mch1'' в состояние ''check'', то обращаемся к гостю, а не к кнопкам. За ними следует две команды ''set'', которые передают координаты гостя машине. Еще один ''set'' переводит гостя в состояние ''disable''. И через ''wait'' осуществляется переход в состояние ''bonus'', если гость ''btn2''.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
При смене состояния гость сохраняется, т.е. в состоянии bonus гостем останется btn2.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Если машина изначально сама себе меняет состояния, то у нее нет гостя.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Файл:Guest2.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Массив (Array) ==&lt;br /&gt;
&lt;br /&gt;
В данном объекте реализован массив, имеющий максимальную длинну в 20 элементов.&lt;br /&gt;
&lt;br /&gt;
=== Свойства объекта массив: ===&lt;br /&gt;
&lt;br /&gt;
len - длинна массива. Длинна массива может как считываться, так и записываться. Влияет на количество сохраняемых объектов в Options.&lt;br /&gt;
&lt;br /&gt;
index1 - индекс элемента. (данный массив можно расширить до многомерного и использовать несколько индексов)&lt;br /&gt;
&lt;br /&gt;
val - значение элемента массива, с индексом index1&lt;br /&gt;
&lt;br /&gt;
a1..a20 - внутренние элементы массива(обращаться можно через свойство par объекта). Предполагается, что пользователь редактора к ним обращаться напрямую не будет, однако иногда для удобства полезны.&lt;br /&gt;
&lt;br /&gt;
=== Состояния объекта массив: ===&lt;br /&gt;
&lt;br /&gt;
get - при вызове этого состояния во внутреннюю переменную val записывается значение элемента с индексом index1&lt;br /&gt;
&lt;br /&gt;
set - при вызове этого состояния во внутреннюю переменную a1..a20, соответствующую индексу index1 записывается значение val&lt;br /&gt;
&lt;br /&gt;
load - загрузить значения массива из xml.&lt;br /&gt;
&lt;br /&gt;
save - сохранить элементы массива от 1 до len&lt;br /&gt;
&lt;br /&gt;
=== Как использовать? ===&lt;br /&gt;
&lt;br /&gt;
1. Загружаем массив, переводя объект array в состояние load&lt;br /&gt;
&lt;br /&gt;
2. Записываем значения массива&lt;br /&gt;
&lt;br /&gt;
 а). Задаём значение свойству index1 объекта array (устанавливаем индекс ячейки, в которую будет заноситься число)&lt;br /&gt;
 б). Задаём значение свойству val объекта array (устанавливаем значение, которое будет заноситься в ячейку с индексом index1)&lt;br /&gt;
 в). Переводим объект array в состояние set&lt;br /&gt;
&lt;br /&gt;
3. Считываем значения массива&lt;br /&gt;
 а). Задаём значение свойству index1 объекта array (устанавливаем индекс ячейки, из которой будет считываться число)&lt;br /&gt;
 б). Переводим объект array в состояние get&lt;br /&gt;
 в). Считываем значение из свойства val объекта array&lt;br /&gt;
&lt;br /&gt;
4. Сохраняем массив, переводя объект array в состояние save. Если хотите изменить количество сохраняемых эелментов - предварительно измените параметр len.&lt;br /&gt;
&lt;br /&gt;
=== Копирование объекта ===&lt;br /&gt;
&lt;br /&gt;
При копировании, необходимо заменить в состояниях load и save array.имя_параметра на другое имя. Например, array2.имя_параметра. Копировать следует через использование доп. сцены (см. выше)&lt;br /&gt;
&lt;br /&gt;
=== Достоинства ===&lt;br /&gt;
&lt;br /&gt;
Позволяет избежать необходимости каждый раз создавать большое количество if-ов и set-ов, если необходимо работать с нумерованным списком. Можно один раз создать структуру и копировать её неограниченное количество раз&lt;br /&gt;
&lt;br /&gt;
=== Недостатки ===&lt;br /&gt;
&lt;br /&gt;
Данный объект содержит довольно большое количество кода, поэтому при большом их обилии/длинне может занизить скорость работы сцены и скорость загрузки сцены.&lt;br /&gt;
&lt;br /&gt;
=== Исходный XML код===&lt;br /&gt;
Прим. id=&amp;quot;369&amp;quot; - идентификатор объекта Options, сохраняющего все переменные приложения. id=&amp;quot;7845&amp;quot; - идентификатор объекта&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;obj id=&amp;quot;7845&amp;quot; type=&amp;quot;machine&amp;quot; nm=&amp;quot;array&amp;quot; sync=&amp;quot;1&amp;quot; w=&amp;quot;1&amp;quot; h=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;st id=&amp;quot;init&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;st id=&amp;quot;get&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a1&amp;quot; obj=&amp;quot;7845&amp;quot; par=&amp;quot;a1&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a2&amp;quot; obj=&amp;quot;7845&amp;quot; par=&amp;quot;a2&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a3&amp;quot; obj=&amp;quot;7845&amp;quot; par=&amp;quot;a3&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a4&amp;quot; obj=&amp;quot;7845&amp;quot; par=&amp;quot;a4&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a5&amp;quot; obj=&amp;quot;7845&amp;quot; par=&amp;quot;a5&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a6&amp;quot; obj=&amp;quot;7845&amp;quot; par=&amp;quot;a6&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a7&amp;quot; obj=&amp;quot;7845&amp;quot; par=&amp;quot;a7&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a8&amp;quot; obj=&amp;quot;7845&amp;quot; par=&amp;quot;a8&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a9&amp;quot; obj=&amp;quot;7845&amp;quot; par=&amp;quot;a9&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a10&amp;quot; obj=&amp;quot;7845&amp;quot; par=&amp;quot;a10&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a11&amp;quot; obj=&amp;quot;7845&amp;quot; par=&amp;quot;a11&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a12&amp;quot; obj=&amp;quot;7845&amp;quot; par=&amp;quot;a12&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a13&amp;quot; obj=&amp;quot;7845&amp;quot; par=&amp;quot;a13&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a14&amp;quot; obj=&amp;quot;7845&amp;quot; par=&amp;quot;a14&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a15&amp;quot; obj=&amp;quot;7845&amp;quot; par=&amp;quot;a15&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a16&amp;quot; obj=&amp;quot;7845&amp;quot; par=&amp;quot;a16&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a17&amp;quot; obj=&amp;quot;7845&amp;quot; par=&amp;quot;a17&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a18&amp;quot; obj=&amp;quot;7845&amp;quot; par=&amp;quot;a18&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a19&amp;quot; obj=&amp;quot;7845&amp;quot; par=&amp;quot;a19&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a20&amp;quot; obj=&amp;quot;7845&amp;quot; par=&amp;quot;a20&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;val&amp;quot; val=&amp;quot;(a1)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;val&amp;quot; val=&amp;quot;(a2)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;val&amp;quot; val=&amp;quot;(a3)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;val&amp;quot; val=&amp;quot;(a4)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;3&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;val&amp;quot; val=&amp;quot;(a5)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;4&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;val&amp;quot; val=&amp;quot;(a6)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;5&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;val&amp;quot; val=&amp;quot;(a7)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;6&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;val&amp;quot; val=&amp;quot;(a8)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;7&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;val&amp;quot; val=&amp;quot;(a9)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;8&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;val&amp;quot; val=&amp;quot;(a10)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;9&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;val&amp;quot; val=&amp;quot;(a11)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;10&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;val&amp;quot; val=&amp;quot;(a12)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;11&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;val&amp;quot; val=&amp;quot;(a13)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;12&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;val&amp;quot; val=&amp;quot;(a14)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;13&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;val&amp;quot; val=&amp;quot;(a15)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;14&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;val&amp;quot; val=&amp;quot;(a16)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;15&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;val&amp;quot; val=&amp;quot;(a17)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;16&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;val&amp;quot; val=&amp;quot;(a18)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;17&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;val&amp;quot; val=&amp;quot;(a19)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;18&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;val&amp;quot; val=&amp;quot;(a20)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;19&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;index1&amp;quot; val=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;index1&amp;quot; val=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;index1&amp;quot; val=&amp;quot;3&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;index1&amp;quot; val=&amp;quot;4&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;index1&amp;quot; val=&amp;quot;5&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;index1&amp;quot; val=&amp;quot;6&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;index1&amp;quot; val=&amp;quot;7&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;index1&amp;quot; val=&amp;quot;8&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;index1&amp;quot; val=&amp;quot;9&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;index1&amp;quot; val=&amp;quot;10&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;index1&amp;quot; val=&amp;quot;11&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;index1&amp;quot; val=&amp;quot;12&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;index1&amp;quot; val=&amp;quot;13&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;index1&amp;quot; val=&amp;quot;14&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;index1&amp;quot; val=&amp;quot;15&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;index1&amp;quot; val=&amp;quot;16&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;index1&amp;quot; val=&amp;quot;17&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;index1&amp;quot; val=&amp;quot;18&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;index1&amp;quot; val=&amp;quot;19&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;index1&amp;quot; val=&amp;quot;20&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/st&amp;gt;&lt;br /&gt;
                &amp;lt;st id=&amp;quot;set&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;val&amp;quot; obj=&amp;quot;7845&amp;quot; par=&amp;quot;val&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;a1&amp;quot; val=&amp;quot;(val)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;a2&amp;quot; val=&amp;quot;(val)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;a3&amp;quot; val=&amp;quot;(val)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;a4&amp;quot; val=&amp;quot;(val)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;3&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;a5&amp;quot; val=&amp;quot;(val)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;4&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;a6&amp;quot; val=&amp;quot;(val)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;5&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;a7&amp;quot; val=&amp;quot;(val)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;6&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;a8&amp;quot; val=&amp;quot;(val)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;7&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;a9&amp;quot; val=&amp;quot;(val)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;8&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;a10&amp;quot; val=&amp;quot;(val)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;9&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;a11&amp;quot; val=&amp;quot;(val)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;10&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;a12&amp;quot; val=&amp;quot;(val)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;11&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;a13&amp;quot; val=&amp;quot;(val)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;12&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;a14&amp;quot; val=&amp;quot;(val)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;13&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;a15&amp;quot; val=&amp;quot;(val)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;14&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;a16&amp;quot; val=&amp;quot;(val)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;15&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;a17&amp;quot; val=&amp;quot;(val)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;16&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;a18&amp;quot; val=&amp;quot;(val)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;17&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;a19&amp;quot; val=&amp;quot;(val)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;18&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;a20&amp;quot; val=&amp;quot;(val)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;19&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;index1&amp;quot; val=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;index1&amp;quot; val=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;index1&amp;quot; val=&amp;quot;3&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;index1&amp;quot; val=&amp;quot;4&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;index1&amp;quot; val=&amp;quot;5&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;index1&amp;quot; val=&amp;quot;6&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;index1&amp;quot; val=&amp;quot;7&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;index1&amp;quot; val=&amp;quot;8&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;index1&amp;quot; val=&amp;quot;9&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;index1&amp;quot; val=&amp;quot;10&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;index1&amp;quot; val=&amp;quot;11&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;index1&amp;quot; val=&amp;quot;12&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;index1&amp;quot; val=&amp;quot;13&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;index1&amp;quot; val=&amp;quot;14&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;index1&amp;quot; val=&amp;quot;15&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;index1&amp;quot; val=&amp;quot;16&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;index1&amp;quot; val=&amp;quot;17&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;index1&amp;quot; val=&amp;quot;18&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;index1&amp;quot; val=&amp;quot;19&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;index1&amp;quot; val=&amp;quot;20&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/st&amp;gt;&lt;br /&gt;
                &amp;lt;st id=&amp;quot;load&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a1&amp;quot; obj=&amp;quot;369&amp;quot; par=&amp;quot;array.a1&amp;quot; user=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a2&amp;quot; obj=&amp;quot;369&amp;quot; par=&amp;quot;array.a2&amp;quot; user=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a3&amp;quot; obj=&amp;quot;369&amp;quot; par=&amp;quot;array.a3&amp;quot; user=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a4&amp;quot; obj=&amp;quot;369&amp;quot; par=&amp;quot;array.a4&amp;quot; user=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a5&amp;quot; obj=&amp;quot;369&amp;quot; par=&amp;quot;array.a5&amp;quot; user=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a6&amp;quot; obj=&amp;quot;369&amp;quot; par=&amp;quot;array.a6&amp;quot; user=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a7&amp;quot; obj=&amp;quot;369&amp;quot; par=&amp;quot;array.a7&amp;quot; user=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a8&amp;quot; obj=&amp;quot;369&amp;quot; par=&amp;quot;array.a8&amp;quot; user=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a9&amp;quot; obj=&amp;quot;369&amp;quot; par=&amp;quot;array.a9&amp;quot; user=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a10&amp;quot; obj=&amp;quot;369&amp;quot; par=&amp;quot;array.a10&amp;quot; user=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a11&amp;quot; obj=&amp;quot;369&amp;quot; par=&amp;quot;array.a11&amp;quot; user=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a12&amp;quot; obj=&amp;quot;369&amp;quot; par=&amp;quot;array.a12&amp;quot; user=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a13&amp;quot; obj=&amp;quot;369&amp;quot; par=&amp;quot;array.a13&amp;quot; user=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a14&amp;quot; obj=&amp;quot;369&amp;quot; par=&amp;quot;array.a14&amp;quot; user=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a15&amp;quot; obj=&amp;quot;369&amp;quot; par=&amp;quot;array.a15&amp;quot; user=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a16&amp;quot; obj=&amp;quot;369&amp;quot; par=&amp;quot;array.a16&amp;quot; user=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a17&amp;quot; obj=&amp;quot;369&amp;quot; par=&amp;quot;array.a17&amp;quot; user=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a18&amp;quot; obj=&amp;quot;369&amp;quot; par=&amp;quot;array.a18&amp;quot; user=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a19&amp;quot; obj=&amp;quot;369&amp;quot; par=&amp;quot;array.a19&amp;quot; user=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a20&amp;quot; obj=&amp;quot;369&amp;quot; par=&amp;quot;array.a20&amp;quot; user=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;a1&amp;quot; val=&amp;quot;(a1)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;a2&amp;quot; val=&amp;quot;(a2)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;a3&amp;quot; val=&amp;quot;(a3)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;a4&amp;quot; val=&amp;quot;(a4)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;3&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;a5&amp;quot; val=&amp;quot;(a5)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;4&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;a6&amp;quot; val=&amp;quot;(a6)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;5&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;a7&amp;quot; val=&amp;quot;(a7)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;6&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;a8&amp;quot; val=&amp;quot;(a8)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;7&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;a9&amp;quot; val=&amp;quot;(a9)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;8&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;a10&amp;quot; val=&amp;quot;(a10)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;9&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;a11&amp;quot; val=&amp;quot;(a11)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;10&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;a12&amp;quot; val=&amp;quot;(a12)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;11&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;a13&amp;quot; val=&amp;quot;(a13)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;12&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;a14&amp;quot; val=&amp;quot;(a14)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;13&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;a15&amp;quot; val=&amp;quot;(a15)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;14&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;a16&amp;quot; val=&amp;quot;(a16)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;15&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;a17&amp;quot; val=&amp;quot;(a17)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;16&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;a18&amp;quot; val=&amp;quot;(a18)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;17&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;a19&amp;quot; val=&amp;quot;(a19)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;18&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;a20&amp;quot; val=&amp;quot;(a20)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;19&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;len&amp;quot; op=&amp;quot;&amp;amp;gt;&amp;quot; val=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;len&amp;quot; op=&amp;quot;&amp;amp;gt;&amp;quot; val=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;len&amp;quot; op=&amp;quot;&amp;amp;gt;&amp;quot; val=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;len&amp;quot; op=&amp;quot;&amp;amp;gt;&amp;quot; val=&amp;quot;3&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;len&amp;quot; op=&amp;quot;&amp;amp;gt;&amp;quot; val=&amp;quot;4&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;len&amp;quot; op=&amp;quot;&amp;amp;gt;&amp;quot; val=&amp;quot;5&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;len&amp;quot; op=&amp;quot;&amp;amp;gt;&amp;quot; val=&amp;quot;6&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;len&amp;quot; op=&amp;quot;&amp;amp;gt;&amp;quot; val=&amp;quot;7&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;len&amp;quot; op=&amp;quot;&amp;amp;gt;&amp;quot; val=&amp;quot;8&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;len&amp;quot; op=&amp;quot;&amp;amp;gt;&amp;quot; val=&amp;quot;9&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;len&amp;quot; op=&amp;quot;&amp;amp;gt;&amp;quot; val=&amp;quot;10&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;len&amp;quot; op=&amp;quot;&amp;amp;gt;&amp;quot; val=&amp;quot;11&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;len&amp;quot; op=&amp;quot;&amp;amp;gt;&amp;quot; val=&amp;quot;12&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;len&amp;quot; op=&amp;quot;&amp;amp;gt;&amp;quot; val=&amp;quot;13&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;len&amp;quot; op=&amp;quot;&amp;amp;gt;&amp;quot; val=&amp;quot;14&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;len&amp;quot; op=&amp;quot;&amp;amp;gt;&amp;quot; val=&amp;quot;15&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;len&amp;quot; op=&amp;quot;&amp;amp;gt;&amp;quot; val=&amp;quot;16&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;len&amp;quot; op=&amp;quot;&amp;amp;gt;&amp;quot; val=&amp;quot;17&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;len&amp;quot; op=&amp;quot;&amp;amp;gt;&amp;quot; val=&amp;quot;18&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;len&amp;quot; op=&amp;quot;&amp;amp;gt;&amp;quot; val=&amp;quot;19&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/st&amp;gt;&lt;br /&gt;
                &amp;lt;st id=&amp;quot;save&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;len&amp;quot; obj=&amp;quot;7845&amp;quot; par=&amp;quot;len&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a1&amp;quot; obj=&amp;quot;7845&amp;quot; par=&amp;quot;a1&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a2&amp;quot; obj=&amp;quot;7845&amp;quot; par=&amp;quot;a2&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a3&amp;quot; obj=&amp;quot;7845&amp;quot; par=&amp;quot;a3&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a4&amp;quot; obj=&amp;quot;7845&amp;quot; par=&amp;quot;a4&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a5&amp;quot; obj=&amp;quot;7845&amp;quot; par=&amp;quot;a5&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a6&amp;quot; obj=&amp;quot;7845&amp;quot; par=&amp;quot;a6&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a7&amp;quot; obj=&amp;quot;7845&amp;quot; par=&amp;quot;a7&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a8&amp;quot; obj=&amp;quot;7845&amp;quot; par=&amp;quot;a8&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a9&amp;quot; obj=&amp;quot;7845&amp;quot; par=&amp;quot;a9&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a10&amp;quot; obj=&amp;quot;7845&amp;quot; par=&amp;quot;a10&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a11&amp;quot; obj=&amp;quot;7845&amp;quot; par=&amp;quot;a11&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a12&amp;quot; obj=&amp;quot;7845&amp;quot; par=&amp;quot;a12&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a13&amp;quot; obj=&amp;quot;7845&amp;quot; par=&amp;quot;a13&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a14&amp;quot; obj=&amp;quot;7845&amp;quot; par=&amp;quot;a14&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a15&amp;quot; obj=&amp;quot;7845&amp;quot; par=&amp;quot;a15&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a16&amp;quot; obj=&amp;quot;7845&amp;quot; par=&amp;quot;a16&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a17&amp;quot; obj=&amp;quot;7845&amp;quot; par=&amp;quot;a17&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a18&amp;quot; obj=&amp;quot;7845&amp;quot; par=&amp;quot;a18&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a19&amp;quot; obj=&amp;quot;7845&amp;quot; par=&amp;quot;a19&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a20&amp;quot; obj=&amp;quot;7845&amp;quot; par=&amp;quot;a20&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;369&amp;quot; par=&amp;quot;array.a1&amp;quot; val=&amp;quot;(a1)&amp;quot; round=&amp;quot;1&amp;quot; user=&amp;quot;1&amp;quot; if=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;369&amp;quot; par=&amp;quot;array.a2&amp;quot; val=&amp;quot;(a2)&amp;quot; round=&amp;quot;1&amp;quot; user=&amp;quot;1&amp;quot; if=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;369&amp;quot; par=&amp;quot;array.a3&amp;quot; val=&amp;quot;(a3)&amp;quot; round=&amp;quot;1&amp;quot; user=&amp;quot;1&amp;quot; if=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;369&amp;quot; par=&amp;quot;array.a4&amp;quot; val=&amp;quot;(a4)&amp;quot; round=&amp;quot;1&amp;quot; user=&amp;quot;1&amp;quot; if=&amp;quot;3&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;369&amp;quot; par=&amp;quot;array.a5&amp;quot; val=&amp;quot;(a5)&amp;quot; round=&amp;quot;1&amp;quot; user=&amp;quot;1&amp;quot; if=&amp;quot;4&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;369&amp;quot; par=&amp;quot;array.a6&amp;quot; val=&amp;quot;(a6)&amp;quot; round=&amp;quot;1&amp;quot; user=&amp;quot;1&amp;quot; if=&amp;quot;5&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;369&amp;quot; par=&amp;quot;array.a7&amp;quot; val=&amp;quot;(a7)&amp;quot; round=&amp;quot;1&amp;quot; user=&amp;quot;1&amp;quot; if=&amp;quot;6&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;369&amp;quot; par=&amp;quot;array.a8&amp;quot; val=&amp;quot;(a8)&amp;quot; round=&amp;quot;1&amp;quot; user=&amp;quot;1&amp;quot; if=&amp;quot;7&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;369&amp;quot; par=&amp;quot;array.a9&amp;quot; val=&amp;quot;(a9)&amp;quot; round=&amp;quot;1&amp;quot; user=&amp;quot;1&amp;quot; if=&amp;quot;8&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;369&amp;quot; par=&amp;quot;array.a10&amp;quot; val=&amp;quot;(a10)&amp;quot; round=&amp;quot;1&amp;quot; user=&amp;quot;1&amp;quot; if=&amp;quot;9&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;369&amp;quot; par=&amp;quot;array.a11&amp;quot; val=&amp;quot;(a11)&amp;quot; round=&amp;quot;1&amp;quot; user=&amp;quot;1&amp;quot; if=&amp;quot;10&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;369&amp;quot; par=&amp;quot;array.a12&amp;quot; val=&amp;quot;(a12)&amp;quot; round=&amp;quot;1&amp;quot; user=&amp;quot;1&amp;quot; if=&amp;quot;11&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;369&amp;quot; par=&amp;quot;array.a13&amp;quot; val=&amp;quot;(a13)&amp;quot; round=&amp;quot;1&amp;quot; user=&amp;quot;1&amp;quot; if=&amp;quot;12&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;369&amp;quot; par=&amp;quot;array.a14&amp;quot; val=&amp;quot;(a14)&amp;quot; round=&amp;quot;1&amp;quot; user=&amp;quot;1&amp;quot; if=&amp;quot;13&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;369&amp;quot; par=&amp;quot;array.a15&amp;quot; val=&amp;quot;(a15)&amp;quot; round=&amp;quot;1&amp;quot; user=&amp;quot;1&amp;quot; if=&amp;quot;14&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;369&amp;quot; par=&amp;quot;array.a16&amp;quot; val=&amp;quot;(a16)&amp;quot; round=&amp;quot;1&amp;quot; user=&amp;quot;1&amp;quot; if=&amp;quot;15&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;369&amp;quot; par=&amp;quot;array.a17&amp;quot; val=&amp;quot;(a17)&amp;quot; round=&amp;quot;1&amp;quot; user=&amp;quot;1&amp;quot; if=&amp;quot;16&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;369&amp;quot; par=&amp;quot;array.a18&amp;quot; val=&amp;quot;(a18)&amp;quot; round=&amp;quot;1&amp;quot; user=&amp;quot;1&amp;quot; if=&amp;quot;17&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;369&amp;quot; par=&amp;quot;array.a19&amp;quot; val=&amp;quot;(a19)&amp;quot; round=&amp;quot;1&amp;quot; user=&amp;quot;1&amp;quot; if=&amp;quot;18&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;369&amp;quot; par=&amp;quot;array.a20&amp;quot; val=&amp;quot;(a20)&amp;quot; round=&amp;quot;1&amp;quot; user=&amp;quot;1&amp;quot; if=&amp;quot;19&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;369&amp;quot; par=&amp;quot;array.len&amp;quot; val=&amp;quot;(len)&amp;quot; round=&amp;quot;1&amp;quot; user=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;len&amp;quot; op=&amp;quot;&amp;amp;gt;&amp;quot; val=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;len&amp;quot; op=&amp;quot;&amp;amp;gt;&amp;quot; val=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;len&amp;quot; op=&amp;quot;&amp;amp;gt;&amp;quot; val=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;len&amp;quot; op=&amp;quot;&amp;amp;gt;&amp;quot; val=&amp;quot;3&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;len&amp;quot; op=&amp;quot;&amp;amp;gt;&amp;quot; val=&amp;quot;4&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;len&amp;quot; op=&amp;quot;&amp;amp;gt;&amp;quot; val=&amp;quot;5&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;len&amp;quot; op=&amp;quot;&amp;amp;gt;&amp;quot; val=&amp;quot;6&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;len&amp;quot; op=&amp;quot;&amp;amp;gt;&amp;quot; val=&amp;quot;7&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;len&amp;quot; op=&amp;quot;&amp;amp;gt;&amp;quot; val=&amp;quot;8&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;len&amp;quot; op=&amp;quot;&amp;amp;gt;&amp;quot; val=&amp;quot;9&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;len&amp;quot; op=&amp;quot;&amp;amp;gt;&amp;quot; val=&amp;quot;10&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;len&amp;quot; op=&amp;quot;&amp;amp;gt;&amp;quot; val=&amp;quot;11&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;len&amp;quot; op=&amp;quot;&amp;amp;gt;&amp;quot; val=&amp;quot;12&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;len&amp;quot; op=&amp;quot;&amp;amp;gt;&amp;quot; val=&amp;quot;13&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;len&amp;quot; op=&amp;quot;&amp;amp;gt;&amp;quot; val=&amp;quot;14&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;len&amp;quot; op=&amp;quot;&amp;amp;gt;&amp;quot; val=&amp;quot;15&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;len&amp;quot; op=&amp;quot;&amp;amp;gt;&amp;quot; val=&amp;quot;16&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;len&amp;quot; op=&amp;quot;&amp;amp;gt;&amp;quot; val=&amp;quot;17&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;len&amp;quot; op=&amp;quot;&amp;amp;gt;&amp;quot; val=&amp;quot;18&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;len&amp;quot; op=&amp;quot;&amp;amp;gt;&amp;quot; val=&amp;quot;19&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/st&amp;gt;&lt;br /&gt;
            &amp;lt;/obj&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Машина состояний объекта ===&lt;br /&gt;
[[Файл:array.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Пример использования==&lt;br /&gt;
&lt;br /&gt;
[http://fs5.absolutist.com/files/wikisample/machine.rar Download]&lt;/div&gt;</summary>
		<author><name>Podkor</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.appsalutecreator.com/index.php?title=Machine&amp;diff=5059</id>
		<title>Machine</title>
		<link rel="alternate" type="text/html" href="https://wiki.appsalutecreator.com/index.php?title=Machine&amp;diff=5059"/>
		<updated>2013-08-21T07:15:31Z</updated>

		<summary type="html">&lt;p&gt;Podkor: /* Введение */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC right}}&lt;br /&gt;
'''Машина состояний''' (state machine) позволяет описывать сложное поведение игровых объектов. Для машин с типовым набором состояний и поведений вводятся отдельные типы объектов. Например, кнопка, по своей сути, является машиной состояний.&lt;br /&gt;
&lt;br /&gt;
== Введение ==&lt;br /&gt;
&lt;br /&gt;
Логика поведения машины разбивается на отдельные узлы (состояния). Машина всегда находится строго в одном состоянии. Переход из одного состояния в другое происходит либо в результате внешнего воздействия на машину, либо в результате окончания некоторых процессов протекающих внутри неё&lt;br /&gt;
&lt;br /&gt;
Любая машина состояний может быть изображена в виде графа с кружочками и стрелками. У машины всегда активно строго одно состояние (ниже это изображено на левом рисунке темным кружком):&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
[[Файл:def_states.png]]&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
Машина состояний не обладает памятью. Это означает, что для анализа того, что произойдет в данном состоянии, неважно как мы в него попали, и какова была предыстория переходов. Важно, только, что мы находимся в этом состоянии. Такое отсутствие памяти упрощает анализ логики машины, так как каждый раз мы концентрируемся на одном конкретном состоянии, а всю логику работы разбиваем на отдельные кирпичики-состояния.&lt;br /&gt;
&lt;br /&gt;
Выше на правом рисунке изображено некоторое состояние. При входе в него, происходит инициализация состояния. Если на объект оказываются внешние воздействия, то он может покинуть состояние. Наконец, внутри состояния могут работать различные процессы.&lt;br /&gt;
&lt;br /&gt;
Все команды состояния, разбиваются на три группы:&lt;br /&gt;
* '''[[#Инициализация|Инициализация]]''':&lt;br /&gt;
** '''[[#draw|draw]]''' - установка графического ресурса;&lt;br /&gt;
** '''[[#init|init]]''' - инициализация параметров машины (координаты и т.п.);&lt;br /&gt;
** '''[[#set|set]]''' - установка состояния другого объекта;&lt;br /&gt;
** '''[[#play|play]]''' - проиграть звук;&lt;br /&gt;
** '''[[#var|var]]''' - переменная, которой присваивается значение параметра объекта;&lt;br /&gt;
** '''[[#buy|buy]]''' - запуск процедуры in-app покупки;&lt;br /&gt;
** '''[[#download|download]]''' - запуск процедуры закачки контента.&lt;br /&gt;
* '''[[#Процессы|Процессы]]''':&lt;br /&gt;
** '''[[#wait|wait]]''' - задержка по времени;&lt;br /&gt;
** '''[[#move|move]]''' - равномерное движение;&lt;br /&gt;
** '''[[#rot|rot]]''' - вращение вокруг точки пивота;&lt;br /&gt;
** '''[[#alpha|alpha]]''' - изменение прозрачности;&lt;br /&gt;
** '''[[#scale|scale]]''' - изменение размера;&lt;br /&gt;
** '''[[#phys|phys]]''' - ускоренное движение;&lt;br /&gt;
** '''[[#spline|spline]]''' - движение по сплайну (по кривой).&lt;br /&gt;
* '''[[#Воздействия|Воздействия]]''':&lt;br /&gt;
** '''[[#click|click]]''' - что делать при клике на машине;&lt;br /&gt;
** '''[[#drop|drop]]''' - на машине отпущена клавиша мыши;&lt;br /&gt;
** '''[[#drag|drag]]''' - машину схватили и тащат;&lt;br /&gt;
** '''[[#throw|throw]]''' - машину схватили и кинули;&lt;br /&gt;
** '''[[#apply|apply]]''' - сработает при пересечении машины с линией или объектом;&lt;br /&gt;
** '''[[#touch_in|touch_in]]''' - наведение мыши/пальца на машину, если палец &amp;quot;тащат&amp;quot; по экрану;&lt;br /&gt;
** '''[[#touch_out|touch_out]]''' - выведение мыши из машины, если палец &amp;quot;тащат&amp;quot; по экрану;&lt;br /&gt;
** '''[[#touch_up|touch_up]]''' - отжатие мыши от машины;&lt;br /&gt;
** '''[[#mouse_in|mouse_in]]''' - наведение мыши на машину даже если не нажата кнопка мыши;&lt;br /&gt;
** '''[[#mouse_out|mouse_out]]''' - выведение мыши из машины даже если не нажата кнопка мыши.&lt;br /&gt;
&lt;br /&gt;
Кроме этого, есть команда '''[[#if|if]]''', вызываемая другими командами. В ней описываются некоторые логические условия, выполнение которых говорит команде (которая вызвала этот '''if'''), что можно завершать работу. Для разных команд использование этого параметра несколько '''отличается'''!&lt;br /&gt;
&lt;br /&gt;
Начальные понятия и методы работы с машинами состояний находятся в [[Learning|уроках]],&lt;br /&gt;
начиная с [[Checkbox как машина состояний|третьего]].&lt;br /&gt;
&lt;br /&gt;
== Свойства ==&lt;br /&gt;
&lt;br /&gt;
Общие для всех объектов свойства описаны в документе [[Object|Object]].&lt;br /&gt;
Дополнительные свойства:&lt;br /&gt;
&lt;br /&gt;
* '''Состояние''' - Состояние в котором будет находиться машина при инициализации. Если ничего не указано - первое состояние в списке состояний.&lt;br /&gt;
* '''Хранить нажатость''' - нужно ли сбрасывать нажатость при изменении состояния.&lt;br /&gt;
* '''res''' - графический ресурс машины. Может отсутствовать. Перетягивается из редактора ресурсов(поле должно быть в состоянии редактирования).&lt;br /&gt;
* '''states''' - По двойному клику, или по нажатию на кнопку с тремя точками открывается список состояний.&lt;br /&gt;
* '''прокликиваемая''' - 0 - машина не пропускает клик, 1 - машина пропускает клик, 2 - машина обрабатывает клик и пропускает его дальше.&lt;br /&gt;
&lt;br /&gt;
== Инициализация ==&lt;br /&gt;
&lt;br /&gt;
При попадании в состояние, сразу выполняются команды инициализации init, draw, set, buy, var. Если в этих командах нет параметра break, они все выполняются до запуска процессов. Параметр break (со значением 1) прерывает выполнение команд инициализации данного типа. Их можно перезапустить по окончанию команд процессов.&lt;br /&gt;
&lt;br /&gt;
=== draw ===&lt;br /&gt;
&lt;br /&gt;
Команда определяет графический ресурс (картинку, которую надо рисовать в данном состоянии). Её параметры:&lt;br /&gt;
&lt;br /&gt;
* '''res''' - ресурс картинки (перетаскивается из редактора ресурсов);&lt;br /&gt;
* '''f''' - начальный кадр;&lt;br /&gt;
* '''ft''' - длительность кадра в миллисекундах;&lt;br /&gt;
* '''loop''' - число повторов (зацикливаний анимации); если -1, то бесконечно; отсутствует или 0 - будет проигран одина раз;&lt;br /&gt;
* '''rev''' - играть анимацию в обратном порядке; 0 - прямой порядок проигрывания, 1 - обратный порядок проигрывания;&lt;br /&gt;
* '''go''' - перейти в состояние;&lt;br /&gt;
* '''if''' - номер (начиная с нуля) команды [[#if|if]] для условия перехода; можно использовать логические операторы (см. [[#if|if]]);&lt;br /&gt;
* '''break''' - прервать команды.&lt;br /&gt;
&lt;br /&gt;
Пустая команда draw (без параметров) &amp;quot;сбрасывает&amp;quot; текущую картинку и в этом состоянии ничего рисоваться не будет. Если в общих параметрах объекта (в базовой панеле свойств) задан ресурс рисования, и он во всех состояниях одинаков, то его можно в состоянии не задавать.&lt;br /&gt;
&lt;br /&gt;
Если параметра loop нет, кадры анимации проиграются один раз. Чтобы зациклить их, необходимо установить loop=-1 или нужное число раз. Аналогично параметру loop других команд, первый раз draw выполняется в любом случае. Дальнейшие её повторы определяются значением loop. Однако, в отличие от других команд, loop повторяет только '''данную''' команду draw (даже если она не первая).&lt;br /&gt;
Для работы loop '''необходимо''' чтобы в редакторе ресурсов в настройках анимации '''было отключено''' зацикливание(looped).&lt;br /&gt;
&amp;lt;br&amp;gt;Если есть анимация открывающейся и закрывающейся книги (коробки, двери и т.д.) не обязательно подгружать в проект две анимации, можно использовать одну, но запускать ее в обратном порядке, для этого есть параметр '''rev'''.&lt;br /&gt;
&lt;br /&gt;
=== init ===&lt;br /&gt;
&lt;br /&gt;
Инициализация параметров данной машины&lt;br /&gt;
&lt;br /&gt;
* '''x''','''y''' - координата точки пивота относительно сцены или родительского объекта;&lt;br /&gt;
* '''sx''','''sy''' - масштаб машины по осям (если 1, то это исходный размер; 0.5 - в два раза меньше);&lt;br /&gt;
* '''ang''' - угол поворота в градусах; отчитывается вниз от оси x, или вверх, если отрицательный;&lt;br /&gt;
* '''v''' - скорость для команды move&lt;br /&gt;
* '''vr''' - угловая скорость для команды rot&lt;br /&gt;
* '''vx''','''vy''' - начальная скорость для команды phys&lt;br /&gt;
* '''ax''','''ay''' - ускорение для команды phys&lt;br /&gt;
* '''z координата''' - координата машины по z.&lt;br /&gt;
* '''z приращение''' - приращение координаты машины по z относительно текущего&lt;br /&gt;
* '''vis''' - видимость - видимость машины (1 - видима, 0 - невидима)&lt;br /&gt;
* '''показать рейтинг''' - значение 1 означает, что при выполнении этого инита будет показано окно iOS рейтинга&lt;br /&gt;
* '''закрыть приложение''' - значение 1 означает, что при выполнении этого инита приложение будет закрыто&lt;br /&gt;
* '''перезагрузить лэйаут''' - значение 1 означает, что при выполнении этого инита будет перезагружен лэйаут&lt;br /&gt;
* '''вернуться назад''' - начение 1 означает, что при выполнении этого инита произойдет возврат на предыдущий экран&lt;br /&gt;
* '''реклама AdMob''' - 1 - показать, 0 - спрятать, -1 - не изменять состояние&lt;br /&gt;
* '''прокликиваемая''' - если 1, то картинка прозрачна для клика мышкой (пропускает объектам под ней). Если 2, то клик обрабатывается, но передается дальше&lt;br /&gt;
* '''курсор''' - меняет текущий курсор мыши на указанный графический ресурс. Перетягивается из редактора ресурсов, поле должно быть в состоянии редактирования.&lt;br /&gt;
* '''if''' - номер (начиная с нуля) команды [[#if|if]] для условия выполнения; можно использовать логические операторы (см. [[#if|if]]);&lt;br /&gt;
* '''break''' - прервать команды.&lt;br /&gt;
&lt;br /&gt;
Так же, как и при инициализации картинки ('''draw'''), вызов команды ('''init''') переопределяет только те параметры, которые в ней указаны. Остальные параметры (заданные в других состояниях или в общих свойствах объекта) остаются без изменений&lt;br /&gt;
&lt;br /&gt;
=== set ===&lt;br /&gt;
&lt;br /&gt;
Перевод другого объекта в некоторое состояние или изменение его параметров.&lt;br /&gt;
&lt;br /&gt;
* '''obj''' - изменяемый объект (выбирается из списка объектов);&lt;br /&gt;
* '''st''' - состояние в которое переводится объект.&lt;br /&gt;
* '''scr_param''' - глобальный либо текущий экран, параметры которого меняем&lt;br /&gt;
* '''scr_state''' - экран, состояние которого меняем&lt;br /&gt;
* '''parent''' - Объект, который будет установлен в качестве родителя объекту из obj. Объект obj будет оторван от текущего своего родителя и добавлен в детей объекта parent&lt;br /&gt;
* '''par''' - параметр объекта для установки, используется вместе с val, val_obj, val_txt, val_scr.&lt;br /&gt;
* '''val''' - значение параметра объекта для установки&lt;br /&gt;
* '''round''' - округлить значение, записываемое в val&lt;br /&gt;
* '''val_obj''' - id объекта, будет записано в в par&lt;br /&gt;
* '''val_txt''' - id текста, будет записано в в par&lt;br /&gt;
* '''val_scr''' - id экрана, будет записано в в par&lt;br /&gt;
* '''val_res''' - Новое значение графического ресурса (перетаскивается из редактора ресурсов). (пока не работает)&lt;br /&gt;
* '''var''' - имя переменной данной машины, значение которой присваивается в параметр par  объекта obj&lt;br /&gt;
* '''scr''' - экран на который мы хотим перейти&lt;br /&gt;
* '''user''' - 1 - сохранять значения для текущего пользователя. Для всех типов объектов кроме options этот флаг игнорируется&lt;br /&gt;
* '''if''' - номер (начиная с нуля) команды [[#if|if]] при выполнении которого происходит отработка команды set. &lt;br /&gt;
* '''break''' - прервать выполнение команд set на этой команде (запустить их снова можно из команд процессов).&lt;br /&gt;
&lt;br /&gt;
Так как все объекты (не только машины) имеют состояния, то при помощи команды set можно их менять. Стоит обратить внимание на то, что когда в параметрах (любых команд) встречается st, речь идет о состоянии другого объекта, а если go, то данной машины состояний.&lt;br /&gt;
&lt;br /&gt;
=== play ===&lt;br /&gt;
&lt;br /&gt;
Проиграть звук.&lt;br /&gt;
&lt;br /&gt;
*'''snd''' - короткий звук (перетаскивается из редактора ресурсов);&lt;br /&gt;
*'''voice''' - голос (запускается как звук, но без цикла и с громкостью голоса) (перетаскивается из редактора ресурсов);&lt;br /&gt;
*'''mus''' - длинный звук (перетаскивается из редактора ресурсов);&lt;br /&gt;
*'''preload''' - указанный звук будет загружен в память, но не будет проигрываться прямо сейчас. Для ускорения его старта потом;&lt;br /&gt;
*'''loop''' - зациклить звук (звуки);&lt;br /&gt;
*'''mus_stop''' - остановить текущую музыку (''mus_stop=1'');&lt;br /&gt;
*'''volume''' - установить громкость для всех звуком данной машины - тех что уже играют и тех, что будут запущены впоследствии;&lt;br /&gt;
*'''if''' - номер (начиная с нуля) условия перехода [[#if|if]].&lt;br /&gt;
&lt;br /&gt;
Особенности примененияния:&lt;br /&gt;
&lt;br /&gt;
*Короткий звук (''snd'') нельзя запустить в первом (инитном) состоянии машины. Для того, чтобы запустить звук сразу при загрузке экрана, нужно в первом состоянии машины записать мгновенный переход во второе состояние мамашины (например, команда ''wait'', поле ''go'', в поле выбрать второе состояние), а во втором состоянии уже запустить звук. Если звук нужно зациклить и проигрывать какое-то количество раз (''loop=1,2,3,..,n'') или бесконечно (''loop=-1''), то нужно проследить чтобы состояние, в котором запускается звук, не вызывалось повторно во время проигрывания звука, иначе возникнет наложение звуков. Если во время проигрывания звука машина меняет свое состояние, звук продолжает играть. Если в одной машине почти одновременно воспроизводится несколько звуков, то они прерывают друг друга. Если каждый звук воспроизводится в отдельной машине, то они звучат параллельно.&lt;br /&gt;
*Длинный звук (''mus'')- музыка. На экране не может воспроизводится несколько длинных звуков одновременно. Любой запуск длинного звука независимо от того, в какой машине он осуществляется, будет прекращать проигрывание предыдущего звука. Музыка, которая проигрывается на глобальном экране, проигрывается на всех экранах проекта.&lt;br /&gt;
&lt;br /&gt;
=== var ===&lt;br /&gt;
&lt;br /&gt;
Переменная, которой присваивается значение параметра объекта&lt;br /&gt;
&lt;br /&gt;
*'''name''' - имя переменной;&lt;br /&gt;
*'''obj''' - объект, используемый далее;&lt;br /&gt;
*'''par''' - имя параметра, значение которого присваивается переменной;&lt;br /&gt;
*'''val''' - значение переменной, если отсутствуют obj и par;&lt;br /&gt;
*'''user''' - если стоит &amp;quot;1&amp;quot;, то будет считываться с текущего профиля в опциях&lt;br /&gt;
*'''func''' - в выпадающем списке можно выбрать функцию (Например, random - возвращает целое случайное число из диапазона. Диапазон случайных чисел в этом случае задается аргументами функции).&lt;br /&gt;
*'''arg1''' - аргумент функции&lt;br /&gt;
*'''arg2''' - аргумент функции&lt;br /&gt;
&lt;br /&gt;
Обозначенная переменная существует (может использоваться) только в текущем состоянии. Переменная может определятся в одном состоянии только один раз. Если созданной переменной нужно изменить значение в рамках состояния, это можно сделать через другую переменную или через параметр опций ([[Options]]). Если ее значение нужно использовать в другом состоянии, то оно присваивается параметру опций, а затем заново считывается в новом состоянии. Переменные можно указывать в поле ''val'' с другими математическими действиями и цифрами, при этом каждое действие заключать в скобки. Если в поле ''val'' указать имя переменной ''А'' без скобок - воспримется строка ''А'', если указать в скобках - воспримется значение переменной.&lt;br /&gt;
&lt;br /&gt;
=== buy ===&lt;br /&gt;
&lt;br /&gt;
При переходе в состояние, данная команда открывает системное окно с предложением совершить in-app покупку. В зависимости от действий игрока, покупка может произойти (успех) или не произойти (провал).&lt;br /&gt;
&lt;br /&gt;
* '''id покупки''' - внутренний id покупки для приложения, указывается в объекте [[Store]];&lt;br /&gt;
* '''объект(успех)''' - объект, которому сообщается об удачной покупке;&lt;br /&gt;
* '''состояние(успех)''' - состояние в которое переводится выбранный объект в случае успешной покупки;&lt;br /&gt;
* '''объект(провал)''' - объект, которому сообщается о неудачной покупке;&lt;br /&gt;
* '''состояние(провал)''' - состояние в которое переводится объект в случае неудачной покупки.&lt;br /&gt;
&lt;br /&gt;
=== download ===&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
При переходе в состояние будет совершена попытку закачать контент.&lt;br /&gt;
* '''url''' - ссылка на zip архив с контентом в интернете.&lt;br /&gt;
* '''объект успех''' - объект, которому в случае успешной закачки будет задаваться указанное состояние.&lt;br /&gt;
* '''состояние (успех)''' - состояние, которое будет устанавливаться выше указанному объекту, в случае успешной закачки.&lt;br /&gt;
* '''объект (провал)''' -объект, которому, в случае неудачи закачки, будет устанавливаться указанное состояние.&lt;br /&gt;
* '''состояние (провал)''' - состояние, которое, в случае неудачи закачки,будет устанавливаться выше указанному объекту.&lt;br /&gt;
* '''счетчик прогресса''' - объект, типа счетчик, который отображает прогресс закачки контента. Крайне желательно, что бы он измерялся в диапазоне от 0 до 100.&lt;br /&gt;
&lt;br /&gt;
== Процессы ==&lt;br /&gt;
&lt;br /&gt;
Все команды процессов, кроме параметров описанных ниже, могут содержать параметры, совпадающие с именами других команд. В этих параметрах указывается номер (начиная с нуля) команды, которую надо запустить на выполнение, после окончания действия данной команды процесса.&lt;br /&gt;
&lt;br /&gt;
Если в команде процесса есть условие '''[[#if|if]]''', то после окончания работы команды она ждет пока это условие не выполнится. Только после этого переходит к следующей команде этого же типа&lt;br /&gt;
или в другое состояние (если есть параметр go).&lt;br /&gt;
Исключением является команда wait, которая '''не''' ждёт срабатывания '''[[#if|if]]'''. Если он по окончанию wait сработал, то происходит переходит в другое состояние, если есть параметр go.&lt;br /&gt;
Если параметра go нет, то в любом случае запускается следующий wait (т.е. if относится только к переходу go).&lt;br /&gt;
&lt;br /&gt;
=== wait ===&lt;br /&gt;
 &lt;br /&gt;
Команда паузы (временной задержки). Если параметра '''t''' нет, то срабатывает сразу.&lt;br /&gt;
Может также использоваться для логических ветвлений, случайных переходов в другие состояния и т.д.&lt;br /&gt;
&lt;br /&gt;
* '''t''' - длительность выполнения команды в ms;&lt;br /&gt;
* '''dt''' - интервал от t-dt до t+dt, внутри которого команда может быть случайно прервана (при t&amp;gt;t+dt прерывается в любом случае);&lt;br /&gt;
* '''p''' - вероятность срабатывания перехода в состояние, указываемое параметром go;&lt;br /&gt;
* '''go''' - состояние, в которое нужно перейти поле окончания времени и срабатывания условия [[#if|if]], если оно указано;&lt;br /&gt;
* '''if''' - номер (начиная с нуля) команды [[#if|if]], при выполнении которой происходит переход go;&lt;br /&gt;
* '''loop''' - зациклить команды;&lt;br /&gt;
* '''break''' - прервать выполнение команд wait на этой команде (запустить их снова можно из команд процессов).&lt;br /&gt;
&lt;br /&gt;
Простейший набор параметров команды wait выглядит следующим образом:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;wait t=&amp;quot;1000&amp;quot; go=&amp;quot;next&amp;quot;/&amp;gt;    // ждем 1000ms и покидаем состояние&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Для программирования объектов со случайным поведением можно использовать последовательность команд wait с параметром вероятности перехода p (от 0 до 1):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;wait t=&amp;quot;100&amp;quot; p=&amp;quot;0.5&amp;quot; go=&amp;quot;st1&amp;quot;/&amp;gt; // через t с вероятностью 1/2 перейдет в st1&lt;br /&gt;
&amp;lt;wait go=&amp;quot;st2&amp;quot;/&amp;gt; // иначе,  перейдем в st2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Этот же синтаксис позволяет делать состояния с различным временем жизни:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;wait t=&amp;quot;100&amp;quot; p=&amp;quot;0.5&amp;quot; go=&amp;quot;next&amp;quot;/&amp;gt; // с вероятностью 1/2 живем 100ms&lt;br /&gt;
&amp;lt;wait t=&amp;quot;100&amp;quot; go=&amp;quot;next&amp;quot;/&amp;gt;       // или 200ms&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Впрочем, последнюю задачу можно решить при помощи указывания интервала dt, внутри которого произойдет окончание команды. Так, состояние, живущее от 800 до 1200ms, реализуется следующим образом:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;wait t=&amp;quot;1000&amp;quot; dt=&amp;quot;200&amp;quot; go=&amp;quot;next&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== move ===&lt;br /&gt;
&lt;br /&gt;
Перемещение по сцене:&lt;br /&gt;
* '''tx''', '''ty''' - целевые координаты в пикселях, к которым должен переместиться объект;&lt;br /&gt;
* '''dx''', '''dy''' - величина смещения от текущей (если есть - tx,ty игнорируются); можно задавать смесь tx, dy или dx,ty;&lt;br /&gt;
* '''v''' - скороcть перемещения в пикселях в секунду; для фреймовой анимации, например, ходьбы скорость рассчитывается исходя из длительности одного кадра и числа кадров на фазу движения. Поэтому, в этом случае, удобнее задавать скорость;&lt;br /&gt;
* '''t''' - время перемещения (v игнорируется);&lt;br /&gt;
* '''go''' - новое состояние - Состояние в которое нужно перейти после окончания времени;&lt;br /&gt;
* '''if''' - номер (начиная с нуля) команды [[#if|if]], при выполнении которой происходит переход go; команда ждет срабатывания условия, и не запускает следующую команду move, пока if не выполнится; &lt;br /&gt;
* '''loop'''  - зациклить команды - Начать выполнение команд движения с первой команды;&lt;br /&gt;
* '''break''' - прервать команды - Прервать выполнение команд move на этой команде (запустить их снова можно из команд процессов).&lt;br /&gt;
&lt;br /&gt;
В большинстве команд процессов, связанных с движением, величина изменения может быть задана в абсолютных или относительных величинах. Так, могут быть указаны целевые координаты tx, ty в которые надо переместиться, или смещение dx, dy относительно текущего положения объекта.&lt;br /&gt;
&lt;br /&gt;
Аналогично, скорость перемещения регулируется, либо явным заданием времени выполнения команды t, либо скоростью v. Исходя из требуемого расстояния, по этой скорости вычисляется необходимое время. Скорость задается в пикселях за cекунду (а не миллисекунду!)&lt;br /&gt;
&lt;br /&gt;
=== rot ===&lt;br /&gt;
&lt;br /&gt;
Вращение объекта вокруг точки пивота с координатами px,py. Эти координаты задаются относительно верхнего левого угла объекта в общей секции описания параметров объекта или командой init в данном состоянии.&lt;br /&gt;
* '''ta''' - целевой угол поворота объекта;&lt;br /&gt;
* '''da''' - на сколько надо повернуться (ta игнорируется);&lt;br /&gt;
* '''v''' - угловая скорость поворота в градусах в секунду;&lt;br /&gt;
* '''t''' - время поворота (v игнорируется);&lt;br /&gt;
* '''go''' - новое состояние - Состояние в которое нужно перейти после окончания времени.&lt;br /&gt;
* '''if''' - номер (начиная с нуля) команды [[#if|if]], при выполнении которой происходит переход go;  команда ждет срабатывания условия, и не запускает следующую команду rot, пока if не выполнится; &lt;br /&gt;
* '''loop'''  - зациклить команды - Начать выполнение команд движения с первой команды;&lt;br /&gt;
* '''break''' - прервать команды - Прервать выполнение команд rot на этой команде (запустить их снова можно из команд процессов).&lt;br /&gt;
&lt;br /&gt;
Угол отсчитывается от оси x. Если он положителен, то поворот происходит по часовой стрелке. Если отрицательный - против часовой.&lt;br /&gt;
&lt;br /&gt;
=== alpha ===&lt;br /&gt;
&lt;br /&gt;
Изменение прозрачности объекта. Меняется от 0 (полностью прозрачен) до 1 (непрозрачен)&lt;br /&gt;
* '''ta''' - целевая прозрачность&lt;br /&gt;
* '''da''' - на сколько надо изменить прозрачность от текущей (ta игнорируется)&lt;br /&gt;
* '''v''' - скорость изменения прозрачности (в долях единицы в ms)&lt;br /&gt;
* '''t''' - время изменения (v игнорируется)&lt;br /&gt;
* '''go''' - новое состояние - Состояние в которое нужно перейти после окончания времени.&lt;br /&gt;
* '''if''' - номер (начиная с нуля) команды [[#if|if]], при выполнении которой происходит переход go;  команда ждет срабатывания условия, и не запускает следующую команду alpha, пока if не выполнится; &lt;br /&gt;
* '''loop'''  - зациклить команды - Начать выполнение команд alpha с первой команды.&lt;br /&gt;
* '''break''' - прервать команды - Прервать выполнение команд alpha на этой команде (запустить их снова можно из команд процессов).&lt;br /&gt;
&lt;br /&gt;
Если у объекта прозрачность ''al=0.00'', то он невидим для всякого взаимодействия. Если у объекта прозрачность ''al=0.01'', то он видим для клика, но невидим для дропа(команда drop на объект не видит объект с прозрачностью ''0.01''). Если у объекта ''al=0.02'', то он видим и для клика, и для дропа.&lt;br /&gt;
&lt;br /&gt;
=== scale ===&lt;br /&gt;
&lt;br /&gt;
Изменение размеров объекта&lt;br /&gt;
* '''tx''', '''ty''' - целевой масштаб по каждой оси&lt;br /&gt;
* '''dx''', '''dy''' - на сколько изменить масштаб по каждой оси&lt;br /&gt;
* '''v''' - скорость изменения масштаба (в долях единицы в сек.)&lt;br /&gt;
* '''t''' - длительность выполнения команды (v игнорируется)&lt;br /&gt;
* '''go''' - новое состояние - Состояние в которое нужно перейти после окончания времени.&lt;br /&gt;
* '''if''' - номер (начиная с нуля) команды [[#if|if]], при выполнении которой происходит переход go;  команда ждет срабатывания условия, и не запускает следующую команду scale, пока if не выполнится; &lt;br /&gt;
* '''loop'''  - зациклить команды - Начать выполнение команд scale с первой команды.&lt;br /&gt;
* '''break''' - прервать команды - Прервать выполнение команд scale на этой команде (запустить их сново можно из команд процессов).&lt;br /&gt;
&lt;br /&gt;
=== phys ===&lt;br /&gt;
&lt;br /&gt;
Команда phys позволяет имитировать простую физику. В ней задается начальная скорость и действующая на объект сила (ускорение).&lt;br /&gt;
&lt;br /&gt;
* '''vx''', '''vy''' - начальная скорость&lt;br /&gt;
* '''ax''', '''ay''' - величина ускорения по каждой оси&lt;br /&gt;
* '''tvx''', '''tvy''' - целевая скорость&lt;br /&gt;
* '''tx''', '''ty''' - целевая координата&lt;br /&gt;
* '''go''' - новое состояние - Состояние в которое нужно перейти после окончания времени.&lt;br /&gt;
* '''if''' - номер (начиная с нуля) команды [[#if|if]], при выполнении которой происходит переход go;  команда ждет срабатывания условия, и не запускает следующую команду phys, пока if не выполнится; &lt;br /&gt;
* '''loop''' - зациклить команды - Начать выполнение команд phys с первой команды.&lt;br /&gt;
* '''break''' - прервать команды - Прервать выполнение команд phys на этой команде (запустить их снова можно из команд процессов). &lt;br /&gt;
&lt;br /&gt;
Рассмотрим подпрыгивающий мячик, который при касании с землей деформируется (вертикально сплюскивается). Это можно сделать в 3 состояния (падаем, касаемся и взлетаем). Первоначально мячик находится в координте y=-100, и имеет высоту картинки w=60. Падает он до координаты ty=0. При касании с землёй, мяч сжимается на 20 процентов (sy=0.8). При этом его центр должен опуститься на dy=0.8*w/2 = 24.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;st id=&amp;quot;down&amp;quot;&amp;gt;                                    // падаем&lt;br /&gt;
    &amp;lt;phys vy=&amp;quot;0&amp;quot; ay=&amp;quot;20&amp;quot; ty=&amp;quot;0&amp;quot; go=&amp;quot;touch&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/st&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;st id=&amp;quot;touch&amp;quot;&amp;gt;                                   // касаемся земли&lt;br /&gt;
    &amp;lt;move dy=&amp;quot;24&amp;quot; t=&amp;quot;300&amp;quot;/&amp;gt;                       // опускаем центр при сжатии&lt;br /&gt;
    &amp;lt;scale ty=&amp;quot;0.8&amp;quot; t=&amp;quot;300&amp;quot;/&amp;gt;                     // сжимаемся&lt;br /&gt;
    &amp;lt;move dy=&amp;quot;-24&amp;quot; t=&amp;quot;300&amp;quot;/&amp;gt;                      // поднимаем центр при разжатии&lt;br /&gt;
    &amp;lt;scale ty=&amp;quot;1&amp;quot; t=&amp;quot;300&amp;quot; go=&amp;quot;up&amp;quot;/&amp;gt;               // разжимаемся&lt;br /&gt;
&amp;lt;/st&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;st id=&amp;quot;up&amp;quot;&amp;gt;                                      // взлетаем&lt;br /&gt;
    &amp;lt;phys vy=&amp;quot;0&amp;quot; ty=&amp;quot;-200&amp;quot; go=&amp;quot;down&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/st&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Напомним, что если объект имеет начальную скорость взлета, равную v=sqrt(2*ay*h), то он подпрыгнет на высоту h. Однако, в данном случае, вместо задания начальной скорости при взлете, мы задаем целевую координату (ty), до которой мяч должен подпрыгнуть.&lt;br /&gt;
&lt;br /&gt;
=== spline ===&lt;br /&gt;
&lt;br /&gt;
Сплайн позволяет перемещать машину по заранее заданной траектории.&lt;br /&gt;
&lt;br /&gt;
====Параметры====&lt;br /&gt;
&lt;br /&gt;
*'''key''' - точки сплайна по которым движется &lt;br /&gt;
*'''t''' - время движения по траектории&lt;br /&gt;
*'''go''' - по окончанию переход в состояние&lt;br /&gt;
*'''if''' - условие перехода&lt;br /&gt;
*'''loop''' - количество повторений&lt;br /&gt;
*'''break''' - первать команды на этой&lt;br /&gt;
*'''wait''' - номер запускаемого действия&lt;br /&gt;
*'''init''' - номер запускаемого действия&lt;br /&gt;
*'''alpha''' - номер запускаемого действия&lt;br /&gt;
*'''rot''' - номер запускаемого действия&lt;br /&gt;
*'''move''' - номер запускаемого действия&lt;br /&gt;
*'''set''' - номер запускаемого действия&lt;br /&gt;
*'''phys''' - номер запускаемого действия&lt;br /&gt;
&lt;br /&gt;
====Построение сплайна====&lt;br /&gt;
&lt;br /&gt;
# в состоянии машины добавляем правой кнопкой мыши действие &amp;quot;spline&amp;quot;&lt;br /&gt;
# добавляем минимально необходимые параметры: '''key''' и '''t''', указываем время движения в '''t'''&lt;br /&gt;
# выделяем для редактирования поле '''key'''&lt;br /&gt;
# записываем координаты точек через запятую, сначала x потом y, например: -211,-248,-151,-248,-91,-247,59,-246,60,101,60,159,1,190&lt;br /&gt;
Если записали все координаты вручную, то можно сохранить и проверять.&lt;br /&gt;
Или можно в окне списка состояний нажимаем на кнопку &amp;quot;build spline&amp;quot; (справа вверху).&lt;br /&gt;
[[Файл:Btn spline.jpg|500px]]&lt;br /&gt;
&lt;br /&gt;
Окно с списком состояний закроется, появится дополнительная панель с настройками сплайна и появится возможность указывать мышкой по экрану точки для сплайна.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Spline panel.jpg|500px]]&lt;br /&gt;
&lt;br /&gt;
Точки сплайна указываются кликом левой кнопки мыши по экрану.&lt;br /&gt;
&lt;br /&gt;
Возможности редактирования:&lt;br /&gt;
&lt;br /&gt;
'''режимы:'''&lt;br /&gt;
*'''add''' - по нажатию левой кнопкой мыши по экрану - будет добавлена новая точка, которая соеденится с предидущей&lt;br /&gt;
*'''select''' - по нажатию левой кнопкой мыши по точке сплайна появится возможность отредактировать её положение перетащив её или поменяв её координаты в полях x и у&lt;br /&gt;
*'''delete''' - по нажатию левой кнопкой мыши по точке сплайна точка удалится&lt;br /&gt;
&lt;br /&gt;
Чтобы удалить все точки сплайна необходимо нажать на кнопку &amp;quot;'''delete all knots'''&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Сохранить сплайн можно нажав на кнопку &amp;quot;'''Save spline'''&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Дополнительные сведения====&lt;br /&gt;
&lt;br /&gt;
* Время движения между двумя соседними точками всегда одинаково, то есть чем дальше друг от друга соседние точки, тем быстрее будет двигаться объект, чем ближе - тем медленней.&lt;br /&gt;
&lt;br /&gt;
== Воздействия ==&lt;br /&gt;
&lt;br /&gt;
=== click ===&lt;br /&gt;
&lt;br /&gt;
Команда вызывается, если на объект кликнули мышкой. Срабатывает на её нажатие.&lt;br /&gt;
* '''go''' - состояние в которое при выполнении команды надо перейти (если if нет, то в любом случае);&lt;br /&gt;
* '''if''' - номер  (начиная с нуля) команды условия [[#if|if]], при срабатывании которого, происходит переход go.&lt;br /&gt;
&lt;br /&gt;
=== touch_in ===&lt;br /&gt;
&lt;br /&gt;
Наведение мыши/пальца на машину, если палец &amp;quot;тащат&amp;quot; по экрану.&lt;br /&gt;
* '''go''' - состояние в которое при выполнении команды нужно перейти (если if нет, то в любом случае);&lt;br /&gt;
* '''if''' - номер (начиная с нуля) команды условия [[#if|if]], при срабатывании которого, происходит переход ''go''.&lt;br /&gt;
&lt;br /&gt;
=== touch_out ===&lt;br /&gt;
Выведение мыши/пальца из машины, если палец &amp;quot;тащат&amp;quot; по экрану.&lt;br /&gt;
* '''go''' - состояние в которое при клике нужно перейти;&lt;br /&gt;
* '''if''' - номер (начиная с нуля) команды условия [[#if|if]], при котором срабатывает переход ''go''.&lt;br /&gt;
&lt;br /&gt;
=== touch_up ===&lt;br /&gt;
&lt;br /&gt;
Отжатие мыши от машины&lt;br /&gt;
&lt;br /&gt;
* '''go''' - состояние в которое при отжатии мыши нужно перейти;&lt;br /&gt;
* '''if''' - номер (начиная с нуля) команды условия [[#if|if]], при котором срабатывает переход ''go''.&lt;br /&gt;
&lt;br /&gt;
=== mouse_in ===&lt;br /&gt;
&lt;br /&gt;
Срабатывает при наведение мыши/пальца на машину даже если не нажата кнопка мыши, работает на desktop-ных системах (OSX, Windows)&lt;br /&gt;
* '''go''' - состояние в которое при выполнении команды нужно перейти (если if нет, то в любом случае);&lt;br /&gt;
* '''if''' - номер (начиная с нуля) команды условия [[#if|if]], при срабатывании которого, происходит переход ''go''.&lt;br /&gt;
&lt;br /&gt;
=== mouse_out ===&lt;br /&gt;
Срабатывает при выведение мыши/пальца из машины даже если не нажата кнопка мыши, работает на desktop-ных системах (OSX, Windows)&lt;br /&gt;
* '''go''' - состояние в которое при выполнении команды нужно перейти (если if нет, то в любом случае);&lt;br /&gt;
* '''if''' - номер (начиная с нуля) команды условия [[#if|if]], при срабатывании которого, происходит переход ''go''.&lt;br /&gt;
&lt;br /&gt;
=== drag ===&lt;br /&gt;
&lt;br /&gt;
Данная команда позволяет &amp;quot;таскать&amp;quot; объект по сцене нажав и удерживая клавишу мишки или (палец в случае сенсорного устройства) на нем.Так же есть возможность ограничить разрешенную область таскания, за пределы которой  объект вытащить невозможно. [[Файл:drag.jpg|right]]&lt;br /&gt;
* '''x1''' - разрешено таскать, когда координата объекта правее;&lt;br /&gt;
* '''x2''' - разрешено таскать, когда координата объекта левее;&lt;br /&gt;
* '''y1''' - разрешено таскать, когда координата объекта ниже;&lt;br /&gt;
* '''y2''' - разрешено таскать, когда координата объекта выше;&lt;br /&gt;
* '''if''' - номер команды условия (начиная с нуля) разрешения таскания;&lt;br /&gt;
* '''obj''' - объект у которого надо изменить состояние;&lt;br /&gt;
* '''st'''  - новое состояние объекта obj;&lt;br /&gt;
* '''за пивот''' - &amp;quot;да&amp;quot; - таскать объект за пивот, &amp;quot;нет&amp;quot; - за ту точку, за которую схватили&lt;br /&gt;
&lt;br /&gt;
=== dragRot ===&lt;br /&gt;
&lt;br /&gt;
Данная команда позволяет вращать объект вокруг точки пивота.  Нажав и удерживая клавишу мишки или палец (в случае сенсорного устройства) на нем, мы можем вращать его по часовой либо против часовой стрелки. При многократном вращении вокруг своей оси значение его угла не накапливается, а обнуляется выходя за границы [360 ; -360] градусов. [[Файл:dragRot.jpg|right]]&lt;br /&gt;
* '''if''' - номер команды условия (начиная с нуля) разрешения таскания;&lt;br /&gt;
* '''obj''' - объект у которого надо изменить состояние;&lt;br /&gt;
* '''st'''  - новое состояние объекта obj;&lt;br /&gt;
&lt;br /&gt;
=== drop ===&lt;br /&gt;
&lt;br /&gt;
Если нажатая кнопка мышки отпускается, вызвается эта команда. Обычно она используется в связке с командой drag&lt;br /&gt;
* '''obj''' - объект, на который надо уронить таскаемый объект;&lt;br /&gt;
* '''go''' - состояние в которое переходим при отпускании мышки;&lt;br /&gt;
* '''if''' - номер (начиная с нуля) условия [[#if|if]] разрешения бросания.&lt;br /&gt;
&lt;br /&gt;
Рассмотрим совместное применение команд drag и drop на следующей задаче. Пусть есть ключ и ящик. Ключ можно взять мышкой и перетащить, бросив на ящик. Ящик при этом должен постепенно стать прозрачным, а ключ уменьшиться до нуля. Машина состояний для ключа выглядит следующим образом:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;st id=&amp;quot;drag&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;drag x1=&amp;quot;-350&amp;quot; x2=&amp;quot;350&amp;quot; y1=&amp;quot;-250&amp;quot; y2=&amp;quot;250&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;drop obj=&amp;quot;box&amp;quot; go=&amp;quot;open&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/st&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;st id=&amp;quot;open&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;set obj=&amp;quot;box&amp;quot; st=&amp;quot;open&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;scale tx=&amp;quot;0.01&amp;quot; ty=&amp;quot;0.01&amp;quot; t=&amp;quot;500&amp;quot; go=&amp;quot;hide&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/st&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;st id=&amp;quot;hide&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;init x=&amp;quot;268&amp;quot; y=&amp;quot;30&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;scale tx=&amp;quot;1&amp;quot; ty=&amp;quot;1&amp;quot; t=&amp;quot;500&amp;quot; go=&amp;quot;drag&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/st&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Ящик:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;st id=&amp;quot;close&amp;quot;&amp;gt;                        // начальное состояние ящика&lt;br /&gt;
    &amp;lt;init al=&amp;quot;1&amp;quot;/&amp;gt;                     // если его кто-то сюда переведет - он появится.&lt;br /&gt;
&amp;lt;/st&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;st id=&amp;quot;open&amp;quot;&amp;gt;              &lt;br /&gt;
    &amp;lt;alpha ta=&amp;quot;0&amp;quot; t=&amp;quot;500&amp;quot;/&amp;gt;            // исчезает по прозрачности за 500 ms&lt;br /&gt;
&amp;lt;/st&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== throw ===&lt;br /&gt;
 &lt;br /&gt;
Если на объект наступили мышкой, не отпуская кнопки, мышку оттащили и затем отпустили, вызывается команда throw со следующими параметрами:&lt;br /&gt;
* '''go''' - состояние, в которое, при клике, надо перейти;&lt;br /&gt;
* '''if''' - номер (начиная с нуля) команды [[#if|if]] разрешения бросания;&lt;br /&gt;
* '''force''' - получаемая скорость равна разнице пискелей от начала бросания (мышь нажата) до его конца (мышь отжата), умноженная на этот параметр. По умолчанию он равен 1.&lt;br /&gt;
&lt;br /&gt;
Сработав, эта команда задает начальные значения скорости для команды phys, поэтому должна использоваться совместно с ней (см. ниже пример).&lt;br /&gt;
&lt;br /&gt;
=== apply ===&lt;br /&gt;
&lt;br /&gt;
Вызывается, если данная машина пересеклась с другой. Обычно используется в совокупности с throw, move, phys, drag.&lt;br /&gt;
* '''obj''' - сработает , если пересеклись с этим объектом;&lt;br /&gt;
* '''x1''' - сработает, если центр объекта левее этого x-ка;&lt;br /&gt;
* '''x2''' - сработает, если центр объекта правее этого x-ка;&lt;br /&gt;
* '''y1''' - сработает, если центр объекта выше этого y-ка;&lt;br /&gt;
* '''y2''' - сработает, если центр объекта ниже этого y-ка;&lt;br /&gt;
* '''rm''' - радиус этой машины (если rm=0, то она считается прямоугольной)&lt;br /&gt;
* '''ro''' - радиус объекта obj (если ro=0, то он считается прямоугольным)&lt;br /&gt;
* '''st''' - состояние, в которое надо перевести объект obj&lt;br /&gt;
* '''go''' - состояние, в которое надо перейти при срабатывании;&lt;br /&gt;
* '''if''' - номер (начиная с нуля) команды условия [[#if|if]] разрешения применения команды apply.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Пусть, например, есть снаряд, который при помощи мышки надо кинуть в &amp;quot;тыкву&amp;quot;. Если мы промахнулись, снаряд должен вернуться обратно, а с тыквой ничего не произойти. Если мы в тыкву попадаем, снаряд также возвращается, а тыква &amp;quot;взрывается&amp;quot;:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;st id=&amp;quot;trow&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;init x=&amp;quot;-350&amp;quot; y=&amp;quot;150&amp;quot;/&amp;gt;                      // начальное положение&lt;br /&gt;
    &amp;lt;throw go=&amp;quot;fly&amp;quot;/&amp;gt;                             // бросаем&lt;br /&gt;
&amp;lt;/st&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;st id=&amp;quot;fly&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;phys ay=&amp;quot;100&amp;quot;/&amp;gt;                              // летим&lt;br /&gt;
    &amp;lt;apply y2=&amp;quot;300&amp;quot; go=&amp;quot;throw&amp;quot;/&amp;gt;                  // с землей&lt;br /&gt;
    &amp;lt;apply obj=&amp;quot;тыква&amp;quot; rm=&amp;quot;8&amp;quot; ro=&amp;quot;10&amp;quot; st=&amp;quot;bang&amp;quot;/&amp;gt; // с тыквой&lt;br /&gt;
&amp;lt;/st&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Условия ==&lt;br /&gt;
&lt;br /&gt;
=== if ===&lt;br /&gt;
&lt;br /&gt;
В состоянии может быть произвольное число команд if. Их номера (начиная с нуля) указываются&lt;br /&gt;
в параметре if других команд. Эти номера можно соединять при помощи логических связок:&lt;br /&gt;
* '''&amp;amp;''' - логическое '''и''' (вместо значка '''&amp;amp;''' можно использовать запятую ''',''');&lt;br /&gt;
* '''|''' - логическое '''или''';&lt;br /&gt;
* '''!''' - логическое '''не'''.&lt;br /&gt;
Пример записи логического выражения в поле if некоторой команды: '''(1&amp;amp;2)|(3&amp;amp;(!4))''',&lt;br /&gt;
что означает: выполняется if под номером 1 и под номером 2, или под номером 3 и не под номером 4.&lt;br /&gt;
&lt;br /&gt;
Логические связки используются также как математической логике или любом языке программирования. &lt;br /&gt;
Так:&lt;br /&gt;
* A '''&amp;amp;''' B - истинно, если истинны оба условия A и B;&lt;br /&gt;
* A '''|''' B - истинно, если истинно хотя бы одно условие (или оба);&lt;br /&gt;
* '''!''' А - истинно, если условие A ложно.&lt;br /&gt;
Скобки в логическом выражении определяют приоритет (порядок) выполнения логических операций.&lt;br /&gt;
Отметим несколько тождеств, справедливых при формировании логических высказываний:&lt;br /&gt;
* !(A &amp;amp; B) = (!A) | (!B)&lt;br /&gt;
* !(A | B) = (!A) &amp;amp; (!B)&lt;br /&gt;
* !(!A) = A&lt;br /&gt;
&lt;br /&gt;
Если при формировании условия (ниже) есть несколько проверок, то они соединены логическим '''и'''.&lt;br /&gt;
Т.е., если хотя бы одна из них не выполняется, то считается, что условие не выполнилось.&lt;br /&gt;
&lt;br /&gt;
Параметры команды:&lt;br /&gt;
* '''obj''' - находится ли объект obj в состоянии st или имеет ли его параметр par значение val;&lt;br /&gt;
* '''st''' - имя состояния в котором может находиться объект obj;&lt;br /&gt;
* '''par''' - имя параметра объекта obj, значение которого сравнивается с полем val;&lt;br /&gt;
* '''val''' - значение параметра par, которое проверяется у объекта obj;&lt;br /&gt;
* '''op''' - операция сравнения par op val. Если опреации нет, то предполагается проверка на равенство par=val. Иначе используются операторы:&lt;br /&gt;
** '''&amp;lt;''' - меньше (par &amp;lt; val);&lt;br /&gt;
** '''&amp;gt;''' - больше (par &amp;gt; val);&lt;br /&gt;
** '''!=''' - не равно (par != val);&lt;br /&gt;
** '''&amp;lt;&amp;gt;''' - не равно (par &amp;lt;&amp;gt; val);&lt;br /&gt;
** '''&amp;gt;=''' - больше или равно (par &amp;gt;= val);&lt;br /&gt;
** '''&amp;lt;=''' - меньше или равно (par &amp;lt;= val);&lt;br /&gt;
* '''curScr''' - если текущий экран совпадает с этим, то условие выполнилось;&lt;br /&gt;
* '''prScr''' - если предыдущий экран совпадает с этим, то условие выполнилось;&lt;br /&gt;
* '''wasScr''' - если был (когда либо) этот экран, то условие выполнилось.&lt;br /&gt;
* '''buy''' - был ли куплен данный inn-app (проверяется флаг поля в объекте [[Options]]);&lt;br /&gt;
* '''url''' - валиден (правилен и может быть запущен) ли данный интернет-адрес;&lt;br /&gt;
* '''is_mus''' - играет ли сейчас музыка (значение 1);&lt;br /&gt;
* '''guest''' - объект который установил состояние (используется вместо параметра obj). Если указанный объект не менял состояние этой машины, то условие не срабатывает.&lt;br /&gt;
&lt;br /&gt;
Если использовать obj, par, val, то будет происходить проверка на равенство значения параметра объекта и значения записаного в поле val.&lt;br /&gt;
Если же использовать obj, par, op, val, то будет происходить проверка в соответствии с операцией сравнения значения параметра объекта и значения записанного в поле val.&lt;br /&gt;
&lt;br /&gt;
Для проверки текущего значения прозрачности у объекта можно воспользоваться параметром ''cur_al''&lt;br /&gt;
&lt;br /&gt;
== Математика ==&lt;br /&gt;
Математика в appsalute creator представлена 4-мя основными операциями: (плюс),  (минус),  (умножить),  (поделить) &amp;lt;br&amp;gt;&lt;br /&gt;
Организована благодаря совместному использованию '''[[#var|var]]''' и '''[[#set|set]]'''. &lt;br /&gt;
=== var ===&lt;br /&gt;
Благодаря использованию '''[[#var|var]]''' существует возможность cчитать любой числовой параметр любого объекта. Например: x - координату какой-то машины, текущее значение любого объекта counter или timer и конечно же считывание значения любого параметра из опций! Каким образом это устроено? Рассмотрим подробнее '''[[#var|var]]''': &amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:VAR.png|right]]&lt;br /&gt;
*'''name''' - здесь выбираем имя для нашей будущей переменной, которой будем оперировать далее&lt;br /&gt;
*'''obj''' - выбирается объект, параметры которого мы хотим считать&lt;br /&gt;
*'''par''' - параметр, который нужно вычитать из объекта, указанного выше&lt;br /&gt;
*'''val''' - указывается числовое значение, которое будет установлено по умолчанию в случае отсутствия obj и par&lt;br /&gt;
*'''user''' - если стоит &amp;quot;1&amp;quot;, то будет считываться с текущего профиля в опциях&lt;br /&gt;
На изображении справа можно наблюдать каким образом организован '''[[#var|var]]'''. В данном случае объявлена переменная x_cor, которая cчитывает x-координату объекта actor_1, при этом cчитывание переменной происходит из текущего профиля, так, как в поле user установлено значение равное &amp;quot;1&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== set ===&lt;br /&gt;
[[Файл:SET.png|right]]&lt;br /&gt;
Использование '''[[#var|var]]''' без '''[[#set|set]]''' не имеет смысла. Так, как переменная создается, но не используется дальше. Рассмотрим следующий пример, где вычитаем x - координату из одного объекта и сохраним ее в опции, предварительно увеличив ее на 50 единиц (в данном случае 50 пикселей).&lt;br /&gt;
На рисунке справа можно наблюдать, каким образом это сделано. В состоянии '''init''' объявляется переменная '''x_cor''', которая cчитывает координату '''x''' из объекта '''actor_1''', таким образом в переменную '''x_cor''' запишется положение по '''x''' объекта '''actor_1'''. Поле '''user''' в данном случае в '''1''' не обязательно устанавливать, так как работа ведется с машинами, а не с опциями. Если бы на месте '''actor_1''' оказался объект '''options''', то это было бы просто необходимо, иначе программа считает значение не из профиля. Далее в '''[[#set|set]]''' выбран объект '''options''',  в параметр '''x_position''' которого будет сохранятся значение переменной '''x_cor''' увеличенной на 50. В поле '''round''' идет округление вычисляемого значения, если оно установлено в 1. Поле '''user ''' установлено в 1, это значит, что параметр '''x_position''' будет сохранен в профиль. После это выполняется сохранение опций путем задания объекту '''options''' состояния '''save'''.&amp;lt;br&amp;gt;&lt;br /&gt;
! ! !ВАЖНО: чтобы выполнить какие-то действия с '''[[#var|var]]''' его обязательно нужно указывать в поле '''val''' в '''set''', при этом, если он используется, то все выражение должно стоять в скобках. Если в поле '''val''' не используется переменная, то скобки необязательны.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Существует также возможность использовать '''[[#var|var]]''' совместно с '''[[#if|if]]''', а также '''[[#var|var]]''' с '''[[#move|move]]'''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== var и if ===&lt;br /&gt;
[[Файл:IF.png|right]]&lt;br /&gt;
При подробном рассмотрении '''[[#if|if]]''' можно заметить, что в нем есть поле '''val''', соответственно в этом поле можно указать переменную. Таким образом в поле '''val''' необязательно указывать константу, а можно указать какую-то переменную, которая может постоянно изменяться. Например, существует два объекта, один находится состоянии покоя, а другой находится в движении. При этом первый объект (тот, который в состоянии покоя) постоянно опрашивает положение второго объекта, и в случае, если у объекта, который движется, '''х''' координата  равна '''х''' координате первого объекта, то первый объект входит в состояние, где он начинает свое движение. На рисунке показан объект, который находится в состоянии покоя, рассмотрим его состояния:&amp;lt;br&amp;gt;&lt;br /&gt;
В данном объекте существует два состояния: '''init''' и '''move'''. В '''init''' объект опрашивает другой объект и в случае, когда условие срабатывает, то переходит в состояние '''move''', где начинает свое движение.&lt;br /&gt;
В '''init''' создаем переменную, в которую записываем положение по '''x''' объекта '''actor_2''', в '''if''' проверяется условие на соответствие координат объектов '''actor_1''' и '''actor_2''', в данном случае координата объекта '''actor_2''' представлена в виде переменной '''x_cor'''. Если условие выполняется, то происходит переход в состояние '''move''', если нет, то заново проходим состояние '''init''' и повторяем вышеописанную последовательность действий.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== var и move ===&lt;br /&gt;
Также с помощью '''[[#var|var]]''' есть возможность указать целевые координаты в '''[[#move|move]]'''. То есть, не обязательно указывать целевые координаты в виде констант, их можно указать теперь с помощью переменных. При использовании '''[[#var|var]]''' и '''[[#move|move]]''' можно организовать обмен двух объектов местами с анимацией движения. Для этого необходимо определять какой объект нажат первым, а какой вторым, сохранять их координаты через объект '''options''' и только потом менять их местами. На рисунке можно увидет, как это организовано.&lt;br /&gt;
[[Файл:var_move.png|1000px|thumb|center|]]&lt;br /&gt;
Рассмотрим подробнее состояние данной машины:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* '''init'''&amp;lt;br&amp;gt;&lt;br /&gt;
В этом состоянии ожидаем клик на объект и обнуляем параметр, который отвечает за то, какой по счету объект сейчас нажат. Так, как при обмене объектов, если мы делаем это по клику, важно знать, по какому кликнули нажали первым, а по какому вторым.&lt;br /&gt;
* '''check'''&amp;lt;br&amp;gt;&lt;br /&gt;
Проверяется параметр '''number''', если он равен '''0''', то это значит, что еще ничего не кликали и мы переходим в состояние, где в опции записываются координаты этого объекта, который считается нажатым первым. Если не равен '''0''', то считается, что этот объект нажат вторым и переходит в состояние, где в опции записываются координаты этого объекта, который считается нажатым вторым по счету.&lt;br /&gt;
* '''first_object'''&amp;lt;br&amp;gt;&lt;br /&gt;
В этом состоянии записываются координаты объекта в опции. Чтобы записать координаты в опции используются '''[[#var|var]]''' и '''[[#set|set]]''' упоминаемые выше. В опции координаты первого нажатого объекта сохраняются под параметрами '''x_first''' и '''y_first'''. В конце параметру '''number''' присваиваем значение '''1''', чтобы указать, что следующий нажатый объект будет вторым по счету. &lt;br /&gt;
* '''second_object'''&amp;lt;br&amp;gt;&lt;br /&gt;
В этом состоянии объект будет в том случае, если он будет нажатым вторым по счету, то есть после состояния '''check''' объект попадет в это состояние, где он запишет свои текущие координаты под параметрами '''x_second''' и '''y_second'''. Запись координат происходит таким же самым образом, что и в состоянии '''first_object'''. После этого он автоматически переходит в следующее состояние.&lt;br /&gt;
* '''move_first'''&amp;lt;br&amp;gt;&lt;br /&gt;
В этом состоянии объект будет в том случае, если он был нажат первым, поэтому он будет двигаться на место второго нажатого объекта, который сохранил свои координты в параметры'''x_second''' и '''y_second'''. Движение происходит следующим образом: сперва в переменную вычитываем координаты второго объекта, а потом в '''move''' вместо целевых координат записываем переменные, которые обязательно должны быть взяты в скобки.&lt;br /&gt;
* '''move_second'''&amp;lt;br&amp;gt;&lt;br /&gt;
В этом состоянии объект будет в том случае, если он был нажат вторым, поэтому он будет двигаться на место первого нажатого объекта, который сохранил свои координты в параметры '''x_first''' и '''y_first'''. Движение происходит следующим образом: сперва в переменную вычитываем координаты первого объекта, а потом в '''move''' вместо целевых координат записываем переменные, которые обязательно должны быть взяты в скобки.&lt;br /&gt;
&lt;br /&gt;
В результате проделанных манипуляций с машинами по кликам на две машины, они обменяются местами с анимацией движения. Это может быть очень полезным во многих минииграх!!!&lt;br /&gt;
&lt;br /&gt;
=== Важно знать ===&lt;br /&gt;
* Переменная действует в рамках одного состояния, если нужно, чтобы она была глобальной, нужно сохранить ее в опции и потом в нужный момент считывать ее из опций.&lt;br /&gt;
* Если складываем два числа, то в поле '''val''' они должны быть записаны в скобках: (5+3).&lt;br /&gt;
* Если возникает необходимость написать какое-то более сложное арифметическое вычисление, то следует помнить, что на одно действие приходятся одни скобки. Например: (((5+3)\2)*2).&lt;br /&gt;
* Количество открывающих и закрывающих скобок должно быть одинаковым.&lt;br /&gt;
* В скобках можно писать переменную, если она была объявлена выше: (5+a).&lt;br /&gt;
* Переменная может состоять из цифр и букв и знака нижнего подчеркивания.&lt;br /&gt;
* Иногда бывает необходимым использование '''round''' в '''set''', так например, если какой-то параметр получен с помощью арифметических вычислений и потом используется его в каком-то условии, и условие проверяет параметр, как целочисленное значение, то могут возникнуть ошибки. Так, как число будет записано в следующем виде 123.0000 и программа будет считать, что оно не целочисленное, а дробное. И чтобы избавится от лишних нулей  в дробной части следует округлять число.&lt;br /&gt;
* Действия, которые требуют времени, такие как move, rot, wait и другие перестают работать для уменьшения вычислительной нагрузки на устройство.&lt;br /&gt;
* Действия, которые не требуют времени, такие как set, init и другие продолжают функционировать.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Если с помощью переменной менять объекту любой параметр, например, координату X, то она запомнится (запишется как значение по умолчанию).&lt;br /&gt;
Тогда при повторном попадании на экран считается не тот X, который указан в свойствах, а тот, который установлен через переменную.&lt;br /&gt;
Если нужно при ините экрана возвращать начальные значения параметров, то можно сделать это двумя способами:&lt;br /&gt;
- не использовать переменную;&lt;br /&gt;
- создать отдельное состояние, которое будет &amp;quot;вручную&amp;quot; устанавливать начальные значения параметрам при ините экрана.&lt;br /&gt;
Если координата (или другой параметр) меняется другим способом, то будут автоматически при ините экрана подтягиваться значения из свойств объекта.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Примеры применений ===&lt;br /&gt;
С помощью математики можно организовать следующее:&lt;br /&gt;
* динамические опции (изменение звука и музыки с помощью ползунка);&lt;br /&gt;
* анимацию каунтера в играх (по окончанию уровня можно наблюдать, как изменяются очки);&lt;br /&gt;
* подсчет очков (гибкая система подсчета очков);&lt;br /&gt;
* обмен объектов местами (использование var и move)&lt;br /&gt;
* увеличение z-координаты любого объекта (когда необходимо, чтобы нажатый или таскаемый объект был выше других по z);&lt;br /&gt;
* простейший калькулятор;&lt;br /&gt;
* и много других.&lt;br /&gt;
&lt;br /&gt;
== Копирование машины состояния с сохранением ссылки на себя ==&lt;br /&gt;
Довольно часто бывает, что машина состояний ссылается только на глобальные объекты и на саму себя. При этом, если мы просто скопируем объект, он будет ссылаться на свою предыдущую копию. Этого можно избежать, сделав 3 шага:&lt;br /&gt;
1. Переместить объект в отдельную сцену&lt;br /&gt;
2. Скопировать данную сцену(имеется в виду обычное копирование, без ссылки)&lt;br /&gt;
3. Перенести объект и его копию обратно, в нужную сцену&lt;br /&gt;
4. Созданые сцены можно удалить :)&lt;br /&gt;
&lt;br /&gt;
== Random ==&lt;br /&gt;
На момент, когда пишется данная статья, понятие вероятности существует только в команде wait и в текстовом поле(объект [[Text]]) можно показать случайный текст. Однако, и текущей функциональности достаточно, чтобы сделать генератор случайных чисел:&lt;br /&gt;
[[Файл:Random.jpg]]&lt;br /&gt;
Или в виде xml:&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;obj type=&amp;quot;machine&amp;quot; id=&amp;quot;&amp;lt;Вставьте сюда ваш идентификатор объекта&amp;gt;&amp;quot; nm=&amp;quot;random&amp;quot; sync=&amp;quot;1&amp;quot; x=&amp;quot;800&amp;quot; y=&amp;quot;1200&amp;quot; w=&amp;quot;1&amp;quot; h=&amp;quot;1&amp;quot; al=&amp;quot;0&amp;quot; trace=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                &amp;lt;st id=&amp;quot;init&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;369&amp;quot; par=&amp;quot;random.val&amp;quot; val=&amp;quot;0&amp;quot; user=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;369&amp;quot; par=&amp;quot;random.precision&amp;quot; val=&amp;quot;0.01&amp;quot; user=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;369&amp;quot; par=&amp;quot;random.add&amp;quot; val=&amp;quot;1&amp;quot; user=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;369&amp;quot; st=&amp;quot;save&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                &amp;lt;/st&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                &amp;lt;st id=&amp;quot;count&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;369&amp;quot; par=&amp;quot;random.val&amp;quot; val=&amp;quot;0&amp;quot; user=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;369&amp;quot; par=&amp;quot;random.add&amp;quot; val=&amp;quot;1&amp;quot; user=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;369&amp;quot; st=&amp;quot;save&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                    &amp;lt;wait go=&amp;quot;iterate&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                &amp;lt;/st&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                &amp;lt;st id=&amp;quot;iterate&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;add&amp;quot; obj=&amp;quot;369&amp;quot; par=&amp;quot;random.add&amp;quot; user=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;369&amp;quot; par=&amp;quot;random.add&amp;quot; val=&amp;quot;((add)/2)&amp;quot; user=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                    &amp;lt;wait if=&amp;quot;0&amp;quot; go=&amp;quot;complete&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                    &amp;lt;wait p=&amp;quot;0.5&amp;quot; go=&amp;quot;add&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                    &amp;lt;wait go=&amp;quot;iterate&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;369&amp;quot; par=&amp;quot;random.precision&amp;quot; op=&amp;quot;&amp;amp;gt;&amp;quot; val=&amp;quot;(add)&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                &amp;lt;/st&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                &amp;lt;st id=&amp;quot;add&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;add&amp;quot; obj=&amp;quot;369&amp;quot; par=&amp;quot;random.add&amp;quot; user=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;val&amp;quot; obj=&amp;quot;369&amp;quot; par=&amp;quot;random.val&amp;quot; user=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;369&amp;quot; par=&amp;quot;random.val&amp;quot; val=&amp;quot;(add+val)&amp;quot; user=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                    &amp;lt;wait go=&amp;quot;iterate&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                &amp;lt;/st&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                &amp;lt;st id=&amp;quot;complete&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;369&amp;quot; st=&amp;quot;save&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                &amp;lt;/st&amp;gt;&lt;br /&gt;
&lt;br /&gt;
            &amp;lt;/obj&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
прим. Объект с id=&amp;quot;369&amp;quot; - объект типа [[Options]]&lt;br /&gt;
&lt;br /&gt;
=== Краткое описание алгоритма ===&lt;br /&gt;
1. Задаются точность и обнуляется значение(val)&lt;br /&gt;
&lt;br /&gt;
2. Устанавливается добавляемое значение (add)&lt;br /&gt;
&lt;br /&gt;
3. add делится на двое. Если срабатывает wait - add добавляется к val. Если add становится меньше допустимой точности - переходим к п. 4. Если не один из переходов не сработал - повторяем п. 3.&lt;br /&gt;
&lt;br /&gt;
4. Окончание работы объекта, сохранение опций&lt;br /&gt;
&lt;br /&gt;
=== Как пользоваться? ===&lt;br /&gt;
&lt;br /&gt;
1. Задаём переменной Options-&amp;gt;random.precision необходимую точность (обычно 0.01 для игровых проектов достаточно)&lt;br /&gt;
&lt;br /&gt;
2. Переводим объект random в состояние count&lt;br /&gt;
&lt;br /&gt;
3. Ждём определённое время (200 милисекунд, в принципе достаточно, если не успеете - получите результат с меньшей точностью), либо, если уж боитесь - в цикле(переходя wait-ами между 2-мя состояниями) проверяйте перешёл ли random в состояние complete&lt;br /&gt;
&lt;br /&gt;
4. Результат вычислений заносится в переменную Options-&amp;gt;random.val . val принимает значение от 0 до 1 (не включая 1)&lt;br /&gt;
&lt;br /&gt;
=== Какие могут возникнуть проблемы ===&lt;br /&gt;
&lt;br /&gt;
1. Если 2 объекта захотят одновременно вызвать random. Решение проблемы: Создать 2 объекта random. И ещё, обязательно переименовать в каждом объекте группу параметров, в который параметры будут заноситься (Например: random1.val, random2.val).&lt;br /&gt;
&lt;br /&gt;
2. Не следует сохранять в Options промежуточные вычисления, т. к. это очень существенно замедлит вычисления&lt;br /&gt;
&lt;br /&gt;
3. Если машина невидима(vis = 0), то она остаётся функционировать, но частично:&lt;br /&gt;
&lt;br /&gt;
Предположим, что есть машина А, у которой перед загрузкой экрана vis=0, в ней в состоянии по-умолчанию есть движение, init и несколько set-ов на другие объекты. При загрузке экрана выполнятся set-ы, init, но объект двигаться как указано не будет.&lt;br /&gt;
&lt;br /&gt;
Если необходимо чтобы объект двигался невидимым - следует использовать изменение прозрачности машины, или init для перемещения.&lt;br /&gt;
&lt;br /&gt;
== Random 2 ==&lt;br /&gt;
Улучшенный вариант предыдущего генератора случайных чисел ([[Random]]).&lt;br /&gt;
Суть состоит в том, что объект записывает переменные внутрь себя, минуя запись объект [Options].&lt;br /&gt;
[[Файл:Random2.jpg]]&lt;br /&gt;
&lt;br /&gt;
Исходный xml-код имеет вид:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 &amp;lt;obj id=&amp;quot;4759&amp;quot; type=&amp;quot;machine&amp;quot; nm=&amp;quot;random_new&amp;quot; sync=&amp;quot;1&amp;quot; x=&amp;quot;800&amp;quot; y=&amp;quot;1200&amp;quot; w=&amp;quot;1&amp;quot; h=&amp;quot;1&amp;quot; al=&amp;quot;0&amp;quot; trace=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;st id=&amp;quot;init&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;4759&amp;quot; par=&amp;quot;val&amp;quot; val=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;4759&amp;quot; par=&amp;quot;precision&amp;quot; val=&amp;quot;0.01&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;4759&amp;quot; par=&amp;quot;add&amp;quot; val=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/st&amp;gt;&lt;br /&gt;
                &amp;lt;st id=&amp;quot;count&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;4759&amp;quot; par=&amp;quot;val&amp;quot; val=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;4759&amp;quot; par=&amp;quot;add&amp;quot; val=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;wait go=&amp;quot;iterate&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/st&amp;gt;&lt;br /&gt;
                &amp;lt;st id=&amp;quot;iterate&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;add&amp;quot; obj=&amp;quot;4759&amp;quot; par=&amp;quot;add&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;4759&amp;quot; par=&amp;quot;add&amp;quot; val=&amp;quot;((add)/2)&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;wait if=&amp;quot;0&amp;quot; go=&amp;quot;complete&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;wait p=&amp;quot;0.5&amp;quot; go=&amp;quot;add&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;wait go=&amp;quot;iterate&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;4759&amp;quot; par=&amp;quot;precision&amp;quot; op=&amp;quot;&amp;amp;gt;&amp;quot; val=&amp;quot;(add)&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/st&amp;gt;&lt;br /&gt;
                &amp;lt;st id=&amp;quot;add&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;add&amp;quot; obj=&amp;quot;4759&amp;quot; par=&amp;quot;add&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;val&amp;quot; obj=&amp;quot;4759&amp;quot; par=&amp;quot;val&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;4759&amp;quot; par=&amp;quot;val&amp;quot; val=&amp;quot;(add+val)&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;wait go=&amp;quot;iterate&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/st&amp;gt;&lt;br /&gt;
                &amp;lt;st id=&amp;quot;complete&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;/obj&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Краткое описание алгоритма ===&lt;br /&gt;
См. объект [[Random]]&lt;br /&gt;
&lt;br /&gt;
=== Как пользоваться? ===&lt;br /&gt;
См. объект [[Random]]&lt;br /&gt;
&lt;br /&gt;
=== Достоинства и недостатки ===&lt;br /&gt;
Достоинства: можно создавать несколько копий, при этом не нужно лезть внутрь объекта (если хотите иметь несколько генераторов в одном экране, скопируйте генератор в другой экран, а потом перенесите обратно - ссылка внутри объекта на самого себя сохранится).&lt;br /&gt;
&lt;br /&gt;
Недостатки: Как и в случае с объектом Random, нужно выдержать время, чтобы генератор сработал. Таким образом, к генератору может безопасно обращаться только 1 объект.&lt;br /&gt;
&lt;br /&gt;
== Random-псевдо ==&lt;br /&gt;
Генератор псевдослучайных чисел. Быстрый генератор, по сравнению с [[Random2]].&lt;br /&gt;
Суть состоит в том, что последовательность случайных чисел задаётся по формуле:&lt;br /&gt;
&lt;br /&gt;
Хорошее среднее значение (0.47) даёт формула:&lt;br /&gt;
A=10000*i*/(i+1)&lt;br /&gt;
Даллее, от числа А оставляется только дробная часть.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Random_pseudo.jpg]]&lt;br /&gt;
&lt;br /&gt;
Исходный xml-код имеет вид:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 &amp;lt;obj id=&amp;quot;4908&amp;quot; type=&amp;quot;machine&amp;quot; nm=&amp;quot;random_pseudo&amp;quot; sync=&amp;quot;1&amp;quot; x=&amp;quot;800&amp;quot; y=&amp;quot;800&amp;quot; w=&amp;quot;100&amp;quot; h=&amp;quot;100&amp;quot; trace=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;st id=&amp;quot;init&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;4908&amp;quot; par=&amp;quot;index&amp;quot; val=&amp;quot;101&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;4908&amp;quot; par=&amp;quot;val&amp;quot; val=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/st&amp;gt;&lt;br /&gt;
                &amp;lt;st id=&amp;quot;count&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a1&amp;quot; obj=&amp;quot;4908&amp;quot; par=&amp;quot;index&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a&amp;quot; obj=&amp;quot;4908&amp;quot; par=&amp;quot;a&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;ar&amp;quot; obj=&amp;quot;4908&amp;quot; par=&amp;quot;a_round&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;4908&amp;quot; par=&amp;quot;a&amp;quot; val=&amp;quot;(((a1)/(a1+1))*10000)&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;4908&amp;quot; par=&amp;quot;a_round&amp;quot; val=&amp;quot;(a)&amp;quot; round=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;4908&amp;quot; par=&amp;quot;val&amp;quot; val=&amp;quot;(a-ar)&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;4908&amp;quot; par=&amp;quot;index&amp;quot; val=&amp;quot;(a1+1)&amp;quot; if=&amp;quot;(!0)&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;4908&amp;quot; par=&amp;quot;index&amp;quot; val=&amp;quot;101&amp;quot; if=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;4908&amp;quot; par=&amp;quot;index&amp;quot; op=&amp;quot;&amp;amp;gt;&amp;quot; val=&amp;quot;201&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/st&amp;gt;&lt;br /&gt;
            &amp;lt;/obj&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Краткое описание алгоритма ===&lt;br /&gt;
1. Устанавливается начальное значение индекса index=101 (экспериментальное)&lt;br /&gt;
&lt;br /&gt;
2. Подсчитывается значение а= index*10000/(index+1)&lt;br /&gt;
&lt;br /&gt;
3. Отбрасывается целая часть а&lt;br /&gt;
&lt;br /&gt;
4. Запись результата во внутренню переменную val&lt;br /&gt;
&lt;br /&gt;
5. Если индекс стал больше 200- ставим его снова 101.&lt;br /&gt;
&lt;br /&gt;
=== Как пользоваться? ===&lt;br /&gt;
1. Переводим объект random_pseudo в состояние count&lt;br /&gt;
2. Считываем результат из переменной val&lt;br /&gt;
&lt;br /&gt;
=== Какие могут возникнуть проблемы? ===&lt;br /&gt;
Проблема, собственно, только одна - бедность данного генератора, т. к. он имеет всего 100 различных значений. Однако, для производства игр, такого количества вполне достаточно.&lt;br /&gt;
&lt;br /&gt;
=== Достоинства и недостатки ===&lt;br /&gt;
Достоинства: результат достигается обычным переводом в состояние, без применения итераций, благодаря этому, к данному генератору случайных чисел может иметь доступ неограниченное число объектов.&lt;br /&gt;
&lt;br /&gt;
Недостатки: (они уже описаны выше) малое количество выдаваемых значений, цикличность последовательности.&lt;br /&gt;
&lt;br /&gt;
== Guest ==&lt;br /&gt;
&lt;br /&gt;
'''Guest (гость)''' - объект, который перевел машину в текущее состояние. Пример: кнопка ''btn1'' по клику переводит машину ''mch1'' в состояние ''st1'', в этом состоянии у машины ''mch1'' гостем является кнопка ''btn1''. Гостем может быть объект любого типа, если он может менять состояние другому объекту (например: хидден-объект по нахождению может менять состояние объекту, кнопка, машина, пэчворк и т.д.)&lt;br /&gt;
&lt;br /&gt;
В машине состояний можно считывать (проверять) и передавать параметры и состояния гостя. Любое поле ''obj'' в выпадающем списке содержит строку ''guest'', что позволяет работать с гостем, как с любым другим объектом.&lt;br /&gt;
&lt;br /&gt;
=== Пример использования ===&lt;br /&gt;
&lt;br /&gt;
[[Файл:Guest1.jpg|left]]&lt;br /&gt;
Пускай экран содержит 3 кнопки (''btn1'', ''btn2'' и ''btn3'') и одну машину ''mch1''. Нужно сделать так, чтобы по клику на любую из кнопок машина перемещалась в ее координаты и переводила кнопку в состояние ''disable''. Так же по клику на кнопку ''btn2'', машина должна перейти в состояние ''bonus''.&amp;lt;br&amp;gt;&lt;br /&gt;
Всем трем кнопкам по клику пропишем передавать объекту ''mch1'' состояние ''check''.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Создадим в машине три состояния: ''init'' - состояние в котором машина будет находиться по умолчанию, ''check'' - состояние, которое будет вызываться тремя кнопками, в этом состоянии у машины ''mch1'' одна из трех кнопок будет гостем, ''bonus'' - последнее состояние.&amp;lt;br&amp;gt;&lt;br /&gt;
Две команды ''var'' считывают у гостя координаты, т.к. мы не знаем, какая именно кнопка перевела машину ''mch1'' в состояние ''check'', то обращаемся к гостю, а не к кнопкам. За ними следует две команды ''set'', которые передают координаты гостя машине. Еще один ''set'' переводит гостя в состояние ''disable''. И через ''wait'' осуществляется переход в состояние ''bonus'', если гость ''btn2''.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
При смене состояния гость сохраняется, т.е. в состоянии bonus гостем останется btn2.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Если машина изначально сама себе меняет состояния, то у нее нет гостя.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Файл:Guest2.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Массив (Array) ==&lt;br /&gt;
&lt;br /&gt;
В данном объекте реализован массив, имеющий максимальную длинну в 20 элементов.&lt;br /&gt;
&lt;br /&gt;
=== Свойства объекта массив: ===&lt;br /&gt;
&lt;br /&gt;
len - длинна массива. Длинна массива может как считываться, так и записываться. Влияет на количество сохраняемых объектов в Options.&lt;br /&gt;
&lt;br /&gt;
index1 - индекс элемента. (данный массив можно расширить до многомерного и использовать несколько индексов)&lt;br /&gt;
&lt;br /&gt;
val - значение элемента массива, с индексом index1&lt;br /&gt;
&lt;br /&gt;
a1..a20 - внутренние элементы массива(обращаться можно через свойство par объекта). Предполагается, что пользователь редактора к ним обращаться напрямую не будет, однако иногда для удобства полезны.&lt;br /&gt;
&lt;br /&gt;
=== Состояния объекта массив: ===&lt;br /&gt;
&lt;br /&gt;
get - при вызове этого состояния во внутреннюю переменную val записывается значение элемента с индексом index1&lt;br /&gt;
&lt;br /&gt;
set - при вызове этого состояния во внутреннюю переменную a1..a20, соответствующую индексу index1 записывается значение val&lt;br /&gt;
&lt;br /&gt;
load - загрузить значения массива из xml.&lt;br /&gt;
&lt;br /&gt;
save - сохранить элементы массива от 1 до len&lt;br /&gt;
&lt;br /&gt;
=== Как использовать? ===&lt;br /&gt;
&lt;br /&gt;
1. Загружаем массив, переводя объект array в состояние load&lt;br /&gt;
&lt;br /&gt;
2. Записываем значения массива&lt;br /&gt;
&lt;br /&gt;
 а). Задаём значение свойству index1 объекта array (устанавливаем индекс ячейки, в которую будет заноситься число)&lt;br /&gt;
 б). Задаём значение свойству val объекта array (устанавливаем значение, которое будет заноситься в ячейку с индексом index1)&lt;br /&gt;
 в). Переводим объект array в состояние set&lt;br /&gt;
&lt;br /&gt;
3. Считываем значения массива&lt;br /&gt;
 а). Задаём значение свойству index1 объекта array (устанавливаем индекс ячейки, из которой будет считываться число)&lt;br /&gt;
 б). Переводим объект array в состояние get&lt;br /&gt;
 в). Считываем значение из свойства val объекта array&lt;br /&gt;
&lt;br /&gt;
4. Сохраняем массив, переводя объект array в состояние save. Если хотите изменить количество сохраняемых эелментов - предварительно измените параметр len.&lt;br /&gt;
&lt;br /&gt;
=== Копирование объекта ===&lt;br /&gt;
&lt;br /&gt;
При копировании, необходимо заменить в состояниях load и save array.имя_параметра на другое имя. Например, array2.имя_параметра. Копировать следует через использование доп. сцены (см. выше)&lt;br /&gt;
&lt;br /&gt;
=== Достоинства ===&lt;br /&gt;
&lt;br /&gt;
Позволяет избежать необходимости каждый раз создавать большое количество if-ов и set-ов, если необходимо работать с нумерованным списком. Можно один раз создать структуру и копировать её неограниченное количество раз&lt;br /&gt;
&lt;br /&gt;
=== Недостатки ===&lt;br /&gt;
&lt;br /&gt;
Данный объект содержит довольно большое количество кода, поэтому при большом их обилии/длинне может занизить скорость работы сцены и скорость загрузки сцены.&lt;br /&gt;
&lt;br /&gt;
=== Исходный XML код===&lt;br /&gt;
Прим. id=&amp;quot;369&amp;quot; - идентификатор объекта Options, сохраняющего все переменные приложения. id=&amp;quot;7845&amp;quot; - идентификатор объекта&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;obj id=&amp;quot;7845&amp;quot; type=&amp;quot;machine&amp;quot; nm=&amp;quot;array&amp;quot; sync=&amp;quot;1&amp;quot; w=&amp;quot;1&amp;quot; h=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;st id=&amp;quot;init&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;st id=&amp;quot;get&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a1&amp;quot; obj=&amp;quot;7845&amp;quot; par=&amp;quot;a1&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a2&amp;quot; obj=&amp;quot;7845&amp;quot; par=&amp;quot;a2&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a3&amp;quot; obj=&amp;quot;7845&amp;quot; par=&amp;quot;a3&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a4&amp;quot; obj=&amp;quot;7845&amp;quot; par=&amp;quot;a4&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a5&amp;quot; obj=&amp;quot;7845&amp;quot; par=&amp;quot;a5&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a6&amp;quot; obj=&amp;quot;7845&amp;quot; par=&amp;quot;a6&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a7&amp;quot; obj=&amp;quot;7845&amp;quot; par=&amp;quot;a7&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a8&amp;quot; obj=&amp;quot;7845&amp;quot; par=&amp;quot;a8&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a9&amp;quot; obj=&amp;quot;7845&amp;quot; par=&amp;quot;a9&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a10&amp;quot; obj=&amp;quot;7845&amp;quot; par=&amp;quot;a10&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a11&amp;quot; obj=&amp;quot;7845&amp;quot; par=&amp;quot;a11&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a12&amp;quot; obj=&amp;quot;7845&amp;quot; par=&amp;quot;a12&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a13&amp;quot; obj=&amp;quot;7845&amp;quot; par=&amp;quot;a13&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a14&amp;quot; obj=&amp;quot;7845&amp;quot; par=&amp;quot;a14&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a15&amp;quot; obj=&amp;quot;7845&amp;quot; par=&amp;quot;a15&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a16&amp;quot; obj=&amp;quot;7845&amp;quot; par=&amp;quot;a16&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a17&amp;quot; obj=&amp;quot;7845&amp;quot; par=&amp;quot;a17&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a18&amp;quot; obj=&amp;quot;7845&amp;quot; par=&amp;quot;a18&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a19&amp;quot; obj=&amp;quot;7845&amp;quot; par=&amp;quot;a19&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a20&amp;quot; obj=&amp;quot;7845&amp;quot; par=&amp;quot;a20&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;val&amp;quot; val=&amp;quot;(a1)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;val&amp;quot; val=&amp;quot;(a2)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;val&amp;quot; val=&amp;quot;(a3)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;val&amp;quot; val=&amp;quot;(a4)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;3&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;val&amp;quot; val=&amp;quot;(a5)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;4&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;val&amp;quot; val=&amp;quot;(a6)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;5&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;val&amp;quot; val=&amp;quot;(a7)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;6&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;val&amp;quot; val=&amp;quot;(a8)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;7&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;val&amp;quot; val=&amp;quot;(a9)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;8&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;val&amp;quot; val=&amp;quot;(a10)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;9&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;val&amp;quot; val=&amp;quot;(a11)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;10&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;val&amp;quot; val=&amp;quot;(a12)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;11&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;val&amp;quot; val=&amp;quot;(a13)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;12&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;val&amp;quot; val=&amp;quot;(a14)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;13&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;val&amp;quot; val=&amp;quot;(a15)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;14&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;val&amp;quot; val=&amp;quot;(a16)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;15&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;val&amp;quot; val=&amp;quot;(a17)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;16&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;val&amp;quot; val=&amp;quot;(a18)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;17&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;val&amp;quot; val=&amp;quot;(a19)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;18&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;val&amp;quot; val=&amp;quot;(a20)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;19&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;index1&amp;quot; val=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;index1&amp;quot; val=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;index1&amp;quot; val=&amp;quot;3&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;index1&amp;quot; val=&amp;quot;4&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;index1&amp;quot; val=&amp;quot;5&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;index1&amp;quot; val=&amp;quot;6&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;index1&amp;quot; val=&amp;quot;7&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;index1&amp;quot; val=&amp;quot;8&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;index1&amp;quot; val=&amp;quot;9&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;index1&amp;quot; val=&amp;quot;10&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;index1&amp;quot; val=&amp;quot;11&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;index1&amp;quot; val=&amp;quot;12&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;index1&amp;quot; val=&amp;quot;13&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;index1&amp;quot; val=&amp;quot;14&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;index1&amp;quot; val=&amp;quot;15&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;index1&amp;quot; val=&amp;quot;16&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;index1&amp;quot; val=&amp;quot;17&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;index1&amp;quot; val=&amp;quot;18&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;index1&amp;quot; val=&amp;quot;19&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;index1&amp;quot; val=&amp;quot;20&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/st&amp;gt;&lt;br /&gt;
                &amp;lt;st id=&amp;quot;set&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;val&amp;quot; obj=&amp;quot;7845&amp;quot; par=&amp;quot;val&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;a1&amp;quot; val=&amp;quot;(val)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;a2&amp;quot; val=&amp;quot;(val)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;a3&amp;quot; val=&amp;quot;(val)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;a4&amp;quot; val=&amp;quot;(val)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;3&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;a5&amp;quot; val=&amp;quot;(val)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;4&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;a6&amp;quot; val=&amp;quot;(val)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;5&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;a7&amp;quot; val=&amp;quot;(val)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;6&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;a8&amp;quot; val=&amp;quot;(val)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;7&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;a9&amp;quot; val=&amp;quot;(val)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;8&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;a10&amp;quot; val=&amp;quot;(val)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;9&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;a11&amp;quot; val=&amp;quot;(val)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;10&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;a12&amp;quot; val=&amp;quot;(val)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;11&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;a13&amp;quot; val=&amp;quot;(val)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;12&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;a14&amp;quot; val=&amp;quot;(val)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;13&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;a15&amp;quot; val=&amp;quot;(val)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;14&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;a16&amp;quot; val=&amp;quot;(val)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;15&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;a17&amp;quot; val=&amp;quot;(val)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;16&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;a18&amp;quot; val=&amp;quot;(val)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;17&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;a19&amp;quot; val=&amp;quot;(val)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;18&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;a20&amp;quot; val=&amp;quot;(val)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;19&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;index1&amp;quot; val=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;index1&amp;quot; val=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;index1&amp;quot; val=&amp;quot;3&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;index1&amp;quot; val=&amp;quot;4&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;index1&amp;quot; val=&amp;quot;5&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;index1&amp;quot; val=&amp;quot;6&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;index1&amp;quot; val=&amp;quot;7&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;index1&amp;quot; val=&amp;quot;8&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;index1&amp;quot; val=&amp;quot;9&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;index1&amp;quot; val=&amp;quot;10&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;index1&amp;quot; val=&amp;quot;11&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;index1&amp;quot; val=&amp;quot;12&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;index1&amp;quot; val=&amp;quot;13&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;index1&amp;quot; val=&amp;quot;14&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;index1&amp;quot; val=&amp;quot;15&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;index1&amp;quot; val=&amp;quot;16&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;index1&amp;quot; val=&amp;quot;17&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;index1&amp;quot; val=&amp;quot;18&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;index1&amp;quot; val=&amp;quot;19&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;index1&amp;quot; val=&amp;quot;20&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/st&amp;gt;&lt;br /&gt;
                &amp;lt;st id=&amp;quot;load&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a1&amp;quot; obj=&amp;quot;369&amp;quot; par=&amp;quot;array.a1&amp;quot; user=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a2&amp;quot; obj=&amp;quot;369&amp;quot; par=&amp;quot;array.a2&amp;quot; user=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a3&amp;quot; obj=&amp;quot;369&amp;quot; par=&amp;quot;array.a3&amp;quot; user=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a4&amp;quot; obj=&amp;quot;369&amp;quot; par=&amp;quot;array.a4&amp;quot; user=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a5&amp;quot; obj=&amp;quot;369&amp;quot; par=&amp;quot;array.a5&amp;quot; user=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a6&amp;quot; obj=&amp;quot;369&amp;quot; par=&amp;quot;array.a6&amp;quot; user=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a7&amp;quot; obj=&amp;quot;369&amp;quot; par=&amp;quot;array.a7&amp;quot; user=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a8&amp;quot; obj=&amp;quot;369&amp;quot; par=&amp;quot;array.a8&amp;quot; user=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a9&amp;quot; obj=&amp;quot;369&amp;quot; par=&amp;quot;array.a9&amp;quot; user=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a10&amp;quot; obj=&amp;quot;369&amp;quot; par=&amp;quot;array.a10&amp;quot; user=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a11&amp;quot; obj=&amp;quot;369&amp;quot; par=&amp;quot;array.a11&amp;quot; user=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a12&amp;quot; obj=&amp;quot;369&amp;quot; par=&amp;quot;array.a12&amp;quot; user=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a13&amp;quot; obj=&amp;quot;369&amp;quot; par=&amp;quot;array.a13&amp;quot; user=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a14&amp;quot; obj=&amp;quot;369&amp;quot; par=&amp;quot;array.a14&amp;quot; user=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a15&amp;quot; obj=&amp;quot;369&amp;quot; par=&amp;quot;array.a15&amp;quot; user=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a16&amp;quot; obj=&amp;quot;369&amp;quot; par=&amp;quot;array.a16&amp;quot; user=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a17&amp;quot; obj=&amp;quot;369&amp;quot; par=&amp;quot;array.a17&amp;quot; user=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a18&amp;quot; obj=&amp;quot;369&amp;quot; par=&amp;quot;array.a18&amp;quot; user=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a19&amp;quot; obj=&amp;quot;369&amp;quot; par=&amp;quot;array.a19&amp;quot; user=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a20&amp;quot; obj=&amp;quot;369&amp;quot; par=&amp;quot;array.a20&amp;quot; user=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;a1&amp;quot; val=&amp;quot;(a1)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;a2&amp;quot; val=&amp;quot;(a2)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;a3&amp;quot; val=&amp;quot;(a3)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;a4&amp;quot; val=&amp;quot;(a4)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;3&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;a5&amp;quot; val=&amp;quot;(a5)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;4&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;a6&amp;quot; val=&amp;quot;(a6)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;5&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;a7&amp;quot; val=&amp;quot;(a7)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;6&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;a8&amp;quot; val=&amp;quot;(a8)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;7&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;a9&amp;quot; val=&amp;quot;(a9)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;8&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;a10&amp;quot; val=&amp;quot;(a10)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;9&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;a11&amp;quot; val=&amp;quot;(a11)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;10&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;a12&amp;quot; val=&amp;quot;(a12)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;11&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;a13&amp;quot; val=&amp;quot;(a13)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;12&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;a14&amp;quot; val=&amp;quot;(a14)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;13&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;a15&amp;quot; val=&amp;quot;(a15)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;14&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;a16&amp;quot; val=&amp;quot;(a16)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;15&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;a17&amp;quot; val=&amp;quot;(a17)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;16&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;a18&amp;quot; val=&amp;quot;(a18)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;17&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;a19&amp;quot; val=&amp;quot;(a19)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;18&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;7845&amp;quot; par=&amp;quot;a20&amp;quot; val=&amp;quot;(a20)&amp;quot; round=&amp;quot;1&amp;quot; if=&amp;quot;19&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;len&amp;quot; op=&amp;quot;&amp;amp;gt;&amp;quot; val=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;len&amp;quot; op=&amp;quot;&amp;amp;gt;&amp;quot; val=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;len&amp;quot; op=&amp;quot;&amp;amp;gt;&amp;quot; val=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;len&amp;quot; op=&amp;quot;&amp;amp;gt;&amp;quot; val=&amp;quot;3&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;len&amp;quot; op=&amp;quot;&amp;amp;gt;&amp;quot; val=&amp;quot;4&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;len&amp;quot; op=&amp;quot;&amp;amp;gt;&amp;quot; val=&amp;quot;5&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;len&amp;quot; op=&amp;quot;&amp;amp;gt;&amp;quot; val=&amp;quot;6&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;len&amp;quot; op=&amp;quot;&amp;amp;gt;&amp;quot; val=&amp;quot;7&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;len&amp;quot; op=&amp;quot;&amp;amp;gt;&amp;quot; val=&amp;quot;8&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;len&amp;quot; op=&amp;quot;&amp;amp;gt;&amp;quot; val=&amp;quot;9&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;len&amp;quot; op=&amp;quot;&amp;amp;gt;&amp;quot; val=&amp;quot;10&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;len&amp;quot; op=&amp;quot;&amp;amp;gt;&amp;quot; val=&amp;quot;11&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;len&amp;quot; op=&amp;quot;&amp;amp;gt;&amp;quot; val=&amp;quot;12&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;len&amp;quot; op=&amp;quot;&amp;amp;gt;&amp;quot; val=&amp;quot;13&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;len&amp;quot; op=&amp;quot;&amp;amp;gt;&amp;quot; val=&amp;quot;14&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;len&amp;quot; op=&amp;quot;&amp;amp;gt;&amp;quot; val=&amp;quot;15&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;len&amp;quot; op=&amp;quot;&amp;amp;gt;&amp;quot; val=&amp;quot;16&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;len&amp;quot; op=&amp;quot;&amp;amp;gt;&amp;quot; val=&amp;quot;17&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;len&amp;quot; op=&amp;quot;&amp;amp;gt;&amp;quot; val=&amp;quot;18&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;len&amp;quot; op=&amp;quot;&amp;amp;gt;&amp;quot; val=&amp;quot;19&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/st&amp;gt;&lt;br /&gt;
                &amp;lt;st id=&amp;quot;save&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;len&amp;quot; obj=&amp;quot;7845&amp;quot; par=&amp;quot;len&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a1&amp;quot; obj=&amp;quot;7845&amp;quot; par=&amp;quot;a1&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a2&amp;quot; obj=&amp;quot;7845&amp;quot; par=&amp;quot;a2&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a3&amp;quot; obj=&amp;quot;7845&amp;quot; par=&amp;quot;a3&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a4&amp;quot; obj=&amp;quot;7845&amp;quot; par=&amp;quot;a4&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a5&amp;quot; obj=&amp;quot;7845&amp;quot; par=&amp;quot;a5&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a6&amp;quot; obj=&amp;quot;7845&amp;quot; par=&amp;quot;a6&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a7&amp;quot; obj=&amp;quot;7845&amp;quot; par=&amp;quot;a7&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a8&amp;quot; obj=&amp;quot;7845&amp;quot; par=&amp;quot;a8&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a9&amp;quot; obj=&amp;quot;7845&amp;quot; par=&amp;quot;a9&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a10&amp;quot; obj=&amp;quot;7845&amp;quot; par=&amp;quot;a10&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a11&amp;quot; obj=&amp;quot;7845&amp;quot; par=&amp;quot;a11&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a12&amp;quot; obj=&amp;quot;7845&amp;quot; par=&amp;quot;a12&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a13&amp;quot; obj=&amp;quot;7845&amp;quot; par=&amp;quot;a13&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a14&amp;quot; obj=&amp;quot;7845&amp;quot; par=&amp;quot;a14&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a15&amp;quot; obj=&amp;quot;7845&amp;quot; par=&amp;quot;a15&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a16&amp;quot; obj=&amp;quot;7845&amp;quot; par=&amp;quot;a16&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a17&amp;quot; obj=&amp;quot;7845&amp;quot; par=&amp;quot;a17&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a18&amp;quot; obj=&amp;quot;7845&amp;quot; par=&amp;quot;a18&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a19&amp;quot; obj=&amp;quot;7845&amp;quot; par=&amp;quot;a19&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;var nm=&amp;quot;a20&amp;quot; obj=&amp;quot;7845&amp;quot; par=&amp;quot;a20&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;369&amp;quot; par=&amp;quot;array.a1&amp;quot; val=&amp;quot;(a1)&amp;quot; round=&amp;quot;1&amp;quot; user=&amp;quot;1&amp;quot; if=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;369&amp;quot; par=&amp;quot;array.a2&amp;quot; val=&amp;quot;(a2)&amp;quot; round=&amp;quot;1&amp;quot; user=&amp;quot;1&amp;quot; if=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;369&amp;quot; par=&amp;quot;array.a3&amp;quot; val=&amp;quot;(a3)&amp;quot; round=&amp;quot;1&amp;quot; user=&amp;quot;1&amp;quot; if=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;369&amp;quot; par=&amp;quot;array.a4&amp;quot; val=&amp;quot;(a4)&amp;quot; round=&amp;quot;1&amp;quot; user=&amp;quot;1&amp;quot; if=&amp;quot;3&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;369&amp;quot; par=&amp;quot;array.a5&amp;quot; val=&amp;quot;(a5)&amp;quot; round=&amp;quot;1&amp;quot; user=&amp;quot;1&amp;quot; if=&amp;quot;4&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;369&amp;quot; par=&amp;quot;array.a6&amp;quot; val=&amp;quot;(a6)&amp;quot; round=&amp;quot;1&amp;quot; user=&amp;quot;1&amp;quot; if=&amp;quot;5&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;369&amp;quot; par=&amp;quot;array.a7&amp;quot; val=&amp;quot;(a7)&amp;quot; round=&amp;quot;1&amp;quot; user=&amp;quot;1&amp;quot; if=&amp;quot;6&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;369&amp;quot; par=&amp;quot;array.a8&amp;quot; val=&amp;quot;(a8)&amp;quot; round=&amp;quot;1&amp;quot; user=&amp;quot;1&amp;quot; if=&amp;quot;7&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;369&amp;quot; par=&amp;quot;array.a9&amp;quot; val=&amp;quot;(a9)&amp;quot; round=&amp;quot;1&amp;quot; user=&amp;quot;1&amp;quot; if=&amp;quot;8&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;369&amp;quot; par=&amp;quot;array.a10&amp;quot; val=&amp;quot;(a10)&amp;quot; round=&amp;quot;1&amp;quot; user=&amp;quot;1&amp;quot; if=&amp;quot;9&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;369&amp;quot; par=&amp;quot;array.a11&amp;quot; val=&amp;quot;(a11)&amp;quot; round=&amp;quot;1&amp;quot; user=&amp;quot;1&amp;quot; if=&amp;quot;10&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;369&amp;quot; par=&amp;quot;array.a12&amp;quot; val=&amp;quot;(a12)&amp;quot; round=&amp;quot;1&amp;quot; user=&amp;quot;1&amp;quot; if=&amp;quot;11&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;369&amp;quot; par=&amp;quot;array.a13&amp;quot; val=&amp;quot;(a13)&amp;quot; round=&amp;quot;1&amp;quot; user=&amp;quot;1&amp;quot; if=&amp;quot;12&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;369&amp;quot; par=&amp;quot;array.a14&amp;quot; val=&amp;quot;(a14)&amp;quot; round=&amp;quot;1&amp;quot; user=&amp;quot;1&amp;quot; if=&amp;quot;13&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;369&amp;quot; par=&amp;quot;array.a15&amp;quot; val=&amp;quot;(a15)&amp;quot; round=&amp;quot;1&amp;quot; user=&amp;quot;1&amp;quot; if=&amp;quot;14&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;369&amp;quot; par=&amp;quot;array.a16&amp;quot; val=&amp;quot;(a16)&amp;quot; round=&amp;quot;1&amp;quot; user=&amp;quot;1&amp;quot; if=&amp;quot;15&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;369&amp;quot; par=&amp;quot;array.a17&amp;quot; val=&amp;quot;(a17)&amp;quot; round=&amp;quot;1&amp;quot; user=&amp;quot;1&amp;quot; if=&amp;quot;16&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;369&amp;quot; par=&amp;quot;array.a18&amp;quot; val=&amp;quot;(a18)&amp;quot; round=&amp;quot;1&amp;quot; user=&amp;quot;1&amp;quot; if=&amp;quot;17&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;369&amp;quot; par=&amp;quot;array.a19&amp;quot; val=&amp;quot;(a19)&amp;quot; round=&amp;quot;1&amp;quot; user=&amp;quot;1&amp;quot; if=&amp;quot;18&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;369&amp;quot; par=&amp;quot;array.a20&amp;quot; val=&amp;quot;(a20)&amp;quot; round=&amp;quot;1&amp;quot; user=&amp;quot;1&amp;quot; if=&amp;quot;19&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;set obj=&amp;quot;369&amp;quot; par=&amp;quot;array.len&amp;quot; val=&amp;quot;(len)&amp;quot; round=&amp;quot;1&amp;quot; user=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;len&amp;quot; op=&amp;quot;&amp;amp;gt;&amp;quot; val=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;len&amp;quot; op=&amp;quot;&amp;amp;gt;&amp;quot; val=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;len&amp;quot; op=&amp;quot;&amp;amp;gt;&amp;quot; val=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;len&amp;quot; op=&amp;quot;&amp;amp;gt;&amp;quot; val=&amp;quot;3&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;len&amp;quot; op=&amp;quot;&amp;amp;gt;&amp;quot; val=&amp;quot;4&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;len&amp;quot; op=&amp;quot;&amp;amp;gt;&amp;quot; val=&amp;quot;5&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;len&amp;quot; op=&amp;quot;&amp;amp;gt;&amp;quot; val=&amp;quot;6&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;len&amp;quot; op=&amp;quot;&amp;amp;gt;&amp;quot; val=&amp;quot;7&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;len&amp;quot; op=&amp;quot;&amp;amp;gt;&amp;quot; val=&amp;quot;8&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;len&amp;quot; op=&amp;quot;&amp;amp;gt;&amp;quot; val=&amp;quot;9&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;len&amp;quot; op=&amp;quot;&amp;amp;gt;&amp;quot; val=&amp;quot;10&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;len&amp;quot; op=&amp;quot;&amp;amp;gt;&amp;quot; val=&amp;quot;11&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;len&amp;quot; op=&amp;quot;&amp;amp;gt;&amp;quot; val=&amp;quot;12&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;len&amp;quot; op=&amp;quot;&amp;amp;gt;&amp;quot; val=&amp;quot;13&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;len&amp;quot; op=&amp;quot;&amp;amp;gt;&amp;quot; val=&amp;quot;14&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;len&amp;quot; op=&amp;quot;&amp;amp;gt;&amp;quot; val=&amp;quot;15&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;len&amp;quot; op=&amp;quot;&amp;amp;gt;&amp;quot; val=&amp;quot;16&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;len&amp;quot; op=&amp;quot;&amp;amp;gt;&amp;quot; val=&amp;quot;17&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;len&amp;quot; op=&amp;quot;&amp;amp;gt;&amp;quot; val=&amp;quot;18&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;if obj=&amp;quot;7845&amp;quot; par=&amp;quot;len&amp;quot; op=&amp;quot;&amp;amp;gt;&amp;quot; val=&amp;quot;19&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/st&amp;gt;&lt;br /&gt;
            &amp;lt;/obj&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Машина состояний объекта ===&lt;br /&gt;
[[Файл:array.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Пример использования==&lt;br /&gt;
&lt;br /&gt;
[http://fs5.absolutist.com/files/wikisample/machine.rar Download]&lt;/div&gt;</summary>
		<author><name>Podkor</name></author>
		
	</entry>
</feed>