<?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=Dopryshko</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=Dopryshko"/>
	<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/Dopryshko"/>
	<updated>2026-10-17T03:41:39Z</updated>
	<subtitle>Вклад участника</subtitle>
	<generator>MediaWiki 1.31.15</generator>
	<entry>
		<id>https://wiki.appsalutecreator.com/index.php?title=Text&amp;diff=10061</id>
		<title>Text</title>
		<link rel="alternate" type="text/html" href="https://wiki.appsalutecreator.com/index.php?title=Text&amp;diff=10061"/>
		<updated>2021-08-20T12:11:51Z</updated>

		<summary type="html">&lt;p&gt;Dopryshko: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Text''' - [[Object|объект]] для отображения текстовой информации с поддержкой многоязычности. Для управления текстовыми ресурсами используется [[TextEditor]]. &amp;lt;br&amp;gt;&lt;br /&gt;
== Введение ==&lt;br /&gt;
[[Файл:2223.png]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Если необходимо разместить текст на сцене необходимо создать объект с типом text и перетащить на поле текстID текстовую строку из TextEditor. Также можно просто перенести их TextEditor выбранную текстовую запись, при этом автоматически создастся объект с типом Text.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Обязательно в тексте ТекстовойБазы, после символа '|' должен стоять другой символ. Если делаем два переноса, это будет выглядеть: &amp;quot;текст| |тест&amp;quot;.'''&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;
*'''textCanBeOptionsKey''' - позволяет выключить проверку на ключ в опциях (Если в поле '''text''' указать &amp;quot;x&amp;quot; - то с включённым функционалом, текстовый объект покажет значение из опций параметра &amp;quot;x&amp;quot;; Если выключено - отобразит &amp;quot;x&amp;quot;);&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;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
*'''автоматическое уменьшение''' - Функция позволяет уменьшить размер шрифта, чтобы уместить текст внутри прямоугольника ( размеры текстового объекта).&lt;br /&gt;
*'''минимальный размер шрифта''' - Минимальный размер до которого уменьшит функция автоскейла.&lt;br /&gt;
*'''уменьшать до строк''' - Нужно для функционала автоматического уменьшения. Попытается строку преобразовать в n строк ( исп. для цен).&lt;br /&gt;
[[Файл:890a37f3ed.jpg|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;
*'''до появления символов''' ( '''tmBefore''' ) - Время до появления символов по alpha-каналу. Только для режима спрятанных символов; Пауза перед стартом анимации (по сути отсрочка сост. &amp;quot;start&amp;quot;);&lt;br /&gt;
           &lt;br /&gt;
'''Группа - Параметры поведения текста'''&lt;br /&gt;
&lt;br /&gt;
*'''автопромотка''' - Автоматический переход на следующую страницу после завершения отображения текста;&lt;br /&gt;
* '''зациклить''' - Зациклить страницы (после последней, перейти опять на первую);&lt;br /&gt;
*'''подсветка''' - Тип подсветки: 0-не подсвечивать, 1-по слову; 2-по букве слова (караоке); 3-по букве с начала страницы;&lt;br /&gt;
*'''звук''' - 1 - есть озвучка, 0 - нет;&lt;br /&gt;
*'''случайный выбор''' - 1 - при переключении страницы будет выбираться случайная, 0 - все страницы последовательно. Если выбрана 1 - в редакторе Texts Editor между страницами надо поставить знак #. &lt;br /&gt;
*'''прятать % символов''' ( ''' hidesymbols ''' ) - указанный процент символов которые будут спрятаны;&lt;br /&gt;
 Тонкости исп. ''' hidesymbols ''':&lt;br /&gt;
    при сост. &amp;quot;init&amp;quot; - буквы будут выставленны моментально&lt;br /&gt;
    при изменение параметра и передаче сост. &amp;quot;start&amp;quot; - буквы будут проявляться за время &amp;quot;проявления одного символа&amp;quot; (&amp;quot;tmAppear&amp;quot;); &lt;br /&gt;
    Добавленные буквы после сост. &amp;quot;start&amp;quot; записываются в текстовом объекте в поле &amp;quot;appearingChars&amp;quot; с разделителем &amp;quot;|&amp;quot; ;&lt;br /&gt;
    П.С. текстовый объект сохраняет маску спрятанных букв в опции ( до тех пор, пока не меняется количество символов - т.е. поменяв txtID или локализацию - маска перегенерируется); &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&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;
*'''beg''' - по прохождению времени из поля время-&amp;gt;до открытия переходит в состояние ''open'';&lt;br /&gt;
*'''start''' - форматирует текст, после чего переходит в состояние ''beg'';&lt;br /&gt;
*'''open''' - проявляет текст по альфе за время, указанное в поле время-&amp;gt;открытия и переходит в состояние ''first'';&lt;br /&gt;
*'''run''' - выводит текст из поля txt/txtID по правилам из группы &amp;quot;Подсветка&amp;quot;;&lt;br /&gt;
*'''pause''' - остановка вывода текста в обьект на подсвеченом слове;&lt;br /&gt;
*'''wait''' - показ последней напечатанной страницы, ожидание следующей команды;&lt;br /&gt;
*'''first''' - запустить показ первой страницы текста (страницы отделяются в текстовом ID символами #) в соответствии с правилами подсветки;&lt;br /&gt;
*'''last''' - запустить показ последней страницы текста (страницы отделяются в текстовом ID символами #) в соответствии с правилами подсветки;&lt;br /&gt;
*'''next''' - запустить показ следующей страницы текста в соответствии с правилами подсветки (если текущая страница - последняя, то в этом состоянии ничего не произойдет);&lt;br /&gt;
*'''prev''' - запустить показ предыдущей страницы текста в соответствии с правилами подсветки (если текущая страница - первая, то в этом состоянии ничего не произойдет);&lt;br /&gt;
*'''close''' - плавно растворяет текст по альфе в течении времени, указанном в поле время-&amp;gt;закрытия, после чего переходит в состояние ''end'';&lt;br /&gt;
*'''cross''' - зачеркнуть текст;&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;
*'''textWidth''' - ширина текущего текста в текстовом объекте в px (с учетом параметров форматирования текстового объекта).&lt;br /&gt;
*'''textHeight''' - высота текущего текста в текстовом объекте в px.&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;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Картинка в тексте ===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
:Иконка будет вставлена в текст, если будет символы - $id167$al0.5$dx5. &lt;br /&gt;
&lt;br /&gt;
:Расшифровка: &lt;br /&gt;
::$ - карявка для определения, что впереди что-то есть&lt;br /&gt;
::id167 - указываем отрисовать картинку с id==167 ( картинка должна присутствовать на этом экране, иначе не покажется; Если картинки нету в ресурсной базе - будет выполнено два пробела);&lt;br /&gt;
::$al0.5 - указываем альфу картинки;&lt;br /&gt;
::$dx5 - указываем что картинку смещаем на 5-ть пикселей вправо от точки вставки;&lt;br /&gt;
&lt;br /&gt;
:Примечание: &lt;br /&gt;
::1) Если не указываем $al0.5 или $dx5, то берём стандартное значение ( к примеру $id167 - означает картинка 167 с альфой==1 и без смещения (dx==0));&lt;br /&gt;
::2) al и dx могут могут быть в любом порядке. &lt;br /&gt;
::3) Записывать в текст спец. символы можно и через переменную;&lt;br /&gt;
::4) Текст по высоте будет смещён на половину высоты самой большой картинки в строке ( если половина высоты больше размера шрифта);&lt;br /&gt;
::5) иконка вставляемая в текст должна быть без лишней альфы ( при отступах учитывается ширина и высота картинки).&lt;br /&gt;
&lt;br /&gt;
:Пример:&lt;br /&gt;
&lt;br /&gt;
[[Файл:Viewer 2.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Viewer 3.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[Файл:Viewer.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;
:Текстовый объект, если встретит в тексте символы $c0xFF46FF26 ( обязательно пробел до символов и после), то последующий текст будет перекрашен в указанный цвет. &lt;br /&gt;
'''!!! Нельзя указывать вначале текстовой ячейки или сразу после #.'''&lt;br /&gt;
'''После перекрашивания не ставим пробел, должен быть символ  ( нельзя так : &amp;quot;текст $c0xFF46FF26 текст2&amp;quot;)'''&lt;br /&gt;
&lt;br /&gt;
:Расшифровка: &lt;br /&gt;
::$c0xFF46FF26&lt;br /&gt;
::$ - карявка для определения, что впереди что-то есть&lt;br /&gt;
::с - типа color &lt;br /&gt;
::0xFF46FF26 - код цвета 0xFF46FF26 ( 0x - обязательно ( указываем 16-тиричную систему исчисления), FF - альфа, 46 - число по Red каналу, FF - Green канал, 26 - Blue канал).&lt;br /&gt;
[[Файл:Select Color.jpg]]&lt;br /&gt;
&lt;br /&gt;
:Пример:&lt;br /&gt;
::Текст_1 $c0xFF46FF26 Текст_2&lt;br /&gt;
::Текст_1 - будет цветом указанным в текстовом объекте, а Текст_2 - будет зелёным.&lt;br /&gt;
[[Файл:Viewer 4.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Main objects]]&lt;/div&gt;</summary>
		<author><name>Dopryshko</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.appsalutecreator.com/index.php?title=Economics&amp;diff=10026</id>
		<title>Economics</title>
		<link rel="alternate" type="text/html" href="https://wiki.appsalutecreator.com/index.php?title=Economics&amp;diff=10026"/>
		<updated>2021-08-02T09:03:15Z</updated>

		<summary type="html">&lt;p&gt;Dopryshko: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Object|Объект]] '''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;
*'''disable''' - выключена ли экономика, если 1 - то экономика не реагирует на состояния и не сейвится в опции. Чтобы изменить параметр, меняем его и вызываем сост. &amp;quot;init&amp;quot;&lt;br /&gt;
*'''Сдвиг уровней''' ( ''levels_shift'' ) - число на которое сдвинется анлок уровней в economics setup; после задания параметра нужно проинитить экономику;&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;. (устанавливается, когда энергии становится меньше 30%). &lt;br /&gt;
*'''опции для facebook''' - поле в опциях, куда мы будем записывать 32 битное целое: Уровень + Коллекции.ESocial добавит к ним число друзей и засабмит при вызове соотв. состояние&lt;br /&gt;
*'''перегрузить очки из опций''' - если поле не пустое - будут взяты очки из поля опций текущего пользователя, указаного в этой строке.&lt;br /&gt;
*'''во временные отправлять''' - какие очки будут отправлены во временные лидерборды esocial'ом. При выборе '''кастомное заполнение''' будут отправлены очки из поля temporary_lb_score в опциях текущего пользователя (p0.temporary_lb_score например). Кастомные очки нужно добавлять вручную, по окончанию периода они будут обнулены автоматически.&lt;br /&gt;
*'''округление res1 и т.п. до кратных 5''' ( ''bonusroundup'' ) - нужно ли округлять бонусные монеты и опыт для локации до кратных 5.&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'' - состояние вызываемое окну перед локацией в случае нехватки энергии, ''open_need_item'' - состояние, вызываемое окну перед локацией в случае нехватки предмета, ''open_need_item_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;
*'''корневой объект''' - некая машина, олицетворяющая собой блок перехода в связанную локацию. Должно иметь состояния enable и disable.&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;
*'''бонусный ресурс 1''' - счетчик дополнительной награды res1, которая дается за амулеты.&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;
*'''призовой ресурс 1''' - счетчик, отображающий количество призовых денег.&lt;br /&gt;
*'''бонусный ресурс 1''' - счетчик дополнительной награды res1, которая дается за амулеты.&lt;br /&gt;
*'''призовой опыт''' - счетчик, отображающий количество призового опыта.&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;
*'''иконка''' - картинка отображающая иконку предмета-награды ( в параметр reward_text_id - запишется текстовый ID итогового предмета из текстовой базы);&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;
&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;
Кратко об артефактах. Артефакты это инвентарные предметы, которые можно найти либо купить. Они необходимы для того, чтобы была возможность играть в связанную локацию. Связанная локация - локация, которая имеет свой уникальный порядковый номер в списке локаций, но тем не менее логически привязана к локации с другим порядковым номером. Когда все артефакты, необходимые для игры в связанную локацию собраны, то при вызове состояния ''location'' объекту economics локация выбирается случайным образом между оригинальной и связанной. При этом есть возможность сменить локацию (ротация между оригинальной и связанной локацией) вызвав состояние ''location_switch''. Чтобы сменить локацию нужен предмет, который перетаскивается в поле &amp;quot;предмет переключения&amp;quot; настроек локации.&lt;br /&gt;
&lt;br /&gt;
*'''окно''' - Некая машина, олицетворяющая собой само окошко покупки. Должна иметь состояние show&lt;br /&gt;
*'''таблица''' - Таблица должна иметь две строки и заполнение по столбцам. В верхнюю попадут иконки артефактов, в нижнюю - кнопки купить&lt;br /&gt;
*'''кнопка 1''' - Купить артефакт. Должна в param2 - номер артефекта и вызывать состояние экономике buy_artefact&lt;br /&gt;
*'''кнопка 2''' - Купить артефакт. Должна в param2 - номер артефекта и вызывать состояние экономике buy_artefact&lt;br /&gt;
*'''кнопка 3''' - Купить артефакт. Должна в param2 - номер артефекта и вызывать состояние экономике buy_artefact&lt;br /&gt;
*'''кнопка 4''' - Купить артефакт. Должна в param2 - номер артефекта и вызывать состояние экономике buy_artefact&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;
При вызове объекту economics состояния ''buy_random_col'' покупается случайный коллекционный предмет. Визуализацией покупки служит выпадающий на сцену объект из вкладки настроек &amp;quot;Летающий объект&amp;quot;&lt;br /&gt;
&lt;br /&gt;
*'''res1''' - цена предмета в ресурсе 1.&lt;br /&gt;
*'''исключения''' - id предметов, которые не попадут в случайный выбор. Перетаскиваются из текстовой базы.&lt;br /&gt;
*'''каунтер''' - объект типа counter в который сложится цена предмета.&lt;br /&gt;
&lt;br /&gt;
=== Статус ===&lt;br /&gt;
Статус - дополнительный экономический параметр игрока, который зависит от внутриигровых действий. Статус определяется кол-вом статусных очков, которые начисляются за совершение in-app покупки и при достижении нового уровня (exp).&lt;br /&gt;
&lt;br /&gt;
Тесно связан с [[Wallet|Wallet]].&lt;br /&gt;
&lt;br /&gt;
*'''очки для повышения''' - массив чисел, указываем через запятую. Обозначает нужное кол-во очков статуса для перехода на следующий уровень. Пример: 0, 150, 3850. Изначальный уровень уже получен при инициализации экономики. Для перехода на следующий (2-й) нужно получить 150 очков. На 3-й - 3850 и т.д.&lt;br /&gt;
*'''множитель статуса при покупке''' - массив чисел, указываем через запятую. Обозначает коэф., на который домножим базовое значение статусных очков при покупке. Зависит от текущего статуса. Пример: 1,2,3. Базовое значение за покупку - 18 очков статуса. При совершении покупки, имея 1-й статус - получаем 18 очков. Имея второй статус - 36, третий - 54.&lt;br /&gt;
*'''множитель монет при покупке''' - Аналогично предыдущему пункту.&lt;br /&gt;
*'''прибавка за уровень''' - массив чисел, указываем через запятую. Показывает сколько статусных очков будет получено при достижении уровня exp, учитывая текущий статус.&lt;br /&gt;
*'''множитель дейли-бонуса''' - массив чисел, указываем через запятую. Множитель, который можно использовать при начислении ежедневного бонуса. Зависит только от текущего статуса.&lt;br /&gt;
&lt;br /&gt;
'''Поля в опциях'''&lt;br /&gt;
* ecomics%d.stlev - текущий уровень статуса (начиная с 0!)&lt;br /&gt;
* ecomics%d.stpoints - поинты внутри текущего уровня&lt;br /&gt;
* comics%d.stdaily - множитель для дейли бонуса&lt;br /&gt;
* ecomics%d.stmult - множитель для монеток&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;
&lt;br /&gt;
=== Настройки равномерной экономики ===&lt;br /&gt;
&lt;br /&gt;
Нужно в случае, если мы хотим давать за локации и монстров одинаковую награду (опыт, затрата энергии, вне зависимости от настроек в economics_setup). Награда может отличаться только для монстров (если в economics_setup мы укажем монстру в поле награда опыт - 0, то экономика начислять опыт не будет).&lt;br /&gt;
&lt;br /&gt;
*'''локация энергия''' - стоимость энергии на игру хидн или монстр;&lt;br /&gt;
*'''локация опыт''' - награда за успешное прохождение локации/монстра ( при условии что для монстра в поле награды не стоит 0 );&lt;br /&gt;
*'''коллекция опыт min''' - минимальный опыт за успешную сдачу коллекции;&lt;br /&gt;
*'''коллекция опыт max''' - максимальный опыт за успешную сдачу коллекции;&lt;br /&gt;
*'''коллекция монеты min''' - минимальная награда  за успешную сдачу коллекции;&lt;br /&gt;
*'''коллекция монеты max''' - максимальная награда за успешную сдачу коллекции;&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;
&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;
*'''объект для музыки''' ('''musObj''') - объект которому в поле &amp;quot;location_music&amp;quot; будет записан id музыки из поля &amp;quot;музыка&amp;quot;, при запуске локации;&lt;br /&gt;
*'''музыка''' ('''musId''') - id музыки локации;&lt;br /&gt;
&lt;br /&gt;
В третей  колонке записываются уровни мастерства. Их можно переименовать. Добавляются кнопкой ''Добавить уровень мастерства''. Удаляются кнопкой ''Удалить уровень мастерства''. В четвертой колонке настраивается выделенный уровень мастерства.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Economics 3.jpg|right]]&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;
*'''время игры (блиц)''' - время игры с аномалией &amp;quot;блиц&amp;quot;.&lt;br /&gt;
*'''время игры (аном)''' - время игры с остальными аномалиями.&lt;br /&gt;
*'''режим игры''' - режим игры: 0 - случайный, 1- слова, 2 - силуэты, 3 - поиск отличий;&lt;br /&gt;
*'''использовать различия''' - да - будут генирироватся режим поиска отличий, нет - не будут; Для корректной работы, следующей за сценой с хидн предметами, должна находиться пустая сцена с такими же параметрами как и у сцены с хидн предметами. Также между двумя сценами ( хидн и fake-сценой) должна быть связь по тасканию;&lt;br /&gt;
*'''аномалия''' - вероятность возникновения аномалии в локациях.&lt;br /&gt;
*'''доступные аномалии''' - перечень доступных на данном уровне мастерства аномалий. Записываются в виде чисел через запятую. Доступные значения 0, 1, 2, 3, 4.&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;
Предметы будут доступны для выпадения с локации, пока активно поле в опциях.&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;
Во вкладке ''Коллекция'' используются только первые две колонки. В первой колонке отображаются добавленные коллекции. Добавляются кнопкой ''Добавить локацию''. Удаляются кнопкой ''Удалить локацию''. Коллекции можно переименовывать. Второй столбик содержит 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;
&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 - предмет после покупки не пропадает, если 3 - предмет покупается один раз, остальные разы только применяется&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''' - длительность действия в секундах. Если поставить &amp;quot;-1&amp;quot;, то действие предмета будет вечным, отображаться в таблице амулетов он не будет. Можно активировать сколько угодно раз. &amp;quot;-2&amp;quot; - действие предмета будет вечным, но активно не более одной копии.&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;
*'''dMaxEn''' - увеличение максимума энергии в %.&lt;br /&gt;
&lt;br /&gt;
*'''dBonus1''' - накопительный монетный бонус (в случае, если предмет дает ежедневный денежный прирост). Суммируется (от всех предметов имеющих это поле отличное от 0) и записывается в поле total_amulet_bonus1 экономикса. Автоматически не начисляется.&lt;br /&gt;
&lt;br /&gt;
*'''dBonus1''' - накопительный кристальный бонус (в случае, если предмет дает ежедневный денежный прирост). Суммируется (от всех предметов имеющих это поле отличное от 0) и записывается в поле total_amulet_bonus2 экономикса. Автоматически не начисляется.&lt;br /&gt;
&lt;br /&gt;
*'''dPurchase''' - к каждой покупке предмета добавляется еще столько таких же предметов. Актуально в тех случаях, когда приобретение предмета активирует акцию 1+1.&lt;br /&gt;
&lt;br /&gt;
*'''dIsomover''' - ускорение взаимодействия изомуверов в %. (Каждому изомуверу, на который должно распространяться действие, нужно включить флаг &amp;quot;использовать бонусы ко времени&amp;quot;). &lt;br /&gt;
&lt;br /&gt;
*'''область применения''' - область, в которой будет учитываться бонус от предмета (везде, локация, монстр). &lt;br /&gt;
&lt;br /&gt;
*'''KOfflineRep''' - пока действует предмет, меняем KOffline репутации (настраивается в свойствах экономики в группе репутации) на этот параметр. Область действия от -1 до 1. Поэтому дефолтное значение этого параметра &amp;quot;-2&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
*'''dHdnConst''' - Увеличение значения поля постоянный прирост в %&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;
&lt;br /&gt;
*'''обработчик конца действия''' - объект, обработчик конца действия амулета.&lt;br /&gt;
&lt;br /&gt;
*'''состояние обработчика''' - состояние обработчика конца действия амулета (объект из поля выше будет переведен в это состояние по окончанию действия амулета).&lt;br /&gt;
&lt;br /&gt;
*'''дарить с уровня''' - уровень с которого возможно дарить этот предмет&lt;br /&gt;
&lt;br /&gt;
*'''кнопка применить - поле в опциях''' ( '''btn_use_field''' ) - для применяемого предмета, указываем поле для проверки значения, если условие истинно - кнопка применить будет доступна; иначе - выключена (&amp;quot;disable&amp;quot;);&lt;br /&gt;
*'''кнопка применить - значение''' ( '''btn_use_val''' ) - значение для проверки условия, в поле '''кнопка применить - поле в опциях''';&lt;br /&gt;
*'''кнопка применить - НЕ''' ( '''btn_use_not''' ) - от результата сравнения взять обратное;&lt;br /&gt;
&lt;br /&gt;
====Создание предметов (крафт)====&lt;br /&gt;
&lt;br /&gt;
В третьей колонке можно добавлять ингридиенты из которых состоит предмет. Ингридиенты сами по себе являются также инвентарными предметами. В четвертой колонке указывается текстовый id ингридиента и необходимое количество данного ингридиента.&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;
*'''связанный баттл''' - поле в котором указывается связанный объект типа matchbattle.&lt;br /&gt;
*'''связанный матч''' - поле в котором указывается связанный матч.&lt;br /&gt;
*'''окно внутри монстра''' - объект, который покажем в экране с мини игрой в случае победы. Должен иметь состояния open - в случае обычной победы, open_win - если перешли на следующий уровень мастерства. Чтобы это окно перешло в одно из этих состояний передаем экономике состояние ''monster_win_wnd''.&lt;br /&gt;
*'''текст внутри монстра''' - текстовый объект, в который сложим поздравительный текст о переходе на следующий уровень мастерства.&lt;br /&gt;
*'''очищать statesmanager''' - 1 - при передаче экономике состояния monster_play для этого монстра все очереди statesmanager будут чиститься; 0 - не будут.&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;
*'''очки''' - количество очков, которое необходимо набрать для перехода на следующий уровень мастерства.&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;
*'''текст при разлочке уровня''' - текстовый id из которого возьмем поздравительный текст о разлочке нового уровня.&lt;br /&gt;
*'''жизни врага''' - записываются значения вражеских жизней.&lt;br /&gt;
*'''начальные жизни врага''' - начальное значение вражеских жизней.&lt;br /&gt;
*'''регенерация врага''' - время (в ms), за которое у противника отрастает жизнь. Если установлено -1, то отрастания жизни противника на происходит.&lt;br /&gt;
*'''число цветов''' - это число будет записываться в параметр numTokenNums матча.&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;
*'''ресурс 1 прирост''' - прирост ресурса1 за каждый уровень мастерства.&lt;br /&gt;
*'''опыт''' - начальное значение опыта, который мы получаем за прохождение.&lt;br /&gt;
*'''опыт прирост''' - прирост опыта за каждый уровень мастерства.&lt;br /&gt;
*'''нулевой штраф каждые n уровней''' - раз в столько уровней штраф за поражение будет нулевым (-1 - не использовать).&lt;br /&gt;
&lt;br /&gt;
Также есть возможность перегружать некоторые параметры уровней мастерства. Для этого нужно выбрать монстра и в выпадающем списке вверху выбрать пункт &amp;quot;перегрузка параметров&amp;quot;.Перегрузок может быть несколько. &lt;br /&gt;
&lt;br /&gt;
Для настройки перегрузки нужно выбрать ее в 3 колонке, при этом в 4 колонке отобразятся параметры перегрузки. &lt;br /&gt;
Сейчас перегрузку можно привязать к уровням XP игрока и к уровню монстра. Под уровнем монстра имеется ввиду уровень мастерства, отсчет начинается с 0. Перегружать можно энергию, затрачиваемую на монстра, награду (золото и опыт), а также инвентарные и коллекционные предметы.&lt;br /&gt;
&lt;br /&gt;
''Важно!'' Если поля инвентарных и коллекционных предметов оставить пустыми - то предметы выпадать не будут.&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 - то для достижения может использоваться любая аномалия. 0 - текстовая аномалия, 1 - ночь, 2 - трансформация цвета, 3 - дым.&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''' - передает состояние окончания исследования локации (необходим параметр номера локации), перед вызовом состояния, можно экономике заполнить поле '''additional_inv''' - перечнем инвентарных предметов которые хотим добавить пользователю ( поместить в таблицу + чтобы экономика поместила их в летающие объекты), через запятую (к примеру additional_inv=&amp;quot;12345,25841&amp;quot;) .&lt;br /&gt;
*'''exp''' - передает состояние начисления опыта (необходим параметр количества опыта). Нужен больше для тестирования, чем для самой игры.&lt;br /&gt;
*'''play''' - передает состояния перехода на локацию для исследования(при условии что хватит энергии и выполнены прочие условия).&lt;br /&gt;
*'''location''' - открывает окно перед локацией (необходим параметр номера локации).&lt;br /&gt;
*'''collection''' - заставляет экономикс заполнить таблицу коллекций. Лучше вызывать сразу перед открытием окна коллекций или во время его открытия. Для применения фильтрации коллекций перед вызовом состояния задать параметр ''collectionFilter'' (0 - все, 1 - все предметы, 2 - не хватает одного, 3 - новые). Для определения коллекции в категорию &amp;quot;новые&amp;quot; указать в настройках коллекции ''cnew'' (''новая'' - признак новизны для фильтра. &amp;gt;0 - новая).&lt;br /&gt;
*'''collections_scroll''' - заполняет таблицу коллекций и проматывает на коллекцию содержащую последний предмет для которого было показано окошко с информацией о предмете.&lt;br /&gt;
*'''collections_custom''' - перематывает таблицу к нужной коллекции. id коллекции записывается предварительно в param.&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;
*'''item_monster_preview''' - заставляет экономикс показать окошко с информацией о предмете, который можно найти при игре с монстром. Вызывается при тапе на таблицу с предметами в окне перед монстром.&lt;br /&gt;
*'''item_monster_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;
*'''energy_no_max''' - Добавить энергию перманентно - без ограничения перевала за максимум (значение в параметре).&lt;br /&gt;
*'''failed''' - текущая локация провалена (не дается опыта и прочих наград за прохождение локации). Требует параметра локации.&lt;br /&gt;
*'''item_effect''' -  показать окошко предмета от таймэффекта. В param - номер эффекта.&lt;br /&gt;
*'''item_effect_last''' - показать окошко предмета от последнего активированного таймэффекта. У машины окошка должно быть состояние &amp;quot;open_last&amp;quot;.&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''' - Текущая мини игра так или иначе пройдена, перед вызовом состояния, можно экономике заполнить поле '''additional_inv''' - перечнем инвентарных предметов которые хотим добавить пользователю ( поместить в таблицу + чтобы экономика поместила их в летающие объекты), через запятую (к примеру additional_inv=&amp;quot;12345,25841&amp;quot;) .&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;
*'''location_switch''' - переключить локацию на связанную (если есть предмет и собраны все артефакты, необходимые для перехода).&lt;br /&gt;
*''' anomaly_set_everywhere''' - генерация аномалии. Если в объекте Economics в параметре param указан номер аномалии, то состояние добавляет аномалию всем локациям, а если -1, то убирает аномалию из всех локаций.&lt;br /&gt;
*''' buy_artefact''' - осуществляет покупку артефакта для локации. Для этого у объекта economics в param должен быть записан номер локации, а в param2 номер артефакта (номер по порядку начиная с 0).&lt;br /&gt;
*'''show_artefacts''' - Показать таблицу покупки артефактов в param - номер локации&lt;br /&gt;
*'''location_buy_all_switchers''' - Купить все артефакты доступные для данной локации&lt;br /&gt;
*'''search_ingridient''' - переход в локацию для поиска ингредиента, который указан в param.&lt;br /&gt;
*'''search_needitem''' - поиск необходимого для исследования локации предмета из окна перед локацией. В param должен быть указан id необходимого предмета.&lt;br /&gt;
*'''copy''' - скопировать основные параметры (опыт, уровень, энергия) и количество предметов из одной экономики в другую. Перед вызовом указать в поле &amp;quot;param&amp;quot; id экономики куда перенесём значение. Если экономика в кот. копируем выключена по disable=&amp;quot;1&amp;quot; - нужно с начало установить  disable=&amp;quot;0&amp;quot;, вызвать сост. &amp;quot;init&amp;quot;, а уже после в неё копировать.&lt;br /&gt;
*'''set_was_visited_flag''' - установить флаг посещаемости локации (loc%n%.wv=&amp;quot;1&amp;quot;) для календаря. В param должен быть указан id необходимого предмета.&lt;br /&gt;
*'''clear_was_visited_flag''' - снять флаг посещаемости локации (loc%n%.wv=&amp;quot;0&amp;quot;) для календаря.В param должен быть указан id необходимого предмета.&lt;br /&gt;
*'''srand_hidden''' - перетряхнуть связанный с хидденом генератор псевдослучайных чисел. Можно вызывать перед локацией, если возникает зацикливание хидденов. '''''КАТЕГОРИЧЕСКИ НЕЛЬЗЯ вызывать его при честном мультиплеере - в нем все определяется сидом от сервера'''''&lt;br /&gt;
*'''download_pack''' - попросить экономику скачать пак для локации из поля param (используется при использовании динамических паков - конфигов, [https://docs.google.com/document/d/13UUOKf_iJNzFx0PjU4JQIfYDX7NhK7dyfJAR3I-SWlQ/edit детальнее]).&lt;br /&gt;
*'''temporary_unlock''' - открывает доступ в хидден-локацию на время. Применение - передать это состояние экономике и одновременно запустить глобалтаймер, который по окончанию действия закроет эту локацию.&lt;br /&gt;
*'''clear_temporary_unlock''' - закрывает доступ в хидден-локацию, если она была открыта временно.  &lt;br /&gt;
*'''search_task_only_open''' - вызываем из окна таска, откроет превью локации в которой можно найти требуемый предмет. Аналог search_task, но ищет только в открытых локациях;&lt;br /&gt;
*'''search_task_only_week''' - вызываем из окна таска, откроет превью локации в которой можно найти требуемый предмет. Аналог search_task, но ищет только в открытых локациях текущей недели (работа по календарю).&lt;br /&gt;
&lt;br /&gt;
Календарь (локации заполняем в таблицу как календарь):&lt;br /&gt;
*'''unlock_for_today''' - попросить экономику разблокировать диапазон локации до конца текущего дня (диапазон указываем посредством полей &amp;quot;param&amp;quot; и &amp;quot;param2&amp;quot; - [param,param2]) .&lt;br /&gt;
*'''today_table''' - промотать таблицу до текущего дня.&lt;br /&gt;
*'''location_table_get_name''' - открыть превью локации, по нажатой ячейке таблицы календаря.&lt;br /&gt;
*'''clear_packs''' - очистить паки которые не использовались n-н дней (где n - параметр '''packDeleteDays'''). &lt;br /&gt;
&lt;br /&gt;
При начислении экономикой res1 и res2 во флурри отправляются события coins_get, diams_get. Для того чтобы источники монет/кристаллов (параметр source) в событии приходили с адекватными значениями, перед вызовом состояния начисления экономике нужно записать параметр &amp;quot;res_source&amp;quot; в соответствии со значениями в списке:&lt;br /&gt;
 &lt;br /&gt;
  SOURCE_UNKNOWN = 0,                          //!&amp;lt; неизвестный источник&lt;br /&gt;
      SOURCE_PURCHASE = 1,                         //!&amp;lt; покупка&lt;br /&gt;
      SOURCE_HIDDEN_WIN = 2,                       //!&amp;lt; выигрыш в хиддене&lt;br /&gt;
      SOURCE_MINIGAME_WIN = 3,                     //!&amp;lt; выигрыш в миниигре&lt;br /&gt;
      SOURCE_DAILY_BONUS = 4,                      //!&amp;lt; дейли бонус&lt;br /&gt;
      SOURCE_SOCIAL_BONUS = 5,                     //!&amp;lt; бонусы за социалку&lt;br /&gt;
      SOURCE_CASINO = 6,                           //!&amp;lt; казино&lt;br /&gt;
      SOURCE_EXCHANGE = 7,                         //!&amp;lt; биржа&lt;br /&gt;
      SOURCE_DEPOSIT = 8,                          //!&amp;lt; депозит&lt;br /&gt;
      SOURCE_COLLECTION_GOT = 9,                   //!&amp;lt; сдача коллекций&lt;br /&gt;
      SOURCE_GUES = 10,                            //!&amp;lt; угадайка&lt;br /&gt;
      SOURCE_TASK_COMPLETE = 11,                   //!&amp;lt; выполнена задача&lt;br /&gt;
      SOURCE_TRIVIA = 12,                          //!&amp;lt; миллионер&lt;br /&gt;
      SOURCE_REDEEM = 13,                          //!&amp;lt; начисление из админки&lt;br /&gt;
      SOURCE_LEVEL_UP = 14,                        //!&amp;lt; достижение уровня&lt;br /&gt;
      SOURCE_USE_ITEM = 15,                        //!&amp;lt; использование предмета&lt;br /&gt;
      SOURCE_PET_GOLD_COLLECTED = 16,              //!&amp;lt; собрали бонус животного у пэта&lt;br /&gt;
      SOURCE_PET_COLLECTION_GOT = 17,              //!&amp;lt; сдача коллекции животных&lt;br /&gt;
      SOURCE_SLOTMACHINE = 18,                     //!&amp;lt; слотмашина&lt;br /&gt;
      SOURCE_RPGBATTLE = 19,                       //!&amp;lt; псевдоРПГ бой&lt;br /&gt;
      SOURCE_SLOTFALLING = 20,   		   //!&amp;lt; вторая слотмашина&lt;br /&gt;
      SOURCE_MAP_CHEST = 21                        //!&amp;lt; сундуки на карте&lt;br /&gt;
      SOURCE_ADVERTISEMENT = 22,                   //!&amp;lt; реклама&lt;br /&gt;
      SOURCE_CONTEST_PRIZE = 23                    //!&amp;lt; соревнования&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   П.С. для мануального начисления (уникальный источник под каждый проект) &lt;br /&gt;
      31                                           // игровая награда №1 &lt;br /&gt;
      32                                           // игровая награда №2 &lt;br /&gt;
      33                                           // игровая награда №3 &lt;br /&gt;
      34                                           // игровая награда №4 &lt;br /&gt;
      35                                           // игровая награда №5&lt;br /&gt;
      36                                           // игровая награда №6&lt;br /&gt;
      37                                           // игровая награда №7&lt;br /&gt;
      38                                           // игровая награда №8&lt;br /&gt;
      39                                           // игровая награда №9&lt;br /&gt;
      40                                           // игровая награда №10&lt;br /&gt;
&lt;br /&gt;
=Коды ошибок:=&lt;br /&gt;
При скачивании паков, посредством фоновой загрузки или через состояние &amp;quot;download_pack&amp;quot; могут возникать ошибки (которые можем словить через еррорменеджер):&lt;br /&gt;
*'''1''' - ошибка не классифицирована&lt;br /&gt;
*'''2''' - отсутствует соединение с интернетом&lt;br /&gt;
*'''3''' - отсутствуют ресурсы по данному запросу&lt;br /&gt;
*'''4''' - недостаточно оперативной памяти для загрузки&lt;br /&gt;
*'''5''' - недостаточно памяти в файловой системе для загрузки&lt;br /&gt;
*'''6''' - ошибка работы с файловой системой во время загрузки&lt;br /&gt;
*'''7''' - недостаточно оперативной памяти для распаковки&lt;br /&gt;
*'''8''' - недостаточно памяти в файловой системе для распаковки&lt;br /&gt;
*'''9''' - ошибка работы с файловой системой во время распаковки&lt;br /&gt;
*'''10''' - ошибка проверки распакованного пака&lt;br /&gt;
*'''11''' - ошибка распаковки&lt;br /&gt;
&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;
* [[Файл:Kub.png]] - [[Ecraftitem]] - шаблон для ячейки создания предмета. &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;
Данные параметры можно вычесть с помощью команды &amp;quot;var&amp;quot; в машине состояний. Параметры нужно вычитать из профиля, если не сказано обратное.&lt;br /&gt;
[id] - числовой id экономики в проекте, если не указана другая информация.&lt;br /&gt;
&lt;br /&gt;
*'''ecomics[id].res1sp''' - количество потраченного ресурса_1 за все время игры;&lt;br /&gt;
*'''ecomics[id].res2sp''' - количество потраченного ресурса_2 за все время игры;&lt;br /&gt;
*'''ecomics[id].res1log''' - текущее значение ресурса_1 выраженное в логарифмической шкале;&lt;br /&gt;
*'''ecomics[id].res1logfl''' - текущее значение ресурса_1 выраженное в логарифмической шкале с учётом депозитов и биржи;&lt;br /&gt;
*'''ecomics[id].level''' - текущий уровень игрока;&lt;br /&gt;
*'''ecomics[id].res1''' - текущее количество ресурса_1;&lt;br /&gt;
*'''ecomics[id].res2''' - текущее количество ресурса_2;&lt;br /&gt;
*'''ecomics[id].res1ea''' - количество заработанного ресурса_1 за все время игры;&lt;br /&gt;
*'''ecomics[id].res2ea''' - количество заработанного ресурса_2 за все время игры;&lt;br /&gt;
*'''economics[id].stat.energy_spent''' - количество потраченной энергии за все время игры;&lt;br /&gt;
*'''ecomics[id].mplayed''' - количество сыгранных миниигр (монстр) за все время;&lt;br /&gt;
*'''ecomics[id].lplayed''' - количество сыгранных хидденов за все время;&lt;br /&gt;
*'''ecomics[id].total_score''' - количество заработанного опыта за все время игры;&lt;br /&gt;
*'''ecomics[id].exp''' - текущий опыт на уровне;&lt;br /&gt;
*'''ecomics[id].energy''' - текущий уровень энергии;&lt;br /&gt;
*'''ecomics[id].loc[loc_id].an''' - номер аномалии, которая будет в локации loc_id;&lt;br /&gt;
*'''amulets_bonus_res1''' - множитель монет за бонусы от амулетов, при начислении по сост. &amp;quot;res1&amp;quot;;&lt;br /&gt;
*'''amulets_bonus_res2''' - множитель кристаллов за бонусы от амулетов, при начислении по сост. &amp;quot;res2&amp;quot;;&lt;br /&gt;
*'''amulets_bonus_exp''' - множитель опыта за бонусы от амулетов, при начислении по сост. &amp;quot;exp&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Каждая экономика пишет в пользователя следующие параметры:&lt;br /&gt;
*'''public.EconomicsRes1''' - текущее количество ресурса_1;&lt;br /&gt;
*'''public.EconomicsRes2''' - текущее количество ресурса_2;&lt;br /&gt;
*'''public.EconomicsLevel''' - текущий уровень игрока;&lt;br /&gt;
*'''public.EconomicsEnergy''' - текущий уровень энергии;&lt;br /&gt;
*'''public.EconomicsTotalScore''' - количество заработанного опыта за все время игры;&lt;br /&gt;
*'''public.EconomicsCollectionsUniq''' - количество сданных коллекций ( значение повышается каждый раз при сдаче коллекции), пишется Экономикой только если поле   -    '''fbopt'''  не пустое;&lt;br /&gt;
&lt;br /&gt;
=Календарь и всё про него=&lt;br /&gt;
Данный режим позволяет создавать клонированные превью локаций и располагать локации по датам (одна локация - конкретная дата).&lt;br /&gt;
Визуально выглядит вот так:&lt;br /&gt;
&lt;br /&gt;
[[Файл:Econom calendar viewer.png|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Настраивается рядом параметров (режим работы, визуальное оформление - таблица настраивается отдельно - ) &lt;br /&gt;
[[Файл:Econom calendart.jpg|400px|right]]&lt;br /&gt;
*'''шаблон объекта на карте''' ('''tmplIco''') - превью локации - может быть как машинкой или &amp;quot;elocationpreview&amp;quot;(в этом случае, за превью локации берётся машинка из поля &amp;quot;иконка&amp;quot; - ей будут вызываться состояния и писаться параметры).&lt;br /&gt;
 Должны быть подключены все состояния для машинки превью локации (&amp;quot;highlight&amp;quot;,&amp;quot;level_0&amp;quot;,&amp;quot;level_1&amp;quot;...) и дополнительно:&lt;br /&gt;
**'''apply''' - обновление имени локации (название дата) - в данном состоянии можно изменять параметры текста - выравнивание, размер шрифта и т.д.&lt;br /&gt;
**'''not_played''' - игрок заходил в день локации, но не играл в HG;&lt;br /&gt;
**'''not_visited''' - игрок не заходил в день локации;&lt;br /&gt;
**'''future''' - локация закрыта и находится в будущем; &lt;br /&gt;
Параметры которые пишутся в превью локации:&lt;br /&gt;
**'''season''' - сезон локации (0 - зима; 1 - Весна; 2 - Лето; 3 - Осень);&lt;br /&gt;
**'''in_past''' - находится локаций ранее текущей недели (0 - нет; 1 - да);&lt;br /&gt;
**'''cellShift''' - смещении локации от центрального элемента таблицы (знак &amp;quot;-&amp;quot; - влево; знак &amp;quot;+&amp;quot; - вправо);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*'''заглушка''' ('''tmplDummy''') - объект-заглушка, добавляется в начало и вконец таблицы - для правильной работы круговой таблицы;&lt;br /&gt;
*'''количество заглушек''' ('''tmplDummyNum''') - количество добавляемых заглушек;&lt;br /&gt;
*'''таблица''' ('''tableIco''') - таблица в которую будут складываться превью локации (должна иметь память - чтобы создались один раз);&lt;br /&gt;
*'''разлочить дней от текущего влево''' ('''daysunlock''') - указываем крайнее левое значение диапазона локаций текущей недели ( относительно, текущего, календарного дня);&lt;br /&gt;
*'''разлочить дней от текущего влево''' ('''daysunlockr''') - указываем крайнее правое значение диапазона локаций текущей недели( относительно, текущего, календарного дня);&lt;br /&gt;
*'''очищать все коллекционные предметы при смене дня''' ('''clearcollections''') - при смене календарного дня - очистить все полученные коллекционные предметы;&lt;br /&gt;
*'''прогресс загрузки''' ('''packProgress''') - прогресс загрузки пака, в окне перед локацией;&lt;br /&gt;
&lt;br /&gt;
Формат даты (можно использовать переменные в тексте _day - число, _weekDay - день недели, _mon - полное название месяца, _short - сокращенное название месяца):&lt;br /&gt;
*'''формат даты центр''' ('''dateFormatCenter''') - текстовый ресурс, который будет помещён в имя локации (дата) центрального элемента таблицы;&lt;br /&gt;
*'''формат даты лево''' ('''dateFormatLeft''') - текстовый ресурс, который будет помещён в имя локации (дата) всем элементам левее центрального элемента таблицы;&lt;br /&gt;
*'''формат даты право''' ('''dateFormatRight''') - текстовый ресурс, который будет помещён в имя локации (дата) всем элементам правее центрального элемента таблицы;&lt;br /&gt;
*'''дни недели''' ('''dateWeekDays''') - перечень текстовых ресурсов, которые будут браться для каждого дня недели ( первый текст - понедельник, второй - вторник ...);&lt;br /&gt;
*'''месяцы''' ('''dateMonthes''') - перечень текстовых ресурсов для месяцев ( начинаем с января; sense0 - полное название, sense1 - короткое);&lt;br /&gt;
&lt;br /&gt;
Фоновая прогрузка паков (при смене дня и при старте сессии):&lt;br /&gt;
*'''автозакачка паков влево''' ('''packNLeft''') - указываем крайную левую локацию диапазона;&lt;br /&gt;
*'''автозакачка паков вправо''' ('''packNRight''') - указываем крайную правую локацию диапазона;&lt;br /&gt;
&lt;br /&gt;
*'''поправка на 29 февраля''' ('''tableFeb29Adjust''') - обрабатываем 29 Февраля или нет;&lt;br /&gt;
*'''начальная дата''' ('''startDate''') - Дата самой первой локации (unix time);&lt;br /&gt;
*'''удалять паки не используемые (дней)''' ('''packDeleteDays''') - количество дней,спустя которое пак считается устаревшим, при превышении - пак удалится с устройства при вызове состояния '''clear_packs'''. По сути это разница между текущей датой и датой последнего использования пака. Дата последнего использования пака обновляется после игры в локацию (через сост. &amp;quot;play&amp;quot;) или при успешной распаковке пака.&lt;br /&gt;
&lt;br /&gt;
=Динамические паки=&lt;br /&gt;
Функционал позволяет уменьшить размер приложения, посредством разбиения арта на паки, и в процессе игры их скачивания [https://docs.google.com/document/d/13UUOKf_iJNzFx0PjU4JQIfYDX7NhK7dyfJAR3I-SWlQ/edit# (см. документ)].&lt;br /&gt;
&lt;br /&gt;
[[Category:Game mechanic]]&lt;br /&gt;
[[Category:Economics|*]]&lt;/div&gt;</summary>
		<author><name>Dopryshko</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.appsalutecreator.com/index.php?title=%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D0%B8%D0%B3%D1%80%D1%8B_%C2%ABHidden_Object_Game%C2%BB&amp;diff=10009</id>
		<title>Создание игры «Hidden Object Game»</title>
		<link rel="alternate" type="text/html" href="https://wiki.appsalutecreator.com/index.php?title=%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D0%B8%D0%B3%D1%80%D1%8B_%C2%ABHidden_Object_Game%C2%BB&amp;diff=10009"/>
		<updated>2021-04-22T13:48:40Z</updated>

		<summary type="html">&lt;p&gt;Dopryshko: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| width=&amp;quot;100%&amp;quot;  &lt;br /&gt;
 | width=&amp;quot;40%&amp;quot;|[[Редактор текстовых ресурсов|Урок 6]] &amp;lt;&amp;lt; &lt;br /&gt;
 ! width=&amp;quot;20%&amp;quot;|[[Learning|Оглавление]] &lt;br /&gt;
 | width=&amp;quot;40%&amp;quot; align=&amp;quot;right&amp;quot;| &amp;gt;&amp;gt; [[Настройка миниигр|Урок 8]]&lt;br /&gt;
|}&lt;br /&gt;
----&lt;br /&gt;
{{TOC right}}&lt;br /&gt;
&lt;br /&gt;
'''Цель:''' Изучить настройки объектов [[HiddenList]], [[HiddenObject]] и  [[Table]] для типа механики Hidden Object Game на базе создания уровня из игры Travel.&lt;br /&gt;
 &lt;br /&gt;
'''Задача:''' Создать уровень игры содержащей 10 поисковых объектов расположенных на одном бэкграунде (фоне). При инициализации сцены обеспечить размещение 5 объектов для поиска. &lt;br /&gt;
&lt;br /&gt;
== Создание экрана и сцены в игровом проекте ==&lt;br /&gt;
&lt;br /&gt;
Откроем проект lessons. Создадим экран Lesson_7. [[Файл:Lesson7_textbase.png|right]]&lt;br /&gt;
В экране Lesson_7 добавляем новую сцену* stg_7 с разрешением 960*640 (по умолчанию), в которую (через ResourcesEditor) добавим графические ресурсы из папки Lesson_7. (см. подготовка к работе [[Создание проекта]])&lt;br /&gt;
&lt;br /&gt;
* Графические объекты должны разместиться точно на местах предназначенных для их «Прятанья». Перетягиваем сначала '''bg''', потом остальные объекты с папки ''hiddenObj''.&lt;br /&gt;
&lt;br /&gt;
Создадим папку Lesson_7  в базе текстовых описаний с помощью TextEditor.  Добавим в неё 10 текстовых записей, соответствующих именам поисковых объектов. Заполним для каждой текстовой записи 2 значения, один из которых называет сам предмет, а второе - является его синонимом или ассоцией, которая укажет на него ([[Интерфейс TextEditor#Создание и заполнение текстовой базы проекта | Word]], [[Интерфейс TextEditor#Создание и заполнение текстовой базы проекта | Sentence-En]]), добавим графическое отображение поискового объекта. Сделать это можно вручную, перетащив картинку соответствующего объекта из редактора ресурсов и, по нажатию на картинке правой кнопкой мыши, выберем тип &amp;quot;icon1&amp;quot;. Или же более быстрым [[Интерфейс TextEditor#Добавление иконок в текстовый элемент | способом]].&lt;br /&gt;
&lt;br /&gt;
== Общая настройка объектов ==&lt;br /&gt;
&lt;br /&gt;
1. Для всех поисковых графических объектов изменяем тип с image на [[HiddenObject]]: выделяем первый и последний элементы, удерживая кнопку Shift, в окне Property выбраем соответствующий параметр.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Lesson7_hidden_obj.png]]&lt;br /&gt;
&lt;br /&gt;
2. Создаем новую сцену, которую называем 7_1 и добавляем на нее специальные объекты [[Table]] и [[HiddenList]]. Для этого переносим графическое изображение table и изменяем его тип с image на Table. Название объекта изменить на table**&lt;br /&gt;
&lt;br /&gt;
[[Файл:07 5.png]]&lt;br /&gt;
&lt;br /&gt;
3. Для объекта HiddenList создаем  новый объект и меняем его тип с image на HiddenList. Для данного типа объекта не требуется графический ресурс. Название объекта изменить на HiddenList**&lt;br /&gt;
&lt;br /&gt;
[[Файл:Lesson7_HiddenList.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''**''' Имена для специальных объектов могут использоваться любые.&lt;br /&gt;
&lt;br /&gt;
== Детальная настройка объектов ==&lt;br /&gt;
&lt;br /&gt;
'''1. Описание HiddenObject.'''&lt;br /&gt;
&lt;br /&gt;
''HiddenObject'' - это поисковый объект, взаимодействующий со списком HiddenList. Каждому поисковому объекту необходимо указать графический ресурс (картинку), идентификатор объекта HiddenList и идентификатор текстового ресурса (строки описания) в HiddenList.[[Файл:07 7.png|right]]&lt;br /&gt;
&lt;br /&gt;
Необходимо выбрать используемый объект с именем HiddenList (тип HiddenObjectList) в поле list.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''текстID'' – название хидден-объекта, которое будет отображаться в списке. Перетаскивается мышкой из текстового редактора;&lt;br /&gt;
&lt;br /&gt;
''текст'' – обычный текст (будет отображаться в таблице при отсутствии ТекстID, для быстрых экспериментов);&lt;br /&gt;
&lt;br /&gt;
''list'' – ссылка на HiddenList, к которому будет подключен объект, для обеспечения связи между ними;&lt;br /&gt;
&lt;br /&gt;
''flyer'' – объект типа flyer, который запустится в работу при нахождении поискового объекта. Неудачный клик обрабатывает HiddenList. Если параметр не задан, используется fly_ok объекта HiddenList.(objid);&lt;br /&gt;
&lt;br /&gt;
''actor'' – объект, который отображает анимацию спрятанного объекта после удачного клика на него (обычно это машина состояния). Парметр необязателен. Актёры нужны тогда, когда отличается графика объекта, который непосредственно находится на сцене и который летит к таблице. Это может быть случай, когда на сцене лежит часть объекта, а летит целый. Или же на сцене - с тенью, а летит - без.&lt;br /&gt;
&lt;br /&gt;
''тип'' – номер типа объекта, используется для логического разделения объектов при обработке HiddenList.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''2. Описание HiddenObjectList.'''&lt;br /&gt;
&lt;br /&gt;
HiddenList - это список поисковых объектов (Hidden), которые надо найти в хидден-сцене. [[Файл:07 8.png|right]] Каждый поисковый объект на сцене связывают со списком. Объектов может быть больше, чем будет показано в данной игровой сессии (поле &amp;quot;объектов&amp;quot;). В этом случае они выбираются случайным образом. Запоминаются те из них, по которым произошёл клик (увеличивается счетчик их кликов). При следующем заходе на сцену, поисковые слова сортируются по возрастанию числа кликов и снова активизируется количество спрятанных объектов, указанных в поле &amp;quot;количество&amp;quot;.&lt;br /&gt;
 &lt;br /&gt;
HiddenList определяет основные параметры для настройки HiddenObject (скорость полета и т.п.). В дальнейшем, при необходимости, эти же параметры можно добавить в HiddenObject, чтобы для данного объекта они &amp;quot;перебивали&amp;quot; общие значения для всех.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Подготовка спрятанных объектов: &lt;br /&gt;
&lt;br /&gt;
''num'' (поле &amp;quot;объектов&amp;quot;) – максимальное количество объектов, участвующие в поиске. (int)&lt;br /&gt;
&lt;br /&gt;
''hide'' (поле &amp;quot;прятать&amp;quot;) – если 1, то делать невидимыми объекты, не участвующие в поиске. (int) &lt;br /&gt;
&lt;br /&gt;
Визуальные параметры списка: &lt;br /&gt;
&lt;br /&gt;
''table'' (поле &amp;quot;таблица&amp;quot;) – идентификатор объекта Table. (objid)&lt;br /&gt;
&lt;br /&gt;
''kind'' (внешний вид - поле &amp;quot;тип списка&amp;quot;) – тип отображения объекта в списке (0-слово,1-ассоциация, 2-иконка, 3-иконка). (int)&lt;br /&gt;
&lt;br /&gt;
''cross'' (внешний вид - поле &amp;quot;вычеркнуть&amp;quot;) – зачеркивать найденный элемент списка. Eсли 0 (по умолчанию), то найденный элемент удаляется, иначе &amp;quot;зачеркивается&amp;quot;.(int).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
'''3. Настройка Table'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Table lesson7.png]] &lt;br /&gt;
&lt;br /&gt;
 Хотелось бы напомнить , что вы можете “поиграться” с вкладкой “таблица”, чтобы настроить внешний вид , вспомогательную область для поиска предметов.&lt;br /&gt;
&lt;br /&gt;
'''4. Параметры, общие для всех спрятанных объектов:'''&lt;br /&gt;
&lt;br /&gt;
''die'' –  тип исчезания при удачном клике на объект (если нет актера) (int): &lt;br /&gt;
&lt;br /&gt;
0: просто исчезает;&lt;br /&gt;
&lt;br /&gt;
1: летит к пункту с описанием в списке HiddenList;&lt;br /&gt;
&lt;br /&gt;
2: улетает в случайном направлении;&lt;br /&gt;
&lt;br /&gt;
3: улетает к заданным координатам (fx, fy).&lt;br /&gt;
&lt;br /&gt;
vm - скорость движения при полете к списку предметов после клика в px/sec (float) &lt;br /&gt;
&lt;br /&gt;
vr - скорость вращения при полете к списку предметов после клик в град/sec (float) &lt;br /&gt;
&lt;br /&gt;
fw - финальная ширина к которой надо уменьшится при подлете к финальной точке (int) &lt;br /&gt;
&lt;br /&gt;
fh - финальная высота к которой надо уменьшится при подлете к финальной точке (int). Объект не должен изменять своих пропорций, поэтому fw или fh (или оба) всегда отрицательны. &lt;br /&gt;
&lt;br /&gt;
fx - финальная координата x, к которой объект должен перелететь, при удачном клике (см. тип исчезания). (int) &lt;br /&gt;
&lt;br /&gt;
fy - финальная координата x, к которой объект должен перелететь, при удачном клике (см. тип исчезания). (int)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
[[файл:wrong.png|right|32px]]&lt;br /&gt;
        '''Внимание!'''  HiddenList не будет работать без объекта [[Редактор текстовых ресурсов#Упражнения|Options]], который вы должны были создать в предыдущем уроке, а так же без параметра ''id игры'' (Очковая система -&amp;gt; id игры; для теста заполним его любой строкой).&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Упражнения ==&lt;br /&gt;
&lt;br /&gt;
1. Щелкнув правой кнопкой мыши по экрану Lesson_7, создать новый экран Lesson_7_1.&lt;br /&gt;
&lt;br /&gt;
2. Создать новую сцену (с названием stg_7_1).&lt;br /&gt;
&lt;br /&gt;
3. Скопировать все объекты из сцены stg_7 (экрана Lesson_7). (Одновременно можно выделять или копировать только объекты одного типа)&lt;br /&gt;
&lt;br /&gt;
4. Вставить скопированные объекты в новую сцену stg_7_1.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Screenshot 1.png]] &lt;br /&gt;
&lt;br /&gt;
5. В новой сцене:&lt;br /&gt;
&lt;br /&gt;
a) добавить еще 3 графических ресурса и перевести в тип HiddenObject;&lt;br /&gt;
&lt;br /&gt;
b) разместить на местах предназначенных для их «Прятанья»;&lt;br /&gt;
&lt;br /&gt;
c) добавить текстовое описание в TextEditor;&lt;br /&gt;
&lt;br /&gt;
e) установить время игры 20 секунд, паузу 2 секунды с переходом на экран Lesson_7_1.&lt;br /&gt;
&lt;br /&gt;
== Настройка полноценной системы подсчета очков ==&lt;br /&gt;
&lt;br /&gt;
Экран lesson_7  необходимо модифицировать в полноценный уровень с выводом количества очков, игрой на время и графикой.&lt;br /&gt;
&lt;br /&gt;
Для этого создаем еще одну сцену 7_3 в первом экране с объектами, которые сделают игру полноценной: первый экран дополняем  2 счетчиками ([[counter]]), таймером ([[timer]]), машиной-блокатором ([[machine]]) и прогрессом ([[progress]]). Второй экран с выводом очков составим позже.&lt;br /&gt;
&lt;br /&gt;
 [[Файл:1.png]] &lt;br /&gt;
&lt;br /&gt;
Счетчик «amt» ([[counter]]) показывает сколько объектов найдено. Счетчик «score_H» ([[counter]]) насчитывает баллы за собранные объекты. Таймер ([[timer]]) запускается при старте игры и отсчитывает заданное время на игру, машина-блокатор «ban_H» блокирует сцену при серии ошибочных кликов. Прогресс «prog» ([[progress]]) активируется во время комбо.&lt;br /&gt;
&lt;br /&gt;
Чтобы всё заработало необходимо указать счетчики, таймер, машину-блокатор и прогресс в свойствах HiddenList ([[hiddenList]]).&lt;br /&gt;
&lt;br /&gt;
=== Счетчик ===&lt;br /&gt;
&lt;br /&gt;
В редакторе ресурсов выбираем анимацию и добавляем графику для счетчика. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
[[файл:wrong.png|right|32px]]&lt;br /&gt;
'''Внимание!'''  Если в редакторе ресурсов нету анимации, то [[Интерфейс_ResourceEditor#Анимация|создайте]] её -  это просто). Анимация создается с названием папки, в которой хранились картинки, избегайте кириллицы в названии  папок.&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 ‎[[Файл:Count 0.png]] ‎[[Файл:Count 1.png]] [[Файл:Count 2.png]] [[Файл:Count 3.png]] ‎[[Файл:Count 4.png]] [[Файл:Count 5.png]] ‎[[Файл:Count 6.png]] ‎[[Файл:Count 7.png]] ‎‎[[Файл:Count 8.png]] ‎[[Файл:Count 9.png]] ‎[[‎Файл:Coun (5).png]]&lt;br /&gt;
&lt;br /&gt;
Создаем объект сцены с типом «[[counter]]», в поле res перетаскиваем анимацию с цифрами от 0 до 9, разделитель уже указан в настройках. Настройки для счетчика:&lt;br /&gt;
&lt;br /&gt;
 [[Файл:243.png]]&lt;br /&gt;
&lt;br /&gt;
=== Таймер ===&lt;br /&gt;
&lt;br /&gt;
В свойствах таймера «[[timer]]» необходимо указать «значение» с которого начнется отсчет времени (18000 = 18 сек.). &lt;br /&gt;
В свойство «графика» из графического редактора перетаскиваем анимацию которую делали для счетчика и двоеточие или делаем его обычным шрифтом, редактируя в свойствах параметр '''шрифт'''. Настройки для таймера:&lt;br /&gt;
&lt;br /&gt;
 [[Файл:444.png]]&lt;br /&gt;
&lt;br /&gt;
Также стоит обновить настройки в HiddenObjectList , т.к. если мы их не укажем, то отсчет времени просто не начнется. Время таймера и время указанное в HiddenObjectList должны совпадать, иначе отсчет времени будет идти от меньшего времени вне зависимости указано оно в HOL или в таймере.&lt;br /&gt;
  [[Файл:HOL Time.png]]&lt;br /&gt;
&lt;br /&gt;
=== Прогресс ===&lt;br /&gt;
&lt;br /&gt;
[[Progress]] используют для отображения каких либо ачивментов, например когда игрок проходит уровень он может получить 1,2,3 звезды или бронзовую, серебряную, золотую или совершая необходимые действия в игре, например комбо. &lt;br /&gt;
Настройки для '''прогресса''' : &lt;br /&gt;
&lt;br /&gt;
 [[Файл:555.png]]&lt;br /&gt;
&lt;br /&gt;
Графика для Progress: [[Файл:666.png]]&lt;br /&gt;
&lt;br /&gt;
Настройки для машины-блокатора «ban_H» (machine) (подобъектe '''black''' изменяем тип на rectangle, более подробно о нем дальше):&lt;br /&gt;
&lt;br /&gt;
 [[Файл:Ban h na max.png]]&lt;br /&gt;
 [[Файл:9.png]]&lt;br /&gt;
&lt;br /&gt;
Настройки для '''hiddenList''':&lt;br /&gt;
&lt;br /&gt;
 [[Файл:HOL Final.png]]&lt;br /&gt;
&lt;br /&gt;
Группа - звезды combo num =1 - количество быстро найденных объектов, нужное для получения звезды Combo. Combo time = 3000 - интервал между кликами, считающимися быстрыми. Combo accuracy = 0,85 - точность кликов для получения звезды Accuracy (1 = 100%, все клики должны быть только удачные). Лимит ложных кликов = 5 - количество неверных кликов. Формула расчета его: количество верных кликов делим на общее количество получаем коэффициент, если он равен или больше указного нами, то в опции пишем параметр, если нет то не пишем.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
В HiddenList в разделе очковая система для сохранения данных в профиль необходимо указать '''id игры''' (например &amp;quot;hidden&amp;quot;).&lt;br /&gt;
Для HiddenList и Counter пункт &amp;quot;сохранить в профиль&amp;quot; должен совпадать. Если в HiddenList указано &amp;quot;глобально&amp;quot;, то и в Counter также необходимо установить &amp;quot;глобально&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Машина ''win_lose'' помогает определить победителя и вызывает соответствующее окно ''win'' после победы или поражения.&lt;br /&gt;
&lt;br /&gt;
Добавим правой кнопкой мыши функцию &amp;quot;разбор: изменить состояние объекта&amp;quot; и укажем там машину ''win_lose'' состояние win. Состояние lose укажем в таймере timer_H также через добавление функции правой копкой мыши &amp;quot;время истекло: изменить состояние объекта&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Настройка окна вывода ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Создаем новую сцену '''w''' и создаем в ней объект c типом machine ''win'', на которой формируем окно вывода результатов из ректангла ([[Rectangle]]), текстовых объектов и счетчиков. Окно&lt;br /&gt;
должно открываться по окончанию игры и при выигрыше показывать набранные очки и надпись об удаче, при проигрыше - нулевые очки и надпись о неудаче.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Example.jpg]]&lt;br /&gt;
&lt;br /&gt;
Графика для Rectangle rec: [[Файл:0001.png]] [[Файл:0002.png]] [[Файл:0003.png]] [[Файл:0004.png]] [[Файл:0005.png]] [[Файл:0006.png]] [[Файл:0007.png]] [[Файл:0008.png]] [[Файл:0009.png]] [[Файл:00010.png]]    &lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
[[файл:wrong.png|right|32px]]&lt;br /&gt;
'''Внимание!''' Rectangle black (Цвет задается в свойстве фон-&amp;gt;цвет заливки) используется в качестве фона, на котором будет размещаться всплывающие окно с показаниями результата пройденной игры. &lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 [[Файл:1012.png]] [[Файл:0102.png]] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Далее копируем Rectangle &amp;quot;black&amp;quot; и делаем подобъектом блокатора ban_H, а также меняем размеры rectangle black (устанавливаем не нулевые!), устанавливаем параметр фон и alpha на свое усмотрение.&lt;br /&gt;
&lt;br /&gt;
Создадим еще 5 счетчиков. Они нам понадобятся в конце игры для выведения бонусного счета.&lt;br /&gt;
&lt;br /&gt;
В свойствах счетчиков необходимо прописать уровень!&lt;br /&gt;
&lt;br /&gt;
1) счетчик 7_4_1 — игровые очки;&lt;br /&gt;
&lt;br /&gt;
уровень: last_game.score30_total&lt;br /&gt;
&lt;br /&gt;
2) счетчик 7_4_2 — бонус за время;&lt;br /&gt;
&lt;br /&gt;
уровень: last_game.score30_time&lt;br /&gt;
&lt;br /&gt;
3) счетчик 7_4_3 — бонус за аккуратность;&lt;br /&gt;
&lt;br /&gt;
уровень: last_game.score30_accuracy&lt;br /&gt;
&lt;br /&gt;
4) счетчик 7_4_4 — бонус за комбо;&lt;br /&gt;
&lt;br /&gt;
уровень: last_game.ecmbRowMax&lt;br /&gt;
&lt;br /&gt;
5) счетчик 7_4_5 — очки за уровень;&lt;br /&gt;
&lt;br /&gt;
уровень: last_game.score30_level&lt;br /&gt;
&lt;br /&gt;
[[Файл:Counters.png]]&lt;br /&gt;
&lt;br /&gt;
Важный аспект: после того как вы добавили last.game.xxx в графу уровень в каждом счетчике , графа игра должна остаться пустой и так же не стоит эти счетчики закидывать в HOL , т.к. одни и те же данные могут конфликтовать между собой. Также обязательным условием является включение графы “очки 3.0” в HOL`e.&lt;br /&gt;
&lt;br /&gt;
После создания счетчиков и установки уровней добавляем 5 текстовых объектов, которые описывают значения, выводящиеся счетчиками в конце игры в окне результатов (игровые очки, бонус за время и т.д.).&lt;br /&gt;
&lt;br /&gt;
=== Вывод итогов ===&lt;br /&gt;
&lt;br /&gt;
Настройки для машины — '''star1''' &lt;br /&gt;
(проверка в опциях параметра last_game.last_star_accuracy0, &lt;br /&gt;
last_game.last_star_time0, )&lt;br /&gt;
&lt;br /&gt;
 [[Файл:0303.png]]&lt;br /&gt;
&lt;br /&gt;
Настройки для машины — '''star2''' &lt;br /&gt;
(если параметр accuracy=0)&lt;br /&gt;
&lt;br /&gt;
 [[Файл:0304.png]]&lt;br /&gt;
&lt;br /&gt;
Настройки для машины — '''star3''' &lt;br /&gt;
(если игра пройдена за указанное время)&lt;br /&gt;
&lt;br /&gt;
 [[Файл:0305.png]]&lt;br /&gt;
&lt;br /&gt;
Настройки для машины — '''win'''&lt;br /&gt;
&lt;br /&gt;
 [[Файл:0306.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Машина '''win''' считывает «read» показания счетчика и запускает star1 если игра пройдена.&lt;br /&gt;
&lt;br /&gt;
Также создаем кнопку ''close'' (button), которая должна закрывать окно результатов. Добавляем &amp;quot;изменить состояние объекта&amp;quot;; объект win, состояние close. &lt;br /&gt;
&lt;br /&gt;
'''(Подсказка)''' Для того, чтобы перезагрузить сцену с '''hiddenList''' и начать игру заново, в машине можно использовать команду '''set''' с параметром '''next_scr'''.&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;
{| width=&amp;quot;100%&amp;quot;  &lt;br /&gt;
 | width=&amp;quot;40%&amp;quot;|[[Редактор текстовых ресурсов|Урок 6]] &amp;lt;&amp;lt; &lt;br /&gt;
 ! width=&amp;quot;20%&amp;quot;|[[Learning|Оглавление]] &lt;br /&gt;
 | width=&amp;quot;40%&amp;quot; align=&amp;quot;right&amp;quot;| &amp;gt;&amp;gt; [[Настройка миниигр|Урок 8]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:Learning]]&lt;/div&gt;</summary>
		<author><name>Dopryshko</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.appsalutecreator.com/index.php?title=%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D0%B8%D0%B3%D1%80%D1%8B_%C2%ABHidden_Object_Game%C2%BB&amp;diff=10008</id>
		<title>Создание игры «Hidden Object Game»</title>
		<link rel="alternate" type="text/html" href="https://wiki.appsalutecreator.com/index.php?title=%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D0%B8%D0%B3%D1%80%D1%8B_%C2%ABHidden_Object_Game%C2%BB&amp;diff=10008"/>
		<updated>2021-04-22T13:47:28Z</updated>

		<summary type="html">&lt;p&gt;Dopryshko: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| width=&amp;quot;100%&amp;quot;  &lt;br /&gt;
 | width=&amp;quot;40%&amp;quot;|[[Редактор текстовых ресурсов|Урок 6]] &amp;lt;&amp;lt; &lt;br /&gt;
 ! width=&amp;quot;20%&amp;quot;|[[Learning|Оглавление]] &lt;br /&gt;
 | width=&amp;quot;40%&amp;quot; align=&amp;quot;right&amp;quot;| &amp;gt;&amp;gt; [[Настройка миниигр|Урок 8]]&lt;br /&gt;
|}&lt;br /&gt;
----&lt;br /&gt;
{{TOC right}}&lt;br /&gt;
&lt;br /&gt;
'''Цель:''' Изучить настройки объектов [[HiddenList]], [[HiddenObject]] и  [[Table]] для типа механики Hidden Object Game на базе создания уровня из игры Travel.&lt;br /&gt;
 &lt;br /&gt;
'''Задача:''' Создать уровень игры содержащей 10 поисковых объектов расположенных на одном бэкграунде (фоне). При инициализации сцены обеспечить размещение 5 объектов для поиска. &lt;br /&gt;
&lt;br /&gt;
== Создание экрана и сцены в игровом проекте ==&lt;br /&gt;
&lt;br /&gt;
Откроем проект lessons. Создадим экран Lesson_7. [[Файл:Lesson7_textbase.png|right]]&lt;br /&gt;
В экране Lesson_7 добавляем новую сцену* stg_7 с разрешением 960*640 (по умолчанию), в которую (через ResourcesEditor) добавим графические ресурсы из папки Lesson_7. (см. подготовка к работе [[Создание проекта]])&lt;br /&gt;
&lt;br /&gt;
* Графические объекты должны разместиться точно на местах предназначенных для их «Прятанья». Перетягиваем сначала '''bg''', потом остальные объекты с папки ''hiddenObj''.&lt;br /&gt;
&lt;br /&gt;
Создадим папку Lesson_7  в базе текстовых описаний с помощью TextEditor.  Добавим в неё 10 текстовых записей, соответствующих именам поисковых объектов. Заполним для каждой текстовой записи 2 значения, один из которых называет сам предмет, а второе - является его синонимом или ассоцией, которая укажет на него ([[Интерфейс TextEditor#Создание и заполнение текстовой базы проекта | Word]], [[Интерфейс TextEditor#Создание и заполнение текстовой базы проекта | Sentence-En]]), добавим графическое отображение поискового объекта. Сделать это можно вручную, перетащив картинку соответствующего объекта из редактора ресурсов и, по нажатию на картинке правой кнопкой мыши, выберем тип &amp;quot;icon1&amp;quot;. Или же более быстрым [[Интерфейс TextEditor#Добавление иконок в текстовый элемент | способом]].&lt;br /&gt;
&lt;br /&gt;
== Общая настройка объектов ==&lt;br /&gt;
&lt;br /&gt;
1. Для всех поисковых графических объектов изменяем тип с image на [[HiddenObject]]: выделяем первый и последний элементы, удерживая кнопку Shift, в окне Property выбраем соответствующий параметр.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Lesson7_hidden_obj.png]]&lt;br /&gt;
&lt;br /&gt;
2. Создаем новую сцену, которую называем 7_1 и добавляем на нее специальные объекты [[Table]] и [[HiddenList]]. Для этого переносим графическое изображение table и изменяем его тип с image на Table. Название объекта изменить на table**&lt;br /&gt;
&lt;br /&gt;
[[Файл:07 5.png]]&lt;br /&gt;
&lt;br /&gt;
3. Для объекта HiddenList создаем  новый объект и меняем его тип с image на HiddenList. Для данного типа объекта не требуется графический ресурс. Название объекта изменить на HiddenList**&lt;br /&gt;
&lt;br /&gt;
[[Файл:Lesson7_HiddenList.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''**''' Имена для специальных объектов могут использоваться любые.&lt;br /&gt;
&lt;br /&gt;
== Детальная настройка объектов ==&lt;br /&gt;
&lt;br /&gt;
'''1. Описание HiddenObject.'''&lt;br /&gt;
&lt;br /&gt;
''HiddenObject'' - это поисковый объект, взаимодействующий со списком HiddenList. Каждому поисковому объекту необходимо указать графический ресурс (картинку), идентификатор объекта HiddenList и идентификатор текстового ресурса (строки описания) в HiddenList.[[Файл:07 7.png|right]]&lt;br /&gt;
&lt;br /&gt;
Необходимо выбрать используемый объект с именем HiddenList (тип HiddenObjectList) в поле list.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''текстID'' – название хидден-объекта, которое будет отображаться в списке. Перетаскивается мышкой из текстового редактора;&lt;br /&gt;
&lt;br /&gt;
''текст'' – обычный текст (будет отображаться в таблице при отсутствии ТекстID, для быстрых экспериментов);&lt;br /&gt;
&lt;br /&gt;
''list'' – ссылка на HiddenList, к которому будет подключен объект, для обеспечения связи между ними;&lt;br /&gt;
&lt;br /&gt;
''flyer'' – объект типа flyer, который запустится в работу при нахождении поискового объекта. Неудачный клик обрабатывает HiddenList. Если параметр не задан, используется fly_ok объекта HiddenList.(objid);&lt;br /&gt;
&lt;br /&gt;
''actor'' – объект, который отображает анимацию спрятанного объекта после удачного клика на него (обычно это машина состояния). Парметр необязателен. Актёры нужны тогда, когда отличается графика объекта, который непосредственно находится на сцене и который летит к таблице. Это может быть случай, когда на сцене лежит часть объекта, а летит целый. Или же на сцене - с тенью, а летит - без.&lt;br /&gt;
&lt;br /&gt;
''тип'' – номер типа объекта, используется для логического разделения объектов при обработке HiddenList.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''2. Описание HiddenObjectList.'''&lt;br /&gt;
&lt;br /&gt;
HiddenList - это список поисковых объектов (Hidden), которые надо найти в хидден-сцене. [[Файл:07 8.png|right]] Каждый поисковый объект на сцене связывают со списком. Объектов может быть больше, чем будет показано в данной игровой сессии (поле &amp;quot;объектов&amp;quot;). В этом случае они выбираются случайным образом. Запоминаются те из них, по которым произошёл клик (увеличивается счетчик их кликов). При следующем заходе на сцену, поисковые слова сортируются по возрастанию числа кликов и снова активизируется количество спрятанных объектов, указанных в поле &amp;quot;количество&amp;quot;.&lt;br /&gt;
 &lt;br /&gt;
HiddenList определяет основные параметры для настройки HiddenObject (скорость полета и т.п.). В дальнейшем, при необходимости, эти же параметры можно добавить в HiddenObject, чтобы для данного объекта они &amp;quot;перебивали&amp;quot; общие значения для всех.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Подготовка спрятанных объектов: &lt;br /&gt;
&lt;br /&gt;
''num'' (поле &amp;quot;объектов&amp;quot;) – максимальное количество объектов, участвующие в поиске. (int)&lt;br /&gt;
&lt;br /&gt;
''hide'' (поле &amp;quot;прятать&amp;quot;) – если 1, то делать невидимыми объекты, не участвующие в поиске. (int) &lt;br /&gt;
&lt;br /&gt;
Визуальные параметры списка: &lt;br /&gt;
&lt;br /&gt;
''table'' (поле &amp;quot;таблица&amp;quot;) – идентификатор объекта Table. (objid)&lt;br /&gt;
&lt;br /&gt;
''kind'' (внешний вид - поле &amp;quot;тип списка&amp;quot;) – тип отображения объекта в списке (0-слово,1-ассоциация, 2-иконка, 3-иконка). (int)&lt;br /&gt;
&lt;br /&gt;
''cross'' (внешний вид - поле &amp;quot;вычеркнуть&amp;quot;) – зачеркивать найденный элемент списка. Eсли 0 (по умолчанию), то найденный элемент удаляется, иначе &amp;quot;зачеркивается&amp;quot;.(int).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
'''3. Настройка Table'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Table lesson7.png]] &lt;br /&gt;
&lt;br /&gt;
 Хотелось бы напомнить , что вы можете “поиграться” с вкладкой “таблица”, чтобы настроить внешний вид , вспомогательную область для поиска предметов.&lt;br /&gt;
&lt;br /&gt;
'''4. Параметры, общие для всех спрятанных объектов:'''&lt;br /&gt;
&lt;br /&gt;
''die'' –  тип исчезания при удачном клике на объект (если нет актера) (int): &lt;br /&gt;
&lt;br /&gt;
0: просто исчезает;&lt;br /&gt;
&lt;br /&gt;
1: летит к пункту с описанием в списке HiddenList;&lt;br /&gt;
&lt;br /&gt;
2: улетает в случайном направлении;&lt;br /&gt;
&lt;br /&gt;
3: улетает к заданным координатам (fx, fy).&lt;br /&gt;
&lt;br /&gt;
vm - скорость движения при полете к списку предметов после клика в px/sec (float) &lt;br /&gt;
&lt;br /&gt;
vr - скорость вращения при полете к списку предметов после клик в град/sec (float) &lt;br /&gt;
&lt;br /&gt;
fw - финальная ширина к которой надо уменьшится при подлете к финальной точке (int) &lt;br /&gt;
&lt;br /&gt;
fh - финальная высота к которой надо уменьшится при подлете к финальной точке (int). Объект не должен изменять своих пропорций, поэтому fw или fh (или оба) всегда отрицательны. &lt;br /&gt;
&lt;br /&gt;
fx - финальная координата x, к которой объект должен перелететь, при удачном клике (см. тип исчезания). (int) &lt;br /&gt;
&lt;br /&gt;
fy - финальная координата x, к которой объект должен перелететь, при удачном клике (см. тип исчезания). (int)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
[[файл:wrong.png|right|32px]]&lt;br /&gt;
        '''Внимание!'''  HiddenList не будет работать без объекта [[Редактор текстовых ресурсов#Упражнения|Options]], который вы должны были создать в предыдущем уроке, а так же без параметра ''id игры'' (Очковая система -&amp;gt; id игры; для теста заполним его любой строкой).&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Упражнения ==&lt;br /&gt;
&lt;br /&gt;
1. Щелкнув правой кнопкой мыши по экрану Lesson_7, создать новый экран Lesson_7_1.&lt;br /&gt;
&lt;br /&gt;
2. Создать новую сцену (с названием stg_7_1).&lt;br /&gt;
&lt;br /&gt;
3. Скопировать все объекты из сцены stg_7 (экрана Lesson_7). (Одновременно можно выделять или копировать только объекты одного типа)&lt;br /&gt;
&lt;br /&gt;
4. Вставить скопированные объекты в новую сцену stg_7_1.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Screenshot 1.png]] &lt;br /&gt;
&lt;br /&gt;
5. В новой сцене:&lt;br /&gt;
&lt;br /&gt;
a) добавить еще 3 графических ресурса и перевести в тип HiddenObject;&lt;br /&gt;
&lt;br /&gt;
b) разместить на местах предназначенных для их «Прятанья»;&lt;br /&gt;
&lt;br /&gt;
c) добавить текстовое описание в TextEditor;&lt;br /&gt;
&lt;br /&gt;
e) установить время игры 20 секунд, паузу 2 секунды с переходом на экран Lesson_7_1.&lt;br /&gt;
&lt;br /&gt;
== Настройка полноценной системы подсчета очков ==&lt;br /&gt;
&lt;br /&gt;
Экран lesson_7  необходимо модифицировать в полноценный уровень с выводом количества очков, игрой на время и графикой.&lt;br /&gt;
&lt;br /&gt;
Для этого создаем еще одну сцену 7_3 в первом экране с объектами, которые сделают игру полноценной: первый экран дополняем  2 счетчиками ([[counter]]), таймером ([[timer]]), машиной-блокатором ([[machine]]) и прогрессом ([[progress]]). Второй экран с выводом очков составим позже.&lt;br /&gt;
&lt;br /&gt;
 [[Файл:1.png]] &lt;br /&gt;
&lt;br /&gt;
Счетчик «amt» ([[counter]]) показывает сколько объектов найдено. Счетчик «score_H» ([[counter]]) насчитывает баллы за собранные объекты. Таймер ([[timer]]) запускается при старте игры и отсчитывает заданное время на игру, машина-блокатор «ban_H» блокирует сцену при серии ошибочных кликов. Прогресс «progr» ([[progress]]) активируется во время комбо.&lt;br /&gt;
&lt;br /&gt;
Чтобы всё заработало необходимо указать счетчики, таймер, машину-блокатор и прогресс в свойствах HiddenList ([[hiddenList]]).&lt;br /&gt;
&lt;br /&gt;
=== Счетчик ===&lt;br /&gt;
&lt;br /&gt;
В редакторе ресурсов выбираем анимацию и добавляем графику для счетчика. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
[[файл:wrong.png|right|32px]]&lt;br /&gt;
'''Внимание!'''  Если в редакторе ресурсов нету анимации, то [[Интерфейс_ResourceEditor#Анимация|создайте]] её -  это просто). Анимация создается с названием папки, в которой хранились картинки, избегайте кириллицы в названии  папок.&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 ‎[[Файл:Count 0.png]] ‎[[Файл:Count 1.png]] [[Файл:Count 2.png]] [[Файл:Count 3.png]] ‎[[Файл:Count 4.png]] [[Файл:Count 5.png]] ‎[[Файл:Count 6.png]] ‎[[Файл:Count 7.png]] ‎‎[[Файл:Count 8.png]] ‎[[Файл:Count 9.png]] ‎[[‎Файл:Coun (5).png]]&lt;br /&gt;
&lt;br /&gt;
Создаем объект сцены с типом «[[counter]]», в поле res перетаскиваем анимацию с цифрами от 0 до 9, разделитель уже указан в настройках. Настройки для счетчика:&lt;br /&gt;
&lt;br /&gt;
 [[Файл:243.png]]&lt;br /&gt;
&lt;br /&gt;
=== Таймер ===&lt;br /&gt;
&lt;br /&gt;
В свойствах таймера «[[timer]]» необходимо указать «значение» с которого начнется отсчет времени (18000 = 18 сек.). &lt;br /&gt;
В свойство «графика» из графического редактора перетаскиваем анимацию которую делали для счетчика и двоеточие или делаем его обычным шрифтом, редактируя в свойствах параметр '''шрифт'''. Настройки для таймера:&lt;br /&gt;
&lt;br /&gt;
 [[Файл:444.png]]&lt;br /&gt;
&lt;br /&gt;
Также стоит обновить настройки в HiddenObjectList , т.к. если мы их не укажем, то отсчет времени просто не начнется. Время таймера и время указанное в HiddenObjectList должны совпадать, иначе отсчет времени будет идти от меньшего времени вне зависимости указано оно в HOL или в таймере.&lt;br /&gt;
  [[Файл:HOL Time.png]]&lt;br /&gt;
&lt;br /&gt;
=== Прогресс ===&lt;br /&gt;
&lt;br /&gt;
[[Progress]] используют для отображения каких либо ачивментов, например когда игрок проходит уровень он может получить 1,2,3 звезды или бронзовую, серебряную, золотую или совершая необходимые действия в игре, например комбо. &lt;br /&gt;
Настройки для '''прогресса''' : &lt;br /&gt;
&lt;br /&gt;
 [[Файл:555.png]]&lt;br /&gt;
&lt;br /&gt;
Графика для Progress: [[Файл:666.png]]&lt;br /&gt;
&lt;br /&gt;
Настройки для машины-блокатора «ban_H» (machine) (подобъектe '''black''' изменяем тип на rectangle, более подробно о нем дальше):&lt;br /&gt;
&lt;br /&gt;
 [[Файл:Ban h na max.png]]&lt;br /&gt;
 [[Файл:9.png]]&lt;br /&gt;
&lt;br /&gt;
Настройки для '''hiddenList''':&lt;br /&gt;
&lt;br /&gt;
 [[Файл:HOL Final.png]]&lt;br /&gt;
&lt;br /&gt;
Группа - звезды combo num =1 - количество быстро найденных объектов, нужное для получения звезды Combo. Combo time = 3000 - интервал между кликами, считающимися быстрыми. Combo accuracy = 0,85 - точность кликов для получения звезды Accuracy (1 = 100%, все клики должны быть только удачные). Лимит ложных кликов = 5 - количество неверных кликов. Формула расчета его: количество верных кликов делим на общее количество получаем коэффициент, если он равен или больше указного нами, то в опции пишем параметр, если нет то не пишем.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
В HiddenList в разделе очковая система для сохранения данных в профиль необходимо указать '''id игры''' (например &amp;quot;hidden&amp;quot;).&lt;br /&gt;
Для HiddenList и Counter пункт &amp;quot;сохранить в профиль&amp;quot; должен совпадать. Если в HiddenList указано &amp;quot;глобально&amp;quot;, то и в Counter также необходимо установить &amp;quot;глобально&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Машина ''win_lose'' помогает определить победителя и вызывает соответствующее окно ''win'' после победы или поражения.&lt;br /&gt;
&lt;br /&gt;
Добавим правой кнопкой мыши функцию &amp;quot;разбор: изменить состояние объекта&amp;quot; и укажем там машину ''win_lose'' состояние win. Состояние lose укажем в таймере timer_H также через добавление функции правой копкой мыши &amp;quot;время истекло: изменить состояние объекта&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Настройка окна вывода ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Создаем новую сцену '''w''' и создаем в ней объект c типом machine ''win'', на которой формируем окно вывода результатов из ректангла ([[Rectangle]]), текстовых объектов и счетчиков. Окно&lt;br /&gt;
должно открываться по окончанию игры и при выигрыше показывать набранные очки и надпись об удаче, при проигрыше - нулевые очки и надпись о неудаче.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Example.jpg]]&lt;br /&gt;
&lt;br /&gt;
Графика для Rectangle rec: [[Файл:0001.png]] [[Файл:0002.png]] [[Файл:0003.png]] [[Файл:0004.png]] [[Файл:0005.png]] [[Файл:0006.png]] [[Файл:0007.png]] [[Файл:0008.png]] [[Файл:0009.png]] [[Файл:00010.png]]    &lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
[[файл:wrong.png|right|32px]]&lt;br /&gt;
'''Внимание!''' Rectangle black (Цвет задается в свойстве фон-&amp;gt;цвет заливки) используется в качестве фона, на котором будет размещаться всплывающие окно с показаниями результата пройденной игры. &lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 [[Файл:1012.png]] [[Файл:0102.png]] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Далее копируем Rectangle &amp;quot;black&amp;quot; и делаем подобъектом блокатора ban_H, а также меняем размеры rectangle black (устанавливаем не нулевые!), устанавливаем параметр фон и alpha на свое усмотрение.&lt;br /&gt;
&lt;br /&gt;
Создадим еще 5 счетчиков. Они нам понадобятся в конце игры для выведения бонусного счета.&lt;br /&gt;
&lt;br /&gt;
В свойствах счетчиков необходимо прописать уровень!&lt;br /&gt;
&lt;br /&gt;
1) счетчик 7_4_1 — игровые очки;&lt;br /&gt;
&lt;br /&gt;
уровень: last_game.score30_total&lt;br /&gt;
&lt;br /&gt;
2) счетчик 7_4_2 — бонус за время;&lt;br /&gt;
&lt;br /&gt;
уровень: last_game.score30_time&lt;br /&gt;
&lt;br /&gt;
3) счетчик 7_4_3 — бонус за аккуратность;&lt;br /&gt;
&lt;br /&gt;
уровень: last_game.score30_accuracy&lt;br /&gt;
&lt;br /&gt;
4) счетчик 7_4_4 — бонус за комбо;&lt;br /&gt;
&lt;br /&gt;
уровень: last_game.ecmbRowMax&lt;br /&gt;
&lt;br /&gt;
5) счетчик 7_4_5 — очки за уровень;&lt;br /&gt;
&lt;br /&gt;
уровень: last_game.score30_level&lt;br /&gt;
&lt;br /&gt;
[[Файл:Counters.png]]&lt;br /&gt;
&lt;br /&gt;
Важный аспект: после того как вы добавили last.game.xxx в графу уровень в каждом счетчике , графа игра должна остаться пустой и так же не стоит эти счетчики закидывать в HOL , т.к. одни и те же данные могут конфликтовать между собой. Также обязательным условием является включение графы “очки 3.0” в HOL`e.&lt;br /&gt;
&lt;br /&gt;
После создания счетчиков и установки уровней добавляем 5 текстовых объектов, которые описывают значения, выводящиеся счетчиками в конце игры в окне результатов (игровые очки, бонус за время и т.д.).&lt;br /&gt;
&lt;br /&gt;
=== Вывод итогов ===&lt;br /&gt;
&lt;br /&gt;
Настройки для машины — '''star1''' &lt;br /&gt;
(проверка в опциях параметра last_game.last_star_accuracy0, &lt;br /&gt;
last_game.last_star_time0, )&lt;br /&gt;
&lt;br /&gt;
 [[Файл:0303.png]]&lt;br /&gt;
&lt;br /&gt;
Настройки для машины — '''star2''' &lt;br /&gt;
(если параметр accuracy=0)&lt;br /&gt;
&lt;br /&gt;
 [[Файл:0304.png]]&lt;br /&gt;
&lt;br /&gt;
Настройки для машины — '''star3''' &lt;br /&gt;
(если игра пройдена за указанное время)&lt;br /&gt;
&lt;br /&gt;
 [[Файл:0305.png]]&lt;br /&gt;
&lt;br /&gt;
Настройки для машины — '''win'''&lt;br /&gt;
&lt;br /&gt;
 [[Файл:0306.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Машина '''win''' считывает «read» показания счетчика и запускает star1 если игра пройдена.&lt;br /&gt;
&lt;br /&gt;
Также создаем кнопку ''close'' (button), которая должна закрывать окно результатов. Добавляем &amp;quot;изменить состояние объекта&amp;quot;; объект win, состояние close. &lt;br /&gt;
&lt;br /&gt;
'''(Подсказка)''' Для того, чтобы перезагрузить сцену с '''hiddenList''' и начать игру заново, в машине можно использовать команду '''set''' с параметром '''next_scr'''.&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;
{| width=&amp;quot;100%&amp;quot;  &lt;br /&gt;
 | width=&amp;quot;40%&amp;quot;|[[Редактор текстовых ресурсов|Урок 6]] &amp;lt;&amp;lt; &lt;br /&gt;
 ! width=&amp;quot;20%&amp;quot;|[[Learning|Оглавление]] &lt;br /&gt;
 | width=&amp;quot;40%&amp;quot; align=&amp;quot;right&amp;quot;| &amp;gt;&amp;gt; [[Настройка миниигр|Урок 8]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:Learning]]&lt;/div&gt;</summary>
		<author><name>Dopryshko</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.appsalutecreator.com/index.php?title=%D0%A0%D0%B5%D0%B4%D0%B0%D0%BA%D1%82%D0%BE%D1%80_%D1%82%D0%B5%D0%BA%D1%81%D1%82%D0%BE%D0%B2%D1%8B%D1%85_%D1%80%D0%B5%D1%81%D1%83%D1%80%D1%81%D0%BE%D0%B2&amp;diff=10007</id>
		<title>Редактор текстовых ресурсов</title>
		<link rel="alternate" type="text/html" href="https://wiki.appsalutecreator.com/index.php?title=%D0%A0%D0%B5%D0%B4%D0%B0%D0%BA%D1%82%D0%BE%D1%80_%D1%82%D0%B5%D0%BA%D1%81%D1%82%D0%BE%D0%B2%D1%8B%D1%85_%D1%80%D0%B5%D1%81%D1%83%D1%80%D1%81%D0%BE%D0%B2&amp;diff=10007"/>
		<updated>2021-04-22T13:42:31Z</updated>

		<summary type="html">&lt;p&gt;Dopryshko: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| width=&amp;quot;100%&amp;quot;  &lt;br /&gt;
 | width=&amp;quot;40%&amp;quot;|[[Движение машин: жучки, ключи и многое другое|Урок 5]] &amp;lt;&amp;lt; &lt;br /&gt;
 ! width=&amp;quot;20%&amp;quot;|[[Learning|Оглавление]] &lt;br /&gt;
 | width=&amp;quot;40%&amp;quot; align=&amp;quot;right&amp;quot;| &amp;gt;&amp;gt; [[Создание игры «Hidden Object Game»|Урок 7]]&lt;br /&gt;
|}&lt;br /&gt;
----&lt;br /&gt;
{{TOC right}}&lt;br /&gt;
----&lt;br /&gt;
'''Цель:''' научится пользоваться редактором текстовых ресурсов на примере использования объекта типа &amp;quot;text&amp;quot;&lt;br /&gt;
&lt;br /&gt;
'''Задачи:''' &lt;br /&gt;
* Cоздать новый экран и сцену для этого урока.&lt;br /&gt;
* Вывести на экран последовательно два текста с помощью двух текстовых объектов.&lt;br /&gt;
* Вывести на экран эти же тексты, но с помощью только одного текстового объекта.&lt;br /&gt;
&lt;br /&gt;
== Объект Text ==&lt;br /&gt;
&lt;br /&gt;
=== Подготовка ===&lt;br /&gt;
&lt;br /&gt;
Начнём урок, как обычно,  с открытия проекта lessons. В нём добавим новый экран lesson_6&lt;br /&gt;
со сценой stg_main, так как это было описано в предыдущем [[Создание экранов, сцен. Работа с кнопками|уроке]]. Поместим из редактора ресурсов на сцену любой фон из папки этого или предыдущего  урока. Для примера далее используется &amp;quot;лунный пейзаж&amp;quot; (картинка '''bg''').&lt;br /&gt;
&lt;br /&gt;
[[Файл:Lesson6_1.jpg|right]]&lt;br /&gt;
Поверх фона поместите на сцену картинку ввиде стрелки вправо. Назовите ее '''button_next'''. Выберите для нее тип '''machine'''. Кликая на сцене правой кнопкой мыши, выберете пункт из выпадающего меню &amp;quot;Создать объект в текущем элементе&amp;quot;. Новый объект переименуйте в Text и выберите для него тип '''[[Text|Text]]'''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Меняем текст машиной ===&lt;br /&gt;
&lt;br /&gt;
Для того, чтобы было что менять, скопируем объект Text и вставим его в этой же сцене. Переименуем его в text2. Так как эти два объекта без графического ресурса, то на сцене мы можем их видеть как пустые рамки (зеленая рамка, если объет выделен, и красная - если не выделен).&lt;br /&gt;
[[Файл:Lesson6_2.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Text_prop.png‎|right]]&lt;br /&gt;
Посмотрим на свойства объекта Text. В поле &amp;quot;текст&amp;quot; впишем &amp;quot;Первая часть текста&amp;quot;. В поле &amp;quot;шрифт&amp;quot; в строке &amp;quot;цвет 1&amp;quot; выберем белый цвет. В свойствах объекта text2 в поле текст впишем &amp;quot;Вторая часть текста&amp;quot;. Цвет шрифта поставим такой же. Таким образом, мы получили две текстовых надписей на сцене, которые располагаются одна поверх другой. Если мы сейчас сохраним проект и запустим, то обе надписи будут видны одновременно, что затруднит их читаемость. Для того, чтобы мы могли без проблем их прочитать, сделаем переключение текстов по нажатию на кнопку. На самом деле, '''button_next''' только выглядит как кнопка - это машина состояний. Пропишем для нее логику таким образом, чтобы при нажатии на машину, она по-очереди делала видимым то один текст, то другой. Создайте для этой машины следующие состояния.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Lesson6_4.jpg]]&lt;br /&gt;
&lt;br /&gt;
За видимость объектов отвечает параметр '''vis'''. Если vis=0, то объект не видно, если 1 - видно. По клику осуществляется переход между состояниями. Сохраните проект и запустите этот экран. Вы видите, что по клику на кнопку текст изменяется.&lt;br /&gt;
[[Файл:Lesson6_5.jpg]]&lt;br /&gt;
&lt;br /&gt;
Переключать текстовые объекты можно еще несколькими способами:&lt;br /&gt;
&lt;br /&gt;
- менять параметр '''al''' (alpha); это позволит делать текст полупрозрачным (в отличии от '''vis''', параметр '''al''' может принимать промежуточные значения между 0 и 1);&lt;br /&gt;
&lt;br /&gt;
- менять текстовому объекту состояние; как известно, у объекта [[Text#Состояния | text]] есть 3 состояния '''first''', '''next''', '''end''', чтобы текст стал видимым, достаточно передать ему состояние '''first''', чтобы текст исчез, достаточно передать ему состояние '''end'''.&lt;br /&gt;
&lt;br /&gt;
== Создаем текстовую базу ==&lt;br /&gt;
&lt;br /&gt;
В предыдущем примере мы научились вставлять текстовые объекты на сцену и менять их видимость. Все это мы сделали не имея текстовой базы. Текстовая база предназначена для хранения всей текстовой информации вашего проекта, с возможностью мультиязычной поддержки. Она значительно облегчает управление текстом в проекте.&lt;br /&gt;
&lt;br /&gt;
Для вызова текстового редактора можно воспользоваться меню '''Tools -&amp;gt; [[Интерфейс TextEditor|Text Editor]]''', либо кнопкой быстрого запуска [[Файл:Text_base.png‎]].&lt;br /&gt;
Сначала текстовая база будет отсутствовать, поэтому ее нужно создать. Заходите в пункт меню '''file -&amp;gt; New'''. Появляется пустая база ресурсов, по умолчанию названная '''Untitled'''. Ее можно переименовать как вам удобней. Аналогично как в редакторе ресурсов слева вы видите дерево текстовых объектов. Нажимаем правой кнопкой по названию базы Untitled и выбираем ''add folder'''. Таким образом мы создали новую папку. Назовем ее lesson_6. Нажимая по папке правой кнопкой выбираем '''Add record'''. Каждый раз при добавлении новой текстовой записи редактор просит нас написать ее имя. Это имя можно будет изменить в любой момент. Запишем имя first_part. Создавать папки и записи можно также с помощью кнопок быстрого доступа на панели. Выделим папку lesson_6 и нажмем на значок &amp;quot;Add record&amp;quot;. Запишем имя новой текстовой записи second_part.&lt;br /&gt;
[[Файл:Именитый.png|600px]]&lt;br /&gt;
&lt;br /&gt;
Пока эти текстовые записи пустые. Для того чтобы заполнить их, выделим первую запись. Справа мы видим столбцы '''word''', '''sentence1''', '''sentence2''' и '''voice'''. В данном уроке нам понадобится только первый столбец '''word'''. Об остальных подробнее узнаете в следующем уроке. В строках записывается текст на разных языках. Запишем текст на русском и его перевод на английский в соответствующие поля. Для first_part - Первая часть текста (The first part of the text), для second_part - Вторая часть текста (The second part of the text). Запись на разных языках позволяет, в зависимости от локализации мобильного устройства, выбирать язык текстовых объектов.&lt;br /&gt;
&lt;br /&gt;
Для того что бы добавить какой-либо язык в базу данных необходимо выполнить следующие действия:&lt;br /&gt;
1) Проходим путь Project/Properties/Select languages…&lt;br /&gt;
&lt;br /&gt;
[[Файл:Добавление языка (1).png|600px]]&lt;br /&gt;
&lt;br /&gt;
2) После этого необходимо выбрать языки которые вы хотите добавить&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Добавление_языка_(2).png|400px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3) Можете похвалить себя&lt;br /&gt;
&lt;br /&gt;
Если вы добавили языки, но они не видны, проверьте, не создали ли вы случайно свою папку в папке Untranslatable.&lt;br /&gt;
&lt;br /&gt;
Чтобы корректно пользоваться текстовой базой после каждого ее изменения, ее необходимо сохранять. Можно воспользоваться кнопками быстрого доступа и нажать на значок дискеты. При первом сохранении текстовый редактор просит вас выбрать место сохранения и имя файла. Сохраним его в папку с проектом lessons и назовем text_base. Также текстовую базу нужно подвязать к базе ресурсов. Для этого заходим в пункт меню '''Resource -&amp;gt; Choose Resource File'''. Выбираем папку, в которая является базой ресурсов проекта и выбираем файл с расширением '''.sirx'''  . Вернемся теперь к редактору сцен. &lt;br /&gt;
В пункте меню '''Project -&amp;gt; Project options''' выбираем вкладку '''Text database''' и указываем путь к нашей текстовой базе '''text_base.xml'''  .&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
[[файл:wrong.png|right|32px]]&lt;br /&gt;
'''Внимание!'''  Во время роботы в редакторе, когда вы создаете новый проект, автоматически создается и текстовая база. В данном уроке вам лишь нужно внести изменения в уже существующую базу '''File -&amp;gt; Open -&amp;gt; \\....\\text.xml'''.&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Каждый объект текстовой базы имеет свой уникальный '''id'''. Мы можем вызывать текст из текстовой базы меняя текстовому объекту на сцене этот id с помощью кнопки или машины состояний.&lt;br /&gt;
&lt;br /&gt;
Давайте сделаем это на примере нашего проекта.&lt;br /&gt;
Так как теперь мы будем пользоваться только одним текстовым объектом на сцене, то второй text2 можно удалить. В объекте text удалим из пункта текст запись &amp;quot;Первая часть текста&amp;quot;. Перепишем также немного состояния нашей машины. В поле '''val_txt''' мы записываем id текста путем перетаскивания его из текстовой базы.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Lesson6_7.jpg]]&lt;br /&gt;
&lt;br /&gt;
Теперь в состояниях машины мы присваиваем нашему объекту text только текстовые id из текстовой базы. Сохраняем проект и запускаем. Результат тот же, что и в первом случае. Заметим, что на сцене стало на один объект меньше, а состояния машины сократились на одну строчку. Может это не существенно в таком маленьком проекте, но в больших проектах количество объектов и величина исполняемого файла может стать решающей причиной к упрощению кода.&lt;br /&gt;
&lt;br /&gt;
== Упражнения ==&lt;br /&gt;
&lt;br /&gt;
* Добавьте в текстовую базу еще несколько записей.&lt;br /&gt;
* Расширьте состояния машины, чтобы последовательно вывести на экран все текстовые записи.&lt;br /&gt;
* Поменяйте язык приложения, используя объект '''[[Options|Options]]'''.&lt;br /&gt;
До сих пор мы изучали объекты и их свойства для каждого определенного экрана. Рассмотрим возможность изменять параметры всего приложения.&lt;br /&gt;
Будем изменять язык приложения. Для этого необходимо ознакомится с объектом Options.&lt;br /&gt;
&lt;br /&gt;
'''Options''' — объект, который используется для хранения и управления глобальными параметрами приложения. Также Options позволяет хранить и использовать параметры записанные в него другими объектами.&lt;br /&gt;
&lt;br /&gt;
В проекте lessons создаем новый экран, для которого в свойствах устанавливаем глобальный&lt;br /&gt;
&lt;br /&gt;
[[Файл:Глобальный.PNG]]&lt;br /&gt;
&lt;br /&gt;
В экране '''opt''' создадим сцену '''opt'''. Создадим на сцене opt новый объект, переименуем его в '''Options'''. Поменяем ему тип на option (Option → option).&lt;br /&gt;
&lt;br /&gt;
[[Файл:Опции.PNG]]&lt;br /&gt;
&lt;br /&gt;
Создадим в проекте новый экран '''lessons_6_1''' со сценой '''6_1'''. В сцену из проекта '''lessons_6''' копируем объекты '''bg_1''', '''button_next''', Text не изменяя их параметры. Перенесем на сцену из редактора ресурсов, из папки lessons_2, объекты: '''arrow_lf_norm''' и '''arrow_rt_norm'''. Переименуем,  arrow_lf_norm в '''en''',  arrow_rt_norm в '''ru''', и сделаем их машинами. Добавляем ниже на сцену новый объект, изменяем ему тип на '''[[Groupset|Groupset]]''' и имя на '''groupset'''. Щелкаем в свойствах по имени правой кнопкой мыши, добавляем в свойства объект, из списка объектов выбираем Text.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Группа.PNG]]&lt;br /&gt;
&lt;br /&gt;
'''Описание объекта Groupset'''&lt;br /&gt;
&lt;br /&gt;
'''Groupset (группа)'''  позволяет передавать состояния и параметры множеству объектов, которые являются участниками группы. Участником группы является любой объект, указанный в в объекте Groupset.&lt;br /&gt;
&lt;br /&gt;
Groupset удобно использовать, когда необходимо обращаться к множеству объектов.&lt;br /&gt;
Если объекту Groupset передается состояние (например st_1), то все объекты принадлежащие объекту Groupset должны иметь состояние st_1, иначе возникнет ошибка.&lt;br /&gt;
&lt;br /&gt;
Объекты принадлежащие одной группе могут быть разного типа и разноименными.&lt;br /&gt;
&lt;br /&gt;
Команды применимые к группе:&lt;br /&gt;
&lt;br /&gt;
• ''set'' — группе можно установить состояние st и параметр (значение) par(val);&lt;br /&gt;
&lt;br /&gt;
• ''drop'' —  на группу (объекты принадлежащие группе) можно отпустить объект.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Для каждой из добавленных машин запишем состояния.&lt;br /&gt;
&lt;br /&gt;
Машина en:&lt;br /&gt;
&lt;br /&gt;
[[Файл:En.PNG]]&lt;br /&gt;
&lt;br /&gt;
Машина ru&lt;br /&gt;
&lt;br /&gt;
[[Файл:Ru.PNG]]&lt;br /&gt;
&lt;br /&gt;
Как видно, в состоянии on, каждой машины, задается lang (язык) в глобальном объекте Options. В состояние r  Groupset передается состояние init (инициализация объекта).&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;
{| width=&amp;quot;100%&amp;quot;  &lt;br /&gt;
 | width=&amp;quot;40%&amp;quot;|[[Движение машин: жучки, ключи и многое другое|Урок 5]] &amp;lt;&amp;lt; &lt;br /&gt;
 ! width=&amp;quot;20%&amp;quot;|[[Learning|Оглавление]] &lt;br /&gt;
 | width=&amp;quot;40%&amp;quot; align=&amp;quot;right&amp;quot;| &amp;gt;&amp;gt; [[Создание игры «Hidden Object Game»|Урок 7]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:Learning]]&lt;/div&gt;</summary>
		<author><name>Dopryshko</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.appsalutecreator.com/index.php?title=Checkbox_%D0%BA%D0%B0%D0%BA_%D0%BC%D0%B0%D1%88%D0%B8%D0%BD%D0%B0_%D1%81%D0%BE%D1%81%D1%82%D0%BE%D1%8F%D0%BD%D0%B8%D0%B9&amp;diff=10006</id>
		<title>Checkbox как машина состояний</title>
		<link rel="alternate" type="text/html" href="https://wiki.appsalutecreator.com/index.php?title=Checkbox_%D0%BA%D0%B0%D0%BA_%D0%BC%D0%B0%D1%88%D0%B8%D0%BD%D0%B0_%D1%81%D0%BE%D1%81%D1%82%D0%BE%D1%8F%D0%BD%D0%B8%D0%B9&amp;diff=10006"/>
		<updated>2021-04-22T13:39:09Z</updated>

		<summary type="html">&lt;p&gt;Dopryshko: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| width=&amp;quot;100%&amp;quot;  &lt;br /&gt;
 | width=&amp;quot;40%&amp;quot;|[[Создание экранов, сцен. Работа с кнопками|Урок 2]] &amp;lt;&amp;lt; &lt;br /&gt;
 ! width=&amp;quot;20%&amp;quot;|[[Learning|Оглавление]] &lt;br /&gt;
 | width=&amp;quot;40%&amp;quot; align=&amp;quot;right&amp;quot;| &amp;gt;&amp;gt; [[Взаимодействие машин: «Лампочка» и «Светофор»|Урок 4]]&lt;br /&gt;
|}&lt;br /&gt;
----&lt;br /&gt;
{{TOC right}}&lt;br /&gt;
&lt;br /&gt;
'''Цель:''' изучить понятие машины состояний на примере объекта Checkbox&lt;br /&gt;
&lt;br /&gt;
'''Задачи:''' &lt;br /&gt;
* Cоздать новый экран и сцену для этого урока.&lt;br /&gt;
* При помощи объекта Checkbox заставит слонёнка поворачивать голову.&lt;br /&gt;
* Воспроизвести этого же слонёнка при помощи машины состояний.&lt;br /&gt;
* Добавить разнообразия в поведении слонёнка.&lt;br /&gt;
* Создать эмоциональную рожицу. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Checkbox ==&lt;br /&gt;
&lt;br /&gt;
=== Подготовка ===&lt;br /&gt;
&lt;br /&gt;
Начнём урок, как обычно,  с открытия проекта lessons. В нём добавим новый экран lesson_3&lt;br /&gt;
со сценой stg_main, так как это было описано в предыдущем [[Создание экранов, сцен. Работа с кнопками|уроке]]. Поместим из редактора ресурсов на сцену любой фон из папки этого или предыдущего  урока. Для примера далее используется &amp;quot;лунный пейзаж&amp;quot; (картинка '''bg''').&lt;br /&gt;
&lt;br /&gt;
[[файл:lesson_3_chk1.png|right]]&lt;br /&gt;
Поверх фона перетащите из редактора ресурсов тело слонёнка (ресурс '''body''')&lt;br /&gt;
и затем его голову '''head_1'''. Расположите их так, чтобы получился примерно целый слонёнок.&lt;br /&gt;
Переименуйте эти 2 объекта в '''elephant_body''' и '''elephant_head_chk'''&lt;br /&gt;
(помним о необходимости осмысленности в именах объектов?). Чтобы голова и тело стали &amp;quot;целым&amp;quot; существом, стоит в дереве проекта (Layout) перетащить голову на тело, сделав её подобъектом.&lt;br /&gt;
Теперь, если на сцене начать таскать тело слоненка, то голова будет послушно следовать за ним.&lt;br /&gt;
Хотя, если схватить за голову, то её легко можно оторвать. Так, что будьте со слоненком поласковее.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Внимание!!!''' Подобъект наследует все модификации своего родителя. Если, к примеру, изменить '''scale x''' и '''scale y''' родительскому объекту, у дочернего точно также изменится '''scale x''' и '''scale y'''. &lt;br /&gt;
Более того, изменения могут накладываться друг на друга. Если дочерний объект был, как вариант, уменьшен с помощью тех же '''scale x''' и '''scale y''', а потом вы уменьшили родительский, то дочерний объект рискует уменьшиться еще сильнее. '''Будьте внимательны!'''&lt;br /&gt;
&lt;br /&gt;
=== Создание чекбокса ===&lt;br /&gt;
&lt;br /&gt;
[[файл:lesson_3_chk.png|right]]&lt;br /&gt;
Зайдем в свойство головы '''elephant_head_chk''' и изменим её тип на '''[[Checkbox|checkbox]]'''.&lt;br /&gt;
Раскроем треугольнички возле свойств &amp;quot;'''не отмечена (внешний вид)'''&amp;quot; и &amp;quot;'''отмечена (внешний вид)'''&amp;quot;. Поля '''не отмечена (внешний вид)''' и '''отмечена (внешний вид)''' содержат по три ресурса (&amp;lt;tt&amp;gt;up, down и over&amp;lt;/tt&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
'''Не отмечена (внешний вид):'''&lt;br /&gt;
&amp;lt;tt&amp;gt;up&amp;lt;/tt&amp;gt; - так выглядит чекбокс, пока мы на него не нажали;&lt;br /&gt;
&amp;lt;tt&amp;gt;down&amp;lt;/tt&amp;gt; - так выглядит чекбокс, если мы на него нажмём, но не откликнем в не нажатом состоянии;&lt;br /&gt;
&amp;lt;tt&amp;gt;over&amp;lt;/tt&amp;gt; – так выглядит чекбокс, если мы на него наведём мышкой, в не нажатом состоянии.&lt;br /&gt;
&lt;br /&gt;
'''Отмечена (внешний вид):'''&lt;br /&gt;
&amp;lt;tt&amp;gt;up&amp;lt;/tt&amp;gt; - так выглядит чекбокс, когда мы на него нажали;&lt;br /&gt;
&amp;lt;tt&amp;gt;down&amp;lt;/tt&amp;gt; - так выглядит чекбокс, если мы на него нажмём, но не откликнем в нажатом состоянии;&lt;br /&gt;
&amp;lt;tt&amp;gt;over&amp;lt;/tt&amp;gt; – так выглядит чекбокс, если мы на него наведём мышкой, в нажатом состоянии.&lt;br /&gt;
Разместим поверх окна редактор ресурсов и перетащим в поле '''up''' первой группы (не отмечена) картинку '''head_1''', а в такое же поле второй группы (отмечена) картинку '''head_2'''.&lt;br /&gt;
Делается это также, как и формирование внешнего вида кнопки из предыдущего [[Создание экранов, сцен. Работа с кнопками|урока]].&lt;br /&gt;
&lt;br /&gt;
Сохраняем проект и запускаем вьювер. При клике на голову слонёнка она должна туда-сюда поворачиваться. Вы узнали в этом поведении чекбокс?&lt;br /&gt;
Обычно  чекбоксы (сheckbox) это такие квадратики в которых ставят или убирают галочку.&lt;br /&gt;
Конечно и в игровом приложении может понадобиться подобный чекбокс.&lt;br /&gt;
В этом случае необходимо будет подготовить соответствующие картинки.&lt;br /&gt;
Простые игровые объекты (типа подобной головы) часто могут находиться в двух состояниях (выбран, не выбран). Они не похожи на чекбокс внешним видом, но являются им в силу правил своего поведения.&lt;br /&gt;
&lt;br /&gt;
Теперь наша задача состоит в воспроизведении поведения чекбокса при помощи объекта&lt;br /&gt;
другого типа - '''[[Machine|машины состояний]]'''. Мы не только повторим вращающего головой слоненка,&lt;br /&gt;
но и придадим его поведению новые функции.&lt;br /&gt;
&lt;br /&gt;
== Машины состояний ==&lt;br /&gt;
&lt;br /&gt;
=== Немного теории ===&lt;br /&gt;
&lt;br /&gt;
''Машина состояний (state machine)'' является универсальным инструментом для программирования в редакторе сцен сложного поведения объектов.  Логика поведения машины состояний разбивается на отдельные узлы (состояния). Объект всегда находится строго в одном состоянии. Переход из одного состояния в другое происходит либо в результате внешнего воздействия на объект, либо в результате окончания некоторых процессов протекающих внутри объекта. &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;
Перейдем теперь от нудной теории к веселой практике. Посмотрим внимательно на поведение головы слоненка, которая является чекбоксом. На самом деле это типичная машина состояний с двумя состояниями. Назовём их '''left''' и '''right''' по направлению ориентации головы слонёнка. Сначала слоненок находится в состоянии  left (смотрит влево). Когда мы кликаем в голову, машина переходит в новое состояние right (голова поворачивается вправо). Это поведение жестко запрограммированно внутри объекта checkbox. Попробуем добиться того же эффекта, используя универсальный игровой объект &amp;quot;машина состояний&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
Прежде всего не поленимся нарисовать весёлый граф состояний и переходов между ними:&lt;br /&gt;
&lt;br /&gt;
[[файл:lesson_3_states.png|center|300px]]&lt;br /&gt;
&lt;br /&gt;
Теперь, когда на бумаге всё стало ясно :), необходимо эту машину создать в редакторе.&lt;br /&gt;
&lt;br /&gt;
=== Создание машины ===&lt;br /&gt;
&lt;br /&gt;
Чтобы не тратить время на редактор ресурсов, скопируем уже существующего слонёнка. &lt;br /&gt;
Для этого станем в дереве проекта на его тело (elephant_body) и правой кнопкой мыши вызовем меню.&lt;br /&gt;
В нём выбираем пункт Copy. Затем повторяем операцию, но выбираем уже пункт вставить (&amp;quot;''Paste after curent object''&amp;quot;). В дереве проекта появятся два слоненка. Причем оба будут иерархичной веткой,&lt;br /&gt;
состоящей из &amp;quot;тела&amp;quot; (elephant_body) и подобъекта &amp;quot;голова&amp;quot; (elephant_head).&lt;br /&gt;
А вот на сцене редактора видимых изменений не произойдет.&lt;br /&gt;
Мы помним, что при копировании объектов копируются также все их свойства.&lt;br /&gt;
Поэтому на сцене, на самом деле, два слоненка, но они имеют одинаковые координаты.&lt;br /&gt;
Поэтому хватаемся за тело и тащим его правее на свободное место:&lt;br /&gt;
&lt;br /&gt;
[[файл:lesson_3_2elephants.png|600px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Левого слона оставим чекбоксом, а голову правого превратим в [[Machine|машину состояний]].&lt;br /&gt;
Для этого кликаем в голову и меняем её тип с checkbox на '''machine''' (поле '''тип''' в панели Properties). Поменяем также имя головы, укоротив его до &amp;quot;'''elephant_head'''&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Можно попробовать посмотреть, что у нас получилось. Сохраняем проект и запускаем вьювер.&lt;br /&gt;
Упс... Голова исчезла, а вверху экрана появилось малопонятное ругательство,&lt;br /&gt;
из которого можно заключить, что у объекта elephant_head состояний то и нет.&lt;br /&gt;
&lt;br /&gt;
Таким образом, не достаточно создать машину, её еще необходимо научить ездить.&lt;br /&gt;
Поэтому закрываем окно вьювера и начинаем заниматься программированием.&lt;br /&gt;
&lt;br /&gt;
=== Программирование состояний ===&lt;br /&gt;
&lt;br /&gt;
Сделаем активной голову правого слонёнка, которая стала машиной состояний.&lt;br /&gt;
В панели её свойств кликаем на поле '''states''', а затем на появившиеся в нём три точки (помним [[Введение в AppSalute Сreator|первый урок]]?). Также открыть машину состояний, можно двойным щелчком левой клавиши мыши. В результате этих действий, выскочит окошко в котором мы будем создавать состояния &lt;br /&gt;
и их программировать. Два раза нажмём кнопку '''Добавить состояние''' в левом нижнем углу окна:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[файл:lesson_3_states1.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
В результате появилось две области, каждая из которых будущее состояние головы.&lt;br /&gt;
Зададим имена состояний, введя названия left и right в полях '''имя''' каждой области.&lt;br /&gt;
Затем станем мышкой на поле '''имя''' левого состояния и нажмём правую кнопку мышки.&lt;br /&gt;
Появится большое меню, в котором кликнем на первый пункт &amp;quot;''draw - внешний вид''&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[файл:lesson_3_states2.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
В левом состояни под его именем добавится команда '''draw'''.&lt;br /&gt;
Эта команда управляет способом отрисовки машины в данном состоянии.&lt;br /&gt;
Нам потребуется ещё одна команда '''click''', которую добавим аналогичным&lt;br /&gt;
образом (правая кнопка мыши на команде draw).&lt;br /&gt;
&lt;br /&gt;
В команды необходимо добавить параметры, определяющие их свойства.&lt;br /&gt;
Для этого кликнем справа от draw и затем ещё раз на появившиеся три точки.&lt;br /&gt;
В выскочившем диалоговом окне поставим галочку возле пункта &amp;quot;''графический ресурс''&amp;quot;&lt;br /&gt;
и нажмем кнопку Ok:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[файл:lesson_3_states_dlg.png]]&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
Аналогично кликаем на команду '''click''' и добавляем ей параметр &amp;quot;''go - новое состояние''&amp;quot;.&lt;br /&gt;
Те же действие проделываем с правым состоянием. В результате должно получиться:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[файл:lesson_3_states3.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Осталось заполнить поля команд. В поле go команды click левого состояния пишем '''right''',&lt;br /&gt;
а в тоже поле правого состояния пишем '''left'''. Это означает, что при клике машина должна перейти  в то состояние, которое указано в поле go. Имена состояний вводятся с клавиатуры руками,&lt;br /&gt;
поэтому необходимо следить за правильностью их написания.&lt;br /&gt;
&lt;br /&gt;
Теперь откроем окно редактора ресурсов. Сделав активным значение поля '''res''' команды draw левого состояния, перетащим в него из ресурсов картинку '''head_1'''. В аналогичное поле правого состояния перетащим картинку '''head_2'''. Делается это точно так, как мы задавали поля внешнего вида кнопки или чекбокса в панели Properties. Финальный результат наших действий&lt;br /&gt;
приводит к следующей машине (мы не будем больше приводить всё окно редактирования состояний):&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[файл:lesson_3_states4.png]]&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;
Поэтому имеет смысл сначала создать одно состояние (left),&lt;br /&gt;
наполнить его командами и параметрами. Затем нажать кнопку &amp;quot;Скопировать состояние&amp;quot;.&lt;br /&gt;
Состояние продублируется и останется только подправить его параметры.&lt;br /&gt;
&lt;br /&gt;
Машины состояний, как и другие объекты, можно копировать вместе со всеми их состояниями. Поэтому, если уже есть  машина, похожая на ту, которую надо создать, мы её просто копируем и подправляем команды и их параметры.&lt;br /&gt;
&lt;br /&gt;
Если машина создается из картинки, изменением типа, то не стоит глазами искать слово '''machine''' в списке типов. Необходимо на клавиатуре нажать клавишу '''M''' и затем '''Enter'''.&lt;br /&gt;
Вообще, активнее пользуйтесь горячими клавишами. Например, если в дереве проекта (Layout)&lt;br /&gt;
активна машина, то нажатие '''Ctrl+M''' приведет к открытию окна редактирования состояний.&lt;br /&gt;
&lt;br /&gt;
При запуске проекта во вьювере можно следить за отладочной информацией о состояниях объектов.&lt;br /&gt;
Это помогает понять почему что-то работает не так как надо. &lt;br /&gt;
&lt;br /&gt;
:'''Важно''' !!! Чтобы отладочная информация отображалась нужно для каждого наблюдаемого объекта (машины), поставить в поле отладка значение '''вкл'''.&lt;br /&gt;
&lt;br /&gt;
Запустим вьювер и нажмём кнопку &amp;quot;'''F1'''&amp;quot;. Появится небольшое меню с командами, которое гасится повторным нажатием F1. Кнопка &amp;quot;'''S'''&amp;quot;  (на клавиатуре) выводит список всех активных объектов на сцене. Если текст информации совпадает с текстом фона, то эта информация будет плохо видна. В этом случае необходимо несколько раз нажать клавишу &amp;quot;'''C'''&amp;quot;, меняя по кругу цвет текста.&lt;br /&gt;
&lt;br /&gt;
Первые две колонки отладочной информации, это имя сцены и объекта. В колонке state видно текущее состояние. Понажимайте на голову слоненка, наблюдая как его состояние меняется с left на right и наоборот.&lt;br /&gt;
&lt;br /&gt;
Запустите теперь во вьювере экран первого урока и нажмите &amp;quot;'''S'''&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;
а не как машину состояний. Поэтому прежде чем хвататься за шестеренку, стоит сначала подумать&lt;br /&gt;
о том, каким игровым объектом можно реализовать данное поведение.&lt;br /&gt;
&lt;br /&gt;
При работе над проектами, некоторые машины иногда повторяются. Их конечно можно копировать, подправляя соответствующие поля команд. Однако, на определенном этапе, возможно, стоит начать дергать руководство и С++ программистов, чтобы они оформили эту &amp;quot;типовую&amp;quot; машину в виде отдельного игрового объекта. Как это, например, сделано с чекбоксом или кнопкой.&lt;br /&gt;
&lt;br /&gt;
Если Вы пытаетесь сделать что-то при помощи машины состояний, но получается очень громоздкий объект (куча состояний, переходов, команд), значит Вы делаете что-то не так.&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;
Это означает выбор осмысленных имен объектов и заполнение поля &amp;quot;'''описание'''&amp;quot;,&lt;br /&gt;
находящееся у большинства сложных объектов в Properties.&lt;br /&gt;
Для машин это поле находится в окне редактирования состояний, сразу под состояниями.&lt;br /&gt;
Например, в нашем случае текст документации может выглядеть примерно так: &amp;quot;''При клике на голову она поворачивается влево или в право''&amp;quot;.&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
'''Правильно работающий незадокументированный проект - это плохой проект.'''&lt;br /&gt;
&amp;lt;/blockquote&amp;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;
Для реализации этого поведения добавим в состояние '''right''' команду '''wait''' c параметром '''t''', равным 1000 миллисекундам (что равно одной секунде) и параметром '''go'''=left&lt;br /&gt;
В результате должна получиться такая машина:&lt;br /&gt;
&lt;br /&gt;
[[файл:lesson_3_states5.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
До сих пор, переход из одного состояния в другое происходил в результате клика на машину.&lt;br /&gt;
Это было внешнее воздействие.&lt;br /&gt;
Однако, переход между состояниями может происходить в результате некоторых процессов внутри состояния.&lt;br /&gt;
В нашем случае, при заходе в правое состояние начинает работать команда '''wait'''. Она&lt;br /&gt;
ждет в течении времени, определяемом полем '''t'''. Затем, если задано поле '''go''', машина сама инициирует переход в соответствующее состояние.&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;
[[файл:lesson_3_states6.png]]&lt;br /&gt;
&lt;br /&gt;
В результате слонёнок начнет нерегулярно крутит головой то влево, то вправо.&lt;br /&gt;
В каждом состоянии он будет находиться  случайное время от 1-й до 3-х секунд.&lt;br /&gt;
Это определяется параметрами '''t''' и '''dt''', которые задают&lt;br /&gt;
интервал времени от t-dt до t+dt.&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;
[[файл:smiles.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Разберемся, что нарисовано на картинке. Каждая рожица - это отдельное состояние,&lt;br /&gt;
отражающее настроение нашего существа. Стрелки - переходы между состояниями&lt;br /&gt;
по командам '''click''' и '''wait'''.&lt;br /&gt;
&lt;br /&gt;
Начинает работать существо из состояния [[файл:s1.png|24px]].&lt;br /&gt;
Как и любые существа, Оно любит внимание. &lt;br /&gt;
Поэтому, при клике переходит в более жизнерадостное состояние [[файл:s2.png|24px]].&lt;br /&gt;
Если больше на него не кликать, Оно опять вернется в начальное состояние,&lt;br /&gt;
а спустя еще какое то время начнет плакать [[файл:s5.png|24px]], из-за полного отсутствия&lt;br /&gt;
внимания. Впрочем, небольшой клик - и Оно снова довольно жизнью.&lt;br /&gt;
&lt;br /&gt;
Обратим внимание на последовательность состояний [[файл:s3.png|24px]], переходящих в &lt;br /&gt;
недовольную гримасу [[файл:s4.png|24px]]. Излишнее внимание также вредно, как &lt;br /&gt;
и его отсутствие. &lt;br /&gt;
&lt;br /&gt;
В качестве упражнения, попробуйте создать такую машину состояний,&lt;br /&gt;
самостоятельно найдя в интернете или нарисовав соответствующие картинки.&lt;br /&gt;
Вы можете также вытащить картинки рожиц из этого урока, кликнув на них для увеличения, а затем нажав правую кнопку мышки, сохранить их на диске.&lt;br /&gt;
Как загрузить картинки в редактор ресурсов было описано в конце предыдущего [[Введение в AppSalute Сreator|урока]].&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;
* Уменьшите в 2 раза размер слонят (параметр scale в модификаторах свойств). Для этого достаточно поменять масштаб у тела, т.е. его scale распространится и на подобъект.&lt;br /&gt;
* Копированием создайте третьего слонёнка.&lt;br /&gt;
* Запрограммируйте его голову как машину, состоящую из 3-х состояний. В качестве картинки третьего состояния возьмите солнышко из первого урока. Пусть состояния при клике прокручиваются по кругу (left, right, sun,left,...)&lt;br /&gt;
* Добавьте четвертого слонёнка с тремя состояниями и сделайте с ним что хотите.&lt;br /&gt;
* Создайте эмоциональную рожицу&lt;br /&gt;
* Посмотрите снова на описание машин состояний из первого урока. Стало ли понятнее их поведение?&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot;  &lt;br /&gt;
 | width=&amp;quot;40%&amp;quot;|[[Создание экранов, сцен. Работа с кнопками|Урок 2]] &amp;lt;&amp;lt; &lt;br /&gt;
 ! width=&amp;quot;20%&amp;quot;|[[Learning|Оглавление]] &lt;br /&gt;
 | width=&amp;quot;40%&amp;quot; align=&amp;quot;right&amp;quot;| &amp;gt;&amp;gt; [[Взаимодействие машин: «Лампочка» и «Светофор»|Урок 4]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:Learning]]&lt;/div&gt;</summary>
		<author><name>Dopryshko</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.appsalutecreator.com/index.php?title=%D0%9D%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B0_%D0%BC%D0%B8%D0%BD%D0%B8%D0%B8%D0%B3%D1%80&amp;diff=10005</id>
		<title>Настройка миниигр</title>
		<link rel="alternate" type="text/html" href="https://wiki.appsalutecreator.com/index.php?title=%D0%9D%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B0_%D0%BC%D0%B8%D0%BD%D0%B8%D0%B8%D0%B3%D1%80&amp;diff=10005"/>
		<updated>2021-04-22T10:02:34Z</updated>

		<summary type="html">&lt;p&gt;Dopryshko: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| width=&amp;quot;100%&amp;quot;  &lt;br /&gt;
 | width=&amp;quot;40%&amp;quot;|[[Создание игры «Hidden Object Game»|Урок 7]] &amp;lt;&amp;lt; &lt;br /&gt;
 ! width=&amp;quot;20%&amp;quot;|[[Learning|Оглавление]] &lt;br /&gt;
 | width=&amp;quot;40%&amp;quot; align=&amp;quot;right&amp;quot;| &amp;gt;&amp;gt; [[Работа с эффектами|Урок 9]]&lt;br /&gt;
|}&lt;br /&gt;
----&lt;br /&gt;
{{TOC right}}&lt;br /&gt;
&lt;br /&gt;
'''Цель:''' изучить настройки объектов, реализующих различные минигры.&lt;br /&gt;
&lt;br /&gt;
'''Задачи:''' &lt;br /&gt;
* создать уровень игры с объектом, содержащим тип механики Puzzle&lt;br /&gt;
* создать уровень игры с объектом, содержащим тип механики Patchwork &lt;br /&gt;
&lt;br /&gt;
== Puzzle ==&lt;br /&gt;
&lt;br /&gt;
=== Создание экрана и сцены в игровом проекте ===&lt;br /&gt;
&lt;br /&gt;
Запускаем SceneEditor. Открываем наш учебный проект lessons.seproj.&lt;br /&gt;
&lt;br /&gt;
Создаём экран lesson_8, а в нём сцены 08 и Buttons (стараемся делать это по памяти или подсматриваем в прошлых уроках), куда добавляем необходимые графические ресурсы из папки этого урока в Resources Editor: в экран 08 отправляем картинку level_01 (наш будущий пазл), а в Buttons (думаю, уже догадались) - будущие кнопки - hint_normal и ico_r_normal2. &lt;br /&gt;
&lt;br /&gt;
На экране кнопочкам подбираем симпатичное и удобное расположение.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:801.png]]&lt;br /&gt;
&lt;br /&gt;
=== Настройка объектов, создание машин состояний ===&lt;br /&gt;
	&lt;br /&gt;
Меняем тип картинки '''level_01''' с '''image''' на [[Puzzle|puzzle]] (в папке Game mechanic) и устанавливаем следующие настройки:&lt;br /&gt;
&lt;br /&gt;
[[Файл:802.png]]&lt;br /&gt;
&lt;br /&gt;
В сцене '''08''' создаём ещё один объект. Даём ему имя '''applause''', тип '''machine''' (прописываем 2 состояния '''on''' и '''off'''). &lt;br /&gt;
&lt;br /&gt;
В состоянии '''on''' добавляем команду '''play''' (проиграть звук) и в списке выбираем '''snd''' (короткий звук), который подгружаем с помощью базы ресурсов (если подходящего звукового файла в уроке не обнаружилось, его необходимо добавить самостоятельно). &lt;br /&gt;
&lt;br /&gt;
Возвращаемся к общим настройкам  и устанавливаем стартовое состояние '''off'''.  &lt;br /&gt;
&lt;br /&gt;
[[Файл:803.png]]&lt;br /&gt;
&lt;br /&gt;
Переходим к сцене '''Buttons''' и меняем тип обоих графических файлов на '''button'''. Общий вид лейаута на этом этапе получится примерно следующий:&lt;br /&gt;
&lt;br /&gt;
[[Файл:804.png]]  &lt;br /&gt;
&lt;br /&gt;
В настройках кнопок перетянем из базы ресурсов картинки с внешним видом нажатых и отжатых кнопок.&lt;br /&gt;
&lt;br /&gt;
[[Файл:805.png]] &lt;br /&gt;
&lt;br /&gt;
Кнопка '''R''' (переиграть) — кнопка, запускающая игру Puzzle сначала. &lt;br /&gt;
&lt;br /&gt;
Нам необходимо, чтобы кнопка '''R''' перемешивала части нашего пазла. Для этого в настройках кликаем правой кнопкой мыши и выбираем '''клик:изменить состояние объекта'''. В появившейся в настройках вкладке выбираем в качестве объекта наш пазл ('''level_01''') и состояние '''mix''', которое перемешает части исходной картинки.&lt;br /&gt;
&lt;br /&gt;
[[Файл:806.png]] &lt;br /&gt;
	&lt;br /&gt;
Пусть кнопка '''hint''' (подсказка) по клику показывает нам картинку в собранном виде. Для этого повторяем процедуру с добавлением настройки '''клик:изменить состояние объекта''', только теперь для кнопки '''hint'''. Выбираем объектом наш '''level_01''' и состояние для него '''hint'''. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
На заметку. Если возникает необходимость добавить 2 и более настройки при помощи правой кнопки мыши, &lt;br /&gt;
то лучше из кнопки сделать машину состояний и все состояния создать уже там.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Любуемся результатом своих стараний, сохранив проект и запустив его с помощью Viewer`а.&lt;br /&gt;
&lt;br /&gt;
=== Упражнения ===&lt;br /&gt;
&lt;br /&gt;
Копируем экран '''lesson_8''' и переименовываем его в '''lesson_8_1''', а сцену '''08''' в '''08_01'''.&lt;br /&gt;
&lt;br /&gt;
[[Файл:807.png]]&lt;br /&gt;
&lt;br /&gt;
В новом экране вносим все изменения самостоятельно. Необходимо:&lt;br /&gt;
&lt;br /&gt;
a) заменить звук аплодисментов другим аудиофайлом, имеющимся в базе ресурсов;&lt;br /&gt;
&lt;br /&gt;
b) в пазле изменить количество разбиваемых частей на шесть (3х2), добавить сетку, изменить перестановку ячеек на смешивание по alpha, изменить время смешивания на 500 миллисекунд;&lt;br /&gt;
&lt;br /&gt;
c) при нажатии hint (подсказки) изменить время показа подсказки на 2 секунды, изменить время финального показа пазла на 3 секунды, установить время закрытия пазла 500 миллисекунд.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Store ===&lt;br /&gt;
&lt;br /&gt;
В реальной игре нам может понадобиться счётчик подсказок, который даёт возможность совершать покупки подсказок за реальные деньги. Для его реализации необходим объект '''[[Store|Store]]'''.&lt;br /&gt;
&lt;br /&gt;
Создадим новый экран '''lesson_8_1_1'''. Добавим в него сцены '''08_1''' и '''Button_8_1'''. В сцену '''08_1''' поместим из экрана '''lesson_8_1''' объекты  '''level_01''' и '''applause''', оставим их без изменения. &lt;br /&gt;
&lt;br /&gt;
В сцену '''Button_8_1''' скопируем из '''lesson_08_1''' кнопки '''hint_normal''' и '''ico_R_normal2''' и создадим новый объект, поменяв ему тип на '''counter''' (счетчик) и назовём его '''hint'''. Добавим ресурс из базы ресурсов – анимацию c цифрами из прошлого урока. Счётчик '''hint''' будет считывать купленные подсказки.&lt;br /&gt;
&lt;br /&gt;
[[Файл:808.png]]&lt;br /&gt;
&lt;br /&gt;
В  '''hint_normal''' добавим подобъект, сделаем его машиной и назовем '''hint_m'''.&lt;br /&gt;
&lt;br /&gt;
Щёлкнув правой кнопкой мыши на сцену  '''Button_8_1''' создадим новые сцены '''store''' и '''error''', которые, соответственно, будут предназначены для совершения покупок — начисления подсказок и окна с ошибкой при невозможности купить подсказку.&lt;br /&gt;
&lt;br /&gt;
В сцену  store добавим две машины:  '''buy''' и '''store'''; в  error - машину  '''error'''.&lt;br /&gt;
&lt;br /&gt;
[[Файл:809.PNG]]&lt;br /&gt;
&lt;br /&gt;
В машине '''store''' зададим считывания со счётчика и прозрачность экрана:&lt;br /&gt;
&lt;br /&gt;
[[Файл:810.png]]&lt;br /&gt;
&lt;br /&gt;
Машина '''error''' будет отвечать за вывод ошибки при неудачной покупке, то есть задаёт прозрачность экрана с ошибкой.&lt;br /&gt;
&lt;br /&gt;
[[Файл:811.PNG]]&lt;br /&gt;
&lt;br /&gt;
Для машины '''buy''' зададим состояния, при которых она начисляет купленную подсказку либо вызывает окно ошибки.&lt;br /&gt;
&lt;br /&gt;
[[Файл:812.PNG]]&lt;br /&gt;
&lt;br /&gt;
Вернёмся к машине '''hint_m''' сцены '''Button_8_1''' и пропишем для неё состояния. Машина отвечает за начисление подсказки при удачной покупке&lt;br /&gt;
&lt;br /&gt;
[[Файл:813.PNG]]&lt;br /&gt;
&lt;br /&gt;
Для того, чтобы вызывать машину '''hint_m''' в нашей игре, откроем кнопку '''hint_normal''' и в добавляемом свойстве '''изменить состояние объекта''' в качестве объекта выберем машину '''hint_m''', и пропишем ей состояние '''check'''.&lt;br /&gt;
&lt;br /&gt;
'''Совершение покупки (настройка Store)'''&lt;br /&gt;
&lt;br /&gt;
Для того чтобы покупку можно было совершить, необходимо задать в глобальных свойствах возможность совершения покупки. Для этого на сцене в глобальном экране opt добавим новый элемент, которому изменим тип на store (в папке Options).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
На заметку. Store в проекте может быть только один.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Файл:814.PNG]]&lt;br /&gt;
&lt;br /&gt;
Дважды клацнув на объект (так же, как на машину состояний), мы попадаем в окно настроек '''store'''.&lt;br /&gt;
&lt;br /&gt;
[[Файл:815.PNG]]&lt;br /&gt;
&lt;br /&gt;
Нажимаем на плюсик и создаём покупку. Вводим для неё id и изменяем указанные настройки, как на картинке.&lt;br /&gt;
&lt;br /&gt;
[[Файл:816.PNG]]&lt;br /&gt;
&lt;br /&gt;
И тут должен возникнуть вопрос. Почему среди перечня доступных объектов нет необходимого нам '''buy'''? Прежде чем читать дальше, предлагаю попробовать найти ответ на этот вопрос самостоятельно.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Для удобства использования, а также во избежание различных ошибок, в объектах экрана можно обращаться только к объектам этого же экрана. Исключением будут объекты глобальных экранов (вспоминаем прошлые уроки и смотрим на наш глобальный экран '''opt'''). &lt;br /&gt;
&lt;br /&gt;
Поэтому, чтобы получить доступ к объекту '''buy''', мы временно делаем экран '''lesson_8_1_1''' глобальным и завершаем настройку объекта '''store'''. Позже, на этапе проверки при помощи Viewer`а можем поэкспериментировать и проверить, будет ли работать проект корректно, когда мы в настройках глобальности экрана '''lesson_8_1_1''' снова поставим '''нет'''.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
На заметку. Когда мы обращаемся к объекту, то в layout.xml &lt;br /&gt;
прописывается ссылка на этот объект в виде его id.&lt;br /&gt;
Когда убираем глобальность экрана и делаем его снова обычным, &lt;br /&gt;
выбранный объект мы в редакторе больше не видим, &lt;br /&gt;
но его id в лэйауте всё равно остаётся.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Описание объекта Store'''&lt;br /&gt;
&lt;br /&gt;
Объект '''Store''' необходим для описания InApp покупок (позволяют продавать отдельные бонусы, паки и т.п.) в игре.&lt;br /&gt;
&lt;br /&gt;
Основные параметры объекта Store&lt;br /&gt;
&lt;br /&gt;
''id покупки'' – внутренний id покупки.&lt;br /&gt;
&lt;br /&gt;
''расходуемая'' – 1 – покупка расходуемая, 0 – покупка раз и навсегда; если параметр не указан, по-умолчанию покупка – одноразовая.&lt;br /&gt;
&lt;br /&gt;
''объект (restore)'' – объект - Слушатель восстановления покупки. Этому объекту будет сообщено об успехе восстановления этой покупки покупки.&lt;br /&gt;
состояние (restore) – это состояние будет установлено объекту при успешном восстановлении этой покупки.&lt;br /&gt;
&lt;br /&gt;
'''Для того, чтобы объект Store работал во Viewer, необходимо подкорректировать файл app.icf'''&lt;br /&gt;
&lt;br /&gt;
1. Найти файл app.icf в папке с вашим проектом.&lt;br /&gt;
&lt;br /&gt;
2. Открыть его и найти тег [Game].&lt;br /&gt;
&lt;br /&gt;
3. В теге Game добавить строку purchaseEverything=1.&lt;br /&gt;
&lt;br /&gt;
4. Сохранить файл&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[Game]&lt;br /&gt;
purchaseEverything=1&lt;br /&gt;
DispFixRot=&amp;quot;Landscape&amp;quot;&lt;br /&gt;
# comments and whitespace stripped by deployment tool&lt;br /&gt;
debug=&amp;quot;Absolutist-2253&amp;quot;&lt;br /&gt;
show_build_date=1&lt;br /&gt;
AppTitle=&amp;quot;Viewer&amp;quot;&lt;br /&gt;
DebuggerIP=&amp;quot;127.0.0.1&amp;quot;&lt;br /&gt;
DebuggerPort=5322&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;
Теперь перейдём к оформлению. Для того чтобы на экране появлялось окно с предложением о покупке подсказки, необходимо его создать. В начальный момент окно должно быть невидимым и прокликиваем, это состояние задано в машине '''store'''. Создадим в ней 5 подобъектов.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Первые два переименуем в '''black''' и '''rec''', изменим им тип на '''[[Rectangle|Rectangle]]'''.&lt;br /&gt;
&lt;br /&gt;
Откроем объект  '''black''', пропишем ему свойства, оставив пустой рамку, цвет фона – чёрный.&lt;br /&gt;
&lt;br /&gt;
Для объекта '''rec''' зададим рамку и текстуру заливки. Для этого из базы ресурсов мышкой перетащим соответствующие элементы. Ресурсы для графики находятся в предыдущем уроке. Чтобы прямоугольник отображался правильно, задайте ему ненулевые размеры. Настройки '''rec''' (имена файлов могут отличаться):&lt;br /&gt;
&lt;br /&gt;
[[Файл:817.PNG]]&lt;br /&gt;
&lt;br /&gt;
Третьему элементу поменяем тип на '''text''' с текстом &amp;quot;Купить подсказку?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Четвёртый объект сделаем машиной и назовём её '''ok'''. Она будет в глазах пользователя совершать покупку. Для внешнего вида машины в '''res''' перетянем изображение зелёного света светофора из 4 урока. В модификаторах можно задать '''scale''' по х и по у 0.5.&lt;br /&gt;
Опишем следующие состояния машины:&lt;br /&gt;
&lt;br /&gt;
[[Файл:818.PNG]]&lt;br /&gt;
&lt;br /&gt;
Все действия, связанные с совершением и провалом покупки, управляемые этой машиной, мы уже указали в '''store'''.&lt;br /&gt;
&lt;br /&gt;
Пятый объект будет кнопкой '''no'''. Она по клику изменяет состояние ('''close''') объекта ('''store'''). Для внешнего вида кнопки в '''res''' перетянем изображение красного света светофора из 4 урока. В модификаторах тоже можно задать '''scale''' по х и по у 0.5.&lt;br /&gt;
&lt;br /&gt;
Так же поступим со сценой '''error'''. В ней создадим четыре объекта: два '''rectangle''': '''rec_error''' – пустой, '''black_error''' — их можно скопировать из предыдущей сцены; кнопку '''buy''', которая будет переводить '''error''' в состояние '''i'''; текстовый объект '''text_error''' с текстом «error!». Общий вид этого задания в лейауте примерно следующий:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:819.PNG]]&lt;br /&gt;
&lt;br /&gt;
Разместим все объекты так, что бы картинка хорошо смотрелась. Сохраним все изменения и запустим Viewer. Сейчас при покупке подсказки количество покупок не имеет лимита (благодаря нашим изменениям в '''app.icf'''), поэтому вывод ошибки мы не получим.&lt;br /&gt;
&lt;br /&gt;
== Patchwork ==&lt;br /&gt;
&lt;br /&gt;
=== Создание экрана и сцены в игровом проекте ===&lt;br /&gt;
&lt;br /&gt;
1. Запустить SceneEditor.&lt;br /&gt;
&lt;br /&gt;
2. В меню Проект → Загрузить → Learning.seproj. &lt;br /&gt;
&lt;br /&gt;
3. Кликнув правой кнопкой мыши по ранее созданному экрану Lesson_08.1, создать экран Lesson_08.2.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Lesson8_1.jpg|right]]&lt;br /&gt;
&lt;br /&gt;
4. В экране Lesson_08.2 создать новую сцену 08, в которую (через ResourcesEditor) добавить графические ресурсы (bg_game, panel_down, btb_replay_normal) из папки Sources\Lesson_08 (см. подготовка к работе «Создание проекта»). В редактор ресурсов добавить графику нашего будущего Patchwork: level_17, level_17_mask.&lt;br /&gt;
&lt;br /&gt;
Если в папке урока отсутствует изображение panel_down, то скачать любое изображение боковой панели самостоятельно и использовать ее в проекте.&lt;br /&gt;
&lt;br /&gt;
=== Настройка объектов ===&lt;br /&gt;
&lt;br /&gt;
1. Создадим на сцене 08 еще два объекта. Для этого нажмем правой кнопкой мыши по сцене и выберем &amp;quot;Создать объект в текущем элементе&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Lesson8_2.jpg]]&lt;br /&gt;
&lt;br /&gt;
2. Переименуем один из созданных объектов в Patchwork, а другой в table.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Lesson8_3.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[Файл:Lesson8_4.jpg|right]]&lt;br /&gt;
&lt;br /&gt;
3. Теперь будем изменять тип объектов на сцене, чтобы получить нужные нам элементы. Графические ресурсы bg_game и panel_down оставляем без изменений. Ресурсу btb_replay_normal изменяем тип на button. Объекту Patchwork меняем тип на patchwork, table изменяем на тип table.&lt;br /&gt;
4. Теперь объекты нужно разместить на сцене. Обратим внимание на то, что два последних объекта которые мы добавили без графического ресурса. По умолчанию, создаваемые на сцене объекты имеют размер 100х100 пикселей. Увеличим размер таблицы по высоте до 450 пикселей и перетащим ее влево, поместив над объектом panel_down.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Lesson8_5.jpg]]&lt;br /&gt;
&lt;br /&gt;
Кнопку поместим в левый нижний угол. Добиваемся такого расположения объектов, как показанно на рисунке.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Lesson8_6.jpg]]&lt;br /&gt;
&lt;br /&gt;
5. Настроим наши объекты. Для кнопки btb_replay_normal в поле &amp;quot;перейти на&amp;quot; укажите текущий экран Lesson_8.2.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:правка_намба_1.png|200px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Для таблицы измените следующие параметры&lt;br /&gt;
&lt;br /&gt;
[[Файл:lesson8_table_setup.png|200px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Для Patchwork устанавливаем следующие настройки. Обратите внимание, что поля &amp;quot;карт.спереди&amp;quot; и &amp;quot;шаблон&amp;quot; заполняются перетаскиванием графического ресурса из редактора ресурсов.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Lesson8_9.jpg]]&lt;br /&gt;
&lt;br /&gt;
6. Для корректной работы вашего Patchwork необходимо, чтобы таблица находилась выше Patchwork по дереву объектов.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Lesson8_10.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
7. Проверьте выполнение задачи с помощью проигрывателя сцен Viewer.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Lesson8.3.Fin.png]]&lt;br /&gt;
&lt;br /&gt;
===  Упражнения ===&lt;br /&gt;
&lt;br /&gt;
1. Щелкнув правой кнопкой мыши по экрану Lesson_08.2, создать новый экран Lesson_08.3&lt;br /&gt;
&lt;br /&gt;
2. Создать новую сцену с названием game.&lt;br /&gt;
&lt;br /&gt;
3. Скопировать все объекты из сцены 08 (экрана Lesson_08.2).&lt;br /&gt;
&lt;br /&gt;
4. Вставить скопированые объекты в новую сцену game (экрана Lesson_08.3).&lt;br /&gt;
&lt;br /&gt;
5. В новой сцене постарайтесь сами прописать состояния и команды в измененную задачу. Сделайте так, чтобы:&lt;br /&gt;
&lt;br /&gt;
a) заменить картинку пэчворка и маски на другую, имеющуюся в базе ресурсов;&lt;br /&gt;
&lt;br /&gt;
b) изменить настройки кнопки рестарта таким образом, чтобы не переходить на экран Lesson_08.3, а сразу передавать пэчворку состояние mix.&lt;br /&gt;
----&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot;  &lt;br /&gt;
 | width=&amp;quot;40%&amp;quot;|[[Создание игры «Hidden Object Game»|Урок 7]] &amp;lt;&amp;lt; &lt;br /&gt;
 ! width=&amp;quot;20%&amp;quot;|[[Learning|Оглавление]] &lt;br /&gt;
 | width=&amp;quot;40%&amp;quot; align=&amp;quot;right&amp;quot;| &amp;gt;&amp;gt; [[Работа с эффектами|Урок 9]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:Learning]]&lt;/div&gt;</summary>
		<author><name>Dopryshko</name></author>
		
	</entry>
</feed>