<?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=Bmor</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=Bmor"/>
	<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/Bmor"/>
	<updated>2026-10-17T03:41:08Z</updated>
	<subtitle>Вклад участника</subtitle>
	<generator>MediaWiki 1.31.15</generator>
	<entry>
		<id>https://wiki.appsalutecreator.com/index.php?title=Notification&amp;diff=9806</id>
		<title>Notification</title>
		<link rel="alternate" type="text/html" href="https://wiki.appsalutecreator.com/index.php?title=Notification&amp;diff=9806"/>
		<updated>2019-04-08T14:40:02Z</updated>

		<summary type="html">&lt;p&gt;Bmor: /* Firebase Cloud Messaging */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC right}}&lt;br /&gt;
[[Object|Объект]] '''Notification''' предназначен для показа push уведомлений на IOS устройствах.&lt;br /&gt;
&lt;br /&gt;
==Параметры объекта==&lt;br /&gt;
&lt;br /&gt;
===Основные параметры===&lt;br /&gt;
&lt;br /&gt;
*'''имя события''' (''name'') - Имя события. Если у двух событий одинаковые имена - сохранится первое. Не обязательный параметр. Перетягивается из редактора текстов. Поле должно быть в состоянии редактирования.&lt;br /&gt;
&lt;br /&gt;
*'''сообщение''' (''message'') - Основной текст события. Перетягивается из редактора текстов. Поле должно быть в состоянии редактирования.&lt;br /&gt;
&lt;br /&gt;
*'''большая картинка''' (''big_picture'') - Имя файла с большой картинкой. Должен лежать не в ресурсах, а рядом с app.icf. Поле затирается после регистрации уведомления&lt;br /&gt;
&lt;br /&gt;
*'''год''' (''year'') - Год, когда сработает оповещение. Минимальное значение - 1971 .&lt;br /&gt;
&lt;br /&gt;
*'''месяц''' (''month'') - Месяц, когда сработает оповещение. Минимальное значение - 0, максимальное - 11 .&lt;br /&gt;
&lt;br /&gt;
*'''день''' (''day'') - День, когда сработает оповещение. Минимальное значение - 1, максимальное - 31 .&lt;br /&gt;
&lt;br /&gt;
*'''час''' (''hour'') - Час, когда сработает оповещение. Минимальное значение - 0, максимальное - 23 .&lt;br /&gt;
&lt;br /&gt;
*'''минута''' (''min'') - Минута, когда сработает оповещение. Минимальное значение - 0, максимальное - 59 .&lt;br /&gt;
&lt;br /&gt;
*'''секунда''' (''sec'') - Секунда, когда сработает оповещение. Минимальное значение - 0, максимальное - 59 .&lt;br /&gt;
&lt;br /&gt;
*'''задержка''' (''delay'') - Задержка от текущего времени до оповещения. Если задана не -1 - то используется вместо даты.&lt;br /&gt;
&lt;br /&gt;
*'''перед первым init экстеншена''' (''delayInit'') - Задержка в секундах до первой инициализации расширения&lt;br /&gt;
&lt;br /&gt;
*'''цвет заголовка''' (''colorTitle'') - Цвет заголовка - только для кастомных нотификейшенов&lt;br /&gt;
&lt;br /&gt;
*'''цвет текста''' (''colorText'') - Цвет текста - только для кастомных нотификейшенов&lt;br /&gt;
&lt;br /&gt;
===Firebase Cloud Messaging===&lt;br /&gt;
&lt;br /&gt;
*'''Обработчик бандлов''' (''fcmBundleHandler'') - Объект, в который будут записаны параметры бандла и который будет переведен в состояние eventID бандла при fcm_check_bundle (см. дальше)&lt;br /&gt;
&lt;br /&gt;
==Состояния объекта==&lt;br /&gt;
&lt;br /&gt;
*'''set''' - устанавливает нотификацию в очередь&lt;br /&gt;
&lt;br /&gt;
*'''clear''' - очищает очередь нотификации&lt;br /&gt;
&lt;br /&gt;
*'''erase''' - очищает очередь нотификации от уведомления с указаннным ID темы и ID сообщения&lt;br /&gt;
&lt;br /&gt;
*'''fcm_subscribe_topic''' - Firebase only! Подписаться на топик из поля topic&lt;br /&gt;
&lt;br /&gt;
*'''fcm_unsubscribe_topic''' - Firebase only! Отписаться от топика из поля topic&lt;br /&gt;
&lt;br /&gt;
*'''fcm_check_bundle''' - Firebase only! Проверить наличие fcm бандлов&lt;br /&gt;
&lt;br /&gt;
Установка уведомлений (объект notification):&lt;br /&gt;
 Состояние&lt;br /&gt;
 &amp;quot;set&amp;quot;, - оба способа&lt;br /&gt;
 &amp;quot;set_native&amp;quot;, - устройство&lt;br /&gt;
 &amp;quot;set_parse&amp;quot;, - парс&lt;br /&gt;
 или через параметр&lt;br /&gt;
 &amp;lt;property name=&amp;quot;отсылать в&amp;quot; type=&amp;quot;enum&amp;quot; value=&amp;quot;0&amp;quot; id=&amp;quot;send&amp;quot; hint=&amp;quot;отсылать в&amp;quot; regexp=&amp;quot;обе службы=0,только локальный пуш=1,только парс=2&amp;quot; /&amp;gt; (тогда состояние set)&lt;br /&gt;
&lt;br /&gt;
==Пример применения==&lt;br /&gt;
&lt;br /&gt;
Пусть через 5 минут после нажатия на кнопку у пользователя появиится уведомление с текстом &amp;quot;message of notification&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Для этого разместим на сцене объект notification и установим ему следующие параметры:&lt;br /&gt;
&lt;br /&gt;
* задержка - 300&lt;br /&gt;
&lt;br /&gt;
[[Файл:Notification 01.jpg |upright=0.5]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
В текстовую базу занесём новые записи с названием события нотификации и текстом нотификации.&lt;br /&gt;
&lt;br /&gt;
Далее добавим на сцену кнопку, которая будет передавать параметры объекту &amp;quot;notification&amp;quot; и переводить объект &amp;quot;notification&amp;quot; в состояние &amp;quot;set&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Notification 02.jpg |upright=0.5 ]]&lt;br /&gt;
&lt;br /&gt;
Теперь при нажатии на кнопку в очередь будет поставлено извещение, которое покажет система через 5 минут.&lt;br /&gt;
На устройстве это выглядит так:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;tleft&amp;quot; style=&amp;quot;clear:none&amp;quot;&amp;gt; [[Файл:IMG 0043.PNG | мини |200пкс ]] &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;tleft&amp;quot; style=&amp;quot;clear:none&amp;quot;&amp;gt; [[Файл:IMG 0046.PNG | мини |200пкс ]] &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Информация в логах==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
I/GNotification GNotification::aviable() GNotification::aviable() - уведомления разрешены&lt;br /&gt;
I/GNotification GNotification::state() state(ST_CLEAR) clear all notifications - очистилась&lt;br /&gt;
вся очередь уведомлений&lt;br /&gt;
I/GNotification GNotification::state() state(ST_SET) - уведомление поставлено в очередь&lt;br /&gt;
I/GNotification GNotification::EraseNotification() EraseNotification erase notification title: - уведомление&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;
У объекта [[options]] можно задать параметр '''notifScrID''' (значение параметра - id экрана). Если параметр задан, то при открытии приложения из уведомления откроется выбранный экран.&lt;br /&gt;
&lt;br /&gt;
==Firebase Cloud Messaging==&lt;br /&gt;
&lt;br /&gt;
Firebase Cloud Messaging позволяет рассылать кастомные уведомления с определенным набором доп. параметров, которые в последствии будут переданы во вьювер и сохранены в опциях (fcm бандлы).&lt;br /&gt;
&lt;br /&gt;
===Подготовка проекта===&lt;br /&gt;
&lt;br /&gt;
: 1. Создайте и настройте проект в Firebase консоли ([https://console.firebase.google.com/project/ Link])&lt;br /&gt;
: 2. Скачайте из консоли файл конфигураций проекта google-services.json&lt;br /&gt;
: 3. Перенесите параметры из ''google-services.json'' в ''project\conf\pom\sdl\google_params.json'' в поле ''extra_strings''&lt;br /&gt;
    google_app_id                       &amp;gt;&amp;gt;          {YOUR_CLIENT}/client_info/mobilesdk_app_id&lt;br /&gt;
    gcm_defaultSenderId                 &amp;gt;&amp;gt;          project_info/project_number&lt;br /&gt;
    default_web_client_id               &amp;gt;&amp;gt;          {YOUR_CLIENT}/oauth_client/client_id (client_type == 3)&lt;br /&gt;
    ga_trackingId                       &amp;gt;&amp;gt;          {YOUR_CLIENT}/services/analytics-service/analytics_property/tracking_id&lt;br /&gt;
    firebase_database_url               &amp;gt;&amp;gt;          project_info/firebase_url&lt;br /&gt;
    google_api_key                      &amp;gt;&amp;gt;          {YOUR_CLIENT}/api_key/current_key&lt;br /&gt;
    google_crash_reporting_api_key      &amp;gt;&amp;gt;          {YOUR_CLIENT}/api_key/current_key&lt;br /&gt;
    project_id                          &amp;gt;&amp;gt;          project_info/project_id&lt;br /&gt;
    google_storage_bucket               &amp;gt;&amp;gt;          project_info/storage_bucket&lt;br /&gt;
: 4. В app.icf сборки добавить раздел '''[Firebase]''', дабы при сборке подтянулся нужный экстеншн.&lt;br /&gt;
&lt;br /&gt;
===Структура сообщений===&lt;br /&gt;
Сообщения firebase имеют два основных блока:&lt;br /&gt;
* '''notification''' - стандартный пуш, содержит заголовок и текст сообщения;&lt;br /&gt;
* '''data payload''' - содержит произвольный набор параметров ключ-зачение (с ограничением 4Кб в firebase и 50 штук в наших реалиях)&lt;br /&gt;
&lt;br /&gt;
Сообщение может содержать либо один из этих блоков, либо оба сразу.&lt;br /&gt;
&lt;br /&gt;
При наличии в сообщении блока '''notification''' оно автоматически трактуется системой как пуш и при получении такого на устройстве - сразу закидывает его в системный трей (т.е. без нашей обработки). Мы никак не властны над подобными сообщениями и их параметрами (с параметрами то отдельная тема), а значит никаких кастомизаций в виде цветного шрифта и/или картинки не будет.&lt;br /&gt;
&lt;br /&gt;
Если сообщение имеет только '''data payload''' - оно всецело обрабатывается нашим движком, а значит мы имеем полный контроль над его отображением и всеми его параметрами. '''Но''' такие сообщения невозможно отправить из firebase консоли (т.к. там всегда должен присутствовать текст пуша), только скриптом (либо из нашей одминки).&lt;br /&gt;
&lt;br /&gt;
Для корректной работы всегда нужно использовать только '''data payload''' со структурой:&lt;br /&gt;
&lt;br /&gt;
 Тело пуша:                              # блок параметров, необходимых для отображения пуша&lt;br /&gt;
  &amp;quot;eventName&amp;quot;          : &amp;quot;EVENT_TITLE&amp;quot;,   # заголовок сообщения,  ОБЯЗАТЕЛЬНО для отображения пуша&lt;br /&gt;
  &amp;quot;eventMessage&amp;quot;       : &amp;quot;EVENT_BODY&amp;quot;,    # текст сообщения,      ОБЯЗАТЕЛЬНО для отображения пуша&lt;br /&gt;
  &amp;quot;eventType&amp;quot;          : &amp;quot;1&amp;quot;,             # 0 - показать только заголовок и сообщение; 1 - показать красивое сообщение со всеми плюшками&lt;br /&gt;
  &amp;quot;eventPriority&amp;quot;      : &amp;quot;2&amp;quot;              # приоритет пуша [-2:2], по дефолту 2&lt;br /&gt;
  &amp;quot;eventTime&amp;quot;          : &amp;quot;1541507205&amp;quot;     # время запуска пуша в UTC секундах (если отсутствует или меньше текущего времени - сразу показать)&lt;br /&gt;
  &amp;quot;evetBigPicture&amp;quot;     : &amp;quot;https://apps.absolutist.com/images/profile/no_avatar.png&amp;quot;,   # бекграунд пуша - НЕ имя ресурса, НЕ id ресурса, ТОЛЬКО ссылка&lt;br /&gt;
  &amp;quot;eventTitleColor&amp;quot;    : &amp;quot;#FF0000FF&amp;quot;,     # ARGB цвет заголовка&lt;br /&gt;
  &amp;quot;eventTextColor&amp;quot;     : &amp;quot;#FFFF0000&amp;quot;,     # ARGB цвет текста&lt;br /&gt;
 Тело данных&lt;br /&gt;
  &amp;quot;eventID&amp;quot;            : &amp;quot;EVENT_ID&amp;quot;,     # id ивента, машинка-обработчик будет переведена в это состояние (это обязательное поле, если хотите как-то обработать пуш в приложении)&lt;br /&gt;
  Далее может быть произвольный набор параметров-значений, которые будут переданы в машинку-обработчик&lt;br /&gt;
&lt;br /&gt;
===Отправка и получение сообщения приложением===&lt;br /&gt;
''(Далее речь идет только про data payload)''&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;
При получении приложением сообщения, если заполнено тело пуша (хотя бы параметры eventName и eventMessage), будет показано пуш-уведомление. Если при этом приложение работало в фоне - все дополнительные параметры будут переданы в приложение при его запуске. Если оно уже было запущено - все параметры немедленно будут обработаны.&lt;br /&gt;
&lt;br /&gt;
Все доп. параметры сообщения будут сохранены в опции в виде бандлов:&lt;br /&gt;
&lt;br /&gt;
[[Файл:Notification_bundle_struct.png]]&lt;br /&gt;
&lt;br /&gt;
===Топики: подписка и отписка===&lt;br /&gt;
Дабы игрок мог получать сообщения по рассылке он должен подписаться на топик.&lt;br /&gt;
Если нужно перестать получать сообщения по рассылке - отписаться.&lt;br /&gt;
&lt;br /&gt;
'''Подписка/отписка:'''&lt;br /&gt;
* Записать объекту '''Notification''' в параметр '''topic''' имя топика, на который хотим подписаться/отписаться;&lt;br /&gt;
* Вызвать объекту '''Notification''' состояние '''subscribe''' (для подписки) либо '''unsubscribe''' (для отписки)&lt;br /&gt;
* Всё.&lt;br /&gt;
&lt;br /&gt;
'''Подписка на необходимые топики должна происходить в каждой сессии, т.к. она не сохраняется после закрытия приложения!'''&lt;br /&gt;
&lt;br /&gt;
===Обработка в редакторе===&lt;br /&gt;
&lt;br /&gt;
: 0. Определиться, какие евенты вы хотите обрабатывать (поле '''eventID''' в пуше) и с какими параметрами ('''эт важно!''')&lt;br /&gt;
: 1. Создать объект '''Notifications''', т.к. вся коммуникация идет через него&lt;br /&gt;
: 2. Создать машинку-обработчик и указать её в поле ''Обработчик бандлов (fcmBundleHandler)'' объекта '''Notifications'''&lt;br /&gt;
: 3. Создать машинку, которая будет раз в определенный период дёргать '''Notifications''' в состояние '''fcm_check_bundle'''&lt;br /&gt;
: 4. В состоянии ''fcm_check_bundle'' объект '''Notifications''' проверяет опции на наличие бандлов из firebase сообщений.&lt;br /&gt;
: Если бандл имеется - '''Notifications''' переводит машинку ''fcmBundleHandler'' в состояние из параметра '''eventID''' бандла.&lt;br /&gt;
: Все параметры бандла будут записаны в машинку ''fcmBundleHandler'' с приставкой &amp;quot;'''fcm_'''&amp;quot;&lt;br /&gt;
 Например имеем сообщение:&lt;br /&gt;
   &amp;quot;eventID&amp;quot;            : &amp;quot;items_message&amp;quot;,&lt;br /&gt;
   &amp;quot;customTitle&amp;quot;        : &amp;quot;FCM RULES&amp;quot;,&lt;br /&gt;
   &amp;quot;customText&amp;quot;         : &amp;quot;SuperBananaDebugging 322&amp;quot;&lt;br /&gt;
 При ''fcm_check_bundle'' машинка-обработчик будет переведена в состояние ''custom_message'' и в неё будут добавлены 2 поля: ''fcm_customTitle'' (отмечено цифрой 1 на скриншоте) и ''fcm_customText'' (2) с соответствующими значениями.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Firebase handler.jpg]]&lt;br /&gt;
&lt;br /&gt;
При начислении монет или предметов мы также указываем их количество (и txtID для предмета) (3)(4).&lt;br /&gt;
Экономике в случае начисления ресурсов/монет передаем параметр res_source = 13, как у redeem_message.&lt;br /&gt;
&lt;br /&gt;
'''!ВАЖНО!'''&lt;br /&gt;
После использования параметров их нужно вручную обнулить (очистить), дабы у вас же не возникало лишних проблем. (5)&lt;br /&gt;
&lt;br /&gt;
== Пример ==&lt;br /&gt;
&lt;br /&gt;
[http://fs5.absolutist.com/files/wikisample/notification.rar Notifications]&lt;br /&gt;
&lt;br /&gt;
[http://wiki.appsalutecreator.com/images/c/cb/FCM_Notifications_example.zip Firebase cloud messaging] - содержит проект и сприпт для отправки пушей в топик (без ключа приложения)&lt;br /&gt;
&lt;br /&gt;
[[Category:Options]]&lt;/div&gt;</summary>
		<author><name>Bmor</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.appsalutecreator.com/index.php?title=Notification&amp;diff=9739</id>
		<title>Notification</title>
		<link rel="alternate" type="text/html" href="https://wiki.appsalutecreator.com/index.php?title=Notification&amp;diff=9739"/>
		<updated>2018-11-13T08:46:50Z</updated>

		<summary type="html">&lt;p&gt;Bmor: /* Пример */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC right}}&lt;br /&gt;
[[Object|Объект]] '''Notification''' предназначен для показа push уведомлений на IOS устройствах.&lt;br /&gt;
&lt;br /&gt;
==Параметры объекта==&lt;br /&gt;
&lt;br /&gt;
===Основные параметры===&lt;br /&gt;
&lt;br /&gt;
*'''имя события''' (''name'') - Имя события. Если у двух событий одинаковые имена - сохранится первое. Не обязательный параметр. Перетягивается из редактора текстов. Поле должно быть в состоянии редактирования.&lt;br /&gt;
&lt;br /&gt;
*'''сообщение''' (''message'') - Основной текст события. Перетягивается из редактора текстов. Поле должно быть в состоянии редактирования.&lt;br /&gt;
&lt;br /&gt;
*'''большая картинка''' (''big_picture'') - Имя файла с большой картинкой. Должен лежать не в ресурсах, а рядом с app.icf. Поле затирается после регистрации уведомления&lt;br /&gt;
&lt;br /&gt;
*'''год''' (''year'') - Год, когда сработает оповещение. Минимальное значение - 1971 .&lt;br /&gt;
&lt;br /&gt;
*'''месяц''' (''month'') - Месяц, когда сработает оповещение. Минимальное значение - 0, максимальное - 11 .&lt;br /&gt;
&lt;br /&gt;
*'''день''' (''day'') - День, когда сработает оповещение. Минимальное значение - 1, максимальное - 31 .&lt;br /&gt;
&lt;br /&gt;
*'''час''' (''hour'') - Час, когда сработает оповещение. Минимальное значение - 0, максимальное - 23 .&lt;br /&gt;
&lt;br /&gt;
*'''минута''' (''min'') - Минута, когда сработает оповещение. Минимальное значение - 0, максимальное - 59 .&lt;br /&gt;
&lt;br /&gt;
*'''секунда''' (''sec'') - Секунда, когда сработает оповещение. Минимальное значение - 0, максимальное - 59 .&lt;br /&gt;
&lt;br /&gt;
*'''задержка''' (''delay'') - Задержка от текущего времени до оповещения. Если задана не -1 - то используется вместо даты.&lt;br /&gt;
&lt;br /&gt;
*'''перед первым init экстеншена''' (''delayInit'') - Задержка в секундах до первой инициализации расширения&lt;br /&gt;
&lt;br /&gt;
*'''цвет заголовка''' (''colorTitle'') - Цвет заголовка - только для кастомных нотификейшенов&lt;br /&gt;
&lt;br /&gt;
*'''цвет текста''' (''colorText'') - Цвет текста - только для кастомных нотификейшенов&lt;br /&gt;
&lt;br /&gt;
===Firebase Cloud Messaging===&lt;br /&gt;
&lt;br /&gt;
*'''Обработчик бандлов''' (''fcmBundleHandler'') - Объект, в который будут записаны параметры бандла и который будет переведен в состояние eventID бандла при fcm_check_bundle (см. дальше)&lt;br /&gt;
&lt;br /&gt;
==Состояния объекта==&lt;br /&gt;
&lt;br /&gt;
*'''set''' - устанавливает нотификацию в очередь&lt;br /&gt;
&lt;br /&gt;
*'''clear''' - очищает очередь нотификации&lt;br /&gt;
&lt;br /&gt;
*'''erase''' - очищает очередь нотификации от уведомления с указаннным ID темы и ID сообщения&lt;br /&gt;
&lt;br /&gt;
*'''fcm_subscribe_topic''' - Firebase only! Подписаться на топик из поля topic&lt;br /&gt;
&lt;br /&gt;
*'''fcm_unsubscribe_topic''' - Firebase only! Отписаться от топика из поля topic&lt;br /&gt;
&lt;br /&gt;
*'''fcm_check_bundle''' - Firebase only! Проверить наличие fcm бандлов&lt;br /&gt;
&lt;br /&gt;
Установка уведомлений (объект notification):&lt;br /&gt;
 Состояние&lt;br /&gt;
 &amp;quot;set&amp;quot;, - оба способа&lt;br /&gt;
 &amp;quot;set_native&amp;quot;, - устройство&lt;br /&gt;
 &amp;quot;set_parse&amp;quot;, - парс&lt;br /&gt;
 или через параметр&lt;br /&gt;
 &amp;lt;property name=&amp;quot;отсылать в&amp;quot; type=&amp;quot;enum&amp;quot; value=&amp;quot;0&amp;quot; id=&amp;quot;send&amp;quot; hint=&amp;quot;отсылать в&amp;quot; regexp=&amp;quot;обе службы=0,только локальный пуш=1,только парс=2&amp;quot; /&amp;gt; (тогда состояние set)&lt;br /&gt;
&lt;br /&gt;
==Пример применения==&lt;br /&gt;
&lt;br /&gt;
Пусть через 5 минут после нажатия на кнопку у пользователя появиится уведомление с текстом &amp;quot;message of notification&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Для этого разместим на сцене объект notification и установим ему следующие параметры:&lt;br /&gt;
&lt;br /&gt;
* задержка - 300&lt;br /&gt;
&lt;br /&gt;
[[Файл:Notification 01.jpg |upright=0.5]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
В текстовую базу занесём новые записи с названием события нотификации и текстом нотификации.&lt;br /&gt;
&lt;br /&gt;
Далее добавим на сцену кнопку, которая будет передавать параметры объекту &amp;quot;notification&amp;quot; и переводить объект &amp;quot;notification&amp;quot; в состояние &amp;quot;set&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Notification 02.jpg |upright=0.5 ]]&lt;br /&gt;
&lt;br /&gt;
Теперь при нажатии на кнопку в очередь будет поставлено извещение, которое покажет система через 5 минут.&lt;br /&gt;
На устройстве это выглядит так:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;tleft&amp;quot; style=&amp;quot;clear:none&amp;quot;&amp;gt; [[Файл:IMG 0043.PNG | мини |200пкс ]] &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;tleft&amp;quot; style=&amp;quot;clear:none&amp;quot;&amp;gt; [[Файл:IMG 0046.PNG | мини |200пкс ]] &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Информация в логах==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
I/GNotification GNotification::aviable() GNotification::aviable() - уведомления разрешены&lt;br /&gt;
I/GNotification GNotification::state() state(ST_CLEAR) clear all notifications - очистилась&lt;br /&gt;
вся очередь уведомлений&lt;br /&gt;
I/GNotification GNotification::state() state(ST_SET) - уведомление поставлено в очередь&lt;br /&gt;
I/GNotification GNotification::EraseNotification() EraseNotification erase notification title: - уведомление&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;
У объекта [[options]] можно задать параметр '''notifScrID''' (значение параметра - id экрана). Если параметр задан, то при открытии приложения из уведомления откроется выбранный экран.&lt;br /&gt;
&lt;br /&gt;
==Firebase Cloud Messaging==&lt;br /&gt;
&lt;br /&gt;
Firebase Cloud Messaging позволяет рассылать кастомные уведомления с определенным набором доп. параметров, которые в последствии будут переданы во вьювер и сохранены в опциях (fcm бандлы).&lt;br /&gt;
&lt;br /&gt;
===Подготовка проекта===&lt;br /&gt;
&lt;br /&gt;
: 1. Создайте и настройте проект в Firebase консоли ([https://console.firebase.google.com/project/ Link])&lt;br /&gt;
: 2. Скачайте из консоли файл конфигураций проекта google-services.json&lt;br /&gt;
: 3. Перенесите параметры из ''google-services.json'' в ''project\conf\pom\sdl\google_params.json'' в поле ''extra_strings''&lt;br /&gt;
    google_app_id                       &amp;gt;&amp;gt;          {YOUR_CLIENT}/client_info/mobilesdk_app_id&lt;br /&gt;
    gcm_defaultSenderId                 &amp;gt;&amp;gt;          project_info/project_number&lt;br /&gt;
    default_web_client_id               &amp;gt;&amp;gt;          {YOUR_CLIENT}/oauth_client/client_id (client_type == 3)&lt;br /&gt;
    ga_trackingId                       &amp;gt;&amp;gt;          {YOUR_CLIENT}/services/analytics-service/analytics_property/tracking_id&lt;br /&gt;
    firebase_database_url               &amp;gt;&amp;gt;          project_info/firebase_url&lt;br /&gt;
    google_api_key                      &amp;gt;&amp;gt;          {YOUR_CLIENT}/api_key/current_key&lt;br /&gt;
    google_crash_reporting_api_key      &amp;gt;&amp;gt;          {YOUR_CLIENT}/api_key/current_key&lt;br /&gt;
    project_id                          &amp;gt;&amp;gt;          project_info/project_id&lt;br /&gt;
    google_storage_bucket               &amp;gt;&amp;gt;          project_info/storage_bucket&lt;br /&gt;
: 4. В app.icf сборки добавить раздел '''[Firebase]''', дабы при сборке подтянулся нужный экстеншн.&lt;br /&gt;
&lt;br /&gt;
===Структура сообщений===&lt;br /&gt;
Сообщения firebase имеют два основных блока:&lt;br /&gt;
* '''notification''' - стандартный пуш, содержит заголовок и текст сообщения;&lt;br /&gt;
* '''data payload''' - содержит произвольный набор параметров ключ-зачение (с ограничением 4Кб в firebase и 50 штук в наших реалиях)&lt;br /&gt;
&lt;br /&gt;
Сообщение может содержать либо один из этих блоков, либо оба сразу.&lt;br /&gt;
&lt;br /&gt;
При наличии в сообщении блока '''notification''' оно автоматически трактуется системой как пуш и при получении такого на устройстве - сразу закидывает его в системный трей (т.е. без нашей обработки). Мы никак не властны над подобными сообщениями и их параметрами (с параметрами то отдельная тема), а значит никаких кастомизаций в виде цветного шрифта и/или картинки не будет.&lt;br /&gt;
&lt;br /&gt;
Если сообщение имеет только '''data payload''' - оно всецело обрабатывается нашим движком, а значит мы имеем полный контроль над его отображением и всеми его параметрами. '''Но''' такие сообщения невозможно отправить из firebase консоли (т.к. там всегда должен присутствовать текст пуша), только скриптом (либо из нашей одминки).&lt;br /&gt;
&lt;br /&gt;
Для корректной работы всегда нужно использовать только '''data payload''' со структурой:&lt;br /&gt;
&lt;br /&gt;
 Тело пуша:                              # блок параметров, необходимых для отображения пуша&lt;br /&gt;
  &amp;quot;eventName&amp;quot;          : &amp;quot;EVENT_TITLE&amp;quot;,   # заголовок сообщения,  ОБЯЗАТЕЛЬНО для отображения пуша&lt;br /&gt;
  &amp;quot;eventMessage&amp;quot;       : &amp;quot;EVENT_BODY&amp;quot;,    # текст сообщения,      ОБЯЗАТЕЛЬНО для отображения пуша&lt;br /&gt;
  &amp;quot;eventType&amp;quot;          : &amp;quot;1&amp;quot;,             # 0 - показать только заголовок и сообщение; 1 - показать красивое сообщение со всеми плюшками&lt;br /&gt;
  &amp;quot;eventPriority&amp;quot;      : &amp;quot;2&amp;quot;              # приоритет пуша [-2:2], по дефолту 2&lt;br /&gt;
  &amp;quot;eventTime&amp;quot;          : &amp;quot;1541507205&amp;quot;     # время запуска пуша в UTC секундах (если отсутствует или меньше текущего времени - сразу показать)&lt;br /&gt;
  &amp;quot;evetBigPicture&amp;quot;     : &amp;quot;https://apps.absolutist.com/images/profile/no_avatar.png&amp;quot;,   # бекграунд пуша - НЕ имя ресурса, НЕ id ресурса, ТОЛЬКО ссылка&lt;br /&gt;
  &amp;quot;eventTitleColor&amp;quot;    : &amp;quot;#FF0000FF&amp;quot;,     # ARGB цвет заголовка&lt;br /&gt;
  &amp;quot;eventTextColor&amp;quot;     : &amp;quot;#FFFF0000&amp;quot;,     # ARGB цвет текста&lt;br /&gt;
 Тело данных&lt;br /&gt;
  &amp;quot;eventID&amp;quot;            : &amp;quot;EVENT_ID&amp;quot;,     # id ивента, машинка-обработчик будет переведена в это состояние (это обязательное поле, если хотите как-то обработать пуш в приложении)&lt;br /&gt;
  Далее может быть произвольный набор параметров-значений, которые будут переданы в машинку-обработчик&lt;br /&gt;
&lt;br /&gt;
===Отправка и получение сообщения приложением===&lt;br /&gt;
''(Далее речь идет только про data payload)''&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;
При получении приложением сообщения, если заполнено тело пуша (хотя бы параметры eventName и eventMessage), будет показано пуш-уведомление. Если при этом приложение работало в фоне - все дополнительные параметры будут переданы в приложение при его запуске. Если оно уже было запущено - все параметры немедленно будут обработаны.&lt;br /&gt;
&lt;br /&gt;
Все доп. параметры сообщения будут сохранены в опции в виде бандлов:&lt;br /&gt;
&lt;br /&gt;
[[Файл:Notification_bundle_struct.png]]&lt;br /&gt;
&lt;br /&gt;
===Обработка в редакторе===&lt;br /&gt;
&lt;br /&gt;
: 0. Определиться, какие евенты вы хотите обрабатывать (поле '''eventID''' в пуше) и с какими параметрами ('''эт важно!''')&lt;br /&gt;
: 1. Создать объект '''Notifications''', т.к. вся коммуникация идет через него&lt;br /&gt;
: 2. Создать машинку-обработчик и указать её в поле ''Обработчик бандлов (fcmBundleHandler)'' объекта '''Notifications'''&lt;br /&gt;
: 3. Создать машинку, которая будет раз в определенный период дёргать '''Notifications''' в состояние '''fcm_check_bundle'''&lt;br /&gt;
: 4. В состоянии ''fcm_check_bundle'' объект '''Notifications''' проверяет опции на наличие бандлов из firebase сообщений.&lt;br /&gt;
: Если бандл имеется - '''Notifications''' переводит машинку ''fcmBundleHandler'' в состояние из параметра '''eventID''' бандла.&lt;br /&gt;
: Все параметры бандла будут записаны в машинку ''fcmBundleHandler'' с приставкой &amp;quot;'''fcm_'''&amp;quot;&lt;br /&gt;
 Например имеем сообщение:&lt;br /&gt;
   &amp;quot;eventID&amp;quot;            : &amp;quot;custom_message&amp;quot;,&lt;br /&gt;
   &amp;quot;customTitle&amp;quot;        : &amp;quot;FCM RULES&amp;quot;,&lt;br /&gt;
   &amp;quot;customText&amp;quot;         : &amp;quot;SuperBananaDebugging 322&amp;quot;&lt;br /&gt;
 При ''fcm_check_bundle'' машинка-обработчик будет переведена в состояние ''custom_message'' и в неё будут добавлены 2 поля: ''fcm_customTitle'' и ''fcm_customText'' с соответствующими значениями.&lt;br /&gt;
&lt;br /&gt;
'''!ВАЖНО!'''&lt;br /&gt;
После использования параметров их нужно вручную обнулить (очистить), дабы у вас же не возникало лишних проблем.&lt;br /&gt;
&lt;br /&gt;
== Пример ==&lt;br /&gt;
&lt;br /&gt;
[http://fs5.absolutist.com/files/wikisample/notification.rar Notifications]&lt;br /&gt;
&lt;br /&gt;
[http://wiki.appsalutecreator.com/images/c/cb/FCM_Notifications_example.zip Firebase cloud messaging] - содержит проект и сприпт для отправки пушей в топик (без ключа приложения)&lt;br /&gt;
&lt;br /&gt;
[[Category:Options]]&lt;/div&gt;</summary>
		<author><name>Bmor</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.appsalutecreator.com/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:FCM_Notifications_example.zip&amp;diff=9738</id>
		<title>Файл:FCM Notifications example.zip</title>
		<link rel="alternate" type="text/html" href="https://wiki.appsalutecreator.com/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:FCM_Notifications_example.zip&amp;diff=9738"/>
		<updated>2018-11-13T08:45:12Z</updated>

		<summary type="html">&lt;p&gt;Bmor: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Bmor</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.appsalutecreator.com/index.php?title=Notification&amp;diff=9737</id>
		<title>Notification</title>
		<link rel="alternate" type="text/html" href="https://wiki.appsalutecreator.com/index.php?title=Notification&amp;diff=9737"/>
		<updated>2018-11-13T08:41:06Z</updated>

		<summary type="html">&lt;p&gt;Bmor: /* Firebase Cloud Messaging */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC right}}&lt;br /&gt;
[[Object|Объект]] '''Notification''' предназначен для показа push уведомлений на IOS устройствах.&lt;br /&gt;
&lt;br /&gt;
==Параметры объекта==&lt;br /&gt;
&lt;br /&gt;
===Основные параметры===&lt;br /&gt;
&lt;br /&gt;
*'''имя события''' (''name'') - Имя события. Если у двух событий одинаковые имена - сохранится первое. Не обязательный параметр. Перетягивается из редактора текстов. Поле должно быть в состоянии редактирования.&lt;br /&gt;
&lt;br /&gt;
*'''сообщение''' (''message'') - Основной текст события. Перетягивается из редактора текстов. Поле должно быть в состоянии редактирования.&lt;br /&gt;
&lt;br /&gt;
*'''большая картинка''' (''big_picture'') - Имя файла с большой картинкой. Должен лежать не в ресурсах, а рядом с app.icf. Поле затирается после регистрации уведомления&lt;br /&gt;
&lt;br /&gt;
*'''год''' (''year'') - Год, когда сработает оповещение. Минимальное значение - 1971 .&lt;br /&gt;
&lt;br /&gt;
*'''месяц''' (''month'') - Месяц, когда сработает оповещение. Минимальное значение - 0, максимальное - 11 .&lt;br /&gt;
&lt;br /&gt;
*'''день''' (''day'') - День, когда сработает оповещение. Минимальное значение - 1, максимальное - 31 .&lt;br /&gt;
&lt;br /&gt;
*'''час''' (''hour'') - Час, когда сработает оповещение. Минимальное значение - 0, максимальное - 23 .&lt;br /&gt;
&lt;br /&gt;
*'''минута''' (''min'') - Минута, когда сработает оповещение. Минимальное значение - 0, максимальное - 59 .&lt;br /&gt;
&lt;br /&gt;
*'''секунда''' (''sec'') - Секунда, когда сработает оповещение. Минимальное значение - 0, максимальное - 59 .&lt;br /&gt;
&lt;br /&gt;
*'''задержка''' (''delay'') - Задержка от текущего времени до оповещения. Если задана не -1 - то используется вместо даты.&lt;br /&gt;
&lt;br /&gt;
*'''перед первым init экстеншена''' (''delayInit'') - Задержка в секундах до первой инициализации расширения&lt;br /&gt;
&lt;br /&gt;
*'''цвет заголовка''' (''colorTitle'') - Цвет заголовка - только для кастомных нотификейшенов&lt;br /&gt;
&lt;br /&gt;
*'''цвет текста''' (''colorText'') - Цвет текста - только для кастомных нотификейшенов&lt;br /&gt;
&lt;br /&gt;
===Firebase Cloud Messaging===&lt;br /&gt;
&lt;br /&gt;
*'''Обработчик бандлов''' (''fcmBundleHandler'') - Объект, в который будут записаны параметры бандла и который будет переведен в состояние eventID бандла при fcm_check_bundle (см. дальше)&lt;br /&gt;
&lt;br /&gt;
==Состояния объекта==&lt;br /&gt;
&lt;br /&gt;
*'''set''' - устанавливает нотификацию в очередь&lt;br /&gt;
&lt;br /&gt;
*'''clear''' - очищает очередь нотификации&lt;br /&gt;
&lt;br /&gt;
*'''erase''' - очищает очередь нотификации от уведомления с указаннным ID темы и ID сообщения&lt;br /&gt;
&lt;br /&gt;
*'''fcm_subscribe_topic''' - Firebase only! Подписаться на топик из поля topic&lt;br /&gt;
&lt;br /&gt;
*'''fcm_unsubscribe_topic''' - Firebase only! Отписаться от топика из поля topic&lt;br /&gt;
&lt;br /&gt;
*'''fcm_check_bundle''' - Firebase only! Проверить наличие fcm бандлов&lt;br /&gt;
&lt;br /&gt;
Установка уведомлений (объект notification):&lt;br /&gt;
 Состояние&lt;br /&gt;
 &amp;quot;set&amp;quot;, - оба способа&lt;br /&gt;
 &amp;quot;set_native&amp;quot;, - устройство&lt;br /&gt;
 &amp;quot;set_parse&amp;quot;, - парс&lt;br /&gt;
 или через параметр&lt;br /&gt;
 &amp;lt;property name=&amp;quot;отсылать в&amp;quot; type=&amp;quot;enum&amp;quot; value=&amp;quot;0&amp;quot; id=&amp;quot;send&amp;quot; hint=&amp;quot;отсылать в&amp;quot; regexp=&amp;quot;обе службы=0,только локальный пуш=1,только парс=2&amp;quot; /&amp;gt; (тогда состояние set)&lt;br /&gt;
&lt;br /&gt;
==Пример применения==&lt;br /&gt;
&lt;br /&gt;
Пусть через 5 минут после нажатия на кнопку у пользователя появиится уведомление с текстом &amp;quot;message of notification&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Для этого разместим на сцене объект notification и установим ему следующие параметры:&lt;br /&gt;
&lt;br /&gt;
* задержка - 300&lt;br /&gt;
&lt;br /&gt;
[[Файл:Notification 01.jpg |upright=0.5]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
В текстовую базу занесём новые записи с названием события нотификации и текстом нотификации.&lt;br /&gt;
&lt;br /&gt;
Далее добавим на сцену кнопку, которая будет передавать параметры объекту &amp;quot;notification&amp;quot; и переводить объект &amp;quot;notification&amp;quot; в состояние &amp;quot;set&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Notification 02.jpg |upright=0.5 ]]&lt;br /&gt;
&lt;br /&gt;
Теперь при нажатии на кнопку в очередь будет поставлено извещение, которое покажет система через 5 минут.&lt;br /&gt;
На устройстве это выглядит так:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;tleft&amp;quot; style=&amp;quot;clear:none&amp;quot;&amp;gt; [[Файл:IMG 0043.PNG | мини |200пкс ]] &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;tleft&amp;quot; style=&amp;quot;clear:none&amp;quot;&amp;gt; [[Файл:IMG 0046.PNG | мини |200пкс ]] &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Информация в логах==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
I/GNotification GNotification::aviable() GNotification::aviable() - уведомления разрешены&lt;br /&gt;
I/GNotification GNotification::state() state(ST_CLEAR) clear all notifications - очистилась&lt;br /&gt;
вся очередь уведомлений&lt;br /&gt;
I/GNotification GNotification::state() state(ST_SET) - уведомление поставлено в очередь&lt;br /&gt;
I/GNotification GNotification::EraseNotification() EraseNotification erase notification title: - уведомление&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;
У объекта [[options]] можно задать параметр '''notifScrID''' (значение параметра - id экрана). Если параметр задан, то при открытии приложения из уведомления откроется выбранный экран.&lt;br /&gt;
&lt;br /&gt;
==Firebase Cloud Messaging==&lt;br /&gt;
&lt;br /&gt;
Firebase Cloud Messaging позволяет рассылать кастомные уведомления с определенным набором доп. параметров, которые в последствии будут переданы во вьювер и сохранены в опциях (fcm бандлы).&lt;br /&gt;
&lt;br /&gt;
===Подготовка проекта===&lt;br /&gt;
&lt;br /&gt;
: 1. Создайте и настройте проект в Firebase консоли ([https://console.firebase.google.com/project/ Link])&lt;br /&gt;
: 2. Скачайте из консоли файл конфигураций проекта google-services.json&lt;br /&gt;
: 3. Перенесите параметры из ''google-services.json'' в ''project\conf\pom\sdl\google_params.json'' в поле ''extra_strings''&lt;br /&gt;
    google_app_id                       &amp;gt;&amp;gt;          {YOUR_CLIENT}/client_info/mobilesdk_app_id&lt;br /&gt;
    gcm_defaultSenderId                 &amp;gt;&amp;gt;          project_info/project_number&lt;br /&gt;
    default_web_client_id               &amp;gt;&amp;gt;          {YOUR_CLIENT}/oauth_client/client_id (client_type == 3)&lt;br /&gt;
    ga_trackingId                       &amp;gt;&amp;gt;          {YOUR_CLIENT}/services/analytics-service/analytics_property/tracking_id&lt;br /&gt;
    firebase_database_url               &amp;gt;&amp;gt;          project_info/firebase_url&lt;br /&gt;
    google_api_key                      &amp;gt;&amp;gt;          {YOUR_CLIENT}/api_key/current_key&lt;br /&gt;
    google_crash_reporting_api_key      &amp;gt;&amp;gt;          {YOUR_CLIENT}/api_key/current_key&lt;br /&gt;
    project_id                          &amp;gt;&amp;gt;          project_info/project_id&lt;br /&gt;
    google_storage_bucket               &amp;gt;&amp;gt;          project_info/storage_bucket&lt;br /&gt;
: 4. В app.icf сборки добавить раздел '''[Firebase]''', дабы при сборке подтянулся нужный экстеншн.&lt;br /&gt;
&lt;br /&gt;
===Структура сообщений===&lt;br /&gt;
Сообщения firebase имеют два основных блока:&lt;br /&gt;
* '''notification''' - стандартный пуш, содержит заголовок и текст сообщения;&lt;br /&gt;
* '''data payload''' - содержит произвольный набор параметров ключ-зачение (с ограничением 4Кб в firebase и 50 штук в наших реалиях)&lt;br /&gt;
&lt;br /&gt;
Сообщение может содержать либо один из этих блоков, либо оба сразу.&lt;br /&gt;
&lt;br /&gt;
При наличии в сообщении блока '''notification''' оно автоматически трактуется системой как пуш и при получении такого на устройстве - сразу закидывает его в системный трей (т.е. без нашей обработки). Мы никак не властны над подобными сообщениями и их параметрами (с параметрами то отдельная тема), а значит никаких кастомизаций в виде цветного шрифта и/или картинки не будет.&lt;br /&gt;
&lt;br /&gt;
Если сообщение имеет только '''data payload''' - оно всецело обрабатывается нашим движком, а значит мы имеем полный контроль над его отображением и всеми его параметрами. '''Но''' такие сообщения невозможно отправить из firebase консоли (т.к. там всегда должен присутствовать текст пуша), только скриптом (либо из нашей одминки).&lt;br /&gt;
&lt;br /&gt;
Для корректной работы всегда нужно использовать только '''data payload''' со структурой:&lt;br /&gt;
&lt;br /&gt;
 Тело пуша:                              # блок параметров, необходимых для отображения пуша&lt;br /&gt;
  &amp;quot;eventName&amp;quot;          : &amp;quot;EVENT_TITLE&amp;quot;,   # заголовок сообщения,  ОБЯЗАТЕЛЬНО для отображения пуша&lt;br /&gt;
  &amp;quot;eventMessage&amp;quot;       : &amp;quot;EVENT_BODY&amp;quot;,    # текст сообщения,      ОБЯЗАТЕЛЬНО для отображения пуша&lt;br /&gt;
  &amp;quot;eventType&amp;quot;          : &amp;quot;1&amp;quot;,             # 0 - показать только заголовок и сообщение; 1 - показать красивое сообщение со всеми плюшками&lt;br /&gt;
  &amp;quot;eventPriority&amp;quot;      : &amp;quot;2&amp;quot;              # приоритет пуша [-2:2], по дефолту 2&lt;br /&gt;
  &amp;quot;eventTime&amp;quot;          : &amp;quot;1541507205&amp;quot;     # время запуска пуша в UTC секундах (если отсутствует или меньше текущего времени - сразу показать)&lt;br /&gt;
  &amp;quot;evetBigPicture&amp;quot;     : &amp;quot;https://apps.absolutist.com/images/profile/no_avatar.png&amp;quot;,   # бекграунд пуша - НЕ имя ресурса, НЕ id ресурса, ТОЛЬКО ссылка&lt;br /&gt;
  &amp;quot;eventTitleColor&amp;quot;    : &amp;quot;#FF0000FF&amp;quot;,     # ARGB цвет заголовка&lt;br /&gt;
  &amp;quot;eventTextColor&amp;quot;     : &amp;quot;#FFFF0000&amp;quot;,     # ARGB цвет текста&lt;br /&gt;
 Тело данных&lt;br /&gt;
  &amp;quot;eventID&amp;quot;            : &amp;quot;EVENT_ID&amp;quot;,     # id ивента, машинка-обработчик будет переведена в это состояние (это обязательное поле, если хотите как-то обработать пуш в приложении)&lt;br /&gt;
  Далее может быть произвольный набор параметров-значений, которые будут переданы в машинку-обработчик&lt;br /&gt;
&lt;br /&gt;
===Отправка и получение сообщения приложением===&lt;br /&gt;
''(Далее речь идет только про data payload)''&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;
При получении приложением сообщения, если заполнено тело пуша (хотя бы параметры eventName и eventMessage), будет показано пуш-уведомление. Если при этом приложение работало в фоне - все дополнительные параметры будут переданы в приложение при его запуске. Если оно уже было запущено - все параметры немедленно будут обработаны.&lt;br /&gt;
&lt;br /&gt;
Все доп. параметры сообщения будут сохранены в опции в виде бандлов:&lt;br /&gt;
&lt;br /&gt;
[[Файл:Notification_bundle_struct.png]]&lt;br /&gt;
&lt;br /&gt;
===Обработка в редакторе===&lt;br /&gt;
&lt;br /&gt;
: 0. Определиться, какие евенты вы хотите обрабатывать (поле '''eventID''' в пуше) и с какими параметрами ('''эт важно!''')&lt;br /&gt;
: 1. Создать объект '''Notifications''', т.к. вся коммуникация идет через него&lt;br /&gt;
: 2. Создать машинку-обработчик и указать её в поле ''Обработчик бандлов (fcmBundleHandler)'' объекта '''Notifications'''&lt;br /&gt;
: 3. Создать машинку, которая будет раз в определенный период дёргать '''Notifications''' в состояние '''fcm_check_bundle'''&lt;br /&gt;
: 4. В состоянии ''fcm_check_bundle'' объект '''Notifications''' проверяет опции на наличие бандлов из firebase сообщений.&lt;br /&gt;
: Если бандл имеется - '''Notifications''' переводит машинку ''fcmBundleHandler'' в состояние из параметра '''eventID''' бандла.&lt;br /&gt;
: Все параметры бандла будут записаны в машинку ''fcmBundleHandler'' с приставкой &amp;quot;'''fcm_'''&amp;quot;&lt;br /&gt;
 Например имеем сообщение:&lt;br /&gt;
   &amp;quot;eventID&amp;quot;            : &amp;quot;custom_message&amp;quot;,&lt;br /&gt;
   &amp;quot;customTitle&amp;quot;        : &amp;quot;FCM RULES&amp;quot;,&lt;br /&gt;
   &amp;quot;customText&amp;quot;         : &amp;quot;SuperBananaDebugging 322&amp;quot;&lt;br /&gt;
 При ''fcm_check_bundle'' машинка-обработчик будет переведена в состояние ''custom_message'' и в неё будут добавлены 2 поля: ''fcm_customTitle'' и ''fcm_customText'' с соответствующими значениями.&lt;br /&gt;
&lt;br /&gt;
'''!ВАЖНО!'''&lt;br /&gt;
После использования параметров их нужно вручную обнулить (очистить), дабы у вас же не возникало лишних проблем.&lt;br /&gt;
&lt;br /&gt;
== Пример ==&lt;br /&gt;
&lt;br /&gt;
[http://fs5.absolutist.com/files/wikisample/notification.rar Download]&lt;br /&gt;
&lt;br /&gt;
[[Category:Options]]&lt;/div&gt;</summary>
		<author><name>Bmor</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.appsalutecreator.com/index.php?title=Notification&amp;diff=9736</id>
		<title>Notification</title>
		<link rel="alternate" type="text/html" href="https://wiki.appsalutecreator.com/index.php?title=Notification&amp;diff=9736"/>
		<updated>2018-11-13T08:40:55Z</updated>

		<summary type="html">&lt;p&gt;Bmor: /* Обработка в редакторе */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC right}}&lt;br /&gt;
[[Object|Объект]] '''Notification''' предназначен для показа push уведомлений на IOS устройствах.&lt;br /&gt;
&lt;br /&gt;
==Параметры объекта==&lt;br /&gt;
&lt;br /&gt;
===Основные параметры===&lt;br /&gt;
&lt;br /&gt;
*'''имя события''' (''name'') - Имя события. Если у двух событий одинаковые имена - сохранится первое. Не обязательный параметр. Перетягивается из редактора текстов. Поле должно быть в состоянии редактирования.&lt;br /&gt;
&lt;br /&gt;
*'''сообщение''' (''message'') - Основной текст события. Перетягивается из редактора текстов. Поле должно быть в состоянии редактирования.&lt;br /&gt;
&lt;br /&gt;
*'''большая картинка''' (''big_picture'') - Имя файла с большой картинкой. Должен лежать не в ресурсах, а рядом с app.icf. Поле затирается после регистрации уведомления&lt;br /&gt;
&lt;br /&gt;
*'''год''' (''year'') - Год, когда сработает оповещение. Минимальное значение - 1971 .&lt;br /&gt;
&lt;br /&gt;
*'''месяц''' (''month'') - Месяц, когда сработает оповещение. Минимальное значение - 0, максимальное - 11 .&lt;br /&gt;
&lt;br /&gt;
*'''день''' (''day'') - День, когда сработает оповещение. Минимальное значение - 1, максимальное - 31 .&lt;br /&gt;
&lt;br /&gt;
*'''час''' (''hour'') - Час, когда сработает оповещение. Минимальное значение - 0, максимальное - 23 .&lt;br /&gt;
&lt;br /&gt;
*'''минута''' (''min'') - Минута, когда сработает оповещение. Минимальное значение - 0, максимальное - 59 .&lt;br /&gt;
&lt;br /&gt;
*'''секунда''' (''sec'') - Секунда, когда сработает оповещение. Минимальное значение - 0, максимальное - 59 .&lt;br /&gt;
&lt;br /&gt;
*'''задержка''' (''delay'') - Задержка от текущего времени до оповещения. Если задана не -1 - то используется вместо даты.&lt;br /&gt;
&lt;br /&gt;
*'''перед первым init экстеншена''' (''delayInit'') - Задержка в секундах до первой инициализации расширения&lt;br /&gt;
&lt;br /&gt;
*'''цвет заголовка''' (''colorTitle'') - Цвет заголовка - только для кастомных нотификейшенов&lt;br /&gt;
&lt;br /&gt;
*'''цвет текста''' (''colorText'') - Цвет текста - только для кастомных нотификейшенов&lt;br /&gt;
&lt;br /&gt;
===Firebase Cloud Messaging===&lt;br /&gt;
&lt;br /&gt;
*'''Обработчик бандлов''' (''fcmBundleHandler'') - Объект, в который будут записаны параметры бандла и который будет переведен в состояние eventID бандла при fcm_check_bundle (см. дальше)&lt;br /&gt;
&lt;br /&gt;
==Состояния объекта==&lt;br /&gt;
&lt;br /&gt;
*'''set''' - устанавливает нотификацию в очередь&lt;br /&gt;
&lt;br /&gt;
*'''clear''' - очищает очередь нотификации&lt;br /&gt;
&lt;br /&gt;
*'''erase''' - очищает очередь нотификации от уведомления с указаннным ID темы и ID сообщения&lt;br /&gt;
&lt;br /&gt;
*'''fcm_subscribe_topic''' - Firebase only! Подписаться на топик из поля topic&lt;br /&gt;
&lt;br /&gt;
*'''fcm_unsubscribe_topic''' - Firebase only! Отписаться от топика из поля topic&lt;br /&gt;
&lt;br /&gt;
*'''fcm_check_bundle''' - Firebase only! Проверить наличие fcm бандлов&lt;br /&gt;
&lt;br /&gt;
Установка уведомлений (объект notification):&lt;br /&gt;
 Состояние&lt;br /&gt;
 &amp;quot;set&amp;quot;, - оба способа&lt;br /&gt;
 &amp;quot;set_native&amp;quot;, - устройство&lt;br /&gt;
 &amp;quot;set_parse&amp;quot;, - парс&lt;br /&gt;
 или через параметр&lt;br /&gt;
 &amp;lt;property name=&amp;quot;отсылать в&amp;quot; type=&amp;quot;enum&amp;quot; value=&amp;quot;0&amp;quot; id=&amp;quot;send&amp;quot; hint=&amp;quot;отсылать в&amp;quot; regexp=&amp;quot;обе службы=0,только локальный пуш=1,только парс=2&amp;quot; /&amp;gt; (тогда состояние set)&lt;br /&gt;
&lt;br /&gt;
==Пример применения==&lt;br /&gt;
&lt;br /&gt;
Пусть через 5 минут после нажатия на кнопку у пользователя появиится уведомление с текстом &amp;quot;message of notification&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Для этого разместим на сцене объект notification и установим ему следующие параметры:&lt;br /&gt;
&lt;br /&gt;
* задержка - 300&lt;br /&gt;
&lt;br /&gt;
[[Файл:Notification 01.jpg |upright=0.5]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
В текстовую базу занесём новые записи с названием события нотификации и текстом нотификации.&lt;br /&gt;
&lt;br /&gt;
Далее добавим на сцену кнопку, которая будет передавать параметры объекту &amp;quot;notification&amp;quot; и переводить объект &amp;quot;notification&amp;quot; в состояние &amp;quot;set&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Notification 02.jpg |upright=0.5 ]]&lt;br /&gt;
&lt;br /&gt;
Теперь при нажатии на кнопку в очередь будет поставлено извещение, которое покажет система через 5 минут.&lt;br /&gt;
На устройстве это выглядит так:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;tleft&amp;quot; style=&amp;quot;clear:none&amp;quot;&amp;gt; [[Файл:IMG 0043.PNG | мини |200пкс ]] &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;tleft&amp;quot; style=&amp;quot;clear:none&amp;quot;&amp;gt; [[Файл:IMG 0046.PNG | мини |200пкс ]] &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Информация в логах==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
I/GNotification GNotification::aviable() GNotification::aviable() - уведомления разрешены&lt;br /&gt;
I/GNotification GNotification::state() state(ST_CLEAR) clear all notifications - очистилась&lt;br /&gt;
вся очередь уведомлений&lt;br /&gt;
I/GNotification GNotification::state() state(ST_SET) - уведомление поставлено в очередь&lt;br /&gt;
I/GNotification GNotification::EraseNotification() EraseNotification erase notification title: - уведомление&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;
У объекта [[options]] можно задать параметр '''notifScrID''' (значение параметра - id экрана). Если параметр задан, то при открытии приложения из уведомления откроется выбранный экран.&lt;br /&gt;
&lt;br /&gt;
==Firebase Cloud Messaging==&lt;br /&gt;
&lt;br /&gt;
Firebase Cloud Messaging позволяет рассылать кастомные уведомления с определенным набором доп. параметров, которые в последствии будут переданы во вьювер и сохранены в опциях (fcm бандлы).&lt;br /&gt;
&lt;br /&gt;
===Подготовка проекта===&lt;br /&gt;
&lt;br /&gt;
: 1. Создайте и настройте проект в Firebase консоли ([https://console.firebase.google.com/project/ Link])&lt;br /&gt;
: 2. Скачайте из консоли файл конфигураций проекта google-services.json&lt;br /&gt;
: 3. Перенесите параметры из ''google-services.json'' в ''project\conf\pom\sdl\google_params.json'' в поле ''extra_strings''&lt;br /&gt;
    google_app_id                       &amp;gt;&amp;gt;          {YOUR_CLIENT}/client_info/mobilesdk_app_id&lt;br /&gt;
    gcm_defaultSenderId                 &amp;gt;&amp;gt;          project_info/project_number&lt;br /&gt;
    default_web_client_id               &amp;gt;&amp;gt;          {YOUR_CLIENT}/oauth_client/client_id (client_type == 3)&lt;br /&gt;
    ga_trackingId                       &amp;gt;&amp;gt;          {YOUR_CLIENT}/services/analytics-service/analytics_property/tracking_id&lt;br /&gt;
    firebase_database_url               &amp;gt;&amp;gt;          project_info/firebase_url&lt;br /&gt;
    google_api_key                      &amp;gt;&amp;gt;          {YOUR_CLIENT}/api_key/current_key&lt;br /&gt;
    google_crash_reporting_api_key      &amp;gt;&amp;gt;          {YOUR_CLIENT}/api_key/current_key&lt;br /&gt;
    project_id                          &amp;gt;&amp;gt;          project_info/project_id&lt;br /&gt;
    google_storage_bucket               &amp;gt;&amp;gt;          project_info/storage_bucket&lt;br /&gt;
: 4. В app.icf сборки добавить раздел '''[Firebase]''', дабы при сборке подтянулся нужный экстеншн.&lt;br /&gt;
&lt;br /&gt;
===Структура сообщений===&lt;br /&gt;
Сообщения firebase имеют два основных блока:&lt;br /&gt;
* '''notification''' - стандартный пуш, содержит заголовок и текст сообщения;&lt;br /&gt;
* '''data payload''' - содержит произвольный набор параметров ключ-зачение (с ограничением 4Кб в firebase и 50 штук в наших реалиях)&lt;br /&gt;
&lt;br /&gt;
Сообщение может содержать либо один из этих блоков, либо оба сразу.&lt;br /&gt;
&lt;br /&gt;
При наличии в сообщении блока '''notification''' оно автоматически трактуется системой как пуш и при получении такого на устройстве - сразу закидывает его в системный трей (т.е. без нашей обработки). Мы никак не властны над подобными сообщениями и их параметрами (с параметрами то отдельная тема), а значит никаких кастомизаций в виде цветного шрифта и/или картинки не будет.&lt;br /&gt;
&lt;br /&gt;
Если сообщение имеет только '''data payload''' - оно всецело обрабатывается нашим движком, а значит мы имеем полный контроль над его отображением и всеми его параметрами. '''Но''' такие сообщения невозможно отправить из firebase консоли (т.к. там всегда должен присутствовать текст пуша), только скриптом (либо из нашей одминки).&lt;br /&gt;
&lt;br /&gt;
Для корректной работы всегда нужно использовать только '''data payload''' со структурой:&lt;br /&gt;
&lt;br /&gt;
 Тело пуша:                              # блок параметров, необходимых для отображения пуша&lt;br /&gt;
  &amp;quot;eventName&amp;quot;          : &amp;quot;EVENT_TITLE&amp;quot;,   # заголовок сообщения,  ОБЯЗАТЕЛЬНО для отображения пуша&lt;br /&gt;
  &amp;quot;eventMessage&amp;quot;       : &amp;quot;EVENT_BODY&amp;quot;,    # текст сообщения,      ОБЯЗАТЕЛЬНО для отображения пуша&lt;br /&gt;
  &amp;quot;eventType&amp;quot;          : &amp;quot;1&amp;quot;,             # 0 - показать только заголовок и сообщение; 1 - показать красивое сообщение со всеми плюшками&lt;br /&gt;
  &amp;quot;eventPriority&amp;quot;      : &amp;quot;2&amp;quot;              # приоритет пуша [-2:2], по дефолту 2&lt;br /&gt;
  &amp;quot;eventTime&amp;quot;          : &amp;quot;1541507205&amp;quot;     # время запуска пуша в UTC секундах (если отсутствует или меньше текущего времени - сразу показать)&lt;br /&gt;
  &amp;quot;evetBigPicture&amp;quot;     : &amp;quot;https://apps.absolutist.com/images/profile/no_avatar.png&amp;quot;,   # бекграунд пуша - НЕ имя ресурса, НЕ id ресурса, ТОЛЬКО ссылка&lt;br /&gt;
  &amp;quot;eventTitleColor&amp;quot;    : &amp;quot;#FF0000FF&amp;quot;,     # ARGB цвет заголовка&lt;br /&gt;
  &amp;quot;eventTextColor&amp;quot;     : &amp;quot;#FFFF0000&amp;quot;,     # ARGB цвет текста&lt;br /&gt;
 Тело данных&lt;br /&gt;
  &amp;quot;eventID&amp;quot;            : &amp;quot;EVENT_ID&amp;quot;,     # id ивента, машинка-обработчик будет переведена в это состояние (это обязательное поле, если хотите как-то обработать пуш в приложении)&lt;br /&gt;
  Далее может быть произвольный набор параметров-значений, которые будут переданы в машинку-обработчик&lt;br /&gt;
&lt;br /&gt;
===Отправка и получение сообщения приложением===&lt;br /&gt;
''(Далее речь идет только про data payload)''&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;
При получении приложением сообщения, если заполнено тело пуша (хотя бы параметры eventName и eventMessage), будет показано пуш-уведомление. Если при этом приложение работало в фоне - все дополнительные параметры будут переданы в приложение при его запуске. Если оно уже было запущено - все параметры немедленно будут обработаны.&lt;br /&gt;
&lt;br /&gt;
Все доп. параметры сообщения будут сохранены в опции в виде бандлов:&lt;br /&gt;
&lt;br /&gt;
[[Файл:Notification_bundle_struct.png]]&lt;br /&gt;
&lt;br /&gt;
===Обработка в редакторе===&lt;br /&gt;
&lt;br /&gt;
: 0. Определиться, какие евенты вы хотите обрабатывать (поле '''eventID''' в пуше) и с какими параметрами ('''эт важно!''')&lt;br /&gt;
: 1. Создать объект '''Notifications''', т.к. вся коммуникация идет через него&lt;br /&gt;
: 2. Создать машинку-обработчик и указать её в поле ''Обработчик бандлов (fcmBundleHandler)'' объекта '''Notifications'''&lt;br /&gt;
: 3. Создать машинку, которая будет раз в определенный период дёргать '''Notifications''' в состояние '''fcm_check_bundle'''&lt;br /&gt;
: 4. В состоянии ''fcm_check_bundle'' объект '''Notifications''' проверяет опции на наличие бандлов из firebase сообщений.&lt;br /&gt;
: Если бандл имеется - '''Notifications''' переводит машинку ''fcmBundleHandler'' в состояние из параметра '''eventID''' бандла.&lt;br /&gt;
: Все параметры бандла будут записаны в машинку ''fcmBundleHandler'' с приставкой &amp;quot;'''fcm_'''&amp;quot;&lt;br /&gt;
 Например имеем сообщение:&lt;br /&gt;
   &amp;quot;eventID&amp;quot;            : &amp;quot;custom_message&amp;quot;,&lt;br /&gt;
   &amp;quot;customTitle&amp;quot;        : &amp;quot;FCM RULES&amp;quot;,&lt;br /&gt;
   &amp;quot;customText&amp;quot;         : &amp;quot;SuperBananaDebugging 322&amp;quot;&lt;br /&gt;
 При ''fcm_check_bundle'' машинка-обработчик будет переведена в состояние ''custom_message'' и в неё будут добавлены 2 поля: ''fcm_customTitle'' и ''fcm_customText'' с соответствующими значениями.&lt;br /&gt;
&lt;br /&gt;
'''!ВАЖНО!'''&lt;br /&gt;
После использования параметров их нужно вручную обнулить (очистить), дабы у вас же не возникало лишних проблем.&lt;br /&gt;
&lt;br /&gt;
===Отправка сообщений===&lt;br /&gt;
todo&lt;br /&gt;
&lt;br /&gt;
== Пример ==&lt;br /&gt;
&lt;br /&gt;
[http://fs5.absolutist.com/files/wikisample/notification.rar Download]&lt;br /&gt;
&lt;br /&gt;
[[Category:Options]]&lt;/div&gt;</summary>
		<author><name>Bmor</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.appsalutecreator.com/index.php?title=Notification&amp;diff=9735</id>
		<title>Notification</title>
		<link rel="alternate" type="text/html" href="https://wiki.appsalutecreator.com/index.php?title=Notification&amp;diff=9735"/>
		<updated>2018-11-13T08:30:38Z</updated>

		<summary type="html">&lt;p&gt;Bmor: /* Отправка и получение сообщения приложением */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC right}}&lt;br /&gt;
[[Object|Объект]] '''Notification''' предназначен для показа push уведомлений на IOS устройствах.&lt;br /&gt;
&lt;br /&gt;
==Параметры объекта==&lt;br /&gt;
&lt;br /&gt;
===Основные параметры===&lt;br /&gt;
&lt;br /&gt;
*'''имя события''' (''name'') - Имя события. Если у двух событий одинаковые имена - сохранится первое. Не обязательный параметр. Перетягивается из редактора текстов. Поле должно быть в состоянии редактирования.&lt;br /&gt;
&lt;br /&gt;
*'''сообщение''' (''message'') - Основной текст события. Перетягивается из редактора текстов. Поле должно быть в состоянии редактирования.&lt;br /&gt;
&lt;br /&gt;
*'''большая картинка''' (''big_picture'') - Имя файла с большой картинкой. Должен лежать не в ресурсах, а рядом с app.icf. Поле затирается после регистрации уведомления&lt;br /&gt;
&lt;br /&gt;
*'''год''' (''year'') - Год, когда сработает оповещение. Минимальное значение - 1971 .&lt;br /&gt;
&lt;br /&gt;
*'''месяц''' (''month'') - Месяц, когда сработает оповещение. Минимальное значение - 0, максимальное - 11 .&lt;br /&gt;
&lt;br /&gt;
*'''день''' (''day'') - День, когда сработает оповещение. Минимальное значение - 1, максимальное - 31 .&lt;br /&gt;
&lt;br /&gt;
*'''час''' (''hour'') - Час, когда сработает оповещение. Минимальное значение - 0, максимальное - 23 .&lt;br /&gt;
&lt;br /&gt;
*'''минута''' (''min'') - Минута, когда сработает оповещение. Минимальное значение - 0, максимальное - 59 .&lt;br /&gt;
&lt;br /&gt;
*'''секунда''' (''sec'') - Секунда, когда сработает оповещение. Минимальное значение - 0, максимальное - 59 .&lt;br /&gt;
&lt;br /&gt;
*'''задержка''' (''delay'') - Задержка от текущего времени до оповещения. Если задана не -1 - то используется вместо даты.&lt;br /&gt;
&lt;br /&gt;
*'''перед первым init экстеншена''' (''delayInit'') - Задержка в секундах до первой инициализации расширения&lt;br /&gt;
&lt;br /&gt;
*'''цвет заголовка''' (''colorTitle'') - Цвет заголовка - только для кастомных нотификейшенов&lt;br /&gt;
&lt;br /&gt;
*'''цвет текста''' (''colorText'') - Цвет текста - только для кастомных нотификейшенов&lt;br /&gt;
&lt;br /&gt;
===Firebase Cloud Messaging===&lt;br /&gt;
&lt;br /&gt;
*'''Обработчик бандлов''' (''fcmBundleHandler'') - Объект, в который будут записаны параметры бандла и который будет переведен в состояние eventID бандла при fcm_check_bundle (см. дальше)&lt;br /&gt;
&lt;br /&gt;
==Состояния объекта==&lt;br /&gt;
&lt;br /&gt;
*'''set''' - устанавливает нотификацию в очередь&lt;br /&gt;
&lt;br /&gt;
*'''clear''' - очищает очередь нотификации&lt;br /&gt;
&lt;br /&gt;
*'''erase''' - очищает очередь нотификации от уведомления с указаннным ID темы и ID сообщения&lt;br /&gt;
&lt;br /&gt;
*'''fcm_subscribe_topic''' - Firebase only! Подписаться на топик из поля topic&lt;br /&gt;
&lt;br /&gt;
*'''fcm_unsubscribe_topic''' - Firebase only! Отписаться от топика из поля topic&lt;br /&gt;
&lt;br /&gt;
*'''fcm_check_bundle''' - Firebase only! Проверить наличие fcm бандлов&lt;br /&gt;
&lt;br /&gt;
Установка уведомлений (объект notification):&lt;br /&gt;
 Состояние&lt;br /&gt;
 &amp;quot;set&amp;quot;, - оба способа&lt;br /&gt;
 &amp;quot;set_native&amp;quot;, - устройство&lt;br /&gt;
 &amp;quot;set_parse&amp;quot;, - парс&lt;br /&gt;
 или через параметр&lt;br /&gt;
 &amp;lt;property name=&amp;quot;отсылать в&amp;quot; type=&amp;quot;enum&amp;quot; value=&amp;quot;0&amp;quot; id=&amp;quot;send&amp;quot; hint=&amp;quot;отсылать в&amp;quot; regexp=&amp;quot;обе службы=0,только локальный пуш=1,только парс=2&amp;quot; /&amp;gt; (тогда состояние set)&lt;br /&gt;
&lt;br /&gt;
==Пример применения==&lt;br /&gt;
&lt;br /&gt;
Пусть через 5 минут после нажатия на кнопку у пользователя появиится уведомление с текстом &amp;quot;message of notification&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Для этого разместим на сцене объект notification и установим ему следующие параметры:&lt;br /&gt;
&lt;br /&gt;
* задержка - 300&lt;br /&gt;
&lt;br /&gt;
[[Файл:Notification 01.jpg |upright=0.5]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
В текстовую базу занесём новые записи с названием события нотификации и текстом нотификации.&lt;br /&gt;
&lt;br /&gt;
Далее добавим на сцену кнопку, которая будет передавать параметры объекту &amp;quot;notification&amp;quot; и переводить объект &amp;quot;notification&amp;quot; в состояние &amp;quot;set&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Notification 02.jpg |upright=0.5 ]]&lt;br /&gt;
&lt;br /&gt;
Теперь при нажатии на кнопку в очередь будет поставлено извещение, которое покажет система через 5 минут.&lt;br /&gt;
На устройстве это выглядит так:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;tleft&amp;quot; style=&amp;quot;clear:none&amp;quot;&amp;gt; [[Файл:IMG 0043.PNG | мини |200пкс ]] &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;tleft&amp;quot; style=&amp;quot;clear:none&amp;quot;&amp;gt; [[Файл:IMG 0046.PNG | мини |200пкс ]] &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Информация в логах==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
I/GNotification GNotification::aviable() GNotification::aviable() - уведомления разрешены&lt;br /&gt;
I/GNotification GNotification::state() state(ST_CLEAR) clear all notifications - очистилась&lt;br /&gt;
вся очередь уведомлений&lt;br /&gt;
I/GNotification GNotification::state() state(ST_SET) - уведомление поставлено в очередь&lt;br /&gt;
I/GNotification GNotification::EraseNotification() EraseNotification erase notification title: - уведомление&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;
У объекта [[options]] можно задать параметр '''notifScrID''' (значение параметра - id экрана). Если параметр задан, то при открытии приложения из уведомления откроется выбранный экран.&lt;br /&gt;
&lt;br /&gt;
==Firebase Cloud Messaging==&lt;br /&gt;
&lt;br /&gt;
Firebase Cloud Messaging позволяет рассылать кастомные уведомления с определенным набором доп. параметров, которые в последствии будут переданы во вьювер и сохранены в опциях (fcm бандлы).&lt;br /&gt;
&lt;br /&gt;
===Подготовка проекта===&lt;br /&gt;
&lt;br /&gt;
: 1. Создайте и настройте проект в Firebase консоли ([https://console.firebase.google.com/project/ Link])&lt;br /&gt;
: 2. Скачайте из консоли файл конфигураций проекта google-services.json&lt;br /&gt;
: 3. Перенесите параметры из ''google-services.json'' в ''project\conf\pom\sdl\google_params.json'' в поле ''extra_strings''&lt;br /&gt;
    google_app_id                       &amp;gt;&amp;gt;          {YOUR_CLIENT}/client_info/mobilesdk_app_id&lt;br /&gt;
    gcm_defaultSenderId                 &amp;gt;&amp;gt;          project_info/project_number&lt;br /&gt;
    default_web_client_id               &amp;gt;&amp;gt;          {YOUR_CLIENT}/oauth_client/client_id (client_type == 3)&lt;br /&gt;
    ga_trackingId                       &amp;gt;&amp;gt;          {YOUR_CLIENT}/services/analytics-service/analytics_property/tracking_id&lt;br /&gt;
    firebase_database_url               &amp;gt;&amp;gt;          project_info/firebase_url&lt;br /&gt;
    google_api_key                      &amp;gt;&amp;gt;          {YOUR_CLIENT}/api_key/current_key&lt;br /&gt;
    google_crash_reporting_api_key      &amp;gt;&amp;gt;          {YOUR_CLIENT}/api_key/current_key&lt;br /&gt;
    project_id                          &amp;gt;&amp;gt;          project_info/project_id&lt;br /&gt;
    google_storage_bucket               &amp;gt;&amp;gt;          project_info/storage_bucket&lt;br /&gt;
: 4. В app.icf сборки добавить раздел '''[Firebase]''', дабы при сборке подтянулся нужный экстеншн.&lt;br /&gt;
&lt;br /&gt;
===Структура сообщений===&lt;br /&gt;
Сообщения firebase имеют два основных блока:&lt;br /&gt;
* '''notification''' - стандартный пуш, содержит заголовок и текст сообщения;&lt;br /&gt;
* '''data payload''' - содержит произвольный набор параметров ключ-зачение (с ограничением 4Кб в firebase и 50 штук в наших реалиях)&lt;br /&gt;
&lt;br /&gt;
Сообщение может содержать либо один из этих блоков, либо оба сразу.&lt;br /&gt;
&lt;br /&gt;
При наличии в сообщении блока '''notification''' оно автоматически трактуется системой как пуш и при получении такого на устройстве - сразу закидывает его в системный трей (т.е. без нашей обработки). Мы никак не властны над подобными сообщениями и их параметрами (с параметрами то отдельная тема), а значит никаких кастомизаций в виде цветного шрифта и/или картинки не будет.&lt;br /&gt;
&lt;br /&gt;
Если сообщение имеет только '''data payload''' - оно всецело обрабатывается нашим движком, а значит мы имеем полный контроль над его отображением и всеми его параметрами. '''Но''' такие сообщения невозможно отправить из firebase консоли (т.к. там всегда должен присутствовать текст пуша), только скриптом (либо из нашей одминки).&lt;br /&gt;
&lt;br /&gt;
Для корректной работы всегда нужно использовать только '''data payload''' со структурой:&lt;br /&gt;
&lt;br /&gt;
 Тело пуша:                              # блок параметров, необходимых для отображения пуша&lt;br /&gt;
  &amp;quot;eventName&amp;quot;          : &amp;quot;EVENT_TITLE&amp;quot;,   # заголовок сообщения,  ОБЯЗАТЕЛЬНО для отображения пуша&lt;br /&gt;
  &amp;quot;eventMessage&amp;quot;       : &amp;quot;EVENT_BODY&amp;quot;,    # текст сообщения,      ОБЯЗАТЕЛЬНО для отображения пуша&lt;br /&gt;
  &amp;quot;eventType&amp;quot;          : &amp;quot;1&amp;quot;,             # 0 - показать только заголовок и сообщение; 1 - показать красивое сообщение со всеми плюшками&lt;br /&gt;
  &amp;quot;eventPriority&amp;quot;      : &amp;quot;2&amp;quot;              # приоритет пуша [-2:2], по дефолту 2&lt;br /&gt;
  &amp;quot;eventTime&amp;quot;          : &amp;quot;1541507205&amp;quot;     # время запуска пуша в UTC секундах (если отсутствует или меньше текущего времени - сразу показать)&lt;br /&gt;
  &amp;quot;evetBigPicture&amp;quot;     : &amp;quot;https://apps.absolutist.com/images/profile/no_avatar.png&amp;quot;,   # бекграунд пуша - НЕ имя ресурса, НЕ id ресурса, ТОЛЬКО ссылка&lt;br /&gt;
  &amp;quot;eventTitleColor&amp;quot;    : &amp;quot;#FF0000FF&amp;quot;,     # ARGB цвет заголовка&lt;br /&gt;
  &amp;quot;eventTextColor&amp;quot;     : &amp;quot;#FFFF0000&amp;quot;,     # ARGB цвет текста&lt;br /&gt;
 Тело данных&lt;br /&gt;
  &amp;quot;eventID&amp;quot;            : &amp;quot;EVENT_ID&amp;quot;,     # id ивента, машинка-обработчик будет переведена в это состояние (это обязательное поле, если хотите как-то обработать пуш в приложении)&lt;br /&gt;
  Далее может быть произвольный набор параметров-значений, которые будут переданы в машинку-обработчик&lt;br /&gt;
&lt;br /&gt;
===Отправка и получение сообщения приложением===&lt;br /&gt;
''(Далее речь идет только про data payload)''&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;
При получении приложением сообщения, если заполнено тело пуша (хотя бы параметры eventName и eventMessage), будет показано пуш-уведомление. Если при этом приложение работало в фоне - все дополнительные параметры будут переданы в приложение при его запуске. Если оно уже было запущено - все параметры немедленно будут обработаны.&lt;br /&gt;
&lt;br /&gt;
Все доп. параметры сообщения будут сохранены в опции в виде бандлов:&lt;br /&gt;
&lt;br /&gt;
[[Файл:Notification_bundle_struct.png]]&lt;br /&gt;
&lt;br /&gt;
===Обработка в редакторе===&lt;br /&gt;
&lt;br /&gt;
: 0. Определиться, какие евенты вы хотите обрабатывать (поле '''eventID''' в пуше) и с какими параметрами ('''эт важно!''')&lt;br /&gt;
: 1. Создать объект '''Notifications''', т.к. вся коммуникация идет через него&lt;br /&gt;
: 2. Создать машинку-обработчик и указать её в поле ''Обработчик бандлов (fcmBundleHandler)'' объекта '''Notifications'''&lt;br /&gt;
: 3. Создать машинку, которая будет раз в определенный период дёргать '''Notifications''' в состояние '''fcm_check_bundle'''&lt;br /&gt;
: 4.0. В состоянии ''fcm_check_bundle'' объект '''Notifications''' проверяет опции на наличие бандлов из firebase сообщений.&lt;br /&gt;
Если бандл имеется - '''Notifications''' переводит машинку ''fcmBundleHandler'' в состояние из параметра '''eventID''' бандла.&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Отправка сообщений===&lt;br /&gt;
todo&lt;br /&gt;
&lt;br /&gt;
== Пример ==&lt;br /&gt;
&lt;br /&gt;
[http://fs5.absolutist.com/files/wikisample/notification.rar Download]&lt;br /&gt;
&lt;br /&gt;
[[Category:Options]]&lt;/div&gt;</summary>
		<author><name>Bmor</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.appsalutecreator.com/index.php?title=Notification&amp;diff=9734</id>
		<title>Notification</title>
		<link rel="alternate" type="text/html" href="https://wiki.appsalutecreator.com/index.php?title=Notification&amp;diff=9734"/>
		<updated>2018-11-13T08:29:57Z</updated>

		<summary type="html">&lt;p&gt;Bmor: /* Отправка и получение сообщения приложением */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC right}}&lt;br /&gt;
[[Object|Объект]] '''Notification''' предназначен для показа push уведомлений на IOS устройствах.&lt;br /&gt;
&lt;br /&gt;
==Параметры объекта==&lt;br /&gt;
&lt;br /&gt;
===Основные параметры===&lt;br /&gt;
&lt;br /&gt;
*'''имя события''' (''name'') - Имя события. Если у двух событий одинаковые имена - сохранится первое. Не обязательный параметр. Перетягивается из редактора текстов. Поле должно быть в состоянии редактирования.&lt;br /&gt;
&lt;br /&gt;
*'''сообщение''' (''message'') - Основной текст события. Перетягивается из редактора текстов. Поле должно быть в состоянии редактирования.&lt;br /&gt;
&lt;br /&gt;
*'''большая картинка''' (''big_picture'') - Имя файла с большой картинкой. Должен лежать не в ресурсах, а рядом с app.icf. Поле затирается после регистрации уведомления&lt;br /&gt;
&lt;br /&gt;
*'''год''' (''year'') - Год, когда сработает оповещение. Минимальное значение - 1971 .&lt;br /&gt;
&lt;br /&gt;
*'''месяц''' (''month'') - Месяц, когда сработает оповещение. Минимальное значение - 0, максимальное - 11 .&lt;br /&gt;
&lt;br /&gt;
*'''день''' (''day'') - День, когда сработает оповещение. Минимальное значение - 1, максимальное - 31 .&lt;br /&gt;
&lt;br /&gt;
*'''час''' (''hour'') - Час, когда сработает оповещение. Минимальное значение - 0, максимальное - 23 .&lt;br /&gt;
&lt;br /&gt;
*'''минута''' (''min'') - Минута, когда сработает оповещение. Минимальное значение - 0, максимальное - 59 .&lt;br /&gt;
&lt;br /&gt;
*'''секунда''' (''sec'') - Секунда, когда сработает оповещение. Минимальное значение - 0, максимальное - 59 .&lt;br /&gt;
&lt;br /&gt;
*'''задержка''' (''delay'') - Задержка от текущего времени до оповещения. Если задана не -1 - то используется вместо даты.&lt;br /&gt;
&lt;br /&gt;
*'''перед первым init экстеншена''' (''delayInit'') - Задержка в секундах до первой инициализации расширения&lt;br /&gt;
&lt;br /&gt;
*'''цвет заголовка''' (''colorTitle'') - Цвет заголовка - только для кастомных нотификейшенов&lt;br /&gt;
&lt;br /&gt;
*'''цвет текста''' (''colorText'') - Цвет текста - только для кастомных нотификейшенов&lt;br /&gt;
&lt;br /&gt;
===Firebase Cloud Messaging===&lt;br /&gt;
&lt;br /&gt;
*'''Обработчик бандлов''' (''fcmBundleHandler'') - Объект, в который будут записаны параметры бандла и который будет переведен в состояние eventID бандла при fcm_check_bundle (см. дальше)&lt;br /&gt;
&lt;br /&gt;
==Состояния объекта==&lt;br /&gt;
&lt;br /&gt;
*'''set''' - устанавливает нотификацию в очередь&lt;br /&gt;
&lt;br /&gt;
*'''clear''' - очищает очередь нотификации&lt;br /&gt;
&lt;br /&gt;
*'''erase''' - очищает очередь нотификации от уведомления с указаннным ID темы и ID сообщения&lt;br /&gt;
&lt;br /&gt;
*'''fcm_subscribe_topic''' - Firebase only! Подписаться на топик из поля topic&lt;br /&gt;
&lt;br /&gt;
*'''fcm_unsubscribe_topic''' - Firebase only! Отписаться от топика из поля topic&lt;br /&gt;
&lt;br /&gt;
*'''fcm_check_bundle''' - Firebase only! Проверить наличие fcm бандлов&lt;br /&gt;
&lt;br /&gt;
Установка уведомлений (объект notification):&lt;br /&gt;
 Состояние&lt;br /&gt;
 &amp;quot;set&amp;quot;, - оба способа&lt;br /&gt;
 &amp;quot;set_native&amp;quot;, - устройство&lt;br /&gt;
 &amp;quot;set_parse&amp;quot;, - парс&lt;br /&gt;
 или через параметр&lt;br /&gt;
 &amp;lt;property name=&amp;quot;отсылать в&amp;quot; type=&amp;quot;enum&amp;quot; value=&amp;quot;0&amp;quot; id=&amp;quot;send&amp;quot; hint=&amp;quot;отсылать в&amp;quot; regexp=&amp;quot;обе службы=0,только локальный пуш=1,только парс=2&amp;quot; /&amp;gt; (тогда состояние set)&lt;br /&gt;
&lt;br /&gt;
==Пример применения==&lt;br /&gt;
&lt;br /&gt;
Пусть через 5 минут после нажатия на кнопку у пользователя появиится уведомление с текстом &amp;quot;message of notification&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Для этого разместим на сцене объект notification и установим ему следующие параметры:&lt;br /&gt;
&lt;br /&gt;
* задержка - 300&lt;br /&gt;
&lt;br /&gt;
[[Файл:Notification 01.jpg |upright=0.5]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
В текстовую базу занесём новые записи с названием события нотификации и текстом нотификации.&lt;br /&gt;
&lt;br /&gt;
Далее добавим на сцену кнопку, которая будет передавать параметры объекту &amp;quot;notification&amp;quot; и переводить объект &amp;quot;notification&amp;quot; в состояние &amp;quot;set&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Notification 02.jpg |upright=0.5 ]]&lt;br /&gt;
&lt;br /&gt;
Теперь при нажатии на кнопку в очередь будет поставлено извещение, которое покажет система через 5 минут.&lt;br /&gt;
На устройстве это выглядит так:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;tleft&amp;quot; style=&amp;quot;clear:none&amp;quot;&amp;gt; [[Файл:IMG 0043.PNG | мини |200пкс ]] &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;tleft&amp;quot; style=&amp;quot;clear:none&amp;quot;&amp;gt; [[Файл:IMG 0046.PNG | мини |200пкс ]] &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Информация в логах==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
I/GNotification GNotification::aviable() GNotification::aviable() - уведомления разрешены&lt;br /&gt;
I/GNotification GNotification::state() state(ST_CLEAR) clear all notifications - очистилась&lt;br /&gt;
вся очередь уведомлений&lt;br /&gt;
I/GNotification GNotification::state() state(ST_SET) - уведомление поставлено в очередь&lt;br /&gt;
I/GNotification GNotification::EraseNotification() EraseNotification erase notification title: - уведомление&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;
У объекта [[options]] можно задать параметр '''notifScrID''' (значение параметра - id экрана). Если параметр задан, то при открытии приложения из уведомления откроется выбранный экран.&lt;br /&gt;
&lt;br /&gt;
==Firebase Cloud Messaging==&lt;br /&gt;
&lt;br /&gt;
Firebase Cloud Messaging позволяет рассылать кастомные уведомления с определенным набором доп. параметров, которые в последствии будут переданы во вьювер и сохранены в опциях (fcm бандлы).&lt;br /&gt;
&lt;br /&gt;
===Подготовка проекта===&lt;br /&gt;
&lt;br /&gt;
: 1. Создайте и настройте проект в Firebase консоли ([https://console.firebase.google.com/project/ Link])&lt;br /&gt;
: 2. Скачайте из консоли файл конфигураций проекта google-services.json&lt;br /&gt;
: 3. Перенесите параметры из ''google-services.json'' в ''project\conf\pom\sdl\google_params.json'' в поле ''extra_strings''&lt;br /&gt;
    google_app_id                       &amp;gt;&amp;gt;          {YOUR_CLIENT}/client_info/mobilesdk_app_id&lt;br /&gt;
    gcm_defaultSenderId                 &amp;gt;&amp;gt;          project_info/project_number&lt;br /&gt;
    default_web_client_id               &amp;gt;&amp;gt;          {YOUR_CLIENT}/oauth_client/client_id (client_type == 3)&lt;br /&gt;
    ga_trackingId                       &amp;gt;&amp;gt;          {YOUR_CLIENT}/services/analytics-service/analytics_property/tracking_id&lt;br /&gt;
    firebase_database_url               &amp;gt;&amp;gt;          project_info/firebase_url&lt;br /&gt;
    google_api_key                      &amp;gt;&amp;gt;          {YOUR_CLIENT}/api_key/current_key&lt;br /&gt;
    google_crash_reporting_api_key      &amp;gt;&amp;gt;          {YOUR_CLIENT}/api_key/current_key&lt;br /&gt;
    project_id                          &amp;gt;&amp;gt;          project_info/project_id&lt;br /&gt;
    google_storage_bucket               &amp;gt;&amp;gt;          project_info/storage_bucket&lt;br /&gt;
: 4. В app.icf сборки добавить раздел '''[Firebase]''', дабы при сборке подтянулся нужный экстеншн.&lt;br /&gt;
&lt;br /&gt;
===Структура сообщений===&lt;br /&gt;
Сообщения firebase имеют два основных блока:&lt;br /&gt;
* '''notification''' - стандартный пуш, содержит заголовок и текст сообщения;&lt;br /&gt;
* '''data payload''' - содержит произвольный набор параметров ключ-зачение (с ограничением 4Кб в firebase и 50 штук в наших реалиях)&lt;br /&gt;
&lt;br /&gt;
Сообщение может содержать либо один из этих блоков, либо оба сразу.&lt;br /&gt;
&lt;br /&gt;
При наличии в сообщении блока '''notification''' оно автоматически трактуется системой как пуш и при получении такого на устройстве - сразу закидывает его в системный трей (т.е. без нашей обработки). Мы никак не властны над подобными сообщениями и их параметрами (с параметрами то отдельная тема), а значит никаких кастомизаций в виде цветного шрифта и/или картинки не будет.&lt;br /&gt;
&lt;br /&gt;
Если сообщение имеет только '''data payload''' - оно всецело обрабатывается нашим движком, а значит мы имеем полный контроль над его отображением и всеми его параметрами. '''Но''' такие сообщения невозможно отправить из firebase консоли (т.к. там всегда должен присутствовать текст пуша), только скриптом (либо из нашей одминки).&lt;br /&gt;
&lt;br /&gt;
Для корректной работы всегда нужно использовать только '''data payload''' со структурой:&lt;br /&gt;
&lt;br /&gt;
 Тело пуша:                              # блок параметров, необходимых для отображения пуша&lt;br /&gt;
  &amp;quot;eventName&amp;quot;          : &amp;quot;EVENT_TITLE&amp;quot;,   # заголовок сообщения,  ОБЯЗАТЕЛЬНО для отображения пуша&lt;br /&gt;
  &amp;quot;eventMessage&amp;quot;       : &amp;quot;EVENT_BODY&amp;quot;,    # текст сообщения,      ОБЯЗАТЕЛЬНО для отображения пуша&lt;br /&gt;
  &amp;quot;eventType&amp;quot;          : &amp;quot;1&amp;quot;,             # 0 - показать только заголовок и сообщение; 1 - показать красивое сообщение со всеми плюшками&lt;br /&gt;
  &amp;quot;eventPriority&amp;quot;      : &amp;quot;2&amp;quot;              # приоритет пуша [-2:2], по дефолту 2&lt;br /&gt;
  &amp;quot;eventTime&amp;quot;          : &amp;quot;1541507205&amp;quot;     # время запуска пуша в UTC секундах (если отсутствует или меньше текущего времени - сразу показать)&lt;br /&gt;
  &amp;quot;evetBigPicture&amp;quot;     : &amp;quot;https://apps.absolutist.com/images/profile/no_avatar.png&amp;quot;,   # бекграунд пуша - НЕ имя ресурса, НЕ id ресурса, ТОЛЬКО ссылка&lt;br /&gt;
  &amp;quot;eventTitleColor&amp;quot;    : &amp;quot;#FF0000FF&amp;quot;,     # ARGB цвет заголовка&lt;br /&gt;
  &amp;quot;eventTextColor&amp;quot;     : &amp;quot;#FFFF0000&amp;quot;,     # ARGB цвет текста&lt;br /&gt;
 Тело данных&lt;br /&gt;
  &amp;quot;eventID&amp;quot;            : &amp;quot;EVENT_ID&amp;quot;,     # id ивента, машинка-обработчик будет переведена в это состояние (это обязательное поле, если хотите как-то обработать пуш в приложении)&lt;br /&gt;
  Далее может быть произвольный набор параметров-значений, которые будут переданы в машинку-обработчик&lt;br /&gt;
&lt;br /&gt;
===Отправка и получение сообщения приложением===&lt;br /&gt;
''(Далее речь идет только про data payload)''&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;
При получении приложением сообщения, если заполнено тело пуша (хотя бы параметры eventName и eventMessage), будет показано пуш-уведомление. Если при этом приложение работало в фоне - все дополнительные параметры будут переданы в приложение при его запуске. Если оно уже было запущено - все параметры немедленно будут обработаны.&lt;br /&gt;
&lt;br /&gt;
Все доп. параметры сообщения будут сохранены в опции:&lt;br /&gt;
&lt;br /&gt;
[[Файл:Notification_bundle_struct.png]]&lt;br /&gt;
&lt;br /&gt;
===Обработка в редакторе===&lt;br /&gt;
&lt;br /&gt;
: 0. Определиться, какие евенты вы хотите обрабатывать (поле '''eventID''' в пуше) и с какими параметрами ('''эт важно!''')&lt;br /&gt;
: 1. Создать объект '''Notifications''', т.к. вся коммуникация идет через него&lt;br /&gt;
: 2. Создать машинку-обработчик и указать её в поле ''Обработчик бандлов (fcmBundleHandler)'' объекта '''Notifications'''&lt;br /&gt;
: 3. Создать машинку, которая будет раз в определенный период дёргать '''Notifications''' в состояние '''fcm_check_bundle'''&lt;br /&gt;
: 4.0. В состоянии ''fcm_check_bundle'' объект '''Notifications''' проверяет опции на наличие бандлов из firebase сообщений.&lt;br /&gt;
Если бандл имеется - '''Notifications''' переводит машинку ''fcmBundleHandler'' в состояние из параметра '''eventID''' бандла.&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Отправка сообщений===&lt;br /&gt;
todo&lt;br /&gt;
&lt;br /&gt;
== Пример ==&lt;br /&gt;
&lt;br /&gt;
[http://fs5.absolutist.com/files/wikisample/notification.rar Download]&lt;br /&gt;
&lt;br /&gt;
[[Category:Options]]&lt;/div&gt;</summary>
		<author><name>Bmor</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.appsalutecreator.com/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Notification_bundle_struct.png&amp;diff=9733</id>
		<title>Файл:Notification bundle struct.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.appsalutecreator.com/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Notification_bundle_struct.png&amp;diff=9733"/>
		<updated>2018-11-13T08:27:44Z</updated>

		<summary type="html">&lt;p&gt;Bmor: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Bmor</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.appsalutecreator.com/index.php?title=Notification&amp;diff=9732</id>
		<title>Notification</title>
		<link rel="alternate" type="text/html" href="https://wiki.appsalutecreator.com/index.php?title=Notification&amp;diff=9732"/>
		<updated>2018-11-13T08:21:08Z</updated>

		<summary type="html">&lt;p&gt;Bmor: /* Структура сообщений */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC right}}&lt;br /&gt;
[[Object|Объект]] '''Notification''' предназначен для показа push уведомлений на IOS устройствах.&lt;br /&gt;
&lt;br /&gt;
==Параметры объекта==&lt;br /&gt;
&lt;br /&gt;
===Основные параметры===&lt;br /&gt;
&lt;br /&gt;
*'''имя события''' (''name'') - Имя события. Если у двух событий одинаковые имена - сохранится первое. Не обязательный параметр. Перетягивается из редактора текстов. Поле должно быть в состоянии редактирования.&lt;br /&gt;
&lt;br /&gt;
*'''сообщение''' (''message'') - Основной текст события. Перетягивается из редактора текстов. Поле должно быть в состоянии редактирования.&lt;br /&gt;
&lt;br /&gt;
*'''большая картинка''' (''big_picture'') - Имя файла с большой картинкой. Должен лежать не в ресурсах, а рядом с app.icf. Поле затирается после регистрации уведомления&lt;br /&gt;
&lt;br /&gt;
*'''год''' (''year'') - Год, когда сработает оповещение. Минимальное значение - 1971 .&lt;br /&gt;
&lt;br /&gt;
*'''месяц''' (''month'') - Месяц, когда сработает оповещение. Минимальное значение - 0, максимальное - 11 .&lt;br /&gt;
&lt;br /&gt;
*'''день''' (''day'') - День, когда сработает оповещение. Минимальное значение - 1, максимальное - 31 .&lt;br /&gt;
&lt;br /&gt;
*'''час''' (''hour'') - Час, когда сработает оповещение. Минимальное значение - 0, максимальное - 23 .&lt;br /&gt;
&lt;br /&gt;
*'''минута''' (''min'') - Минута, когда сработает оповещение. Минимальное значение - 0, максимальное - 59 .&lt;br /&gt;
&lt;br /&gt;
*'''секунда''' (''sec'') - Секунда, когда сработает оповещение. Минимальное значение - 0, максимальное - 59 .&lt;br /&gt;
&lt;br /&gt;
*'''задержка''' (''delay'') - Задержка от текущего времени до оповещения. Если задана не -1 - то используется вместо даты.&lt;br /&gt;
&lt;br /&gt;
*'''перед первым init экстеншена''' (''delayInit'') - Задержка в секундах до первой инициализации расширения&lt;br /&gt;
&lt;br /&gt;
*'''цвет заголовка''' (''colorTitle'') - Цвет заголовка - только для кастомных нотификейшенов&lt;br /&gt;
&lt;br /&gt;
*'''цвет текста''' (''colorText'') - Цвет текста - только для кастомных нотификейшенов&lt;br /&gt;
&lt;br /&gt;
===Firebase Cloud Messaging===&lt;br /&gt;
&lt;br /&gt;
*'''Обработчик бандлов''' (''fcmBundleHandler'') - Объект, в который будут записаны параметры бандла и который будет переведен в состояние eventID бандла при fcm_check_bundle (см. дальше)&lt;br /&gt;
&lt;br /&gt;
==Состояния объекта==&lt;br /&gt;
&lt;br /&gt;
*'''set''' - устанавливает нотификацию в очередь&lt;br /&gt;
&lt;br /&gt;
*'''clear''' - очищает очередь нотификации&lt;br /&gt;
&lt;br /&gt;
*'''erase''' - очищает очередь нотификации от уведомления с указаннным ID темы и ID сообщения&lt;br /&gt;
&lt;br /&gt;
*'''fcm_subscribe_topic''' - Firebase only! Подписаться на топик из поля topic&lt;br /&gt;
&lt;br /&gt;
*'''fcm_unsubscribe_topic''' - Firebase only! Отписаться от топика из поля topic&lt;br /&gt;
&lt;br /&gt;
*'''fcm_check_bundle''' - Firebase only! Проверить наличие fcm бандлов&lt;br /&gt;
&lt;br /&gt;
Установка уведомлений (объект notification):&lt;br /&gt;
 Состояние&lt;br /&gt;
 &amp;quot;set&amp;quot;, - оба способа&lt;br /&gt;
 &amp;quot;set_native&amp;quot;, - устройство&lt;br /&gt;
 &amp;quot;set_parse&amp;quot;, - парс&lt;br /&gt;
 или через параметр&lt;br /&gt;
 &amp;lt;property name=&amp;quot;отсылать в&amp;quot; type=&amp;quot;enum&amp;quot; value=&amp;quot;0&amp;quot; id=&amp;quot;send&amp;quot; hint=&amp;quot;отсылать в&amp;quot; regexp=&amp;quot;обе службы=0,только локальный пуш=1,только парс=2&amp;quot; /&amp;gt; (тогда состояние set)&lt;br /&gt;
&lt;br /&gt;
==Пример применения==&lt;br /&gt;
&lt;br /&gt;
Пусть через 5 минут после нажатия на кнопку у пользователя появиится уведомление с текстом &amp;quot;message of notification&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Для этого разместим на сцене объект notification и установим ему следующие параметры:&lt;br /&gt;
&lt;br /&gt;
* задержка - 300&lt;br /&gt;
&lt;br /&gt;
[[Файл:Notification 01.jpg |upright=0.5]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
В текстовую базу занесём новые записи с названием события нотификации и текстом нотификации.&lt;br /&gt;
&lt;br /&gt;
Далее добавим на сцену кнопку, которая будет передавать параметры объекту &amp;quot;notification&amp;quot; и переводить объект &amp;quot;notification&amp;quot; в состояние &amp;quot;set&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Notification 02.jpg |upright=0.5 ]]&lt;br /&gt;
&lt;br /&gt;
Теперь при нажатии на кнопку в очередь будет поставлено извещение, которое покажет система через 5 минут.&lt;br /&gt;
На устройстве это выглядит так:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;tleft&amp;quot; style=&amp;quot;clear:none&amp;quot;&amp;gt; [[Файл:IMG 0043.PNG | мини |200пкс ]] &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;tleft&amp;quot; style=&amp;quot;clear:none&amp;quot;&amp;gt; [[Файл:IMG 0046.PNG | мини |200пкс ]] &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Информация в логах==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
I/GNotification GNotification::aviable() GNotification::aviable() - уведомления разрешены&lt;br /&gt;
I/GNotification GNotification::state() state(ST_CLEAR) clear all notifications - очистилась&lt;br /&gt;
вся очередь уведомлений&lt;br /&gt;
I/GNotification GNotification::state() state(ST_SET) - уведомление поставлено в очередь&lt;br /&gt;
I/GNotification GNotification::EraseNotification() EraseNotification erase notification title: - уведомление&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;
У объекта [[options]] можно задать параметр '''notifScrID''' (значение параметра - id экрана). Если параметр задан, то при открытии приложения из уведомления откроется выбранный экран.&lt;br /&gt;
&lt;br /&gt;
==Firebase Cloud Messaging==&lt;br /&gt;
&lt;br /&gt;
Firebase Cloud Messaging позволяет рассылать кастомные уведомления с определенным набором доп. параметров, которые в последствии будут переданы во вьювер и сохранены в опциях (fcm бандлы).&lt;br /&gt;
&lt;br /&gt;
===Подготовка проекта===&lt;br /&gt;
&lt;br /&gt;
: 1. Создайте и настройте проект в Firebase консоли ([https://console.firebase.google.com/project/ Link])&lt;br /&gt;
: 2. Скачайте из консоли файл конфигураций проекта google-services.json&lt;br /&gt;
: 3. Перенесите параметры из ''google-services.json'' в ''project\conf\pom\sdl\google_params.json'' в поле ''extra_strings''&lt;br /&gt;
    google_app_id                       &amp;gt;&amp;gt;          {YOUR_CLIENT}/client_info/mobilesdk_app_id&lt;br /&gt;
    gcm_defaultSenderId                 &amp;gt;&amp;gt;          project_info/project_number&lt;br /&gt;
    default_web_client_id               &amp;gt;&amp;gt;          {YOUR_CLIENT}/oauth_client/client_id (client_type == 3)&lt;br /&gt;
    ga_trackingId                       &amp;gt;&amp;gt;          {YOUR_CLIENT}/services/analytics-service/analytics_property/tracking_id&lt;br /&gt;
    firebase_database_url               &amp;gt;&amp;gt;          project_info/firebase_url&lt;br /&gt;
    google_api_key                      &amp;gt;&amp;gt;          {YOUR_CLIENT}/api_key/current_key&lt;br /&gt;
    google_crash_reporting_api_key      &amp;gt;&amp;gt;          {YOUR_CLIENT}/api_key/current_key&lt;br /&gt;
    project_id                          &amp;gt;&amp;gt;          project_info/project_id&lt;br /&gt;
    google_storage_bucket               &amp;gt;&amp;gt;          project_info/storage_bucket&lt;br /&gt;
: 4. В app.icf сборки добавить раздел '''[Firebase]''', дабы при сборке подтянулся нужный экстеншн.&lt;br /&gt;
&lt;br /&gt;
===Структура сообщений===&lt;br /&gt;
Сообщения firebase имеют два основных блока:&lt;br /&gt;
* '''notification''' - стандартный пуш, содержит заголовок и текст сообщения;&lt;br /&gt;
* '''data payload''' - содержит произвольный набор параметров ключ-зачение (с ограничением 4Кб в firebase и 50 штук в наших реалиях)&lt;br /&gt;
&lt;br /&gt;
Сообщение может содержать либо один из этих блоков, либо оба сразу.&lt;br /&gt;
&lt;br /&gt;
При наличии в сообщении блока '''notification''' оно автоматически трактуется системой как пуш и при получении такого на устройстве - сразу закидывает его в системный трей (т.е. без нашей обработки). Мы никак не властны над подобными сообщениями и их параметрами (с параметрами то отдельная тема), а значит никаких кастомизаций в виде цветного шрифта и/или картинки не будет.&lt;br /&gt;
&lt;br /&gt;
Если сообщение имеет только '''data payload''' - оно всецело обрабатывается нашим движком, а значит мы имеем полный контроль над его отображением и всеми его параметрами. '''Но''' такие сообщения невозможно отправить из firebase консоли (т.к. там всегда должен присутствовать текст пуша), только скриптом (либо из нашей одминки).&lt;br /&gt;
&lt;br /&gt;
Для корректной работы всегда нужно использовать только '''data payload''' со структурой:&lt;br /&gt;
&lt;br /&gt;
 Тело пуша:                              # блок параметров, необходимых для отображения пуша&lt;br /&gt;
  &amp;quot;eventName&amp;quot;          : &amp;quot;EVENT_TITLE&amp;quot;,   # заголовок сообщения,  ОБЯЗАТЕЛЬНО для отображения пуша&lt;br /&gt;
  &amp;quot;eventMessage&amp;quot;       : &amp;quot;EVENT_BODY&amp;quot;,    # текст сообщения,      ОБЯЗАТЕЛЬНО для отображения пуша&lt;br /&gt;
  &amp;quot;eventType&amp;quot;          : &amp;quot;1&amp;quot;,             # 0 - показать только заголовок и сообщение; 1 - показать красивое сообщение со всеми плюшками&lt;br /&gt;
  &amp;quot;eventPriority&amp;quot;      : &amp;quot;2&amp;quot;              # приоритет пуша [-2:2], по дефолту 2&lt;br /&gt;
  &amp;quot;eventTime&amp;quot;          : &amp;quot;1541507205&amp;quot;     # время запуска пуша в UTC секундах (если отсутствует или меньше текущего времени - сразу показать)&lt;br /&gt;
  &amp;quot;evetBigPicture&amp;quot;     : &amp;quot;https://apps.absolutist.com/images/profile/no_avatar.png&amp;quot;,   # бекграунд пуша - НЕ имя ресурса, НЕ id ресурса, ТОЛЬКО ссылка&lt;br /&gt;
  &amp;quot;eventTitleColor&amp;quot;    : &amp;quot;#FF0000FF&amp;quot;,     # ARGB цвет заголовка&lt;br /&gt;
  &amp;quot;eventTextColor&amp;quot;     : &amp;quot;#FFFF0000&amp;quot;,     # ARGB цвет текста&lt;br /&gt;
 Тело данных&lt;br /&gt;
  &amp;quot;eventID&amp;quot;            : &amp;quot;EVENT_ID&amp;quot;,     # id ивента, машинка-обработчик будет переведена в это состояние (это обязательное поле, если хотите как-то обработать пуш в приложении)&lt;br /&gt;
  Далее может быть произвольный набор параметров-значений, которые будут переданы в машинку-обработчик&lt;br /&gt;
&lt;br /&gt;
===Отправка и получение сообщения приложением===&lt;br /&gt;
''(Далее речь идет только про data payload)''&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;
При получении приложением сообщения, если заполнено тело пуша (хотя бы параметры eventName и eventMessage), будет показано пуш-уведомление. Если при этом приложение работало в фоне - все дополнительные параметры будут переданы в приложение при его запуске. Если оно уже было запущено - все параметры немедленно будут обработаны.&lt;br /&gt;
&lt;br /&gt;
Все доп. параметры сообщения&lt;br /&gt;
&lt;br /&gt;
===Обработка в редакторе===&lt;br /&gt;
&lt;br /&gt;
: 0. Определиться, какие евенты вы хотите обрабатывать (поле '''eventID''' в пуше) и с какими параметрами ('''эт важно!''')&lt;br /&gt;
: 1. Создать объект '''Notifications''', т.к. вся коммуникация идет через него&lt;br /&gt;
: 2. Создать машинку-обработчик и указать её в поле ''Обработчик бандлов (fcmBundleHandler)'' объекта '''Notifications'''&lt;br /&gt;
: 3. Создать машинку, которая будет раз в определенный период дёргать '''Notifications''' в состояние '''fcm_check_bundle'''&lt;br /&gt;
: 4.0. В состоянии ''fcm_check_bundle'' объект '''Notifications''' проверяет опции на наличие бандлов из firebase сообщений.&lt;br /&gt;
Если бандл имеется - '''Notifications''' переводит машинку ''fcmBundleHandler'' в состояние из параметра '''eventID''' бандла.&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Отправка сообщений===&lt;br /&gt;
todo&lt;br /&gt;
&lt;br /&gt;
== Пример ==&lt;br /&gt;
&lt;br /&gt;
[http://fs5.absolutist.com/files/wikisample/notification.rar Download]&lt;br /&gt;
&lt;br /&gt;
[[Category:Options]]&lt;/div&gt;</summary>
		<author><name>Bmor</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.appsalutecreator.com/index.php?title=Notification&amp;diff=9731</id>
		<title>Notification</title>
		<link rel="alternate" type="text/html" href="https://wiki.appsalutecreator.com/index.php?title=Notification&amp;diff=9731"/>
		<updated>2018-11-13T08:19:57Z</updated>

		<summary type="html">&lt;p&gt;Bmor: /* Отправка и получение сообщения приложением */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC right}}&lt;br /&gt;
[[Object|Объект]] '''Notification''' предназначен для показа push уведомлений на IOS устройствах.&lt;br /&gt;
&lt;br /&gt;
==Параметры объекта==&lt;br /&gt;
&lt;br /&gt;
===Основные параметры===&lt;br /&gt;
&lt;br /&gt;
*'''имя события''' (''name'') - Имя события. Если у двух событий одинаковые имена - сохранится первое. Не обязательный параметр. Перетягивается из редактора текстов. Поле должно быть в состоянии редактирования.&lt;br /&gt;
&lt;br /&gt;
*'''сообщение''' (''message'') - Основной текст события. Перетягивается из редактора текстов. Поле должно быть в состоянии редактирования.&lt;br /&gt;
&lt;br /&gt;
*'''большая картинка''' (''big_picture'') - Имя файла с большой картинкой. Должен лежать не в ресурсах, а рядом с app.icf. Поле затирается после регистрации уведомления&lt;br /&gt;
&lt;br /&gt;
*'''год''' (''year'') - Год, когда сработает оповещение. Минимальное значение - 1971 .&lt;br /&gt;
&lt;br /&gt;
*'''месяц''' (''month'') - Месяц, когда сработает оповещение. Минимальное значение - 0, максимальное - 11 .&lt;br /&gt;
&lt;br /&gt;
*'''день''' (''day'') - День, когда сработает оповещение. Минимальное значение - 1, максимальное - 31 .&lt;br /&gt;
&lt;br /&gt;
*'''час''' (''hour'') - Час, когда сработает оповещение. Минимальное значение - 0, максимальное - 23 .&lt;br /&gt;
&lt;br /&gt;
*'''минута''' (''min'') - Минута, когда сработает оповещение. Минимальное значение - 0, максимальное - 59 .&lt;br /&gt;
&lt;br /&gt;
*'''секунда''' (''sec'') - Секунда, когда сработает оповещение. Минимальное значение - 0, максимальное - 59 .&lt;br /&gt;
&lt;br /&gt;
*'''задержка''' (''delay'') - Задержка от текущего времени до оповещения. Если задана не -1 - то используется вместо даты.&lt;br /&gt;
&lt;br /&gt;
*'''перед первым init экстеншена''' (''delayInit'') - Задержка в секундах до первой инициализации расширения&lt;br /&gt;
&lt;br /&gt;
*'''цвет заголовка''' (''colorTitle'') - Цвет заголовка - только для кастомных нотификейшенов&lt;br /&gt;
&lt;br /&gt;
*'''цвет текста''' (''colorText'') - Цвет текста - только для кастомных нотификейшенов&lt;br /&gt;
&lt;br /&gt;
===Firebase Cloud Messaging===&lt;br /&gt;
&lt;br /&gt;
*'''Обработчик бандлов''' (''fcmBundleHandler'') - Объект, в который будут записаны параметры бандла и который будет переведен в состояние eventID бандла при fcm_check_bundle (см. дальше)&lt;br /&gt;
&lt;br /&gt;
==Состояния объекта==&lt;br /&gt;
&lt;br /&gt;
*'''set''' - устанавливает нотификацию в очередь&lt;br /&gt;
&lt;br /&gt;
*'''clear''' - очищает очередь нотификации&lt;br /&gt;
&lt;br /&gt;
*'''erase''' - очищает очередь нотификации от уведомления с указаннным ID темы и ID сообщения&lt;br /&gt;
&lt;br /&gt;
*'''fcm_subscribe_topic''' - Firebase only! Подписаться на топик из поля topic&lt;br /&gt;
&lt;br /&gt;
*'''fcm_unsubscribe_topic''' - Firebase only! Отписаться от топика из поля topic&lt;br /&gt;
&lt;br /&gt;
*'''fcm_check_bundle''' - Firebase only! Проверить наличие fcm бандлов&lt;br /&gt;
&lt;br /&gt;
Установка уведомлений (объект notification):&lt;br /&gt;
 Состояние&lt;br /&gt;
 &amp;quot;set&amp;quot;, - оба способа&lt;br /&gt;
 &amp;quot;set_native&amp;quot;, - устройство&lt;br /&gt;
 &amp;quot;set_parse&amp;quot;, - парс&lt;br /&gt;
 или через параметр&lt;br /&gt;
 &amp;lt;property name=&amp;quot;отсылать в&amp;quot; type=&amp;quot;enum&amp;quot; value=&amp;quot;0&amp;quot; id=&amp;quot;send&amp;quot; hint=&amp;quot;отсылать в&amp;quot; regexp=&amp;quot;обе службы=0,только локальный пуш=1,только парс=2&amp;quot; /&amp;gt; (тогда состояние set)&lt;br /&gt;
&lt;br /&gt;
==Пример применения==&lt;br /&gt;
&lt;br /&gt;
Пусть через 5 минут после нажатия на кнопку у пользователя появиится уведомление с текстом &amp;quot;message of notification&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Для этого разместим на сцене объект notification и установим ему следующие параметры:&lt;br /&gt;
&lt;br /&gt;
* задержка - 300&lt;br /&gt;
&lt;br /&gt;
[[Файл:Notification 01.jpg |upright=0.5]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
В текстовую базу занесём новые записи с названием события нотификации и текстом нотификации.&lt;br /&gt;
&lt;br /&gt;
Далее добавим на сцену кнопку, которая будет передавать параметры объекту &amp;quot;notification&amp;quot; и переводить объект &amp;quot;notification&amp;quot; в состояние &amp;quot;set&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Notification 02.jpg |upright=0.5 ]]&lt;br /&gt;
&lt;br /&gt;
Теперь при нажатии на кнопку в очередь будет поставлено извещение, которое покажет система через 5 минут.&lt;br /&gt;
На устройстве это выглядит так:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;tleft&amp;quot; style=&amp;quot;clear:none&amp;quot;&amp;gt; [[Файл:IMG 0043.PNG | мини |200пкс ]] &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;tleft&amp;quot; style=&amp;quot;clear:none&amp;quot;&amp;gt; [[Файл:IMG 0046.PNG | мини |200пкс ]] &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Информация в логах==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
I/GNotification GNotification::aviable() GNotification::aviable() - уведомления разрешены&lt;br /&gt;
I/GNotification GNotification::state() state(ST_CLEAR) clear all notifications - очистилась&lt;br /&gt;
вся очередь уведомлений&lt;br /&gt;
I/GNotification GNotification::state() state(ST_SET) - уведомление поставлено в очередь&lt;br /&gt;
I/GNotification GNotification::EraseNotification() EraseNotification erase notification title: - уведомление&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;
У объекта [[options]] можно задать параметр '''notifScrID''' (значение параметра - id экрана). Если параметр задан, то при открытии приложения из уведомления откроется выбранный экран.&lt;br /&gt;
&lt;br /&gt;
==Firebase Cloud Messaging==&lt;br /&gt;
&lt;br /&gt;
Firebase Cloud Messaging позволяет рассылать кастомные уведомления с определенным набором доп. параметров, которые в последствии будут переданы во вьювер и сохранены в опциях (fcm бандлы).&lt;br /&gt;
&lt;br /&gt;
===Подготовка проекта===&lt;br /&gt;
&lt;br /&gt;
: 1. Создайте и настройте проект в Firebase консоли ([https://console.firebase.google.com/project/ Link])&lt;br /&gt;
: 2. Скачайте из консоли файл конфигураций проекта google-services.json&lt;br /&gt;
: 3. Перенесите параметры из ''google-services.json'' в ''project\conf\pom\sdl\google_params.json'' в поле ''extra_strings''&lt;br /&gt;
    google_app_id                       &amp;gt;&amp;gt;          {YOUR_CLIENT}/client_info/mobilesdk_app_id&lt;br /&gt;
    gcm_defaultSenderId                 &amp;gt;&amp;gt;          project_info/project_number&lt;br /&gt;
    default_web_client_id               &amp;gt;&amp;gt;          {YOUR_CLIENT}/oauth_client/client_id (client_type == 3)&lt;br /&gt;
    ga_trackingId                       &amp;gt;&amp;gt;          {YOUR_CLIENT}/services/analytics-service/analytics_property/tracking_id&lt;br /&gt;
    firebase_database_url               &amp;gt;&amp;gt;          project_info/firebase_url&lt;br /&gt;
    google_api_key                      &amp;gt;&amp;gt;          {YOUR_CLIENT}/api_key/current_key&lt;br /&gt;
    google_crash_reporting_api_key      &amp;gt;&amp;gt;          {YOUR_CLIENT}/api_key/current_key&lt;br /&gt;
    project_id                          &amp;gt;&amp;gt;          project_info/project_id&lt;br /&gt;
    google_storage_bucket               &amp;gt;&amp;gt;          project_info/storage_bucket&lt;br /&gt;
: 4. В app.icf сборки добавить раздел '''[Firebase]''', дабы при сборке подтянулся нужный экстеншн.&lt;br /&gt;
&lt;br /&gt;
===Структура сообщений===&lt;br /&gt;
Сообщения firebase имеют два основных блока:&lt;br /&gt;
* '''notification''' - стандартный пуш, содержит заголовок и текст сообщения;&lt;br /&gt;
* '''data payload''' - содержит произвольный набор параметров ключ-зачение (с ограничением 4Кб в firebase и 50 штук в наших реалиях)&lt;br /&gt;
&lt;br /&gt;
Сообщение может содержать либо один из этих блоков, либо оба сразу.&lt;br /&gt;
&lt;br /&gt;
При наличии в сообщении блока '''notification''' оно автоматически трактуется системой как пуш и при получении такого на устройстве - сразу закидывает его в системный трей (т.е. без нашей обработки). Мы никак не властны над подобными сообщениями и их параметрами (с параметрами то отдельная тема), а значит никаких кастомизаций в виде цветного шрифта и/или картинки не будет.&lt;br /&gt;
&lt;br /&gt;
Если сообщение имеет только '''data payload''' - оно всецело обрабатывается нашим движком, а значит мы имеем полный контроль над его отображением и всеми его параметрами. '''Но''' такие сообщения невозможно отправить из firebase консоли (т.к. там всегда должен присутствовать текст пуша), только скриптом (либо из нашей одминки).&lt;br /&gt;
&lt;br /&gt;
Для корректной работы всегда нужно использовать только '''data payload''' со структурой:&lt;br /&gt;
&lt;br /&gt;
 Тело пуша:                              # блок параметров, необходимых для отображения пуша&lt;br /&gt;
  &amp;quot;eventName&amp;quot;          : &amp;quot;EVENT_TITLE&amp;quot;,   # заголовок сообщения,  ОБЯЗАТЕЛЬНО для отображения пуша&lt;br /&gt;
  &amp;quot;eventMessage&amp;quot;       : &amp;quot;EVENT_BODY&amp;quot;,    # текст сообщения,      ОБЯЗАТЕЛЬНО для отображения пуша&lt;br /&gt;
  &amp;quot;eventType&amp;quot;          : &amp;quot;1&amp;quot;,             # 0 - показать только заголовок и сообщение; 1 - показать красивое сообщение со всеми плюшками&lt;br /&gt;
  &amp;quot;eventPriority&amp;quot;      : &amp;quot;2&amp;quot;              # приоритет пуша [-2:2], по дефолту 2&lt;br /&gt;
  &amp;quot;eventTime&amp;quot;          : &amp;quot;1541507205&amp;quot;     # время запуска пуша в UTC секундах (если отсутствует или меньше текущего времени - сразу показать)&lt;br /&gt;
  &amp;quot;evetBigPicture&amp;quot;     : &amp;quot;https://apps.absolutist.com/images/profile/no_avatar.png&amp;quot;,   # бекграунд пуша - НЕ имя ресурса, НЕ id ресурса, ТОЛЬКО ссылка&lt;br /&gt;
  &amp;quot;eventTitleColor&amp;quot;    : &amp;quot;#FF0000FF&amp;quot;,     # ARGB цвет заголовка&lt;br /&gt;
  &amp;quot;eventTextColor&amp;quot;     : &amp;quot;#FFFF0000&amp;quot;,     # ARGB цвет текста&lt;br /&gt;
 Тело данных&lt;br /&gt;
  &amp;quot;eventID&amp;quot;            : &amp;quot;EVENT_ID&amp;quot;,     # id ивента, машинка-обработчик будет переведена в это состояние&lt;br /&gt;
  Далее может быть произвольный набор параметров-значений, которые будут переданы в машинку-обработчик&lt;br /&gt;
&lt;br /&gt;
===Отправка и получение сообщения приложением===&lt;br /&gt;
''(Далее речь идет только про data payload)''&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;
При получении приложением сообщения, если заполнено тело пуша (хотя бы параметры eventName и eventMessage), будет показано пуш-уведомление. Если при этом приложение работало в фоне - все дополнительные параметры будут переданы в приложение при его запуске. Если оно уже было запущено - все параметры немедленно будут обработаны.&lt;br /&gt;
&lt;br /&gt;
Все доп. параметры сообщения&lt;br /&gt;
&lt;br /&gt;
===Обработка в редакторе===&lt;br /&gt;
&lt;br /&gt;
: 0. Определиться, какие евенты вы хотите обрабатывать (поле '''eventID''' в пуше) и с какими параметрами ('''эт важно!''')&lt;br /&gt;
: 1. Создать объект '''Notifications''', т.к. вся коммуникация идет через него&lt;br /&gt;
: 2. Создать машинку-обработчик и указать её в поле ''Обработчик бандлов (fcmBundleHandler)'' объекта '''Notifications'''&lt;br /&gt;
: 3. Создать машинку, которая будет раз в определенный период дёргать '''Notifications''' в состояние '''fcm_check_bundle'''&lt;br /&gt;
: 4.0. В состоянии ''fcm_check_bundle'' объект '''Notifications''' проверяет опции на наличие бандлов из firebase сообщений.&lt;br /&gt;
Если бандл имеется - '''Notifications''' переводит машинку ''fcmBundleHandler'' в состояние из параметра '''eventID''' бандла.&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Отправка сообщений===&lt;br /&gt;
todo&lt;br /&gt;
&lt;br /&gt;
== Пример ==&lt;br /&gt;
&lt;br /&gt;
[http://fs5.absolutist.com/files/wikisample/notification.rar Download]&lt;br /&gt;
&lt;br /&gt;
[[Category:Options]]&lt;/div&gt;</summary>
		<author><name>Bmor</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.appsalutecreator.com/index.php?title=Notification&amp;diff=9730</id>
		<title>Notification</title>
		<link rel="alternate" type="text/html" href="https://wiki.appsalutecreator.com/index.php?title=Notification&amp;diff=9730"/>
		<updated>2018-11-13T08:14:47Z</updated>

		<summary type="html">&lt;p&gt;Bmor: /* Отправка и получение сообщения приложением */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC right}}&lt;br /&gt;
[[Object|Объект]] '''Notification''' предназначен для показа push уведомлений на IOS устройствах.&lt;br /&gt;
&lt;br /&gt;
==Параметры объекта==&lt;br /&gt;
&lt;br /&gt;
===Основные параметры===&lt;br /&gt;
&lt;br /&gt;
*'''имя события''' (''name'') - Имя события. Если у двух событий одинаковые имена - сохранится первое. Не обязательный параметр. Перетягивается из редактора текстов. Поле должно быть в состоянии редактирования.&lt;br /&gt;
&lt;br /&gt;
*'''сообщение''' (''message'') - Основной текст события. Перетягивается из редактора текстов. Поле должно быть в состоянии редактирования.&lt;br /&gt;
&lt;br /&gt;
*'''большая картинка''' (''big_picture'') - Имя файла с большой картинкой. Должен лежать не в ресурсах, а рядом с app.icf. Поле затирается после регистрации уведомления&lt;br /&gt;
&lt;br /&gt;
*'''год''' (''year'') - Год, когда сработает оповещение. Минимальное значение - 1971 .&lt;br /&gt;
&lt;br /&gt;
*'''месяц''' (''month'') - Месяц, когда сработает оповещение. Минимальное значение - 0, максимальное - 11 .&lt;br /&gt;
&lt;br /&gt;
*'''день''' (''day'') - День, когда сработает оповещение. Минимальное значение - 1, максимальное - 31 .&lt;br /&gt;
&lt;br /&gt;
*'''час''' (''hour'') - Час, когда сработает оповещение. Минимальное значение - 0, максимальное - 23 .&lt;br /&gt;
&lt;br /&gt;
*'''минута''' (''min'') - Минута, когда сработает оповещение. Минимальное значение - 0, максимальное - 59 .&lt;br /&gt;
&lt;br /&gt;
*'''секунда''' (''sec'') - Секунда, когда сработает оповещение. Минимальное значение - 0, максимальное - 59 .&lt;br /&gt;
&lt;br /&gt;
*'''задержка''' (''delay'') - Задержка от текущего времени до оповещения. Если задана не -1 - то используется вместо даты.&lt;br /&gt;
&lt;br /&gt;
*'''перед первым init экстеншена''' (''delayInit'') - Задержка в секундах до первой инициализации расширения&lt;br /&gt;
&lt;br /&gt;
*'''цвет заголовка''' (''colorTitle'') - Цвет заголовка - только для кастомных нотификейшенов&lt;br /&gt;
&lt;br /&gt;
*'''цвет текста''' (''colorText'') - Цвет текста - только для кастомных нотификейшенов&lt;br /&gt;
&lt;br /&gt;
===Firebase Cloud Messaging===&lt;br /&gt;
&lt;br /&gt;
*'''Обработчик бандлов''' (''fcmBundleHandler'') - Объект, в который будут записаны параметры бандла и который будет переведен в состояние eventID бандла при fcm_check_bundle (см. дальше)&lt;br /&gt;
&lt;br /&gt;
==Состояния объекта==&lt;br /&gt;
&lt;br /&gt;
*'''set''' - устанавливает нотификацию в очередь&lt;br /&gt;
&lt;br /&gt;
*'''clear''' - очищает очередь нотификации&lt;br /&gt;
&lt;br /&gt;
*'''erase''' - очищает очередь нотификации от уведомления с указаннным ID темы и ID сообщения&lt;br /&gt;
&lt;br /&gt;
*'''fcm_subscribe_topic''' - Firebase only! Подписаться на топик из поля topic&lt;br /&gt;
&lt;br /&gt;
*'''fcm_unsubscribe_topic''' - Firebase only! Отписаться от топика из поля topic&lt;br /&gt;
&lt;br /&gt;
*'''fcm_check_bundle''' - Firebase only! Проверить наличие fcm бандлов&lt;br /&gt;
&lt;br /&gt;
Установка уведомлений (объект notification):&lt;br /&gt;
 Состояние&lt;br /&gt;
 &amp;quot;set&amp;quot;, - оба способа&lt;br /&gt;
 &amp;quot;set_native&amp;quot;, - устройство&lt;br /&gt;
 &amp;quot;set_parse&amp;quot;, - парс&lt;br /&gt;
 или через параметр&lt;br /&gt;
 &amp;lt;property name=&amp;quot;отсылать в&amp;quot; type=&amp;quot;enum&amp;quot; value=&amp;quot;0&amp;quot; id=&amp;quot;send&amp;quot; hint=&amp;quot;отсылать в&amp;quot; regexp=&amp;quot;обе службы=0,только локальный пуш=1,только парс=2&amp;quot; /&amp;gt; (тогда состояние set)&lt;br /&gt;
&lt;br /&gt;
==Пример применения==&lt;br /&gt;
&lt;br /&gt;
Пусть через 5 минут после нажатия на кнопку у пользователя появиится уведомление с текстом &amp;quot;message of notification&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Для этого разместим на сцене объект notification и установим ему следующие параметры:&lt;br /&gt;
&lt;br /&gt;
* задержка - 300&lt;br /&gt;
&lt;br /&gt;
[[Файл:Notification 01.jpg |upright=0.5]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
В текстовую базу занесём новые записи с названием события нотификации и текстом нотификации.&lt;br /&gt;
&lt;br /&gt;
Далее добавим на сцену кнопку, которая будет передавать параметры объекту &amp;quot;notification&amp;quot; и переводить объект &amp;quot;notification&amp;quot; в состояние &amp;quot;set&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Notification 02.jpg |upright=0.5 ]]&lt;br /&gt;
&lt;br /&gt;
Теперь при нажатии на кнопку в очередь будет поставлено извещение, которое покажет система через 5 минут.&lt;br /&gt;
На устройстве это выглядит так:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;tleft&amp;quot; style=&amp;quot;clear:none&amp;quot;&amp;gt; [[Файл:IMG 0043.PNG | мини |200пкс ]] &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;tleft&amp;quot; style=&amp;quot;clear:none&amp;quot;&amp;gt; [[Файл:IMG 0046.PNG | мини |200пкс ]] &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Информация в логах==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
I/GNotification GNotification::aviable() GNotification::aviable() - уведомления разрешены&lt;br /&gt;
I/GNotification GNotification::state() state(ST_CLEAR) clear all notifications - очистилась&lt;br /&gt;
вся очередь уведомлений&lt;br /&gt;
I/GNotification GNotification::state() state(ST_SET) - уведомление поставлено в очередь&lt;br /&gt;
I/GNotification GNotification::EraseNotification() EraseNotification erase notification title: - уведомление&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;
У объекта [[options]] можно задать параметр '''notifScrID''' (значение параметра - id экрана). Если параметр задан, то при открытии приложения из уведомления откроется выбранный экран.&lt;br /&gt;
&lt;br /&gt;
==Firebase Cloud Messaging==&lt;br /&gt;
&lt;br /&gt;
Firebase Cloud Messaging позволяет рассылать кастомные уведомления с определенным набором доп. параметров, которые в последствии будут переданы во вьювер и сохранены в опциях (fcm бандлы).&lt;br /&gt;
&lt;br /&gt;
===Подготовка проекта===&lt;br /&gt;
&lt;br /&gt;
: 1. Создайте и настройте проект в Firebase консоли ([https://console.firebase.google.com/project/ Link])&lt;br /&gt;
: 2. Скачайте из консоли файл конфигураций проекта google-services.json&lt;br /&gt;
: 3. Перенесите параметры из ''google-services.json'' в ''project\conf\pom\sdl\google_params.json'' в поле ''extra_strings''&lt;br /&gt;
    google_app_id                       &amp;gt;&amp;gt;          {YOUR_CLIENT}/client_info/mobilesdk_app_id&lt;br /&gt;
    gcm_defaultSenderId                 &amp;gt;&amp;gt;          project_info/project_number&lt;br /&gt;
    default_web_client_id               &amp;gt;&amp;gt;          {YOUR_CLIENT}/oauth_client/client_id (client_type == 3)&lt;br /&gt;
    ga_trackingId                       &amp;gt;&amp;gt;          {YOUR_CLIENT}/services/analytics-service/analytics_property/tracking_id&lt;br /&gt;
    firebase_database_url               &amp;gt;&amp;gt;          project_info/firebase_url&lt;br /&gt;
    google_api_key                      &amp;gt;&amp;gt;          {YOUR_CLIENT}/api_key/current_key&lt;br /&gt;
    google_crash_reporting_api_key      &amp;gt;&amp;gt;          {YOUR_CLIENT}/api_key/current_key&lt;br /&gt;
    project_id                          &amp;gt;&amp;gt;          project_info/project_id&lt;br /&gt;
    google_storage_bucket               &amp;gt;&amp;gt;          project_info/storage_bucket&lt;br /&gt;
: 4. В app.icf сборки добавить раздел '''[Firebase]''', дабы при сборке подтянулся нужный экстеншн.&lt;br /&gt;
&lt;br /&gt;
===Структура сообщений===&lt;br /&gt;
Сообщения firebase имеют два основных блока:&lt;br /&gt;
* '''notification''' - стандартный пуш, содержит заголовок и текст сообщения;&lt;br /&gt;
* '''data payload''' - содержит произвольный набор параметров ключ-зачение (с ограничением 4Кб в firebase и 50 штук в наших реалиях)&lt;br /&gt;
&lt;br /&gt;
Сообщение может содержать либо один из этих блоков, либо оба сразу.&lt;br /&gt;
&lt;br /&gt;
При наличии в сообщении блока '''notification''' оно автоматически трактуется системой как пуш и при получении такого на устройстве - сразу закидывает его в системный трей (т.е. без нашей обработки). Мы никак не властны над подобными сообщениями и их параметрами (с параметрами то отдельная тема), а значит никаких кастомизаций в виде цветного шрифта и/или картинки не будет.&lt;br /&gt;
&lt;br /&gt;
Если сообщение имеет только '''data payload''' - оно всецело обрабатывается нашим движком, а значит мы имеем полный контроль над его отображением и всеми его параметрами. '''Но''' такие сообщения невозможно отправить из firebase консоли (т.к. там всегда должен присутствовать текст пуша), только скриптом (либо из нашей одминки).&lt;br /&gt;
&lt;br /&gt;
Для корректной работы всегда нужно использовать только '''data payload''' со структурой:&lt;br /&gt;
&lt;br /&gt;
 Тело пуша:                              # блок параметров, необходимых для отображения пуша&lt;br /&gt;
  &amp;quot;eventName&amp;quot;          : &amp;quot;EVENT_TITLE&amp;quot;,   # заголовок сообщения,  ОБЯЗАТЕЛЬНО для отображения пуша&lt;br /&gt;
  &amp;quot;eventMessage&amp;quot;       : &amp;quot;EVENT_BODY&amp;quot;,    # текст сообщения,      ОБЯЗАТЕЛЬНО для отображения пуша&lt;br /&gt;
  &amp;quot;eventType&amp;quot;          : &amp;quot;1&amp;quot;,             # 0 - показать только заголовок и сообщение; 1 - показать красивое сообщение со всеми плюшками&lt;br /&gt;
  &amp;quot;eventPriority&amp;quot;      : &amp;quot;2&amp;quot;              # приоритет пуша [-2:2], по дефолту 2&lt;br /&gt;
  &amp;quot;eventTime&amp;quot;          : &amp;quot;1541507205&amp;quot;     # время запуска пуша в UTC секундах (если отсутствует или меньше текущего времени - сразу показать)&lt;br /&gt;
  &amp;quot;evetBigPicture&amp;quot;     : &amp;quot;https://apps.absolutist.com/images/profile/no_avatar.png&amp;quot;,   # бекграунд пуша - НЕ имя ресурса, НЕ id ресурса, ТОЛЬКО ссылка&lt;br /&gt;
  &amp;quot;eventTitleColor&amp;quot;    : &amp;quot;#FF0000FF&amp;quot;,     # ARGB цвет заголовка&lt;br /&gt;
  &amp;quot;eventTextColor&amp;quot;     : &amp;quot;#FFFF0000&amp;quot;,     # ARGB цвет текста&lt;br /&gt;
 Тело данных&lt;br /&gt;
  &amp;quot;eventID&amp;quot;            : &amp;quot;EVENT_ID&amp;quot;,     # id ивента, машинка-обработчик будет переведена в это состояние&lt;br /&gt;
  Далее может быть произвольный набор параметров-значений, которые будут переданы в машинку-обработчик&lt;br /&gt;
&lt;br /&gt;
===Отправка и получение сообщения приложением===&lt;br /&gt;
''(Далее речь идет только про data payload)''&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;
: 0. Определиться, какие евенты вы хотите обрабатывать (поле '''eventID''' в пуше) и с какими параметрами ('''эт важно!''')&lt;br /&gt;
: 1. Создать объект '''Notifications''', т.к. вся коммуникация идет через него&lt;br /&gt;
: 2. Создать машинку-обработчик и указать её в поле ''Обработчик бандлов (fcmBundleHandler)'' объекта '''Notifications'''&lt;br /&gt;
: 3. Создать машинку, которая будет раз в определенный период дёргать '''Notifications''' в состояние '''fcm_check_bundle'''&lt;br /&gt;
: 4.0. В состоянии ''fcm_check_bundle'' объект '''Notifications''' проверяет опции на наличие бандлов из firebase сообщений.&lt;br /&gt;
Если бандл имеется - '''Notifications''' переводит машинку ''fcmBundleHandler'' в состояние из параметра '''eventID''' бандла.&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Отправка сообщений===&lt;br /&gt;
todo&lt;br /&gt;
&lt;br /&gt;
== Пример ==&lt;br /&gt;
&lt;br /&gt;
[http://fs5.absolutist.com/files/wikisample/notification.rar Download]&lt;br /&gt;
&lt;br /&gt;
[[Category:Options]]&lt;/div&gt;</summary>
		<author><name>Bmor</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.appsalutecreator.com/index.php?title=Notification&amp;diff=9729</id>
		<title>Notification</title>
		<link rel="alternate" type="text/html" href="https://wiki.appsalutecreator.com/index.php?title=Notification&amp;diff=9729"/>
		<updated>2018-11-13T08:03:53Z</updated>

		<summary type="html">&lt;p&gt;Bmor: /* Firebase Cloud Messaging */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC right}}&lt;br /&gt;
[[Object|Объект]] '''Notification''' предназначен для показа push уведомлений на IOS устройствах.&lt;br /&gt;
&lt;br /&gt;
==Параметры объекта==&lt;br /&gt;
&lt;br /&gt;
===Основные параметры===&lt;br /&gt;
&lt;br /&gt;
*'''имя события''' (''name'') - Имя события. Если у двух событий одинаковые имена - сохранится первое. Не обязательный параметр. Перетягивается из редактора текстов. Поле должно быть в состоянии редактирования.&lt;br /&gt;
&lt;br /&gt;
*'''сообщение''' (''message'') - Основной текст события. Перетягивается из редактора текстов. Поле должно быть в состоянии редактирования.&lt;br /&gt;
&lt;br /&gt;
*'''большая картинка''' (''big_picture'') - Имя файла с большой картинкой. Должен лежать не в ресурсах, а рядом с app.icf. Поле затирается после регистрации уведомления&lt;br /&gt;
&lt;br /&gt;
*'''год''' (''year'') - Год, когда сработает оповещение. Минимальное значение - 1971 .&lt;br /&gt;
&lt;br /&gt;
*'''месяц''' (''month'') - Месяц, когда сработает оповещение. Минимальное значение - 0, максимальное - 11 .&lt;br /&gt;
&lt;br /&gt;
*'''день''' (''day'') - День, когда сработает оповещение. Минимальное значение - 1, максимальное - 31 .&lt;br /&gt;
&lt;br /&gt;
*'''час''' (''hour'') - Час, когда сработает оповещение. Минимальное значение - 0, максимальное - 23 .&lt;br /&gt;
&lt;br /&gt;
*'''минута''' (''min'') - Минута, когда сработает оповещение. Минимальное значение - 0, максимальное - 59 .&lt;br /&gt;
&lt;br /&gt;
*'''секунда''' (''sec'') - Секунда, когда сработает оповещение. Минимальное значение - 0, максимальное - 59 .&lt;br /&gt;
&lt;br /&gt;
*'''задержка''' (''delay'') - Задержка от текущего времени до оповещения. Если задана не -1 - то используется вместо даты.&lt;br /&gt;
&lt;br /&gt;
*'''перед первым init экстеншена''' (''delayInit'') - Задержка в секундах до первой инициализации расширения&lt;br /&gt;
&lt;br /&gt;
*'''цвет заголовка''' (''colorTitle'') - Цвет заголовка - только для кастомных нотификейшенов&lt;br /&gt;
&lt;br /&gt;
*'''цвет текста''' (''colorText'') - Цвет текста - только для кастомных нотификейшенов&lt;br /&gt;
&lt;br /&gt;
===Firebase Cloud Messaging===&lt;br /&gt;
&lt;br /&gt;
*'''Обработчик бандлов''' (''fcmBundleHandler'') - Объект, в который будут записаны параметры бандла и который будет переведен в состояние eventID бандла при fcm_check_bundle (см. дальше)&lt;br /&gt;
&lt;br /&gt;
==Состояния объекта==&lt;br /&gt;
&lt;br /&gt;
*'''set''' - устанавливает нотификацию в очередь&lt;br /&gt;
&lt;br /&gt;
*'''clear''' - очищает очередь нотификации&lt;br /&gt;
&lt;br /&gt;
*'''erase''' - очищает очередь нотификации от уведомления с указаннным ID темы и ID сообщения&lt;br /&gt;
&lt;br /&gt;
*'''fcm_subscribe_topic''' - Firebase only! Подписаться на топик из поля topic&lt;br /&gt;
&lt;br /&gt;
*'''fcm_unsubscribe_topic''' - Firebase only! Отписаться от топика из поля topic&lt;br /&gt;
&lt;br /&gt;
*'''fcm_check_bundle''' - Firebase only! Проверить наличие fcm бандлов&lt;br /&gt;
&lt;br /&gt;
Установка уведомлений (объект notification):&lt;br /&gt;
 Состояние&lt;br /&gt;
 &amp;quot;set&amp;quot;, - оба способа&lt;br /&gt;
 &amp;quot;set_native&amp;quot;, - устройство&lt;br /&gt;
 &amp;quot;set_parse&amp;quot;, - парс&lt;br /&gt;
 или через параметр&lt;br /&gt;
 &amp;lt;property name=&amp;quot;отсылать в&amp;quot; type=&amp;quot;enum&amp;quot; value=&amp;quot;0&amp;quot; id=&amp;quot;send&amp;quot; hint=&amp;quot;отсылать в&amp;quot; regexp=&amp;quot;обе службы=0,только локальный пуш=1,только парс=2&amp;quot; /&amp;gt; (тогда состояние set)&lt;br /&gt;
&lt;br /&gt;
==Пример применения==&lt;br /&gt;
&lt;br /&gt;
Пусть через 5 минут после нажатия на кнопку у пользователя появиится уведомление с текстом &amp;quot;message of notification&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Для этого разместим на сцене объект notification и установим ему следующие параметры:&lt;br /&gt;
&lt;br /&gt;
* задержка - 300&lt;br /&gt;
&lt;br /&gt;
[[Файл:Notification 01.jpg |upright=0.5]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
В текстовую базу занесём новые записи с названием события нотификации и текстом нотификации.&lt;br /&gt;
&lt;br /&gt;
Далее добавим на сцену кнопку, которая будет передавать параметры объекту &amp;quot;notification&amp;quot; и переводить объект &amp;quot;notification&amp;quot; в состояние &amp;quot;set&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Notification 02.jpg |upright=0.5 ]]&lt;br /&gt;
&lt;br /&gt;
Теперь при нажатии на кнопку в очередь будет поставлено извещение, которое покажет система через 5 минут.&lt;br /&gt;
На устройстве это выглядит так:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;tleft&amp;quot; style=&amp;quot;clear:none&amp;quot;&amp;gt; [[Файл:IMG 0043.PNG | мини |200пкс ]] &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;tleft&amp;quot; style=&amp;quot;clear:none&amp;quot;&amp;gt; [[Файл:IMG 0046.PNG | мини |200пкс ]] &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Информация в логах==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
I/GNotification GNotification::aviable() GNotification::aviable() - уведомления разрешены&lt;br /&gt;
I/GNotification GNotification::state() state(ST_CLEAR) clear all notifications - очистилась&lt;br /&gt;
вся очередь уведомлений&lt;br /&gt;
I/GNotification GNotification::state() state(ST_SET) - уведомление поставлено в очередь&lt;br /&gt;
I/GNotification GNotification::EraseNotification() EraseNotification erase notification title: - уведомление&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;
У объекта [[options]] можно задать параметр '''notifScrID''' (значение параметра - id экрана). Если параметр задан, то при открытии приложения из уведомления откроется выбранный экран.&lt;br /&gt;
&lt;br /&gt;
==Firebase Cloud Messaging==&lt;br /&gt;
&lt;br /&gt;
Firebase Cloud Messaging позволяет рассылать кастомные уведомления с определенным набором доп. параметров, которые в последствии будут переданы во вьювер и сохранены в опциях (fcm бандлы).&lt;br /&gt;
&lt;br /&gt;
===Подготовка проекта===&lt;br /&gt;
&lt;br /&gt;
: 1. Создайте и настройте проект в Firebase консоли ([https://console.firebase.google.com/project/ Link])&lt;br /&gt;
: 2. Скачайте из консоли файл конфигураций проекта google-services.json&lt;br /&gt;
: 3. Перенесите параметры из ''google-services.json'' в ''project\conf\pom\sdl\google_params.json'' в поле ''extra_strings''&lt;br /&gt;
    google_app_id                       &amp;gt;&amp;gt;          {YOUR_CLIENT}/client_info/mobilesdk_app_id&lt;br /&gt;
    gcm_defaultSenderId                 &amp;gt;&amp;gt;          project_info/project_number&lt;br /&gt;
    default_web_client_id               &amp;gt;&amp;gt;          {YOUR_CLIENT}/oauth_client/client_id (client_type == 3)&lt;br /&gt;
    ga_trackingId                       &amp;gt;&amp;gt;          {YOUR_CLIENT}/services/analytics-service/analytics_property/tracking_id&lt;br /&gt;
    firebase_database_url               &amp;gt;&amp;gt;          project_info/firebase_url&lt;br /&gt;
    google_api_key                      &amp;gt;&amp;gt;          {YOUR_CLIENT}/api_key/current_key&lt;br /&gt;
    google_crash_reporting_api_key      &amp;gt;&amp;gt;          {YOUR_CLIENT}/api_key/current_key&lt;br /&gt;
    project_id                          &amp;gt;&amp;gt;          project_info/project_id&lt;br /&gt;
    google_storage_bucket               &amp;gt;&amp;gt;          project_info/storage_bucket&lt;br /&gt;
: 4. В app.icf сборки добавить раздел '''[Firebase]''', дабы при сборке подтянулся нужный экстеншн.&lt;br /&gt;
&lt;br /&gt;
===Структура сообщений===&lt;br /&gt;
Сообщения firebase имеют два основных блока:&lt;br /&gt;
* '''notification''' - стандартный пуш, содержит заголовок и текст сообщения;&lt;br /&gt;
* '''data payload''' - содержит произвольный набор параметров ключ-зачение (с ограничением 4Кб в firebase и 50 штук в наших реалиях)&lt;br /&gt;
&lt;br /&gt;
Сообщение может содержать либо один из этих блоков, либо оба сразу.&lt;br /&gt;
&lt;br /&gt;
При наличии в сообщении блока '''notification''' оно автоматически трактуется системой как пуш и при получении такого на устройстве - сразу закидывает его в системный трей (т.е. без нашей обработки). Мы никак не властны над подобными сообщениями и их параметрами (с параметрами то отдельная тема), а значит никаких кастомизаций в виде цветного шрифта и/или картинки не будет.&lt;br /&gt;
&lt;br /&gt;
Если сообщение имеет только '''data payload''' - оно всецело обрабатывается нашим движком, а значит мы имеем полный контроль над его отображением и всеми его параметрами. '''Но''' такие сообщения невозможно отправить из firebase консоли (т.к. там всегда должен присутствовать текст пуша), только скриптом (либо из нашей одминки).&lt;br /&gt;
&lt;br /&gt;
Для корректной работы всегда нужно использовать только '''data payload''' со структурой:&lt;br /&gt;
&lt;br /&gt;
 Тело пуша:                              # блок параметров, необходимых для отображения пуша&lt;br /&gt;
  &amp;quot;eventName&amp;quot;          : &amp;quot;EVENT_TITLE&amp;quot;,   # заголовок сообщения,  ОБЯЗАТЕЛЬНО для отображения пуша&lt;br /&gt;
  &amp;quot;eventMessage&amp;quot;       : &amp;quot;EVENT_BODY&amp;quot;,    # текст сообщения,      ОБЯЗАТЕЛЬНО для отображения пуша&lt;br /&gt;
  &amp;quot;eventType&amp;quot;          : &amp;quot;1&amp;quot;,             # 0 - показать только заголовок и сообщение; 1 - показать красивое сообщение со всеми плюшками&lt;br /&gt;
  &amp;quot;eventPriority&amp;quot;      : &amp;quot;2&amp;quot;              # приоритет пуша [-2:2], по дефолту 2&lt;br /&gt;
  &amp;quot;eventTime&amp;quot;          : &amp;quot;1541507205&amp;quot;     # время запуска пуша в UTC секундах (если отсутствует или меньше текущего времени - сразу показать)&lt;br /&gt;
  &amp;quot;evetBigPicture&amp;quot;     : &amp;quot;https://apps.absolutist.com/images/profile/no_avatar.png&amp;quot;,   # бекграунд пуша - НЕ имя ресурса, НЕ id ресурса, ТОЛЬКО ссылка&lt;br /&gt;
  &amp;quot;eventTitleColor&amp;quot;    : &amp;quot;#FF0000FF&amp;quot;,     # ARGB цвет заголовка&lt;br /&gt;
  &amp;quot;eventTextColor&amp;quot;     : &amp;quot;#FFFF0000&amp;quot;,     # ARGB цвет текста&lt;br /&gt;
 Тело данных&lt;br /&gt;
  &amp;quot;eventID&amp;quot;            : &amp;quot;EVENT_ID&amp;quot;,     # id ивента, машинка-обработчик будет переведена в это состояние&lt;br /&gt;
  Далее может быть произвольный набор параметров-значений, которые будут переданы в машинку-обработчик&lt;br /&gt;
&lt;br /&gt;
===Отправка и получение сообщения приложением===&lt;br /&gt;
''(Далее речь идет только про data payload)''&lt;br /&gt;
&lt;br /&gt;
ЕЕЕ&lt;br /&gt;
&lt;br /&gt;
===Обработка в редакторе===&lt;br /&gt;
&lt;br /&gt;
: 0. Определиться, какие евенты вы хотите обрабатывать (поле '''eventID''' в пуше) и с какими параметрами ('''эт важно!''')&lt;br /&gt;
: 1. Создать объект '''Notifications''', т.к. вся коммуникация идет через него&lt;br /&gt;
: 2. Создать машинку-обработчик и указать её в поле ''Обработчик бандлов (fcmBundleHandler)'' объекта '''Notifications'''&lt;br /&gt;
: 3. Создать машинку, которая будет раз в определенный период дёргать '''Notifications''' в состояние '''fcm_check_bundle'''&lt;br /&gt;
: 4.0. В состоянии ''fcm_check_bundle'' объект '''Notifications''' проверяет опции на наличие бандлов из firebase сообщений.&lt;br /&gt;
Если бандл имеется - '''Notifications''' переводит машинку ''fcmBundleHandler'' в состояние из параметра '''eventID''' бандла.&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Отправка сообщений===&lt;br /&gt;
todo&lt;br /&gt;
&lt;br /&gt;
== Пример ==&lt;br /&gt;
&lt;br /&gt;
[http://fs5.absolutist.com/files/wikisample/notification.rar Download]&lt;br /&gt;
&lt;br /&gt;
[[Category:Options]]&lt;/div&gt;</summary>
		<author><name>Bmor</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.appsalutecreator.com/index.php?title=Notification&amp;diff=9728</id>
		<title>Notification</title>
		<link rel="alternate" type="text/html" href="https://wiki.appsalutecreator.com/index.php?title=Notification&amp;diff=9728"/>
		<updated>2018-11-12T16:02:06Z</updated>

		<summary type="html">&lt;p&gt;Bmor: /* Обработка в редактора */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC right}}&lt;br /&gt;
[[Object|Объект]] '''Notification''' предназначен для показа push уведомлений на IOS устройствах.&lt;br /&gt;
&lt;br /&gt;
==Параметры объекта==&lt;br /&gt;
&lt;br /&gt;
===Основные параметры===&lt;br /&gt;
&lt;br /&gt;
*'''имя события''' (''name'') - Имя события. Если у двух событий одинаковые имена - сохранится первое. Не обязательный параметр. Перетягивается из редактора текстов. Поле должно быть в состоянии редактирования.&lt;br /&gt;
&lt;br /&gt;
*'''сообщение''' (''message'') - Основной текст события. Перетягивается из редактора текстов. Поле должно быть в состоянии редактирования.&lt;br /&gt;
&lt;br /&gt;
*'''большая картинка''' (''big_picture'') - Имя файла с большой картинкой. Должен лежать не в ресурсах, а рядом с app.icf. Поле затирается после регистрации уведомления&lt;br /&gt;
&lt;br /&gt;
*'''год''' (''year'') - Год, когда сработает оповещение. Минимальное значение - 1971 .&lt;br /&gt;
&lt;br /&gt;
*'''месяц''' (''month'') - Месяц, когда сработает оповещение. Минимальное значение - 0, максимальное - 11 .&lt;br /&gt;
&lt;br /&gt;
*'''день''' (''day'') - День, когда сработает оповещение. Минимальное значение - 1, максимальное - 31 .&lt;br /&gt;
&lt;br /&gt;
*'''час''' (''hour'') - Час, когда сработает оповещение. Минимальное значение - 0, максимальное - 23 .&lt;br /&gt;
&lt;br /&gt;
*'''минута''' (''min'') - Минута, когда сработает оповещение. Минимальное значение - 0, максимальное - 59 .&lt;br /&gt;
&lt;br /&gt;
*'''секунда''' (''sec'') - Секунда, когда сработает оповещение. Минимальное значение - 0, максимальное - 59 .&lt;br /&gt;
&lt;br /&gt;
*'''задержка''' (''delay'') - Задержка от текущего времени до оповещения. Если задана не -1 - то используется вместо даты.&lt;br /&gt;
&lt;br /&gt;
*'''перед первым init экстеншена''' (''delayInit'') - Задержка в секундах до первой инициализации расширения&lt;br /&gt;
&lt;br /&gt;
*'''цвет заголовка''' (''colorTitle'') - Цвет заголовка - только для кастомных нотификейшенов&lt;br /&gt;
&lt;br /&gt;
*'''цвет текста''' (''colorText'') - Цвет текста - только для кастомных нотификейшенов&lt;br /&gt;
&lt;br /&gt;
===Firebase Cloud Messaging===&lt;br /&gt;
&lt;br /&gt;
*'''Обработчик бандлов''' (''fcmBundleHandler'') - Объект, в который будут записаны параметры бандла и который будет переведен в состояние eventID бандла при fcm_check_bundle (см. дальше)&lt;br /&gt;
&lt;br /&gt;
==Состояния объекта==&lt;br /&gt;
&lt;br /&gt;
*'''set''' - устанавливает нотификацию в очередь&lt;br /&gt;
&lt;br /&gt;
*'''clear''' - очищает очередь нотификации&lt;br /&gt;
&lt;br /&gt;
*'''erase''' - очищает очередь нотификации от уведомления с указаннным ID темы и ID сообщения&lt;br /&gt;
&lt;br /&gt;
*'''fcm_subscribe_topic''' - Firebase only! Подписаться на топик из поля topic&lt;br /&gt;
&lt;br /&gt;
*'''fcm_unsubscribe_topic''' - Firebase only! Отписаться от топика из поля topic&lt;br /&gt;
&lt;br /&gt;
*'''fcm_check_bundle''' - Firebase only! Проверить наличие fcm бандлов&lt;br /&gt;
&lt;br /&gt;
Установка уведомлений (объект notification):&lt;br /&gt;
 Состояние&lt;br /&gt;
 &amp;quot;set&amp;quot;, - оба способа&lt;br /&gt;
 &amp;quot;set_native&amp;quot;, - устройство&lt;br /&gt;
 &amp;quot;set_parse&amp;quot;, - парс&lt;br /&gt;
 или через параметр&lt;br /&gt;
 &amp;lt;property name=&amp;quot;отсылать в&amp;quot; type=&amp;quot;enum&amp;quot; value=&amp;quot;0&amp;quot; id=&amp;quot;send&amp;quot; hint=&amp;quot;отсылать в&amp;quot; regexp=&amp;quot;обе службы=0,только локальный пуш=1,только парс=2&amp;quot; /&amp;gt; (тогда состояние set)&lt;br /&gt;
&lt;br /&gt;
==Пример применения==&lt;br /&gt;
&lt;br /&gt;
Пусть через 5 минут после нажатия на кнопку у пользователя появиится уведомление с текстом &amp;quot;message of notification&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Для этого разместим на сцене объект notification и установим ему следующие параметры:&lt;br /&gt;
&lt;br /&gt;
* задержка - 300&lt;br /&gt;
&lt;br /&gt;
[[Файл:Notification 01.jpg |upright=0.5]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
В текстовую базу занесём новые записи с названием события нотификации и текстом нотификации.&lt;br /&gt;
&lt;br /&gt;
Далее добавим на сцену кнопку, которая будет передавать параметры объекту &amp;quot;notification&amp;quot; и переводить объект &amp;quot;notification&amp;quot; в состояние &amp;quot;set&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Notification 02.jpg |upright=0.5 ]]&lt;br /&gt;
&lt;br /&gt;
Теперь при нажатии на кнопку в очередь будет поставлено извещение, которое покажет система через 5 минут.&lt;br /&gt;
На устройстве это выглядит так:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;tleft&amp;quot; style=&amp;quot;clear:none&amp;quot;&amp;gt; [[Файл:IMG 0043.PNG | мини |200пкс ]] &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;tleft&amp;quot; style=&amp;quot;clear:none&amp;quot;&amp;gt; [[Файл:IMG 0046.PNG | мини |200пкс ]] &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Информация в логах==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
I/GNotification GNotification::aviable() GNotification::aviable() - уведомления разрешены&lt;br /&gt;
I/GNotification GNotification::state() state(ST_CLEAR) clear all notifications - очистилась&lt;br /&gt;
вся очередь уведомлений&lt;br /&gt;
I/GNotification GNotification::state() state(ST_SET) - уведомление поставлено в очередь&lt;br /&gt;
I/GNotification GNotification::EraseNotification() EraseNotification erase notification title: - уведомление&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;
У объекта [[options]] можно задать параметр '''notifScrID''' (значение параметра - id экрана). Если параметр задан, то при открытии приложения из уведомления откроется выбранный экран.&lt;br /&gt;
&lt;br /&gt;
==Firebase Cloud Messaging==&lt;br /&gt;
&lt;br /&gt;
Firebase Cloud Messaging позволяет рассылать кастомные уведомления с определенным набором доп. параметров, которые в последствии будут переданы во вьювер и сохранены в опциях (fcm бандлы).&lt;br /&gt;
&lt;br /&gt;
===Подготовка проекта===&lt;br /&gt;
&lt;br /&gt;
: 1. Создайте и настройте проект в Firebase консоли ([https://console.firebase.google.com/project/ Link])&lt;br /&gt;
: 2. Скачайте из консоли файл конфигураций проекта google-services.json&lt;br /&gt;
: 3. Перенесите параметры из ''google-services.json'' в ''project\conf\pom\sdl\google_params.json'' в поле ''extra_strings''&lt;br /&gt;
    google_app_id                       &amp;gt;&amp;gt;          {YOUR_CLIENT}/client_info/mobilesdk_app_id&lt;br /&gt;
    gcm_defaultSenderId                 &amp;gt;&amp;gt;          project_info/project_number&lt;br /&gt;
    default_web_client_id               &amp;gt;&amp;gt;          {YOUR_CLIENT}/oauth_client/client_id (client_type == 3)&lt;br /&gt;
    ga_trackingId                       &amp;gt;&amp;gt;          {YOUR_CLIENT}/services/analytics-service/analytics_property/tracking_id&lt;br /&gt;
    firebase_database_url               &amp;gt;&amp;gt;          project_info/firebase_url&lt;br /&gt;
    google_api_key                      &amp;gt;&amp;gt;          {YOUR_CLIENT}/api_key/current_key&lt;br /&gt;
    google_crash_reporting_api_key      &amp;gt;&amp;gt;          {YOUR_CLIENT}/api_key/current_key&lt;br /&gt;
    project_id                          &amp;gt;&amp;gt;          project_info/project_id&lt;br /&gt;
    google_storage_bucket               &amp;gt;&amp;gt;          project_info/storage_bucket&lt;br /&gt;
: 4. В app.icf сборки добавить раздел '''[Firebase]''', дабы при сборке подтянулся нужный экстеншн.&lt;br /&gt;
&lt;br /&gt;
===Обработка в редакторе===&lt;br /&gt;
&lt;br /&gt;
: 0. Определиться, какие евенты вы хотите обрабатывать (поле '''eventID''' в пуше) и с какими параметрами ('''эт важно!''')&lt;br /&gt;
: 1. Создать объект '''Notifications''', т.к. вся коммуникация идет через него&lt;br /&gt;
: 2. Создать машинку-обработчик и указать её в поле ''Обработчик бандлов (fcmBundleHandler)'' объекта '''Notifications'''&lt;br /&gt;
: 3. Создать машинку, которая будет раз в определенный период дёргать '''Notifications''' в состояние '''fcm_check_bundle'''&lt;br /&gt;
: 4.0. В состоянии ''fcm_check_bundle'' объект '''Notifications''' проверяет опции на наличие бандлов из firebase сообщений.&lt;br /&gt;
Если бандл имеется - '''Notifications''' переводит машинку ''fcmBundleHandler'' в состояние из параметра '''eventID''' бандла.&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
===Отправка сообщений===&lt;br /&gt;
todo&lt;br /&gt;
&lt;br /&gt;
===Особенности использования===&lt;br /&gt;
Сообщения firebase имеют два основных блока:&lt;br /&gt;
* '''notification''' - стандартный пуш, содержит заголовок и текст сообщения;&lt;br /&gt;
* '''data payload''' - содержит произвольный набор параметров ключ-зачение (с ограничением 4Кб в firebase и 50 штук в наших реалиях)&lt;br /&gt;
&lt;br /&gt;
Сообщение может содержать либо один из этих блоков, либо оба сразу.&lt;br /&gt;
&lt;br /&gt;
При наличии в сообщении блока '''notification''' оно автоматически трактуется системой как пуш и при получении такого на устройстве - сразу закидывает его в системный трей (т.е. без нашей обработки). Мы никак не властны над подобными сообщениями и их параметрами (с параметрами то отдельная тема), а значит никаких кастомизаций в виде цветного шрифта и/или картинки не будет.&lt;br /&gt;
&lt;br /&gt;
Если сообщение имеет только '''data payload''' - оно всецело обрабатывается нашим движком, а значит мы имеем полный контроль над его отображением и всеми его параметрами. '''Но''' такие сообщения невозможно отправить из firebase консоли, только скриптом (либо из нашей одминки).&lt;br /&gt;
&lt;br /&gt;
Для корректной работы, пожалуйста, используйте только '''data payload'''!&lt;br /&gt;
&lt;br /&gt;
== Пример ==&lt;br /&gt;
&lt;br /&gt;
[http://fs5.absolutist.com/files/wikisample/notification.rar Download]&lt;br /&gt;
&lt;br /&gt;
[[Category:Options]]&lt;/div&gt;</summary>
		<author><name>Bmor</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.appsalutecreator.com/index.php?title=Notification&amp;diff=9727</id>
		<title>Notification</title>
		<link rel="alternate" type="text/html" href="https://wiki.appsalutecreator.com/index.php?title=Notification&amp;diff=9727"/>
		<updated>2018-11-12T15:54:03Z</updated>

		<summary type="html">&lt;p&gt;Bmor: /* Подготовка проекта */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC right}}&lt;br /&gt;
[[Object|Объект]] '''Notification''' предназначен для показа push уведомлений на IOS устройствах.&lt;br /&gt;
&lt;br /&gt;
==Параметры объекта==&lt;br /&gt;
&lt;br /&gt;
===Основные параметры===&lt;br /&gt;
&lt;br /&gt;
*'''имя события''' (''name'') - Имя события. Если у двух событий одинаковые имена - сохранится первое. Не обязательный параметр. Перетягивается из редактора текстов. Поле должно быть в состоянии редактирования.&lt;br /&gt;
&lt;br /&gt;
*'''сообщение''' (''message'') - Основной текст события. Перетягивается из редактора текстов. Поле должно быть в состоянии редактирования.&lt;br /&gt;
&lt;br /&gt;
*'''большая картинка''' (''big_picture'') - Имя файла с большой картинкой. Должен лежать не в ресурсах, а рядом с app.icf. Поле затирается после регистрации уведомления&lt;br /&gt;
&lt;br /&gt;
*'''год''' (''year'') - Год, когда сработает оповещение. Минимальное значение - 1971 .&lt;br /&gt;
&lt;br /&gt;
*'''месяц''' (''month'') - Месяц, когда сработает оповещение. Минимальное значение - 0, максимальное - 11 .&lt;br /&gt;
&lt;br /&gt;
*'''день''' (''day'') - День, когда сработает оповещение. Минимальное значение - 1, максимальное - 31 .&lt;br /&gt;
&lt;br /&gt;
*'''час''' (''hour'') - Час, когда сработает оповещение. Минимальное значение - 0, максимальное - 23 .&lt;br /&gt;
&lt;br /&gt;
*'''минута''' (''min'') - Минута, когда сработает оповещение. Минимальное значение - 0, максимальное - 59 .&lt;br /&gt;
&lt;br /&gt;
*'''секунда''' (''sec'') - Секунда, когда сработает оповещение. Минимальное значение - 0, максимальное - 59 .&lt;br /&gt;
&lt;br /&gt;
*'''задержка''' (''delay'') - Задержка от текущего времени до оповещения. Если задана не -1 - то используется вместо даты.&lt;br /&gt;
&lt;br /&gt;
*'''перед первым init экстеншена''' (''delayInit'') - Задержка в секундах до первой инициализации расширения&lt;br /&gt;
&lt;br /&gt;
*'''цвет заголовка''' (''colorTitle'') - Цвет заголовка - только для кастомных нотификейшенов&lt;br /&gt;
&lt;br /&gt;
*'''цвет текста''' (''colorText'') - Цвет текста - только для кастомных нотификейшенов&lt;br /&gt;
&lt;br /&gt;
===Firebase Cloud Messaging===&lt;br /&gt;
&lt;br /&gt;
*'''Обработчик бандлов''' (''fcmBundleHandler'') - Объект, в который будут записаны параметры бандла и который будет переведен в состояние eventID бандла при fcm_check_bundle (см. дальше)&lt;br /&gt;
&lt;br /&gt;
==Состояния объекта==&lt;br /&gt;
&lt;br /&gt;
*'''set''' - устанавливает нотификацию в очередь&lt;br /&gt;
&lt;br /&gt;
*'''clear''' - очищает очередь нотификации&lt;br /&gt;
&lt;br /&gt;
*'''erase''' - очищает очередь нотификации от уведомления с указаннным ID темы и ID сообщения&lt;br /&gt;
&lt;br /&gt;
*'''fcm_subscribe_topic''' - Firebase only! Подписаться на топик из поля topic&lt;br /&gt;
&lt;br /&gt;
*'''fcm_unsubscribe_topic''' - Firebase only! Отписаться от топика из поля topic&lt;br /&gt;
&lt;br /&gt;
*'''fcm_check_bundle''' - Firebase only! Проверить наличие fcm бандлов&lt;br /&gt;
&lt;br /&gt;
Установка уведомлений (объект notification):&lt;br /&gt;
 Состояние&lt;br /&gt;
 &amp;quot;set&amp;quot;, - оба способа&lt;br /&gt;
 &amp;quot;set_native&amp;quot;, - устройство&lt;br /&gt;
 &amp;quot;set_parse&amp;quot;, - парс&lt;br /&gt;
 или через параметр&lt;br /&gt;
 &amp;lt;property name=&amp;quot;отсылать в&amp;quot; type=&amp;quot;enum&amp;quot; value=&amp;quot;0&amp;quot; id=&amp;quot;send&amp;quot; hint=&amp;quot;отсылать в&amp;quot; regexp=&amp;quot;обе службы=0,только локальный пуш=1,только парс=2&amp;quot; /&amp;gt; (тогда состояние set)&lt;br /&gt;
&lt;br /&gt;
==Пример применения==&lt;br /&gt;
&lt;br /&gt;
Пусть через 5 минут после нажатия на кнопку у пользователя появиится уведомление с текстом &amp;quot;message of notification&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Для этого разместим на сцене объект notification и установим ему следующие параметры:&lt;br /&gt;
&lt;br /&gt;
* задержка - 300&lt;br /&gt;
&lt;br /&gt;
[[Файл:Notification 01.jpg |upright=0.5]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
В текстовую базу занесём новые записи с названием события нотификации и текстом нотификации.&lt;br /&gt;
&lt;br /&gt;
Далее добавим на сцену кнопку, которая будет передавать параметры объекту &amp;quot;notification&amp;quot; и переводить объект &amp;quot;notification&amp;quot; в состояние &amp;quot;set&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Notification 02.jpg |upright=0.5 ]]&lt;br /&gt;
&lt;br /&gt;
Теперь при нажатии на кнопку в очередь будет поставлено извещение, которое покажет система через 5 минут.&lt;br /&gt;
На устройстве это выглядит так:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;tleft&amp;quot; style=&amp;quot;clear:none&amp;quot;&amp;gt; [[Файл:IMG 0043.PNG | мини |200пкс ]] &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;tleft&amp;quot; style=&amp;quot;clear:none&amp;quot;&amp;gt; [[Файл:IMG 0046.PNG | мини |200пкс ]] &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Информация в логах==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
I/GNotification GNotification::aviable() GNotification::aviable() - уведомления разрешены&lt;br /&gt;
I/GNotification GNotification::state() state(ST_CLEAR) clear all notifications - очистилась&lt;br /&gt;
вся очередь уведомлений&lt;br /&gt;
I/GNotification GNotification::state() state(ST_SET) - уведомление поставлено в очередь&lt;br /&gt;
I/GNotification GNotification::EraseNotification() EraseNotification erase notification title: - уведомление&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;
У объекта [[options]] можно задать параметр '''notifScrID''' (значение параметра - id экрана). Если параметр задан, то при открытии приложения из уведомления откроется выбранный экран.&lt;br /&gt;
&lt;br /&gt;
==Firebase Cloud Messaging==&lt;br /&gt;
&lt;br /&gt;
Firebase Cloud Messaging позволяет рассылать кастомные уведомления с определенным набором доп. параметров, которые в последствии будут переданы во вьювер и сохранены в опциях (fcm бандлы).&lt;br /&gt;
&lt;br /&gt;
===Подготовка проекта===&lt;br /&gt;
&lt;br /&gt;
: 1. Создайте и настройте проект в Firebase консоли ([https://console.firebase.google.com/project/ Link])&lt;br /&gt;
: 2. Скачайте из консоли файл конфигураций проекта google-services.json&lt;br /&gt;
: 3. Перенесите параметры из ''google-services.json'' в ''project\conf\pom\sdl\google_params.json'' в поле ''extra_strings''&lt;br /&gt;
    google_app_id                       &amp;gt;&amp;gt;          {YOUR_CLIENT}/client_info/mobilesdk_app_id&lt;br /&gt;
    gcm_defaultSenderId                 &amp;gt;&amp;gt;          project_info/project_number&lt;br /&gt;
    default_web_client_id               &amp;gt;&amp;gt;          {YOUR_CLIENT}/oauth_client/client_id (client_type == 3)&lt;br /&gt;
    ga_trackingId                       &amp;gt;&amp;gt;          {YOUR_CLIENT}/services/analytics-service/analytics_property/tracking_id&lt;br /&gt;
    firebase_database_url               &amp;gt;&amp;gt;          project_info/firebase_url&lt;br /&gt;
    google_api_key                      &amp;gt;&amp;gt;          {YOUR_CLIENT}/api_key/current_key&lt;br /&gt;
    google_crash_reporting_api_key      &amp;gt;&amp;gt;          {YOUR_CLIENT}/api_key/current_key&lt;br /&gt;
    project_id                          &amp;gt;&amp;gt;          project_info/project_id&lt;br /&gt;
    google_storage_bucket               &amp;gt;&amp;gt;          project_info/storage_bucket&lt;br /&gt;
: 4. В app.icf сборки добавить раздел '''[Firebase]''', дабы при сборке подтянулся нужный экстеншн.&lt;br /&gt;
&lt;br /&gt;
===Обработка в редактора===&lt;br /&gt;
&lt;br /&gt;
todo&lt;br /&gt;
&lt;br /&gt;
===Отправка сообщений===&lt;br /&gt;
todo&lt;br /&gt;
&lt;br /&gt;
===Особенности использования===&lt;br /&gt;
Сообщения firebase имеют два основных блока:&lt;br /&gt;
* '''notification''' - стандартный пуш, содержит заголовок и текст сообщения;&lt;br /&gt;
* '''data payload''' - содержит произвольный набор параметров ключ-зачение (с ограничением 4Кб в firebase и 50 штук в наших реалиях)&lt;br /&gt;
&lt;br /&gt;
Сообщение может содержать либо один из этих блоков, либо оба сразу.&lt;br /&gt;
&lt;br /&gt;
При наличии в сообщении блока '''notification''' оно автоматически трактуется системой как пуш и при получении такого на устройстве - сразу закидывает его в системный трей (т.е. без нашей обработки). Мы никак не властны над подобными сообщениями и их параметрами (с параметрами то отдельная тема), а значит никаких кастомизаций в виде цветного шрифта и/или картинки не будет.&lt;br /&gt;
&lt;br /&gt;
Если сообщение имеет только '''data payload''' - оно всецело обрабатывается нашим движком, а значит мы имеем полный контроль над его отображением и всеми его параметрами. '''Но''' такие сообщения невозможно отправить из firebase консоли, только скриптом (либо из нашей одминки).&lt;br /&gt;
&lt;br /&gt;
Для корректной работы, пожалуйста, используйте только '''data payload'''!&lt;br /&gt;
&lt;br /&gt;
== Пример ==&lt;br /&gt;
&lt;br /&gt;
[http://fs5.absolutist.com/files/wikisample/notification.rar Download]&lt;br /&gt;
&lt;br /&gt;
[[Category:Options]]&lt;/div&gt;</summary>
		<author><name>Bmor</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.appsalutecreator.com/index.php?title=Notification&amp;diff=9726</id>
		<title>Notification</title>
		<link rel="alternate" type="text/html" href="https://wiki.appsalutecreator.com/index.php?title=Notification&amp;diff=9726"/>
		<updated>2018-11-12T15:52:08Z</updated>

		<summary type="html">&lt;p&gt;Bmor: /* Firebase Cloud Messaging */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC right}}&lt;br /&gt;
[[Object|Объект]] '''Notification''' предназначен для показа push уведомлений на IOS устройствах.&lt;br /&gt;
&lt;br /&gt;
==Параметры объекта==&lt;br /&gt;
&lt;br /&gt;
===Основные параметры===&lt;br /&gt;
&lt;br /&gt;
*'''имя события''' (''name'') - Имя события. Если у двух событий одинаковые имена - сохранится первое. Не обязательный параметр. Перетягивается из редактора текстов. Поле должно быть в состоянии редактирования.&lt;br /&gt;
&lt;br /&gt;
*'''сообщение''' (''message'') - Основной текст события. Перетягивается из редактора текстов. Поле должно быть в состоянии редактирования.&lt;br /&gt;
&lt;br /&gt;
*'''большая картинка''' (''big_picture'') - Имя файла с большой картинкой. Должен лежать не в ресурсах, а рядом с app.icf. Поле затирается после регистрации уведомления&lt;br /&gt;
&lt;br /&gt;
*'''год''' (''year'') - Год, когда сработает оповещение. Минимальное значение - 1971 .&lt;br /&gt;
&lt;br /&gt;
*'''месяц''' (''month'') - Месяц, когда сработает оповещение. Минимальное значение - 0, максимальное - 11 .&lt;br /&gt;
&lt;br /&gt;
*'''день''' (''day'') - День, когда сработает оповещение. Минимальное значение - 1, максимальное - 31 .&lt;br /&gt;
&lt;br /&gt;
*'''час''' (''hour'') - Час, когда сработает оповещение. Минимальное значение - 0, максимальное - 23 .&lt;br /&gt;
&lt;br /&gt;
*'''минута''' (''min'') - Минута, когда сработает оповещение. Минимальное значение - 0, максимальное - 59 .&lt;br /&gt;
&lt;br /&gt;
*'''секунда''' (''sec'') - Секунда, когда сработает оповещение. Минимальное значение - 0, максимальное - 59 .&lt;br /&gt;
&lt;br /&gt;
*'''задержка''' (''delay'') - Задержка от текущего времени до оповещения. Если задана не -1 - то используется вместо даты.&lt;br /&gt;
&lt;br /&gt;
*'''перед первым init экстеншена''' (''delayInit'') - Задержка в секундах до первой инициализации расширения&lt;br /&gt;
&lt;br /&gt;
*'''цвет заголовка''' (''colorTitle'') - Цвет заголовка - только для кастомных нотификейшенов&lt;br /&gt;
&lt;br /&gt;
*'''цвет текста''' (''colorText'') - Цвет текста - только для кастомных нотификейшенов&lt;br /&gt;
&lt;br /&gt;
===Firebase Cloud Messaging===&lt;br /&gt;
&lt;br /&gt;
*'''Обработчик бандлов''' (''fcmBundleHandler'') - Объект, в который будут записаны параметры бандла и который будет переведен в состояние eventID бандла при fcm_check_bundle (см. дальше)&lt;br /&gt;
&lt;br /&gt;
==Состояния объекта==&lt;br /&gt;
&lt;br /&gt;
*'''set''' - устанавливает нотификацию в очередь&lt;br /&gt;
&lt;br /&gt;
*'''clear''' - очищает очередь нотификации&lt;br /&gt;
&lt;br /&gt;
*'''erase''' - очищает очередь нотификации от уведомления с указаннным ID темы и ID сообщения&lt;br /&gt;
&lt;br /&gt;
*'''fcm_subscribe_topic''' - Firebase only! Подписаться на топик из поля topic&lt;br /&gt;
&lt;br /&gt;
*'''fcm_unsubscribe_topic''' - Firebase only! Отписаться от топика из поля topic&lt;br /&gt;
&lt;br /&gt;
*'''fcm_check_bundle''' - Firebase only! Проверить наличие fcm бандлов&lt;br /&gt;
&lt;br /&gt;
Установка уведомлений (объект notification):&lt;br /&gt;
 Состояние&lt;br /&gt;
 &amp;quot;set&amp;quot;, - оба способа&lt;br /&gt;
 &amp;quot;set_native&amp;quot;, - устройство&lt;br /&gt;
 &amp;quot;set_parse&amp;quot;, - парс&lt;br /&gt;
 или через параметр&lt;br /&gt;
 &amp;lt;property name=&amp;quot;отсылать в&amp;quot; type=&amp;quot;enum&amp;quot; value=&amp;quot;0&amp;quot; id=&amp;quot;send&amp;quot; hint=&amp;quot;отсылать в&amp;quot; regexp=&amp;quot;обе службы=0,только локальный пуш=1,только парс=2&amp;quot; /&amp;gt; (тогда состояние set)&lt;br /&gt;
&lt;br /&gt;
==Пример применения==&lt;br /&gt;
&lt;br /&gt;
Пусть через 5 минут после нажатия на кнопку у пользователя появиится уведомление с текстом &amp;quot;message of notification&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Для этого разместим на сцене объект notification и установим ему следующие параметры:&lt;br /&gt;
&lt;br /&gt;
* задержка - 300&lt;br /&gt;
&lt;br /&gt;
[[Файл:Notification 01.jpg |upright=0.5]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
В текстовую базу занесём новые записи с названием события нотификации и текстом нотификации.&lt;br /&gt;
&lt;br /&gt;
Далее добавим на сцену кнопку, которая будет передавать параметры объекту &amp;quot;notification&amp;quot; и переводить объект &amp;quot;notification&amp;quot; в состояние &amp;quot;set&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Notification 02.jpg |upright=0.5 ]]&lt;br /&gt;
&lt;br /&gt;
Теперь при нажатии на кнопку в очередь будет поставлено извещение, которое покажет система через 5 минут.&lt;br /&gt;
На устройстве это выглядит так:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;tleft&amp;quot; style=&amp;quot;clear:none&amp;quot;&amp;gt; [[Файл:IMG 0043.PNG | мини |200пкс ]] &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;tleft&amp;quot; style=&amp;quot;clear:none&amp;quot;&amp;gt; [[Файл:IMG 0046.PNG | мини |200пкс ]] &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Информация в логах==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
I/GNotification GNotification::aviable() GNotification::aviable() - уведомления разрешены&lt;br /&gt;
I/GNotification GNotification::state() state(ST_CLEAR) clear all notifications - очистилась&lt;br /&gt;
вся очередь уведомлений&lt;br /&gt;
I/GNotification GNotification::state() state(ST_SET) - уведомление поставлено в очередь&lt;br /&gt;
I/GNotification GNotification::EraseNotification() EraseNotification erase notification title: - уведомление&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;
У объекта [[options]] можно задать параметр '''notifScrID''' (значение параметра - id экрана). Если параметр задан, то при открытии приложения из уведомления откроется выбранный экран.&lt;br /&gt;
&lt;br /&gt;
==Firebase Cloud Messaging==&lt;br /&gt;
&lt;br /&gt;
Firebase Cloud Messaging позволяет рассылать кастомные уведомления с определенным набором доп. параметров, которые в последствии будут переданы во вьювер и сохранены в опциях (fcm бандлы).&lt;br /&gt;
&lt;br /&gt;
===Подготовка проекта===&lt;br /&gt;
&lt;br /&gt;
# Создайте и настройте проект в Firebase консоли ([https://console.firebase.google.com/project/ Link])&lt;br /&gt;
# Скачайте из консоли файл конфигураций проекта google-services.json&lt;br /&gt;
# Перенесите параметры из ''google-services.json'' в ''project\conf\pom\sdl\google_params.json'' в поле ''extra_strings''&lt;br /&gt;
    google_app_id                       &amp;gt;&amp;gt;          {YOUR_CLIENT}/client_info/mobilesdk_app_id&lt;br /&gt;
    gcm_defaultSenderId                 &amp;gt;&amp;gt;          project_info/project_number&lt;br /&gt;
    default_web_client_id               &amp;gt;&amp;gt;          {YOUR_CLIENT}/oauth_client/client_id (client_type == 3)&lt;br /&gt;
    ga_trackingId                       &amp;gt;&amp;gt;          {YOUR_CLIENT}/services/analytics-service/analytics_property/tracking_id&lt;br /&gt;
    firebase_database_url               &amp;gt;&amp;gt;          project_info/firebase_url&lt;br /&gt;
    google_api_key                      &amp;gt;&amp;gt;          {YOUR_CLIENT}/api_key/current_key&lt;br /&gt;
    google_crash_reporting_api_key      &amp;gt;&amp;gt;          {YOUR_CLIENT}/api_key/current_key&lt;br /&gt;
    project_id                          &amp;gt;&amp;gt;          project_info/project_id&lt;br /&gt;
    google_storage_bucket               &amp;gt;&amp;gt;          project_info/storage_bucket&lt;br /&gt;
&lt;br /&gt;
===Обработка в редактора===&lt;br /&gt;
&lt;br /&gt;
todo&lt;br /&gt;
&lt;br /&gt;
===Отправка сообщений===&lt;br /&gt;
todo&lt;br /&gt;
&lt;br /&gt;
===Особенности использования===&lt;br /&gt;
Сообщения firebase имеют два основных блока:&lt;br /&gt;
* '''notification''' - стандартный пуш, содержит заголовок и текст сообщения;&lt;br /&gt;
* '''data payload''' - содержит произвольный набор параметров ключ-зачение (с ограничением 4Кб в firebase и 50 штук в наших реалиях)&lt;br /&gt;
&lt;br /&gt;
Сообщение может содержать либо один из этих блоков, либо оба сразу.&lt;br /&gt;
&lt;br /&gt;
При наличии в сообщении блока '''notification''' оно автоматически трактуется системой как пуш и при получении такого на устройстве - сразу закидывает его в системный трей (т.е. без нашей обработки). Мы никак не властны над подобными сообщениями и их параметрами (с параметрами то отдельная тема), а значит никаких кастомизаций в виде цветного шрифта и/или картинки не будет.&lt;br /&gt;
&lt;br /&gt;
Если сообщение имеет только '''data payload''' - оно всецело обрабатывается нашим движком, а значит мы имеем полный контроль над его отображением и всеми его параметрами. '''Но''' такие сообщения невозможно отправить из firebase консоли, только скриптом (либо из нашей одминки).&lt;br /&gt;
&lt;br /&gt;
Для корректной работы, пожалуйста, используйте только '''data payload'''!&lt;br /&gt;
&lt;br /&gt;
== Пример ==&lt;br /&gt;
&lt;br /&gt;
[http://fs5.absolutist.com/files/wikisample/notification.rar Download]&lt;br /&gt;
&lt;br /&gt;
[[Category:Options]]&lt;/div&gt;</summary>
		<author><name>Bmor</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.appsalutecreator.com/index.php?title=Notification&amp;diff=9725</id>
		<title>Notification</title>
		<link rel="alternate" type="text/html" href="https://wiki.appsalutecreator.com/index.php?title=Notification&amp;diff=9725"/>
		<updated>2018-11-12T15:43:55Z</updated>

		<summary type="html">&lt;p&gt;Bmor: /* Особенности использования */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC right}}&lt;br /&gt;
[[Object|Объект]] '''Notification''' предназначен для показа push уведомлений на IOS устройствах.&lt;br /&gt;
&lt;br /&gt;
==Параметры объекта==&lt;br /&gt;
&lt;br /&gt;
===Основные параметры===&lt;br /&gt;
&lt;br /&gt;
*'''имя события''' (''name'') - Имя события. Если у двух событий одинаковые имена - сохранится первое. Не обязательный параметр. Перетягивается из редактора текстов. Поле должно быть в состоянии редактирования.&lt;br /&gt;
&lt;br /&gt;
*'''сообщение''' (''message'') - Основной текст события. Перетягивается из редактора текстов. Поле должно быть в состоянии редактирования.&lt;br /&gt;
&lt;br /&gt;
*'''большая картинка''' (''big_picture'') - Имя файла с большой картинкой. Должен лежать не в ресурсах, а рядом с app.icf. Поле затирается после регистрации уведомления&lt;br /&gt;
&lt;br /&gt;
*'''год''' (''year'') - Год, когда сработает оповещение. Минимальное значение - 1971 .&lt;br /&gt;
&lt;br /&gt;
*'''месяц''' (''month'') - Месяц, когда сработает оповещение. Минимальное значение - 0, максимальное - 11 .&lt;br /&gt;
&lt;br /&gt;
*'''день''' (''day'') - День, когда сработает оповещение. Минимальное значение - 1, максимальное - 31 .&lt;br /&gt;
&lt;br /&gt;
*'''час''' (''hour'') - Час, когда сработает оповещение. Минимальное значение - 0, максимальное - 23 .&lt;br /&gt;
&lt;br /&gt;
*'''минута''' (''min'') - Минута, когда сработает оповещение. Минимальное значение - 0, максимальное - 59 .&lt;br /&gt;
&lt;br /&gt;
*'''секунда''' (''sec'') - Секунда, когда сработает оповещение. Минимальное значение - 0, максимальное - 59 .&lt;br /&gt;
&lt;br /&gt;
*'''задержка''' (''delay'') - Задержка от текущего времени до оповещения. Если задана не -1 - то используется вместо даты.&lt;br /&gt;
&lt;br /&gt;
*'''перед первым init экстеншена''' (''delayInit'') - Задержка в секундах до первой инициализации расширения&lt;br /&gt;
&lt;br /&gt;
*'''цвет заголовка''' (''colorTitle'') - Цвет заголовка - только для кастомных нотификейшенов&lt;br /&gt;
&lt;br /&gt;
*'''цвет текста''' (''colorText'') - Цвет текста - только для кастомных нотификейшенов&lt;br /&gt;
&lt;br /&gt;
===Firebase Cloud Messaging===&lt;br /&gt;
&lt;br /&gt;
*'''Обработчик бандлов''' (''fcmBundleHandler'') - Объект, в который будут записаны параметры бандла и который будет переведен в состояние eventID бандла при fcm_check_bundle (см. дальше)&lt;br /&gt;
&lt;br /&gt;
==Состояния объекта==&lt;br /&gt;
&lt;br /&gt;
*'''set''' - устанавливает нотификацию в очередь&lt;br /&gt;
&lt;br /&gt;
*'''clear''' - очищает очередь нотификации&lt;br /&gt;
&lt;br /&gt;
*'''erase''' - очищает очередь нотификации от уведомления с указаннным ID темы и ID сообщения&lt;br /&gt;
&lt;br /&gt;
*'''fcm_subscribe_topic''' - Firebase only! Подписаться на топик из поля topic&lt;br /&gt;
&lt;br /&gt;
*'''fcm_unsubscribe_topic''' - Firebase only! Отписаться от топика из поля topic&lt;br /&gt;
&lt;br /&gt;
*'''fcm_check_bundle''' - Firebase only! Проверить наличие fcm бандлов&lt;br /&gt;
&lt;br /&gt;
Установка уведомлений (объект notification):&lt;br /&gt;
 Состояние&lt;br /&gt;
 &amp;quot;set&amp;quot;, - оба способа&lt;br /&gt;
 &amp;quot;set_native&amp;quot;, - устройство&lt;br /&gt;
 &amp;quot;set_parse&amp;quot;, - парс&lt;br /&gt;
 или через параметр&lt;br /&gt;
 &amp;lt;property name=&amp;quot;отсылать в&amp;quot; type=&amp;quot;enum&amp;quot; value=&amp;quot;0&amp;quot; id=&amp;quot;send&amp;quot; hint=&amp;quot;отсылать в&amp;quot; regexp=&amp;quot;обе службы=0,только локальный пуш=1,только парс=2&amp;quot; /&amp;gt; (тогда состояние set)&lt;br /&gt;
&lt;br /&gt;
==Пример применения==&lt;br /&gt;
&lt;br /&gt;
Пусть через 5 минут после нажатия на кнопку у пользователя появиится уведомление с текстом &amp;quot;message of notification&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Для этого разместим на сцене объект notification и установим ему следующие параметры:&lt;br /&gt;
&lt;br /&gt;
* задержка - 300&lt;br /&gt;
&lt;br /&gt;
[[Файл:Notification 01.jpg |upright=0.5]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
В текстовую базу занесём новые записи с названием события нотификации и текстом нотификации.&lt;br /&gt;
&lt;br /&gt;
Далее добавим на сцену кнопку, которая будет передавать параметры объекту &amp;quot;notification&amp;quot; и переводить объект &amp;quot;notification&amp;quot; в состояние &amp;quot;set&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Notification 02.jpg |upright=0.5 ]]&lt;br /&gt;
&lt;br /&gt;
Теперь при нажатии на кнопку в очередь будет поставлено извещение, которое покажет система через 5 минут.&lt;br /&gt;
На устройстве это выглядит так:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;tleft&amp;quot; style=&amp;quot;clear:none&amp;quot;&amp;gt; [[Файл:IMG 0043.PNG | мини |200пкс ]] &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;tleft&amp;quot; style=&amp;quot;clear:none&amp;quot;&amp;gt; [[Файл:IMG 0046.PNG | мини |200пкс ]] &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Информация в логах==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
I/GNotification GNotification::aviable() GNotification::aviable() - уведомления разрешены&lt;br /&gt;
I/GNotification GNotification::state() state(ST_CLEAR) clear all notifications - очистилась&lt;br /&gt;
вся очередь уведомлений&lt;br /&gt;
I/GNotification GNotification::state() state(ST_SET) - уведомление поставлено в очередь&lt;br /&gt;
I/GNotification GNotification::EraseNotification() EraseNotification erase notification title: - уведомление&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;
У объекта [[options]] можно задать параметр '''notifScrID''' (значение параметра - id экрана). Если параметр задан, то при открытии приложения из уведомления откроется выбранный экран.&lt;br /&gt;
&lt;br /&gt;
==Firebase Cloud Messaging==&lt;br /&gt;
&lt;br /&gt;
Firebase Cloud Messaging позволяет рассылать кастомные уведомления с определенным набором доп. параметров, которые в последствии будут переданы во вьювер и сохранены в опциях (fcm бандлы).&lt;br /&gt;
&lt;br /&gt;
===Подготовка проекта===&lt;br /&gt;
&lt;br /&gt;
# Создайте и настройте проект в Firebase консоли ([https://console.firebase.google.com/project/ Link])&lt;br /&gt;
# Скачайте из консоли файл конфигураций проекта google-services.json&lt;br /&gt;
# Перенесите параметры из ''google-services.json'' в ''project\conf\pom\sdl\google_params.json'' в поле ''extra_strings''&lt;br /&gt;
    google_app_id                       &amp;gt;&amp;gt;          {YOUR_CLIENT}/client_info/mobilesdk_app_id&lt;br /&gt;
    gcm_defaultSenderId                 &amp;gt;&amp;gt;          project_info/project_number&lt;br /&gt;
    default_web_client_id               &amp;gt;&amp;gt;          {YOUR_CLIENT}/oauth_client/client_id (client_type == 3)&lt;br /&gt;
    ga_trackingId                       &amp;gt;&amp;gt;          {YOUR_CLIENT}/services/analytics-service/analytics_property/tracking_id&lt;br /&gt;
    firebase_database_url               &amp;gt;&amp;gt;          project_info/firebase_url&lt;br /&gt;
    google_api_key                      &amp;gt;&amp;gt;          {YOUR_CLIENT}/api_key/current_key&lt;br /&gt;
    google_crash_reporting_api_key      &amp;gt;&amp;gt;          {YOUR_CLIENT}/api_key/current_key&lt;br /&gt;
    project_id                          &amp;gt;&amp;gt;          project_info/project_id&lt;br /&gt;
    google_storage_bucket               &amp;gt;&amp;gt;          project_info/storage_bucket&lt;br /&gt;
&lt;br /&gt;
===Обработка в редактора===&lt;br /&gt;
&lt;br /&gt;
todo&lt;br /&gt;
&lt;br /&gt;
===Отправка сообщений===&lt;br /&gt;
todo&lt;br /&gt;
&lt;br /&gt;
===Особенности использования===&lt;br /&gt;
todo&lt;br /&gt;
&lt;br /&gt;
== Пример ==&lt;br /&gt;
&lt;br /&gt;
[http://fs5.absolutist.com/files/wikisample/notification.rar Download]&lt;br /&gt;
&lt;br /&gt;
[[Category:Options]]&lt;/div&gt;</summary>
		<author><name>Bmor</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.appsalutecreator.com/index.php?title=Notification&amp;diff=9724</id>
		<title>Notification</title>
		<link rel="alternate" type="text/html" href="https://wiki.appsalutecreator.com/index.php?title=Notification&amp;diff=9724"/>
		<updated>2018-11-12T15:43:49Z</updated>

		<summary type="html">&lt;p&gt;Bmor: /* Отправка сообщений */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC right}}&lt;br /&gt;
[[Object|Объект]] '''Notification''' предназначен для показа push уведомлений на IOS устройствах.&lt;br /&gt;
&lt;br /&gt;
==Параметры объекта==&lt;br /&gt;
&lt;br /&gt;
===Основные параметры===&lt;br /&gt;
&lt;br /&gt;
*'''имя события''' (''name'') - Имя события. Если у двух событий одинаковые имена - сохранится первое. Не обязательный параметр. Перетягивается из редактора текстов. Поле должно быть в состоянии редактирования.&lt;br /&gt;
&lt;br /&gt;
*'''сообщение''' (''message'') - Основной текст события. Перетягивается из редактора текстов. Поле должно быть в состоянии редактирования.&lt;br /&gt;
&lt;br /&gt;
*'''большая картинка''' (''big_picture'') - Имя файла с большой картинкой. Должен лежать не в ресурсах, а рядом с app.icf. Поле затирается после регистрации уведомления&lt;br /&gt;
&lt;br /&gt;
*'''год''' (''year'') - Год, когда сработает оповещение. Минимальное значение - 1971 .&lt;br /&gt;
&lt;br /&gt;
*'''месяц''' (''month'') - Месяц, когда сработает оповещение. Минимальное значение - 0, максимальное - 11 .&lt;br /&gt;
&lt;br /&gt;
*'''день''' (''day'') - День, когда сработает оповещение. Минимальное значение - 1, максимальное - 31 .&lt;br /&gt;
&lt;br /&gt;
*'''час''' (''hour'') - Час, когда сработает оповещение. Минимальное значение - 0, максимальное - 23 .&lt;br /&gt;
&lt;br /&gt;
*'''минута''' (''min'') - Минута, когда сработает оповещение. Минимальное значение - 0, максимальное - 59 .&lt;br /&gt;
&lt;br /&gt;
*'''секунда''' (''sec'') - Секунда, когда сработает оповещение. Минимальное значение - 0, максимальное - 59 .&lt;br /&gt;
&lt;br /&gt;
*'''задержка''' (''delay'') - Задержка от текущего времени до оповещения. Если задана не -1 - то используется вместо даты.&lt;br /&gt;
&lt;br /&gt;
*'''перед первым init экстеншена''' (''delayInit'') - Задержка в секундах до первой инициализации расширения&lt;br /&gt;
&lt;br /&gt;
*'''цвет заголовка''' (''colorTitle'') - Цвет заголовка - только для кастомных нотификейшенов&lt;br /&gt;
&lt;br /&gt;
*'''цвет текста''' (''colorText'') - Цвет текста - только для кастомных нотификейшенов&lt;br /&gt;
&lt;br /&gt;
===Firebase Cloud Messaging===&lt;br /&gt;
&lt;br /&gt;
*'''Обработчик бандлов''' (''fcmBundleHandler'') - Объект, в который будут записаны параметры бандла и который будет переведен в состояние eventID бандла при fcm_check_bundle (см. дальше)&lt;br /&gt;
&lt;br /&gt;
==Состояния объекта==&lt;br /&gt;
&lt;br /&gt;
*'''set''' - устанавливает нотификацию в очередь&lt;br /&gt;
&lt;br /&gt;
*'''clear''' - очищает очередь нотификации&lt;br /&gt;
&lt;br /&gt;
*'''erase''' - очищает очередь нотификации от уведомления с указаннным ID темы и ID сообщения&lt;br /&gt;
&lt;br /&gt;
*'''fcm_subscribe_topic''' - Firebase only! Подписаться на топик из поля topic&lt;br /&gt;
&lt;br /&gt;
*'''fcm_unsubscribe_topic''' - Firebase only! Отписаться от топика из поля topic&lt;br /&gt;
&lt;br /&gt;
*'''fcm_check_bundle''' - Firebase only! Проверить наличие fcm бандлов&lt;br /&gt;
&lt;br /&gt;
Установка уведомлений (объект notification):&lt;br /&gt;
 Состояние&lt;br /&gt;
 &amp;quot;set&amp;quot;, - оба способа&lt;br /&gt;
 &amp;quot;set_native&amp;quot;, - устройство&lt;br /&gt;
 &amp;quot;set_parse&amp;quot;, - парс&lt;br /&gt;
 или через параметр&lt;br /&gt;
 &amp;lt;property name=&amp;quot;отсылать в&amp;quot; type=&amp;quot;enum&amp;quot; value=&amp;quot;0&amp;quot; id=&amp;quot;send&amp;quot; hint=&amp;quot;отсылать в&amp;quot; regexp=&amp;quot;обе службы=0,только локальный пуш=1,только парс=2&amp;quot; /&amp;gt; (тогда состояние set)&lt;br /&gt;
&lt;br /&gt;
==Пример применения==&lt;br /&gt;
&lt;br /&gt;
Пусть через 5 минут после нажатия на кнопку у пользователя появиится уведомление с текстом &amp;quot;message of notification&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Для этого разместим на сцене объект notification и установим ему следующие параметры:&lt;br /&gt;
&lt;br /&gt;
* задержка - 300&lt;br /&gt;
&lt;br /&gt;
[[Файл:Notification 01.jpg |upright=0.5]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
В текстовую базу занесём новые записи с названием события нотификации и текстом нотификации.&lt;br /&gt;
&lt;br /&gt;
Далее добавим на сцену кнопку, которая будет передавать параметры объекту &amp;quot;notification&amp;quot; и переводить объект &amp;quot;notification&amp;quot; в состояние &amp;quot;set&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Notification 02.jpg |upright=0.5 ]]&lt;br /&gt;
&lt;br /&gt;
Теперь при нажатии на кнопку в очередь будет поставлено извещение, которое покажет система через 5 минут.&lt;br /&gt;
На устройстве это выглядит так:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;tleft&amp;quot; style=&amp;quot;clear:none&amp;quot;&amp;gt; [[Файл:IMG 0043.PNG | мини |200пкс ]] &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;tleft&amp;quot; style=&amp;quot;clear:none&amp;quot;&amp;gt; [[Файл:IMG 0046.PNG | мини |200пкс ]] &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Информация в логах==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
I/GNotification GNotification::aviable() GNotification::aviable() - уведомления разрешены&lt;br /&gt;
I/GNotification GNotification::state() state(ST_CLEAR) clear all notifications - очистилась&lt;br /&gt;
вся очередь уведомлений&lt;br /&gt;
I/GNotification GNotification::state() state(ST_SET) - уведомление поставлено в очередь&lt;br /&gt;
I/GNotification GNotification::EraseNotification() EraseNotification erase notification title: - уведомление&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;
У объекта [[options]] можно задать параметр '''notifScrID''' (значение параметра - id экрана). Если параметр задан, то при открытии приложения из уведомления откроется выбранный экран.&lt;br /&gt;
&lt;br /&gt;
==Firebase Cloud Messaging==&lt;br /&gt;
&lt;br /&gt;
Firebase Cloud Messaging позволяет рассылать кастомные уведомления с определенным набором доп. параметров, которые в последствии будут переданы во вьювер и сохранены в опциях (fcm бандлы).&lt;br /&gt;
&lt;br /&gt;
===Подготовка проекта===&lt;br /&gt;
&lt;br /&gt;
# Создайте и настройте проект в Firebase консоли ([https://console.firebase.google.com/project/ Link])&lt;br /&gt;
# Скачайте из консоли файл конфигураций проекта google-services.json&lt;br /&gt;
# Перенесите параметры из ''google-services.json'' в ''project\conf\pom\sdl\google_params.json'' в поле ''extra_strings''&lt;br /&gt;
    google_app_id                       &amp;gt;&amp;gt;          {YOUR_CLIENT}/client_info/mobilesdk_app_id&lt;br /&gt;
    gcm_defaultSenderId                 &amp;gt;&amp;gt;          project_info/project_number&lt;br /&gt;
    default_web_client_id               &amp;gt;&amp;gt;          {YOUR_CLIENT}/oauth_client/client_id (client_type == 3)&lt;br /&gt;
    ga_trackingId                       &amp;gt;&amp;gt;          {YOUR_CLIENT}/services/analytics-service/analytics_property/tracking_id&lt;br /&gt;
    firebase_database_url               &amp;gt;&amp;gt;          project_info/firebase_url&lt;br /&gt;
    google_api_key                      &amp;gt;&amp;gt;          {YOUR_CLIENT}/api_key/current_key&lt;br /&gt;
    google_crash_reporting_api_key      &amp;gt;&amp;gt;          {YOUR_CLIENT}/api_key/current_key&lt;br /&gt;
    project_id                          &amp;gt;&amp;gt;          project_info/project_id&lt;br /&gt;
    google_storage_bucket               &amp;gt;&amp;gt;          project_info/storage_bucket&lt;br /&gt;
&lt;br /&gt;
===Обработка в редактора===&lt;br /&gt;
&lt;br /&gt;
todo&lt;br /&gt;
&lt;br /&gt;
===Отправка сообщений===&lt;br /&gt;
todo&lt;br /&gt;
&lt;br /&gt;
==Особенности использования==&lt;br /&gt;
todo&lt;br /&gt;
&lt;br /&gt;
== Пример ==&lt;br /&gt;
&lt;br /&gt;
[http://fs5.absolutist.com/files/wikisample/notification.rar Download]&lt;br /&gt;
&lt;br /&gt;
[[Category:Options]]&lt;/div&gt;</summary>
		<author><name>Bmor</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.appsalutecreator.com/index.php?title=Notification&amp;diff=9723</id>
		<title>Notification</title>
		<link rel="alternate" type="text/html" href="https://wiki.appsalutecreator.com/index.php?title=Notification&amp;diff=9723"/>
		<updated>2018-11-12T15:43:44Z</updated>

		<summary type="html">&lt;p&gt;Bmor: /* Обработка в редактора */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC right}}&lt;br /&gt;
[[Object|Объект]] '''Notification''' предназначен для показа push уведомлений на IOS устройствах.&lt;br /&gt;
&lt;br /&gt;
==Параметры объекта==&lt;br /&gt;
&lt;br /&gt;
===Основные параметры===&lt;br /&gt;
&lt;br /&gt;
*'''имя события''' (''name'') - Имя события. Если у двух событий одинаковые имена - сохранится первое. Не обязательный параметр. Перетягивается из редактора текстов. Поле должно быть в состоянии редактирования.&lt;br /&gt;
&lt;br /&gt;
*'''сообщение''' (''message'') - Основной текст события. Перетягивается из редактора текстов. Поле должно быть в состоянии редактирования.&lt;br /&gt;
&lt;br /&gt;
*'''большая картинка''' (''big_picture'') - Имя файла с большой картинкой. Должен лежать не в ресурсах, а рядом с app.icf. Поле затирается после регистрации уведомления&lt;br /&gt;
&lt;br /&gt;
*'''год''' (''year'') - Год, когда сработает оповещение. Минимальное значение - 1971 .&lt;br /&gt;
&lt;br /&gt;
*'''месяц''' (''month'') - Месяц, когда сработает оповещение. Минимальное значение - 0, максимальное - 11 .&lt;br /&gt;
&lt;br /&gt;
*'''день''' (''day'') - День, когда сработает оповещение. Минимальное значение - 1, максимальное - 31 .&lt;br /&gt;
&lt;br /&gt;
*'''час''' (''hour'') - Час, когда сработает оповещение. Минимальное значение - 0, максимальное - 23 .&lt;br /&gt;
&lt;br /&gt;
*'''минута''' (''min'') - Минута, когда сработает оповещение. Минимальное значение - 0, максимальное - 59 .&lt;br /&gt;
&lt;br /&gt;
*'''секунда''' (''sec'') - Секунда, когда сработает оповещение. Минимальное значение - 0, максимальное - 59 .&lt;br /&gt;
&lt;br /&gt;
*'''задержка''' (''delay'') - Задержка от текущего времени до оповещения. Если задана не -1 - то используется вместо даты.&lt;br /&gt;
&lt;br /&gt;
*'''перед первым init экстеншена''' (''delayInit'') - Задержка в секундах до первой инициализации расширения&lt;br /&gt;
&lt;br /&gt;
*'''цвет заголовка''' (''colorTitle'') - Цвет заголовка - только для кастомных нотификейшенов&lt;br /&gt;
&lt;br /&gt;
*'''цвет текста''' (''colorText'') - Цвет текста - только для кастомных нотификейшенов&lt;br /&gt;
&lt;br /&gt;
===Firebase Cloud Messaging===&lt;br /&gt;
&lt;br /&gt;
*'''Обработчик бандлов''' (''fcmBundleHandler'') - Объект, в который будут записаны параметры бандла и который будет переведен в состояние eventID бандла при fcm_check_bundle (см. дальше)&lt;br /&gt;
&lt;br /&gt;
==Состояния объекта==&lt;br /&gt;
&lt;br /&gt;
*'''set''' - устанавливает нотификацию в очередь&lt;br /&gt;
&lt;br /&gt;
*'''clear''' - очищает очередь нотификации&lt;br /&gt;
&lt;br /&gt;
*'''erase''' - очищает очередь нотификации от уведомления с указаннным ID темы и ID сообщения&lt;br /&gt;
&lt;br /&gt;
*'''fcm_subscribe_topic''' - Firebase only! Подписаться на топик из поля topic&lt;br /&gt;
&lt;br /&gt;
*'''fcm_unsubscribe_topic''' - Firebase only! Отписаться от топика из поля topic&lt;br /&gt;
&lt;br /&gt;
*'''fcm_check_bundle''' - Firebase only! Проверить наличие fcm бандлов&lt;br /&gt;
&lt;br /&gt;
Установка уведомлений (объект notification):&lt;br /&gt;
 Состояние&lt;br /&gt;
 &amp;quot;set&amp;quot;, - оба способа&lt;br /&gt;
 &amp;quot;set_native&amp;quot;, - устройство&lt;br /&gt;
 &amp;quot;set_parse&amp;quot;, - парс&lt;br /&gt;
 или через параметр&lt;br /&gt;
 &amp;lt;property name=&amp;quot;отсылать в&amp;quot; type=&amp;quot;enum&amp;quot; value=&amp;quot;0&amp;quot; id=&amp;quot;send&amp;quot; hint=&amp;quot;отсылать в&amp;quot; regexp=&amp;quot;обе службы=0,только локальный пуш=1,только парс=2&amp;quot; /&amp;gt; (тогда состояние set)&lt;br /&gt;
&lt;br /&gt;
==Пример применения==&lt;br /&gt;
&lt;br /&gt;
Пусть через 5 минут после нажатия на кнопку у пользователя появиится уведомление с текстом &amp;quot;message of notification&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Для этого разместим на сцене объект notification и установим ему следующие параметры:&lt;br /&gt;
&lt;br /&gt;
* задержка - 300&lt;br /&gt;
&lt;br /&gt;
[[Файл:Notification 01.jpg |upright=0.5]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
В текстовую базу занесём новые записи с названием события нотификации и текстом нотификации.&lt;br /&gt;
&lt;br /&gt;
Далее добавим на сцену кнопку, которая будет передавать параметры объекту &amp;quot;notification&amp;quot; и переводить объект &amp;quot;notification&amp;quot; в состояние &amp;quot;set&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Notification 02.jpg |upright=0.5 ]]&lt;br /&gt;
&lt;br /&gt;
Теперь при нажатии на кнопку в очередь будет поставлено извещение, которое покажет система через 5 минут.&lt;br /&gt;
На устройстве это выглядит так:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;tleft&amp;quot; style=&amp;quot;clear:none&amp;quot;&amp;gt; [[Файл:IMG 0043.PNG | мини |200пкс ]] &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;tleft&amp;quot; style=&amp;quot;clear:none&amp;quot;&amp;gt; [[Файл:IMG 0046.PNG | мини |200пкс ]] &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Информация в логах==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
I/GNotification GNotification::aviable() GNotification::aviable() - уведомления разрешены&lt;br /&gt;
I/GNotification GNotification::state() state(ST_CLEAR) clear all notifications - очистилась&lt;br /&gt;
вся очередь уведомлений&lt;br /&gt;
I/GNotification GNotification::state() state(ST_SET) - уведомление поставлено в очередь&lt;br /&gt;
I/GNotification GNotification::EraseNotification() EraseNotification erase notification title: - уведомление&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;
У объекта [[options]] можно задать параметр '''notifScrID''' (значение параметра - id экрана). Если параметр задан, то при открытии приложения из уведомления откроется выбранный экран.&lt;br /&gt;
&lt;br /&gt;
==Firebase Cloud Messaging==&lt;br /&gt;
&lt;br /&gt;
Firebase Cloud Messaging позволяет рассылать кастомные уведомления с определенным набором доп. параметров, которые в последствии будут переданы во вьювер и сохранены в опциях (fcm бандлы).&lt;br /&gt;
&lt;br /&gt;
===Подготовка проекта===&lt;br /&gt;
&lt;br /&gt;
# Создайте и настройте проект в Firebase консоли ([https://console.firebase.google.com/project/ Link])&lt;br /&gt;
# Скачайте из консоли файл конфигураций проекта google-services.json&lt;br /&gt;
# Перенесите параметры из ''google-services.json'' в ''project\conf\pom\sdl\google_params.json'' в поле ''extra_strings''&lt;br /&gt;
    google_app_id                       &amp;gt;&amp;gt;          {YOUR_CLIENT}/client_info/mobilesdk_app_id&lt;br /&gt;
    gcm_defaultSenderId                 &amp;gt;&amp;gt;          project_info/project_number&lt;br /&gt;
    default_web_client_id               &amp;gt;&amp;gt;          {YOUR_CLIENT}/oauth_client/client_id (client_type == 3)&lt;br /&gt;
    ga_trackingId                       &amp;gt;&amp;gt;          {YOUR_CLIENT}/services/analytics-service/analytics_property/tracking_id&lt;br /&gt;
    firebase_database_url               &amp;gt;&amp;gt;          project_info/firebase_url&lt;br /&gt;
    google_api_key                      &amp;gt;&amp;gt;          {YOUR_CLIENT}/api_key/current_key&lt;br /&gt;
    google_crash_reporting_api_key      &amp;gt;&amp;gt;          {YOUR_CLIENT}/api_key/current_key&lt;br /&gt;
    project_id                          &amp;gt;&amp;gt;          project_info/project_id&lt;br /&gt;
    google_storage_bucket               &amp;gt;&amp;gt;          project_info/storage_bucket&lt;br /&gt;
&lt;br /&gt;
===Обработка в редактора===&lt;br /&gt;
&lt;br /&gt;
todo&lt;br /&gt;
&lt;br /&gt;
==Отправка сообщений==&lt;br /&gt;
todo&lt;br /&gt;
&lt;br /&gt;
==Особенности использования==&lt;br /&gt;
todo&lt;br /&gt;
&lt;br /&gt;
== Пример ==&lt;br /&gt;
&lt;br /&gt;
[http://fs5.absolutist.com/files/wikisample/notification.rar Download]&lt;br /&gt;
&lt;br /&gt;
[[Category:Options]]&lt;/div&gt;</summary>
		<author><name>Bmor</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.appsalutecreator.com/index.php?title=Notification&amp;diff=9722</id>
		<title>Notification</title>
		<link rel="alternate" type="text/html" href="https://wiki.appsalutecreator.com/index.php?title=Notification&amp;diff=9722"/>
		<updated>2018-11-12T15:43:39Z</updated>

		<summary type="html">&lt;p&gt;Bmor: /* Подготовка проекта */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC right}}&lt;br /&gt;
[[Object|Объект]] '''Notification''' предназначен для показа push уведомлений на IOS устройствах.&lt;br /&gt;
&lt;br /&gt;
==Параметры объекта==&lt;br /&gt;
&lt;br /&gt;
===Основные параметры===&lt;br /&gt;
&lt;br /&gt;
*'''имя события''' (''name'') - Имя события. Если у двух событий одинаковые имена - сохранится первое. Не обязательный параметр. Перетягивается из редактора текстов. Поле должно быть в состоянии редактирования.&lt;br /&gt;
&lt;br /&gt;
*'''сообщение''' (''message'') - Основной текст события. Перетягивается из редактора текстов. Поле должно быть в состоянии редактирования.&lt;br /&gt;
&lt;br /&gt;
*'''большая картинка''' (''big_picture'') - Имя файла с большой картинкой. Должен лежать не в ресурсах, а рядом с app.icf. Поле затирается после регистрации уведомления&lt;br /&gt;
&lt;br /&gt;
*'''год''' (''year'') - Год, когда сработает оповещение. Минимальное значение - 1971 .&lt;br /&gt;
&lt;br /&gt;
*'''месяц''' (''month'') - Месяц, когда сработает оповещение. Минимальное значение - 0, максимальное - 11 .&lt;br /&gt;
&lt;br /&gt;
*'''день''' (''day'') - День, когда сработает оповещение. Минимальное значение - 1, максимальное - 31 .&lt;br /&gt;
&lt;br /&gt;
*'''час''' (''hour'') - Час, когда сработает оповещение. Минимальное значение - 0, максимальное - 23 .&lt;br /&gt;
&lt;br /&gt;
*'''минута''' (''min'') - Минута, когда сработает оповещение. Минимальное значение - 0, максимальное - 59 .&lt;br /&gt;
&lt;br /&gt;
*'''секунда''' (''sec'') - Секунда, когда сработает оповещение. Минимальное значение - 0, максимальное - 59 .&lt;br /&gt;
&lt;br /&gt;
*'''задержка''' (''delay'') - Задержка от текущего времени до оповещения. Если задана не -1 - то используется вместо даты.&lt;br /&gt;
&lt;br /&gt;
*'''перед первым init экстеншена''' (''delayInit'') - Задержка в секундах до первой инициализации расширения&lt;br /&gt;
&lt;br /&gt;
*'''цвет заголовка''' (''colorTitle'') - Цвет заголовка - только для кастомных нотификейшенов&lt;br /&gt;
&lt;br /&gt;
*'''цвет текста''' (''colorText'') - Цвет текста - только для кастомных нотификейшенов&lt;br /&gt;
&lt;br /&gt;
===Firebase Cloud Messaging===&lt;br /&gt;
&lt;br /&gt;
*'''Обработчик бандлов''' (''fcmBundleHandler'') - Объект, в который будут записаны параметры бандла и который будет переведен в состояние eventID бандла при fcm_check_bundle (см. дальше)&lt;br /&gt;
&lt;br /&gt;
==Состояния объекта==&lt;br /&gt;
&lt;br /&gt;
*'''set''' - устанавливает нотификацию в очередь&lt;br /&gt;
&lt;br /&gt;
*'''clear''' - очищает очередь нотификации&lt;br /&gt;
&lt;br /&gt;
*'''erase''' - очищает очередь нотификации от уведомления с указаннным ID темы и ID сообщения&lt;br /&gt;
&lt;br /&gt;
*'''fcm_subscribe_topic''' - Firebase only! Подписаться на топик из поля topic&lt;br /&gt;
&lt;br /&gt;
*'''fcm_unsubscribe_topic''' - Firebase only! Отписаться от топика из поля topic&lt;br /&gt;
&lt;br /&gt;
*'''fcm_check_bundle''' - Firebase only! Проверить наличие fcm бандлов&lt;br /&gt;
&lt;br /&gt;
Установка уведомлений (объект notification):&lt;br /&gt;
 Состояние&lt;br /&gt;
 &amp;quot;set&amp;quot;, - оба способа&lt;br /&gt;
 &amp;quot;set_native&amp;quot;, - устройство&lt;br /&gt;
 &amp;quot;set_parse&amp;quot;, - парс&lt;br /&gt;
 или через параметр&lt;br /&gt;
 &amp;lt;property name=&amp;quot;отсылать в&amp;quot; type=&amp;quot;enum&amp;quot; value=&amp;quot;0&amp;quot; id=&amp;quot;send&amp;quot; hint=&amp;quot;отсылать в&amp;quot; regexp=&amp;quot;обе службы=0,только локальный пуш=1,только парс=2&amp;quot; /&amp;gt; (тогда состояние set)&lt;br /&gt;
&lt;br /&gt;
==Пример применения==&lt;br /&gt;
&lt;br /&gt;
Пусть через 5 минут после нажатия на кнопку у пользователя появиится уведомление с текстом &amp;quot;message of notification&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Для этого разместим на сцене объект notification и установим ему следующие параметры:&lt;br /&gt;
&lt;br /&gt;
* задержка - 300&lt;br /&gt;
&lt;br /&gt;
[[Файл:Notification 01.jpg |upright=0.5]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
В текстовую базу занесём новые записи с названием события нотификации и текстом нотификации.&lt;br /&gt;
&lt;br /&gt;
Далее добавим на сцену кнопку, которая будет передавать параметры объекту &amp;quot;notification&amp;quot; и переводить объект &amp;quot;notification&amp;quot; в состояние &amp;quot;set&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Notification 02.jpg |upright=0.5 ]]&lt;br /&gt;
&lt;br /&gt;
Теперь при нажатии на кнопку в очередь будет поставлено извещение, которое покажет система через 5 минут.&lt;br /&gt;
На устройстве это выглядит так:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;tleft&amp;quot; style=&amp;quot;clear:none&amp;quot;&amp;gt; [[Файл:IMG 0043.PNG | мини |200пкс ]] &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;tleft&amp;quot; style=&amp;quot;clear:none&amp;quot;&amp;gt; [[Файл:IMG 0046.PNG | мини |200пкс ]] &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Информация в логах==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
I/GNotification GNotification::aviable() GNotification::aviable() - уведомления разрешены&lt;br /&gt;
I/GNotification GNotification::state() state(ST_CLEAR) clear all notifications - очистилась&lt;br /&gt;
вся очередь уведомлений&lt;br /&gt;
I/GNotification GNotification::state() state(ST_SET) - уведомление поставлено в очередь&lt;br /&gt;
I/GNotification GNotification::EraseNotification() EraseNotification erase notification title: - уведомление&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;
У объекта [[options]] можно задать параметр '''notifScrID''' (значение параметра - id экрана). Если параметр задан, то при открытии приложения из уведомления откроется выбранный экран.&lt;br /&gt;
&lt;br /&gt;
==Firebase Cloud Messaging==&lt;br /&gt;
&lt;br /&gt;
Firebase Cloud Messaging позволяет рассылать кастомные уведомления с определенным набором доп. параметров, которые в последствии будут переданы во вьювер и сохранены в опциях (fcm бандлы).&lt;br /&gt;
&lt;br /&gt;
===Подготовка проекта===&lt;br /&gt;
&lt;br /&gt;
# Создайте и настройте проект в Firebase консоли ([https://console.firebase.google.com/project/ Link])&lt;br /&gt;
# Скачайте из консоли файл конфигураций проекта google-services.json&lt;br /&gt;
# Перенесите параметры из ''google-services.json'' в ''project\conf\pom\sdl\google_params.json'' в поле ''extra_strings''&lt;br /&gt;
    google_app_id                       &amp;gt;&amp;gt;          {YOUR_CLIENT}/client_info/mobilesdk_app_id&lt;br /&gt;
    gcm_defaultSenderId                 &amp;gt;&amp;gt;          project_info/project_number&lt;br /&gt;
    default_web_client_id               &amp;gt;&amp;gt;          {YOUR_CLIENT}/oauth_client/client_id (client_type == 3)&lt;br /&gt;
    ga_trackingId                       &amp;gt;&amp;gt;          {YOUR_CLIENT}/services/analytics-service/analytics_property/tracking_id&lt;br /&gt;
    firebase_database_url               &amp;gt;&amp;gt;          project_info/firebase_url&lt;br /&gt;
    google_api_key                      &amp;gt;&amp;gt;          {YOUR_CLIENT}/api_key/current_key&lt;br /&gt;
    google_crash_reporting_api_key      &amp;gt;&amp;gt;          {YOUR_CLIENT}/api_key/current_key&lt;br /&gt;
    project_id                          &amp;gt;&amp;gt;          project_info/project_id&lt;br /&gt;
    google_storage_bucket               &amp;gt;&amp;gt;          project_info/storage_bucket&lt;br /&gt;
&lt;br /&gt;
==Обработка в редактора==&lt;br /&gt;
&lt;br /&gt;
todo&lt;br /&gt;
&lt;br /&gt;
==Отправка сообщений==&lt;br /&gt;
todo&lt;br /&gt;
&lt;br /&gt;
==Особенности использования==&lt;br /&gt;
todo&lt;br /&gt;
&lt;br /&gt;
== Пример ==&lt;br /&gt;
&lt;br /&gt;
[http://fs5.absolutist.com/files/wikisample/notification.rar Download]&lt;br /&gt;
&lt;br /&gt;
[[Category:Options]]&lt;/div&gt;</summary>
		<author><name>Bmor</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.appsalutecreator.com/index.php?title=Notification&amp;diff=9721</id>
		<title>Notification</title>
		<link rel="alternate" type="text/html" href="https://wiki.appsalutecreator.com/index.php?title=Notification&amp;diff=9721"/>
		<updated>2018-11-12T15:43:21Z</updated>

		<summary type="html">&lt;p&gt;Bmor: /* Firebase Cloud Messaging */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC right}}&lt;br /&gt;
[[Object|Объект]] '''Notification''' предназначен для показа push уведомлений на IOS устройствах.&lt;br /&gt;
&lt;br /&gt;
==Параметры объекта==&lt;br /&gt;
&lt;br /&gt;
===Основные параметры===&lt;br /&gt;
&lt;br /&gt;
*'''имя события''' (''name'') - Имя события. Если у двух событий одинаковые имена - сохранится первое. Не обязательный параметр. Перетягивается из редактора текстов. Поле должно быть в состоянии редактирования.&lt;br /&gt;
&lt;br /&gt;
*'''сообщение''' (''message'') - Основной текст события. Перетягивается из редактора текстов. Поле должно быть в состоянии редактирования.&lt;br /&gt;
&lt;br /&gt;
*'''большая картинка''' (''big_picture'') - Имя файла с большой картинкой. Должен лежать не в ресурсах, а рядом с app.icf. Поле затирается после регистрации уведомления&lt;br /&gt;
&lt;br /&gt;
*'''год''' (''year'') - Год, когда сработает оповещение. Минимальное значение - 1971 .&lt;br /&gt;
&lt;br /&gt;
*'''месяц''' (''month'') - Месяц, когда сработает оповещение. Минимальное значение - 0, максимальное - 11 .&lt;br /&gt;
&lt;br /&gt;
*'''день''' (''day'') - День, когда сработает оповещение. Минимальное значение - 1, максимальное - 31 .&lt;br /&gt;
&lt;br /&gt;
*'''час''' (''hour'') - Час, когда сработает оповещение. Минимальное значение - 0, максимальное - 23 .&lt;br /&gt;
&lt;br /&gt;
*'''минута''' (''min'') - Минута, когда сработает оповещение. Минимальное значение - 0, максимальное - 59 .&lt;br /&gt;
&lt;br /&gt;
*'''секунда''' (''sec'') - Секунда, когда сработает оповещение. Минимальное значение - 0, максимальное - 59 .&lt;br /&gt;
&lt;br /&gt;
*'''задержка''' (''delay'') - Задержка от текущего времени до оповещения. Если задана не -1 - то используется вместо даты.&lt;br /&gt;
&lt;br /&gt;
*'''перед первым init экстеншена''' (''delayInit'') - Задержка в секундах до первой инициализации расширения&lt;br /&gt;
&lt;br /&gt;
*'''цвет заголовка''' (''colorTitle'') - Цвет заголовка - только для кастомных нотификейшенов&lt;br /&gt;
&lt;br /&gt;
*'''цвет текста''' (''colorText'') - Цвет текста - только для кастомных нотификейшенов&lt;br /&gt;
&lt;br /&gt;
===Firebase Cloud Messaging===&lt;br /&gt;
&lt;br /&gt;
*'''Обработчик бандлов''' (''fcmBundleHandler'') - Объект, в который будут записаны параметры бандла и который будет переведен в состояние eventID бандла при fcm_check_bundle (см. дальше)&lt;br /&gt;
&lt;br /&gt;
==Состояния объекта==&lt;br /&gt;
&lt;br /&gt;
*'''set''' - устанавливает нотификацию в очередь&lt;br /&gt;
&lt;br /&gt;
*'''clear''' - очищает очередь нотификации&lt;br /&gt;
&lt;br /&gt;
*'''erase''' - очищает очередь нотификации от уведомления с указаннным ID темы и ID сообщения&lt;br /&gt;
&lt;br /&gt;
*'''fcm_subscribe_topic''' - Firebase only! Подписаться на топик из поля topic&lt;br /&gt;
&lt;br /&gt;
*'''fcm_unsubscribe_topic''' - Firebase only! Отписаться от топика из поля topic&lt;br /&gt;
&lt;br /&gt;
*'''fcm_check_bundle''' - Firebase only! Проверить наличие fcm бандлов&lt;br /&gt;
&lt;br /&gt;
Установка уведомлений (объект notification):&lt;br /&gt;
 Состояние&lt;br /&gt;
 &amp;quot;set&amp;quot;, - оба способа&lt;br /&gt;
 &amp;quot;set_native&amp;quot;, - устройство&lt;br /&gt;
 &amp;quot;set_parse&amp;quot;, - парс&lt;br /&gt;
 или через параметр&lt;br /&gt;
 &amp;lt;property name=&amp;quot;отсылать в&amp;quot; type=&amp;quot;enum&amp;quot; value=&amp;quot;0&amp;quot; id=&amp;quot;send&amp;quot; hint=&amp;quot;отсылать в&amp;quot; regexp=&amp;quot;обе службы=0,только локальный пуш=1,только парс=2&amp;quot; /&amp;gt; (тогда состояние set)&lt;br /&gt;
&lt;br /&gt;
==Пример применения==&lt;br /&gt;
&lt;br /&gt;
Пусть через 5 минут после нажатия на кнопку у пользователя появиится уведомление с текстом &amp;quot;message of notification&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Для этого разместим на сцене объект notification и установим ему следующие параметры:&lt;br /&gt;
&lt;br /&gt;
* задержка - 300&lt;br /&gt;
&lt;br /&gt;
[[Файл:Notification 01.jpg |upright=0.5]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
В текстовую базу занесём новые записи с названием события нотификации и текстом нотификации.&lt;br /&gt;
&lt;br /&gt;
Далее добавим на сцену кнопку, которая будет передавать параметры объекту &amp;quot;notification&amp;quot; и переводить объект &amp;quot;notification&amp;quot; в состояние &amp;quot;set&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Notification 02.jpg |upright=0.5 ]]&lt;br /&gt;
&lt;br /&gt;
Теперь при нажатии на кнопку в очередь будет поставлено извещение, которое покажет система через 5 минут.&lt;br /&gt;
На устройстве это выглядит так:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;tleft&amp;quot; style=&amp;quot;clear:none&amp;quot;&amp;gt; [[Файл:IMG 0043.PNG | мини |200пкс ]] &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;tleft&amp;quot; style=&amp;quot;clear:none&amp;quot;&amp;gt; [[Файл:IMG 0046.PNG | мини |200пкс ]] &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Информация в логах==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
I/GNotification GNotification::aviable() GNotification::aviable() - уведомления разрешены&lt;br /&gt;
I/GNotification GNotification::state() state(ST_CLEAR) clear all notifications - очистилась&lt;br /&gt;
вся очередь уведомлений&lt;br /&gt;
I/GNotification GNotification::state() state(ST_SET) - уведомление поставлено в очередь&lt;br /&gt;
I/GNotification GNotification::EraseNotification() EraseNotification erase notification title: - уведомление&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;
У объекта [[options]] можно задать параметр '''notifScrID''' (значение параметра - id экрана). Если параметр задан, то при открытии приложения из уведомления откроется выбранный экран.&lt;br /&gt;
&lt;br /&gt;
==Firebase Cloud Messaging==&lt;br /&gt;
&lt;br /&gt;
Firebase Cloud Messaging позволяет рассылать кастомные уведомления с определенным набором доп. параметров, которые в последствии будут переданы во вьювер и сохранены в опциях (fcm бандлы).&lt;br /&gt;
&lt;br /&gt;
==Подготовка проекта==&lt;br /&gt;
&lt;br /&gt;
# Создайте и настройте проект в Firebase консоли ([https://console.firebase.google.com/project/ Link])&lt;br /&gt;
# Скачайте из консоли файл конфигураций проекта google-services.json&lt;br /&gt;
# Перенесите параметры из ''google-services.json'' в ''project\conf\pom\sdl\google_params.json'' в поле ''extra_strings''&lt;br /&gt;
    google_app_id                       &amp;gt;&amp;gt;          {YOUR_CLIENT}/client_info/mobilesdk_app_id&lt;br /&gt;
    gcm_defaultSenderId                 &amp;gt;&amp;gt;          project_info/project_number&lt;br /&gt;
    default_web_client_id               &amp;gt;&amp;gt;          {YOUR_CLIENT}/oauth_client/client_id (client_type == 3)&lt;br /&gt;
    ga_trackingId                       &amp;gt;&amp;gt;          {YOUR_CLIENT}/services/analytics-service/analytics_property/tracking_id&lt;br /&gt;
    firebase_database_url               &amp;gt;&amp;gt;          project_info/firebase_url&lt;br /&gt;
    google_api_key                      &amp;gt;&amp;gt;          {YOUR_CLIENT}/api_key/current_key&lt;br /&gt;
    google_crash_reporting_api_key      &amp;gt;&amp;gt;          {YOUR_CLIENT}/api_key/current_key&lt;br /&gt;
    project_id                          &amp;gt;&amp;gt;          project_info/project_id&lt;br /&gt;
    google_storage_bucket               &amp;gt;&amp;gt;          project_info/storage_bucket&lt;br /&gt;
&lt;br /&gt;
==Обработка в редактора==&lt;br /&gt;
&lt;br /&gt;
todo&lt;br /&gt;
&lt;br /&gt;
==Отправка сообщений==&lt;br /&gt;
todo&lt;br /&gt;
&lt;br /&gt;
==Особенности использования==&lt;br /&gt;
todo&lt;br /&gt;
&lt;br /&gt;
== Пример ==&lt;br /&gt;
&lt;br /&gt;
[http://fs5.absolutist.com/files/wikisample/notification.rar Download]&lt;br /&gt;
&lt;br /&gt;
[[Category:Options]]&lt;/div&gt;</summary>
		<author><name>Bmor</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.appsalutecreator.com/index.php?title=Notification&amp;diff=9720</id>
		<title>Notification</title>
		<link rel="alternate" type="text/html" href="https://wiki.appsalutecreator.com/index.php?title=Notification&amp;diff=9720"/>
		<updated>2018-11-12T15:30:48Z</updated>

		<summary type="html">&lt;p&gt;Bmor: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC right}}&lt;br /&gt;
[[Object|Объект]] '''Notification''' предназначен для показа push уведомлений на IOS устройствах.&lt;br /&gt;
&lt;br /&gt;
==Параметры объекта==&lt;br /&gt;
&lt;br /&gt;
===Основные параметры===&lt;br /&gt;
&lt;br /&gt;
*'''имя события''' (''name'') - Имя события. Если у двух событий одинаковые имена - сохранится первое. Не обязательный параметр. Перетягивается из редактора текстов. Поле должно быть в состоянии редактирования.&lt;br /&gt;
&lt;br /&gt;
*'''сообщение''' (''message'') - Основной текст события. Перетягивается из редактора текстов. Поле должно быть в состоянии редактирования.&lt;br /&gt;
&lt;br /&gt;
*'''большая картинка''' (''big_picture'') - Имя файла с большой картинкой. Должен лежать не в ресурсах, а рядом с app.icf. Поле затирается после регистрации уведомления&lt;br /&gt;
&lt;br /&gt;
*'''год''' (''year'') - Год, когда сработает оповещение. Минимальное значение - 1971 .&lt;br /&gt;
&lt;br /&gt;
*'''месяц''' (''month'') - Месяц, когда сработает оповещение. Минимальное значение - 0, максимальное - 11 .&lt;br /&gt;
&lt;br /&gt;
*'''день''' (''day'') - День, когда сработает оповещение. Минимальное значение - 1, максимальное - 31 .&lt;br /&gt;
&lt;br /&gt;
*'''час''' (''hour'') - Час, когда сработает оповещение. Минимальное значение - 0, максимальное - 23 .&lt;br /&gt;
&lt;br /&gt;
*'''минута''' (''min'') - Минута, когда сработает оповещение. Минимальное значение - 0, максимальное - 59 .&lt;br /&gt;
&lt;br /&gt;
*'''секунда''' (''sec'') - Секунда, когда сработает оповещение. Минимальное значение - 0, максимальное - 59 .&lt;br /&gt;
&lt;br /&gt;
*'''задержка''' (''delay'') - Задержка от текущего времени до оповещения. Если задана не -1 - то используется вместо даты.&lt;br /&gt;
&lt;br /&gt;
*'''перед первым init экстеншена''' (''delayInit'') - Задержка в секундах до первой инициализации расширения&lt;br /&gt;
&lt;br /&gt;
*'''цвет заголовка''' (''colorTitle'') - Цвет заголовка - только для кастомных нотификейшенов&lt;br /&gt;
&lt;br /&gt;
*'''цвет текста''' (''colorText'') - Цвет текста - только для кастомных нотификейшенов&lt;br /&gt;
&lt;br /&gt;
===Firebase Cloud Messaging===&lt;br /&gt;
&lt;br /&gt;
*'''Обработчик бандлов''' (''fcmBundleHandler'') - Объект, в который будут записаны параметры бандла и который будет переведен в состояние eventID бандла при fcm_check_bundle (см. дальше)&lt;br /&gt;
&lt;br /&gt;
==Состояния объекта==&lt;br /&gt;
&lt;br /&gt;
*'''set''' - устанавливает нотификацию в очередь&lt;br /&gt;
&lt;br /&gt;
*'''clear''' - очищает очередь нотификации&lt;br /&gt;
&lt;br /&gt;
*'''erase''' - очищает очередь нотификации от уведомления с указаннным ID темы и ID сообщения&lt;br /&gt;
&lt;br /&gt;
*'''fcm_subscribe_topic''' - Firebase only! Подписаться на топик из поля topic&lt;br /&gt;
&lt;br /&gt;
*'''fcm_unsubscribe_topic''' - Firebase only! Отписаться от топика из поля topic&lt;br /&gt;
&lt;br /&gt;
*'''fcm_check_bundle''' - Firebase only! Проверить наличие fcm бандлов&lt;br /&gt;
&lt;br /&gt;
Установка уведомлений (объект notification):&lt;br /&gt;
 Состояние&lt;br /&gt;
 &amp;quot;set&amp;quot;, - оба способа&lt;br /&gt;
 &amp;quot;set_native&amp;quot;, - устройство&lt;br /&gt;
 &amp;quot;set_parse&amp;quot;, - парс&lt;br /&gt;
 или через параметр&lt;br /&gt;
 &amp;lt;property name=&amp;quot;отсылать в&amp;quot; type=&amp;quot;enum&amp;quot; value=&amp;quot;0&amp;quot; id=&amp;quot;send&amp;quot; hint=&amp;quot;отсылать в&amp;quot; regexp=&amp;quot;обе службы=0,только локальный пуш=1,только парс=2&amp;quot; /&amp;gt; (тогда состояние set)&lt;br /&gt;
&lt;br /&gt;
==Пример применения==&lt;br /&gt;
&lt;br /&gt;
Пусть через 5 минут после нажатия на кнопку у пользователя появиится уведомление с текстом &amp;quot;message of notification&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Для этого разместим на сцене объект notification и установим ему следующие параметры:&lt;br /&gt;
&lt;br /&gt;
* задержка - 300&lt;br /&gt;
&lt;br /&gt;
[[Файл:Notification 01.jpg |upright=0.5]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
В текстовую базу занесём новые записи с названием события нотификации и текстом нотификации.&lt;br /&gt;
&lt;br /&gt;
Далее добавим на сцену кнопку, которая будет передавать параметры объекту &amp;quot;notification&amp;quot; и переводить объект &amp;quot;notification&amp;quot; в состояние &amp;quot;set&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Notification 02.jpg |upright=0.5 ]]&lt;br /&gt;
&lt;br /&gt;
Теперь при нажатии на кнопку в очередь будет поставлено извещение, которое покажет система через 5 минут.&lt;br /&gt;
На устройстве это выглядит так:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;tleft&amp;quot; style=&amp;quot;clear:none&amp;quot;&amp;gt; [[Файл:IMG 0043.PNG | мини |200пкс ]] &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;tleft&amp;quot; style=&amp;quot;clear:none&amp;quot;&amp;gt; [[Файл:IMG 0046.PNG | мини |200пкс ]] &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Информация в логах==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
I/GNotification GNotification::aviable() GNotification::aviable() - уведомления разрешены&lt;br /&gt;
I/GNotification GNotification::state() state(ST_CLEAR) clear all notifications - очистилась&lt;br /&gt;
вся очередь уведомлений&lt;br /&gt;
I/GNotification GNotification::state() state(ST_SET) - уведомление поставлено в очередь&lt;br /&gt;
I/GNotification GNotification::EraseNotification() EraseNotification erase notification title: - уведомление&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;
У объекта [[options]] можно задать параметр '''notifScrID''' (значение параметра - id экрана). Если параметр задан, то при открытии приложения из уведомления откроется выбранный экран.&lt;br /&gt;
&lt;br /&gt;
==Firebase Cloud Messaging==&lt;br /&gt;
todo&lt;br /&gt;
&lt;br /&gt;
== Пример ==&lt;br /&gt;
&lt;br /&gt;
[http://fs5.absolutist.com/files/wikisample/notification.rar Download]&lt;br /&gt;
&lt;br /&gt;
[[Category:Options]]&lt;/div&gt;</summary>
		<author><name>Bmor</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.appsalutecreator.com/index.php?title=Notification&amp;diff=9719</id>
		<title>Notification</title>
		<link rel="alternate" type="text/html" href="https://wiki.appsalutecreator.com/index.php?title=Notification&amp;diff=9719"/>
		<updated>2018-11-12T15:30:11Z</updated>

		<summary type="html">&lt;p&gt;Bmor: /* Состояния объекта */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC right}}&lt;br /&gt;
[[Object|Объект]] '''Notification''' предназначен для показа push уведомлений на IOS устройствах.&lt;br /&gt;
&lt;br /&gt;
==Параметры объекта==&lt;br /&gt;
&lt;br /&gt;
===Основные параметры===&lt;br /&gt;
&lt;br /&gt;
*'''имя события''' (''name'') - Имя события. Если у двух событий одинаковые имена - сохранится первое. Не обязательный параметр. Перетягивается из редактора текстов. Поле должно быть в состоянии редактирования.&lt;br /&gt;
&lt;br /&gt;
*'''сообщение''' (''message'') - Основной текст события. Перетягивается из редактора текстов. Поле должно быть в состоянии редактирования.&lt;br /&gt;
&lt;br /&gt;
*'''большая картинка''' (''big_picture'') - Имя файла с большой картинкой. Должен лежать не в ресурсах, а рядом с app.icf. Поле затирается после регистрации уведомления&lt;br /&gt;
&lt;br /&gt;
*'''год''' (''year'') - Год, когда сработает оповещение. Минимальное значение - 1971 .&lt;br /&gt;
&lt;br /&gt;
*'''месяц''' (''month'') - Месяц, когда сработает оповещение. Минимальное значение - 0, максимальное - 11 .&lt;br /&gt;
&lt;br /&gt;
*'''день''' (''day'') - День, когда сработает оповещение. Минимальное значение - 1, максимальное - 31 .&lt;br /&gt;
&lt;br /&gt;
*'''час''' (''hour'') - Час, когда сработает оповещение. Минимальное значение - 0, максимальное - 23 .&lt;br /&gt;
&lt;br /&gt;
*'''минута''' (''min'') - Минута, когда сработает оповещение. Минимальное значение - 0, максимальное - 59 .&lt;br /&gt;
&lt;br /&gt;
*'''секунда''' (''sec'') - Секунда, когда сработает оповещение. Минимальное значение - 0, максимальное - 59 .&lt;br /&gt;
&lt;br /&gt;
*'''задержка''' (''delay'') - Задержка от текущего времени до оповещения. Если задана не -1 - то используется вместо даты.&lt;br /&gt;
&lt;br /&gt;
*'''перед первым init экстеншена''' (''delayInit'') - Задержка в секундах до первой инициализации расширения&lt;br /&gt;
&lt;br /&gt;
*'''цвет заголовка''' (''colorTitle'') - Цвет заголовка - только для кастомных нотификейшенов&lt;br /&gt;
&lt;br /&gt;
*'''цвет текста''' (''colorText'') - Цвет текста - только для кастомных нотификейшенов&lt;br /&gt;
&lt;br /&gt;
===Firebase Cloud Messaging===&lt;br /&gt;
&lt;br /&gt;
*'''Обработчик бандлов''' (''fcmBundleHandler'') - Объект, в который будут записаны параметры бандла и который будет переведен в состояние eventID бандла при fcm_check_bundle (см. дальше)&lt;br /&gt;
&lt;br /&gt;
==Состояния объекта==&lt;br /&gt;
&lt;br /&gt;
*'''set''' - устанавливает нотификацию в очередь&lt;br /&gt;
&lt;br /&gt;
*'''clear''' - очищает очередь нотификации&lt;br /&gt;
&lt;br /&gt;
*'''erase''' - очищает очередь нотификации от уведомления с указаннным ID темы и ID сообщения&lt;br /&gt;
&lt;br /&gt;
*'''fcm_subscribe_topic''' - Firebase only! Подписаться на топик из поля topic&lt;br /&gt;
&lt;br /&gt;
*'''fcm_unsubscribe_topic''' - Firebase only! Отписаться от топика из поля topic&lt;br /&gt;
&lt;br /&gt;
*'''fcm_check_bundle''' - Firebase only! Проверить наличие fcm бандлов&lt;br /&gt;
&lt;br /&gt;
Установка уведомлений (объект notification):&lt;br /&gt;
 Состояние&lt;br /&gt;
 &amp;quot;set&amp;quot;, - оба способа&lt;br /&gt;
 &amp;quot;set_native&amp;quot;, - устройство&lt;br /&gt;
 &amp;quot;set_parse&amp;quot;, - парс&lt;br /&gt;
 или через параметр&lt;br /&gt;
 &amp;lt;property name=&amp;quot;отсылать в&amp;quot; type=&amp;quot;enum&amp;quot; value=&amp;quot;0&amp;quot; id=&amp;quot;send&amp;quot; hint=&amp;quot;отсылать в&amp;quot; regexp=&amp;quot;обе службы=0,только локальный пуш=1,только парс=2&amp;quot; /&amp;gt; (тогда состояние set)&lt;br /&gt;
&lt;br /&gt;
==Пример применения==&lt;br /&gt;
&lt;br /&gt;
Пусть через 5 минут после нажатия на кнопку у пользователя появиится уведомление с текстом &amp;quot;message of notification&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Для этого разместим на сцене объект notification и установим ему следующие параметры:&lt;br /&gt;
&lt;br /&gt;
* задержка - 300&lt;br /&gt;
&lt;br /&gt;
[[Файл:Notification 01.jpg |upright=0.5]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
В текстовую базу занесём новые записи с названием события нотификации и текстом нотификации.&lt;br /&gt;
&lt;br /&gt;
Далее добавим на сцену кнопку, которая будет передавать параметры объекту &amp;quot;notification&amp;quot; и переводить объект &amp;quot;notification&amp;quot; в состояние &amp;quot;set&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Notification 02.jpg |upright=0.5 ]]&lt;br /&gt;
&lt;br /&gt;
Теперь при нажатии на кнопку в очередь будет поставлено извещение, которое покажет система через 5 минут.&lt;br /&gt;
На устройстве это выглядит так:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;tleft&amp;quot; style=&amp;quot;clear:none&amp;quot;&amp;gt; [[Файл:IMG 0043.PNG | мини |200пкс ]] &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;tleft&amp;quot; style=&amp;quot;clear:none&amp;quot;&amp;gt; [[Файл:IMG 0046.PNG | мини |200пкс ]] &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Информация в логах==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
I/GNotification GNotification::aviable() GNotification::aviable() - уведомления разрешены&lt;br /&gt;
I/GNotification GNotification::state() state(ST_CLEAR) clear all notifications - очистилась&lt;br /&gt;
вся очередь уведомлений&lt;br /&gt;
I/GNotification GNotification::state() state(ST_SET) - уведомление поставлено в очередь&lt;br /&gt;
I/GNotification GNotification::EraseNotification() EraseNotification erase notification title: - уведомление&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;
У объекта [[options]] можно задать параметр '''notifScrID''' (значение параметра - id экрана). Если параметр задан, то при открытии приложения из уведомления откроется выбранный экран.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Пример ==&lt;br /&gt;
&lt;br /&gt;
[http://fs5.absolutist.com/files/wikisample/notification.rar Download]&lt;br /&gt;
&lt;br /&gt;
[[Category:Options]]&lt;/div&gt;</summary>
		<author><name>Bmor</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.appsalutecreator.com/index.php?title=Notification&amp;diff=9718</id>
		<title>Notification</title>
		<link rel="alternate" type="text/html" href="https://wiki.appsalutecreator.com/index.php?title=Notification&amp;diff=9718"/>
		<updated>2018-11-12T15:27:08Z</updated>

		<summary type="html">&lt;p&gt;Bmor: /* Параметры объекта */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC right}}&lt;br /&gt;
[[Object|Объект]] '''Notification''' предназначен для показа push уведомлений на IOS устройствах.&lt;br /&gt;
&lt;br /&gt;
==Параметры объекта==&lt;br /&gt;
&lt;br /&gt;
===Основные параметры===&lt;br /&gt;
&lt;br /&gt;
*'''имя события''' (''name'') - Имя события. Если у двух событий одинаковые имена - сохранится первое. Не обязательный параметр. Перетягивается из редактора текстов. Поле должно быть в состоянии редактирования.&lt;br /&gt;
&lt;br /&gt;
*'''сообщение''' (''message'') - Основной текст события. Перетягивается из редактора текстов. Поле должно быть в состоянии редактирования.&lt;br /&gt;
&lt;br /&gt;
*'''большая картинка''' (''big_picture'') - Имя файла с большой картинкой. Должен лежать не в ресурсах, а рядом с app.icf. Поле затирается после регистрации уведомления&lt;br /&gt;
&lt;br /&gt;
*'''год''' (''year'') - Год, когда сработает оповещение. Минимальное значение - 1971 .&lt;br /&gt;
&lt;br /&gt;
*'''месяц''' (''month'') - Месяц, когда сработает оповещение. Минимальное значение - 0, максимальное - 11 .&lt;br /&gt;
&lt;br /&gt;
*'''день''' (''day'') - День, когда сработает оповещение. Минимальное значение - 1, максимальное - 31 .&lt;br /&gt;
&lt;br /&gt;
*'''час''' (''hour'') - Час, когда сработает оповещение. Минимальное значение - 0, максимальное - 23 .&lt;br /&gt;
&lt;br /&gt;
*'''минута''' (''min'') - Минута, когда сработает оповещение. Минимальное значение - 0, максимальное - 59 .&lt;br /&gt;
&lt;br /&gt;
*'''секунда''' (''sec'') - Секунда, когда сработает оповещение. Минимальное значение - 0, максимальное - 59 .&lt;br /&gt;
&lt;br /&gt;
*'''задержка''' (''delay'') - Задержка от текущего времени до оповещения. Если задана не -1 - то используется вместо даты.&lt;br /&gt;
&lt;br /&gt;
*'''перед первым init экстеншена''' (''delayInit'') - Задержка в секундах до первой инициализации расширения&lt;br /&gt;
&lt;br /&gt;
*'''цвет заголовка''' (''colorTitle'') - Цвет заголовка - только для кастомных нотификейшенов&lt;br /&gt;
&lt;br /&gt;
*'''цвет текста''' (''colorText'') - Цвет текста - только для кастомных нотификейшенов&lt;br /&gt;
&lt;br /&gt;
===Firebase Cloud Messaging===&lt;br /&gt;
&lt;br /&gt;
*'''Обработчик бандлов''' (''fcmBundleHandler'') - Объект, в который будут записаны параметры бандла и который будет переведен в состояние eventID бандла при fcm_check_bundle (см. дальше)&lt;br /&gt;
&lt;br /&gt;
==Состояния объекта==&lt;br /&gt;
&lt;br /&gt;
*'''set''' - устанавливает нотификацию в очередь&lt;br /&gt;
&lt;br /&gt;
*'''clear''' - очищает очередь нотификации&lt;br /&gt;
&lt;br /&gt;
*'''erase''' - очищает очередь нотификации от уведомления с указаннным ID темы и ID сообщения&lt;br /&gt;
&lt;br /&gt;
Установка уведомлений (объект notification):&lt;br /&gt;
 Состояние&lt;br /&gt;
 &amp;quot;set&amp;quot;, - оба способа&lt;br /&gt;
 &amp;quot;set_native&amp;quot;, - устройство&lt;br /&gt;
 &amp;quot;set_parse&amp;quot;, - парс&lt;br /&gt;
 или через параметр&lt;br /&gt;
 &amp;lt;property name=&amp;quot;отсылать в&amp;quot; type=&amp;quot;enum&amp;quot; value=&amp;quot;0&amp;quot; id=&amp;quot;send&amp;quot; hint=&amp;quot;отсылать в&amp;quot; regexp=&amp;quot;обе службы=0,только локальный пуш=1,только парс=2&amp;quot; /&amp;gt; (тогда состояние set)&lt;br /&gt;
&lt;br /&gt;
==Пример применения==&lt;br /&gt;
&lt;br /&gt;
Пусть через 5 минут после нажатия на кнопку у пользователя появиится уведомление с текстом &amp;quot;message of notification&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Для этого разместим на сцене объект notification и установим ему следующие параметры:&lt;br /&gt;
&lt;br /&gt;
* задержка - 300&lt;br /&gt;
&lt;br /&gt;
[[Файл:Notification 01.jpg |upright=0.5]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
В текстовую базу занесём новые записи с названием события нотификации и текстом нотификации.&lt;br /&gt;
&lt;br /&gt;
Далее добавим на сцену кнопку, которая будет передавать параметры объекту &amp;quot;notification&amp;quot; и переводить объект &amp;quot;notification&amp;quot; в состояние &amp;quot;set&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Notification 02.jpg |upright=0.5 ]]&lt;br /&gt;
&lt;br /&gt;
Теперь при нажатии на кнопку в очередь будет поставлено извещение, которое покажет система через 5 минут.&lt;br /&gt;
На устройстве это выглядит так:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;tleft&amp;quot; style=&amp;quot;clear:none&amp;quot;&amp;gt; [[Файл:IMG 0043.PNG | мини |200пкс ]] &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;tleft&amp;quot; style=&amp;quot;clear:none&amp;quot;&amp;gt; [[Файл:IMG 0046.PNG | мини |200пкс ]] &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Информация в логах==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
I/GNotification GNotification::aviable() GNotification::aviable() - уведомления разрешены&lt;br /&gt;
I/GNotification GNotification::state() state(ST_CLEAR) clear all notifications - очистилась&lt;br /&gt;
вся очередь уведомлений&lt;br /&gt;
I/GNotification GNotification::state() state(ST_SET) - уведомление поставлено в очередь&lt;br /&gt;
I/GNotification GNotification::EraseNotification() EraseNotification erase notification title: - уведомление&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;
У объекта [[options]] можно задать параметр '''notifScrID''' (значение параметра - id экрана). Если параметр задан, то при открытии приложения из уведомления откроется выбранный экран.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Пример ==&lt;br /&gt;
&lt;br /&gt;
[http://fs5.absolutist.com/files/wikisample/notification.rar Download]&lt;br /&gt;
&lt;br /&gt;
[[Category:Options]]&lt;/div&gt;</summary>
		<author><name>Bmor</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.appsalutecreator.com/index.php?title=HiddenList&amp;diff=9589</id>
		<title>HiddenList</title>
		<link rel="alternate" type="text/html" href="https://wiki.appsalutecreator.com/index.php?title=HiddenList&amp;diff=9589"/>
		<updated>2018-06-20T13:00:54Z</updated>

		<summary type="html">&lt;p&gt;Bmor: /* Добавляемые параметры */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC right}}&lt;br /&gt;
HiddenList является менеджером поисковых [[Object|объектов]]. На сегодня HiddenList не просто управляет объектами на сцене - он отвечает за все штрафы и поощрения. В связке с такими объектами как [[HiddenHint]] + [[Effect]] HiddenList дает возможность реализовать систему подсказок, а также такие графические эффекты как: &amp;quot;ночь&amp;quot;, &amp;quot;трансформация цвета&amp;quot; и т.д. с одним набором графики.&lt;br /&gt;
&lt;br /&gt;
==Общие параметры==&lt;br /&gt;
(см. описание [[Object|Object]])&lt;br /&gt;
&lt;br /&gt;
[[Файл:HOList_1.jpg|right]]&lt;br /&gt;
&lt;br /&gt;
*'''имя''' ('' nm '') - Имя объекта HiddenList в дереве проекта. Может быт произвольным.&lt;br /&gt;
*'''id-объекта''' - Уникальный номер объекта HiddenList, который можно увидеть в строке &amp;quot;имя&amp;quot; либо при наведении курсора на неё.&lt;br /&gt;
*'''синхронизация''' ('' sync '') - Применяется для синхронизации между лейаутами. Если указан параметр &amp;quot;нет&amp;quot;, то объект будет активен только на текущем лейауте. По умолчанию указан параметр &amp;quot;да&amp;quot;. &lt;br /&gt;
*'''сохранение параметров''' ('' sv '') -  Настройка этого параметра актуальна, если приложение в дальнейшем будет сворачиваться в системную панель («трей»). Выбирается значение этого параметра из выпадающего списка. Возможны следующие варианты: &amp;quot;нет&amp;quot;, &amp;quot;только объект&amp;quot;, &amp;quot;объект с подобъектами&amp;quot;, &amp;quot;только подобъекты&amp;quot;. При выходе из трэя будут восстановлены ранее измененные/установленные (при переходе с одного экрана на другой)параметры объектов или подобъектов в зависимости от выбранного варианта для этого параметра. По умолчанию указан параметр &amp;quot;нет&amp;quot;. Следует помнить, что если выбирается для объекта некоторой сцены значения этого параметра отличное от &amp;quot;нет&amp;quot;, то должно и предусматриваться соответствующее значение этого параметра и для этой сцены, и для экрана, содержащего эту сцену.&lt;br /&gt;
*'''z''' ('' z '') - Параметр порядка рисования объекта. Сначала рисуются объекты с большим z, затем, поверх них - с меньшим.&lt;br /&gt;
*'''память''' ('' memo ''):&lt;br /&gt;
:'''1''' - при повторном открытии экрана объект не обновляет свои параметры (помнит текущие параметры, оставшиеся от предыдущего посещения экрана);&lt;br /&gt;
:'''0''' - обновит свои параметры, при повторном открытии экрана.&lt;br /&gt;
*'''группа''' ('' gr '') - Группа, в которую входит текущий объект.&lt;br /&gt;
&lt;br /&gt;
У листа также есть группы стандартных параметров такие как '''положение''', '''размер''', '''модификаторы'''. Но, по сути, они не важны. Главное, чтобы лист не перекрывал на сцене другие объекты. Поэтому ему лучше находиться за пределами сцены. &lt;br /&gt;
&lt;br /&gt;
==Основные параметры==&lt;br /&gt;
&lt;br /&gt;
*'''Картинка''' ('' res '') - Графический ресурс для отображения объекта. Перетаскивается мышкой из редактора ресурсов (поле должно находится в состоянии редактирования). Обычно не используется, а применяется для отображения table;&amp;lt;br&amp;gt;&lt;br /&gt;
*'''Таблица''' ('' table '') - Объект типа [[table]], который является визуальным отображением списка. '''Должна быть обязательно''';&amp;lt;br&amp;gt;&lt;br /&gt;
*'''Подсказка''' ('' hint '') — объект типа [[HiddenHint]], который является менеджером хинтов;&amp;lt;br&amp;gt;&lt;br /&gt;
*'''highlighter''' ('' hl '') — объект типа [[HiddenHighLighter|hiddenhighlighter]], который подсвечивает не найденные объекты.;&amp;lt;br&amp;gt;&lt;br /&gt;
*'''Счетчик''' ('' hdncnt '') — объект типа [[Counter]], который отображает количество найденных объектов.&amp;lt;br&amp;gt;&lt;br /&gt;
В самом счетчике в параметрах нужно указать val = 0, поскольку изначально нет найденных объектов;&lt;br /&gt;
*'''Таймер''' ('' timer '') — объект типа [[Timer]], который отображает время игры.&lt;br /&gt;
При инициализации листа он передаст состояние &amp;quot;start&amp;quot; таймеру.&lt;br /&gt;
*'''отладка''' ('' trace '') — Отображать в окне состояний текущий объект.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Группа - внешний вид'''&lt;br /&gt;
&lt;br /&gt;
*'''вычеркнуть''' ('' cross ''):&lt;br /&gt;
:'''1''' - найденный объект вычеркивается, оставаясь в списке(таблице);&lt;br /&gt;
:'''число''' - найденный объект удаляется из списка;&lt;br /&gt;
*'''листать''' ('' scroll '')&lt;br /&gt;
:'''1''' - список можно листать (скролировать);&lt;br /&gt;
:'''число''' - ищутся только те объекты, которые видны в списке (таблице);&lt;br /&gt;
*'''тип списка''' ('' kind '') - Тип поиска объектов:&lt;br /&gt;
:'''1''' - слово;&lt;br /&gt;
:'''2''' - предложение;&lt;br /&gt;
:'''3''' - удаляемая пиктограмма;&lt;br /&gt;
:'''4''' - пиктограмма;&lt;br /&gt;
:'''5''' - поиск различий.&lt;br /&gt;
*'''поиск пар''' ('' pair '') - Если 1, то идет поиска пар объектов с одинаковым типом, иначе обычный режим&lt;br /&gt;
:'''пары''' - поиск пар;&lt;br /&gt;
:'''одиночные''' - поиск по одному объекту.&lt;br /&gt;
&lt;br /&gt;
'''Группа - звуки'''&lt;br /&gt;
&lt;br /&gt;
*'''обычный''' ('' sndNrm '') - Звук при нахождении обычного [[HiddenObject]].&lt;br /&gt;
*'''коллекционный''' ('' sndCol '') - Звук при нахождении коллекционного [[HiddenObject]](объекту должна быть установлена коллекция).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Группа - параметры поиска'''&lt;br /&gt;
&lt;br /&gt;
*'''объектов''' ('' num '') - Максимальное количество доступных для поиска объектов в одной игровой сессии. (ВАЖНО!!! Таблице нужно установить общее количество ячеек равное(или больше) количеству доступных для поиска объектов).&lt;br /&gt;
*'''активных объектов''' ('' numact '') - Максимальное количество активных объектов в одной игровой сессии.&lt;br /&gt;
*'''видимых объектов''' ('' numvis'') - Максимальное количество видимых объектов в одной игровой сессии.&lt;br /&gt;
*'''одного типа''' ('' max ''):&lt;br /&gt;
:'''число''' - Максимальное количество объектов одного типа - поле тип в [[hiddenObject]] или хидден объекты с одинаковыми текстовыми ID могут считаться объектами одного типа;&lt;br /&gt;
:'''-1''' - игнорируется.&lt;br /&gt;
*'''прятать''' ('' hide '') - Делать невидимыми объекты, не участвующие в поиске.&lt;br /&gt;
*'''оставлять''' ('' stay '') - Оставлять найденный объект на месте (вызывая только флаеры) при удачном клике.&lt;br /&gt;
*'''актёр-иконка''' ('' actorIco '') - если &amp;quot;да&amp;quot;, то во время полёта найденного хидден-объекта вместо него летит иконка которая помечена как &amp;quot;main picture&amp;quot; и указана в текстовом id хидден-объекта.&amp;lt;br&amp;gt;&lt;br /&gt;
*'''актер''' ('' actor '') - машина состояний, которая управляет процессом полета к таблице найденных [[HiddenObject]] .&lt;br /&gt;
*'''z актера''' ('' actorZ '') - z актера. Будет применено только если не равен 0.&lt;br /&gt;
*'''актер стартует из таблицы''' ('' actorTable '') - если настройка включена, то актер стартует не из позиции хиддена, а из ячейки таблицы .&lt;br /&gt;
*'''целевой объект''' (''trg'') - Если задан, [[HiddenObject]] после нахождения летит не в ячейку таблицы, а к нему.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Группа - скорость'''&lt;br /&gt;
&lt;br /&gt;
Отвечают за скорость перемещения найденного объекта.&lt;br /&gt;
*'''полета''' ('' vf '') - Скорость полета в пикселях в секунду.&lt;br /&gt;
*'''вращения''' ('' vr '') - Скорость вращения в градусах в секунду.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Группа - равномерное распределение'''&lt;br /&gt;
&lt;br /&gt;
*'''включить''' ('' undist '') - Равномерно распределять объекты по площади сцены.&lt;br /&gt;
*'''дополнительные сортировки''' ('' altern_algo '') - Использовать альтернативный алгоритм равномерного распределения.&lt;br /&gt;
*'''максимальное перекрытие''' ('' max_overlapping '') - Максимальная допустимая площадь перекрытия в пикселях.&lt;br /&gt;
*'''количество итераций''' ('' fix_overlapping_iter_num '') - Максимальное количество итераций фикса перекрытия объектов.&lt;br /&gt;
*'''удалять перекрытия''' ('' del_after_fix '') - Удалять оставшиеся перекрытия после последней итерации фикса.&lt;br /&gt;
&lt;br /&gt;
Рекомендации по использованию:&lt;br /&gt;
&lt;br /&gt;
*Если включать &amp;quot;Удалять перекрытия&amp;quot;, то нужно для счетчика кол-ва оставшихся хидденов считывать значение из &amp;quot;num&amp;quot;.&lt;br /&gt;
*Оптимальное значение максимальной площади - 1024 пикселей, т.е. допускаем перекрытие в 32 на 32 пикселя, что совсем не влияет на визуальное перекрытие объектов.&lt;br /&gt;
*Количество итераций можем ставить 20-50. Если перекрытий не останется раньше, то фикс перекрытий остановится, если выполнится все количество - отобразится количество перекрытий в логах. Большое количество итераций фикса негативно сказывается на скорости загрузки сцены.&lt;br /&gt;
&lt;br /&gt;
Логи:&lt;br /&gt;
&lt;br /&gt;
*&amp;quot;Deleting a hidden object with textID: %i&amp;quot; - удаление объекта с текстовым ID&lt;br /&gt;
*&amp;quot;Overlapping detected! Area: %f px&amp;quot; - обнаружения перекрытия в столько-то пикселей&lt;br /&gt;
*&amp;quot;fixOverlapping() Iterations num: %i / %i; Overlaps num: %i&amp;quot; - итерации, итоговое количество перекрытий&lt;br /&gt;
&lt;br /&gt;
==Дополнительные параметры==&lt;br /&gt;
&lt;br /&gt;
*'''скалирование объектов''' ('' scale_object '') - При нахождении во время полета объект будет скалироватся: &lt;br /&gt;
:'''0''' - отключено;&lt;br /&gt;
:'''1''' - включено.&lt;br /&gt;
*'''пропадание объектов''' ('' alpha_object '') - При нахождении во время полета объект будет менять альфу:&lt;br /&gt;
:'''0''' - отключено;&lt;br /&gt;
:'''1''' - включено.&lt;br /&gt;
*'''реагировать на отпускание''' ('' touch_up '') - Объекты связанные с этим хидденлистом будут реагировать на отпускание, а не на нажатие:&lt;br /&gt;
:'''0''' - отключено;&lt;br /&gt;
:'''1''' - включено (То есть реагировать на четкий клик, если кликнули и сместили область клика объект не реагирует!).&lt;br /&gt;
*'''реагировать на finger tap''' ('' finger_tap '') - Объекты, связанные с этим хидденлистом, будут реагировать на отпускание после ожидания даблтача.&lt;br /&gt;
*'''задержка срабатывания''' ('' touch_delay '') - только для реакции на нажатие. Время между нажатием и реакцией списка объектов.&lt;br /&gt;
*'''объединять одинаковые тексты''' ('' same_txt '') - Объекты с одинаковым текстом будут жить в одной ячейке таблицы с добавлением множителя xN.&lt;br /&gt;
:'''0''' - отключено;&lt;br /&gt;
:'''1''' - включено.&lt;br /&gt;
*'''множитель для иконок''' ('' ico_res '') - Графический ресурс(анимация) для отображения множителя у иконок для типа списка 4(поиск по иконкам) и включенного объединения одинаковых текстов. Первый фрейм - х2, второй - х3 и т.д.&lt;br /&gt;
*'''исключать одинаковые тексты''' ('' unTxtID '') - исключает или не исключает из поиска объекты с одинаковыми txtID, используется совместно с '''одного типа'''.&lt;br /&gt;
*'''вероятность пассивного предпочитаемого объекта''' ('' prefProb '') - вероятность выпадения пассивного объекта, если у объекта стоит параметр &amp;quot;предпочитаемый&amp;quot; используется при исключении  объектов с одинаковыми текстовыми ID.&lt;br /&gt;
*'''вероятность активного предпочитаемого объекта''' ('' prefProbAct '') - вероятность выпадения активного объекта, если у объекта стоит параметр &amp;quot;предпочитаемый&amp;quot; используется при исключении  объектов с одинаковыми текстовыми ID.&lt;br /&gt;
*'''реагировать на невидимые''' ('' canInvis '') - реагировать или нет на объекты, которые в момент игры не видны в таблице. (Кликаются только те [[hiddenObject]] которые отображены в таблице, остальные нет!).&lt;br /&gt;
*'''прятать актеров при старте''' ('' hideact '') - Устанавливать актерам видимость false при старте (по умолчанию - да)(То есть всем актерам которые находятся на сцене при запуске принудительно установиться vis = 0).&lt;br /&gt;
*'''аномалия''' ('' anom '') - для всех аномалий кроме текстовой [[HiddenObject]] и игровой фон должны быть подобъектами [[Effect]]):&lt;br /&gt;
:'''0''' - нет;&lt;br /&gt;
:'''1''' - текстовая;&lt;br /&gt;
:'''2''' - ночь; В машине которая выставляет эффект ночь, должны передавать сцене с объектом аномалия ( obj=&amp;quot;scene&amp;quot;; par=&amp;quot;drag&amp;quot;; val=&amp;quot;0&amp;quot; ) и ( obj=&amp;quot;scene&amp;quot;; st=&amp;quot;update&amp;quot;);&lt;br /&gt;
:'''3''' - трансформация цвета;&lt;br /&gt;
:'''4''' - дым.&lt;br /&gt;
При применении аномалии &amp;quot;блитц&amp;quot; через объект [[Economics]] набор параметров: anom=&amp;quot;0&amp;quot;, is_blitz=&amp;quot;1&amp;quot;.&lt;br /&gt;
*'''флурри''' ('' flurry '') - Нужно ли отправлять статистику флурри &amp;quot;regexp=&amp;quot;:&lt;br /&gt;
:'''0''' - нет;&lt;br /&gt;
:'''1''' - да.&lt;br /&gt;
*'''вероятность инверсии''' ('' invProb '') - Вероятность того, что сцена будет перевернута по x;&lt;br /&gt;
*'''набор''' ('' kit '') - Набор, из которого берутся объекты.&lt;br /&gt;
*'''поведение дифференсов''' (''difbeh'') - Поведение найденных объектов в режиме поиск отличий.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Группа - появление новых объектов'''&lt;br /&gt;
&lt;br /&gt;
*'''время''' ('' acttm '') - Время появления объекта (мс);&lt;br /&gt;
*'''начальный скейл''' ('' actsc '') - Начальный скейл;&lt;br /&gt;
*'''начальная альфа''' ('' actal '') - Начальная альфа.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Группа - сессии'''&lt;br /&gt;
&lt;br /&gt;
*'''сессионность''' ('' ses ''):&lt;br /&gt;
:'''0''' -  нет;&lt;br /&gt;
:'''1''' -  да.&lt;br /&gt;
*'''ограничение сессий''' ('' sesLim '') - Максимальное количество сессий, в которые можно играть.&lt;br /&gt;
*'''набор объектов''' ('' sesSet '') - Набор объектов при заходе в хидден после последней сессии:&lt;br /&gt;
:'''0''' - случайный;&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;
*'''Цвет обязательных''' ('' c_forced '') — цвет текста для обязательных объектов, указывается код цвета, если строку не заполнять цвет не используется.&lt;br /&gt;
*'''Цвет найденных''' ('' c_found '') — цвет текста для найденных объектов, указывается код цвета, если строку не заполнять цвет не используется.&lt;br /&gt;
*'''Время перехода''' ('' c_time '') - Время изменения цвета.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Группа - время'''&lt;br /&gt;
&lt;br /&gt;
*'''игры''' ('' tmGm '') - Общее время игры. Если оно истекает, идет переход на экран [время вышло] (см.ниже):&lt;br /&gt;
:'''-1''' - игнорируется;&lt;br /&gt;
:'''число''' - время игры.&lt;br /&gt;
*'''прерывать''' ('' tmInt ''):&lt;br /&gt;
:'''1''' - по окончанию времени игра будет прервана;&lt;br /&gt;
:'''0''' - по окончанию времени игра продолжится, но переход все равно будет на неудачную ветку.&lt;br /&gt;
*'''паузы''' ('' tmWt '') - Время перед закрытием окна после разбора (для осмысления результата);&lt;br /&gt;
*'''полета актера''' ('' tmActor '') - Время работы актера, после которого обрабатываются ячейки таблицы;&lt;br /&gt;
*'''перед исчезновением''' ('' tmWtHide '') - Время, в течение которого объект остается видимым после обработки.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Группа - ошибки'''&lt;br /&gt;
&lt;br /&gt;
*'''flyer при ошибке''' ('' fl '') - обычно объект типа flyer (летуны которых надо показать в точке клика, если этот клик ошибочный). Можно в принципе любой объект который обладает состоянием &amp;quot;beg&amp;quot;. Ошибочный клик - все клики мимо [[hiddenObject]].&lt;br /&gt;
*'''вычет времени при ошибке''' ('' tmPen '') - Сколько отнять миллисекунд за ошибочный клик.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Группа - переход'''&lt;br /&gt;
&lt;br /&gt;
*'''при разборе''' ('' scrOk '') - Экран на который надо перейти, если все объекты найдены.&lt;br /&gt;
*'''время вышло''' ('' scrOv '') - Экран на который надо перейти если время вышло, а не все объекты найдены.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Группа - система очков'''&lt;br /&gt;
&lt;br /&gt;
*'''Счетчик''' ('' score_counter '') — счетчик, отображающий набранные очки.&lt;br /&gt;
*'''счетчик (test)''' ('' score_counter_test '') — счетчик, отображающий набранные очки.&lt;br /&gt;
*'''ID пака''' ('' pack_id '') — строковый идентификатор пака(для записи набранных очков в [[options]] должен быть заполнен); используется для вытаскивания суммарных очков в счетчики и дальнейшего их отображения.&lt;br /&gt;
*'''ID игры''' ('' game_id '') — строковый идентификатор игры (сцены).&lt;br /&gt;
'''Обязательно должен иметь префикс ID пака. Например, если pack_id = &amp;quot;pack1&amp;quot;, то game_id = &amp;quot;pack1.game1&amp;quot;'''.&lt;br /&gt;
*'''мультипликатор очков''' ('' scoreM '') — Мультипликатор очков за объект, если все собрано за отведенное время.&lt;br /&gt;
*'''Очки''' ('' score '') — количество очков, которые даются за каждый найденный [[hiddenObject]].&lt;br /&gt;
*'''Бонус за скорость''' ('' bonusS '') — бонус за быстро найденный [[hiddenObject]].&lt;br /&gt;
*'''Бонусный интервал''' ('' bonusT '') — время, за которое нужно найти [[hiddenObject]] для получения бонуса.&lt;br /&gt;
*'''бонус за время''' ('' bonusTime '') - бонус за оставшееся время игры = коэффициент который введем * оставшееся время таймера.&lt;br /&gt;
*'''Бонусный мультипликатор''' ('' grow ''):&lt;br /&gt;
:'''1''' - умножать очки за второй быстро найденный предмет на 2, за третий на 3, и т. д.&lt;br /&gt;
:'''0''' - не умножать.&lt;br /&gt;
*'''Количество кликов для штрафа''' ('' wrngC '') — количество неверных кликов, после которых запустится блокатор (см. ниже).&lt;br /&gt;
*'''Интервал для штрафа''' ('' wrngT '') — время, за которое нужно совершить неверные клики.&lt;br /&gt;
*'''Штраф (очки)''' ('' delS '') — Сколько отнимаем очков за ошибочный клик.&lt;br /&gt;
*'''Штраф (время)''' ('' delT '') — Сколько отнимаем времени за ошибочный клик.&lt;br /&gt;
*'''блокатор''' ('' blockImg '') - Объект, блокирующий сцену при серии ошибочных кликов. (Обычно маска растянутая на весь экран. '''ДОЛЖНА иметь состояние &amp;quot;beg&amp;quot;''').&lt;br /&gt;
*'''время блокировки''' ('' blockTime '') - Время блокировки при серии ошибочных кликов по истечении переводит &amp;quot;блокатор&amp;quot; в состояние '''end'''.&lt;br /&gt;
*'''порог touch move''' ('' mvSens '') - Порог, начиная с которого движение пальца воспринимается как мув и сбрасываются неправильные клики.&lt;br /&gt;
*'''touch move как штраф''' ('' tchMvPen '') - Считать ли touch move за ложное попадание:&lt;br /&gt;
:'''0''' - нет;&lt;br /&gt;
:'''1''' - да.&lt;br /&gt;
*'''клик на найденный как штраф''' ('' clkFndPen '') - Считать ли клик на найденный объект за ложное попадание(актуально если объекты остаются на сцене).&lt;br /&gt;
*'''аниматор очков''' ('' scoreAnim '') - машина, которая анимирует полученные очки, должна иметь состояние '''anim'''.&lt;br /&gt;
*'''коэффициент комбо''' ('' cmbCoef '') - коэффициент для расчёта комбо очков по формуле s(n) = k * n * (n + 1).&lt;br /&gt;
*'''счётчик очков за объект''' ('' objScCnt '') - счётчик который показывает очки за последний полученный объект (учитывая бонусы).&lt;br /&gt;
*'''счётчик комбо-очков''' ('' cmbScCnt '') - счётчик очков полученных за комбо-серию.&lt;br /&gt;
*'''счётчик комбо-серий''' ('' cmbRwCnt '') - счётчик который показывает комбо-серию (комбо из 2-х, 3-х и т.д. найденных объектов).&lt;br /&gt;
*'''комбо2 прогресс''' ('' cmb2Pr '') - комбо2 прогресс;&lt;br /&gt;
*'''комбо2 время''' ('' cmb2Tm '') - комбо2 время;&lt;br /&gt;
*'''комбо2 кол-во''' ('' cmb2Num '') - комбо2 кол-во.&lt;br /&gt;
*'''очки 3.0''' (''score30'') - Использовать систему очков, придуманную Степановым в августе 2015.&lt;br /&gt;
*'''очки 3.0 коэф. комбо''' (''score30lc'') - в конце комбо даем за него очков n * s * l * (n-1) - где n число предметов в комбо, s - очки за один предмет, l - этот коэффициент&lt;br /&gt;
*'''очки 3.0 коэф. аккуратности''' (''score30la'') - в конце игры начисляем очки за точность по формуле s * la / (1 + Nmiss / N)&lt;br /&gt;
*'''очки 3.0 коэф. времени 1 (l)''' (''score30lt'') - в конце игры начисляем очки за время по формуле s * lt / (1 + T / (tt * N))&lt;br /&gt;
*'''очки 3.0 коэф. времени 2 (t)''' (''score30tt'') - в конце игры начисляем очки за время по формуле s * lt / (1 + T / (tt * N))&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Группа - звезды'''&lt;br /&gt;
&lt;br /&gt;
*'''combo num''' ('' comboNum '') - Количество быстро найденных объектов, нужное для получения звезды Combo.&lt;br /&gt;
*'''combo time''' ('' comboInt '') - Интервал между кликами, считающимися быстрыми для Combo.&lt;br /&gt;
*'''accuracy''' ('' accuracy '') - Точность кликов для получения звезды Accuracy (1 = 100%, все клики должны быть только удачные).&lt;br /&gt;
*'''лимит ложных кликов''' ('' starWrAcc '') - Лимит ложных кликов.&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;
:'''горячий стул''' - hotsit, игра двух живых игроков на одном девайсе, передача хода по очереди;&lt;br /&gt;
:'''мультиплеер''' - игра через сервер с живым оппонентом;&lt;br /&gt;
*'''файл уровня''' - xml файл с настройками сложности бота ([[HiddenList#Настройка сложности бота|пример]]);&lt;br /&gt;
*'''номер уровня''' - номер уровня в файле (начиная с 0);&lt;br /&gt;
*'''номер уровня max''' - если задан больше предыдущего номера - выбирается рандомное значение;&lt;br /&gt;
*'''multiplayer''' - объект мультиплеера;&lt;br /&gt;
*'''кнопка хинта''' - кнопка хинта для 2го игрока \ бота;&lt;br /&gt;
*'''проверять интернет''' - проверять интернет при игре с ботом (так же, как при игре с живым игроком);&lt;br /&gt;
*'''первый ход (вероятность)''' - вероятность первого хода игрока при игре с ботом (в процентах);&lt;br /&gt;
*'''t min abs ms''' - самая минимальная задержка между ходами бота;&lt;br /&gt;
*'''t1 min ms''' - минимальное время для быстрого нахождения предмета ботом;&lt;br /&gt;
*'''t1 max ms''' - максимальное время для быстрого нахождения предмета ботом;&lt;br /&gt;
*'''t1 prob %''' - вероятность быстрого нахождения предмета ботом;&lt;br /&gt;
*'''t2 min ms''' - минимальное время для нахождения предмета ботом;&lt;br /&gt;
*'''t2 max ms''' - максимальное время для нахождения предмета ботом;&lt;br /&gt;
*'''t coef delta''' - коэффициент сложности (кажется от -1 до 1, могу ошибаться);&lt;br /&gt;
*'''t wrong min ms''' - минимальное время между ложными кликами (мимо объекта) бота;&lt;br /&gt;
*'''t wrong max ms''' - максимальное время между ложными кликами бота;&lt;br /&gt;
*'''bot hint chance (percent)''' - шанс бота использовать хинт (в процентах);&lt;br /&gt;
*'''bot hint num''' - максимальное кол-во использования хинтов ботом на игру;&lt;br /&gt;
*'''доп. поле x''' - координаты доп. поля по Х;&lt;br /&gt;
*'''доп. поле y''' - координаты доп. поля по Y;&lt;br /&gt;
*'''доп. поле sx''' - масштаб доп. поля;&lt;br /&gt;
*'''доп. поле sy''' - масштаб доп. поля;&lt;br /&gt;
*'''указатель хода''' - указатель хода бота\оппонента. Должен иметь состояние ''beg'' и находитсья в сцене с хидденами;&lt;br /&gt;
*'''родитель''' - родитель, в который поместим клонированную сцену (доп. поле);&lt;br /&gt;
*'''счетчик очков бота''' - счетчик, выводящий очки;&lt;br /&gt;
*'''счетчик без бонусов бота''' - счетчик, выводящий очки без бонусов за время и точность;&lt;br /&gt;
*'''комбо2 прогресс бота''' - комбо2 прогресс;&lt;br /&gt;
*'''аниматор очков бота''' - машина, которая при нахождении хиддена анимирует полученные очки;&lt;br /&gt;
*'''счетчик очков за объект бот''' - счетчик, выводящий очки за объект;&lt;br /&gt;
*'''счетчик комбо-серий (макс) бот''' - счетчик, выводящий макс. количество комбо-серий;&lt;br /&gt;
*'''счетчик комбо-серий (тек) бот''' - счетчик, выводящий текущее количество комбо-серий;&lt;br /&gt;
*'''flyer при ошибке''' - объект типа ''flyer'' который надо показать в точке клика, если этот клик ошибочный;&lt;br /&gt;
*'''таймер хода бота''' - таймер хода бота;&lt;br /&gt;
*'''таймер хода игрока''' - таймер хода игрока;&lt;br /&gt;
*'''длительность хода ms''' - длительность хода игрока \ бота. Если задан 0 - игроки ходят одновременно;&lt;br /&gt;
*'''длительность паузы между ходами ms''' - длительность паузы при смене хода игрока\бота.&lt;br /&gt;
&lt;br /&gt;
=== Настройка сложности бота ===&lt;br /&gt;
&lt;br /&gt;
Файл уровней для хидден-бота должен иметь такую структуру:&lt;br /&gt;
   &amp;lt;bots&amp;gt;&lt;br /&gt;
     &amp;lt;obj id=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
       &amp;lt;bot weight=&amp;quot;3&amp;quot; t1min=&amp;quot;1000&amp;quot; t1max=&amp;quot;2000&amp;quot; t1percent=&amp;quot;15&amp;quot; t2min=&amp;quot;3000&amp;quot; t2max=&amp;quot;21000&amp;quot; twrongmax=&amp;quot;10000&amp;quot; /&amp;gt;&lt;br /&gt;
       &amp;lt;bot weight=&amp;quot;1&amp;quot; t1min=&amp;quot;1000&amp;quot; t1max=&amp;quot;2000&amp;quot; t1percent=&amp;quot;15&amp;quot; t2min=&amp;quot;3000&amp;quot; t2max=&amp;quot;5000&amp;quot; twrongmax=&amp;quot;10000&amp;quot; /&amp;gt;&lt;br /&gt;
     &amp;lt;/obj&amp;gt;&lt;br /&gt;
     &amp;lt;obj id=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
       &amp;lt;bot weight=&amp;quot;1&amp;quot; t1min=&amp;quot;1000&amp;quot; t1max=&amp;quot;2000&amp;quot; t1percent=&amp;quot;10&amp;quot; t2min=&amp;quot;10000&amp;quot; t2max=&amp;quot;25000&amp;quot; twrongmax=&amp;quot;10000&amp;quot; /&amp;gt;&lt;br /&gt;
       &amp;lt;bot weight=&amp;quot;1&amp;quot; t1min=&amp;quot;1000&amp;quot; t1max=&amp;quot;2000&amp;quot; t1percent=&amp;quot;15&amp;quot; t2min=&amp;quot;3000&amp;quot; t2max=&amp;quot;7000&amp;quot; twrongmax=&amp;quot;10000&amp;quot; /&amp;gt;&lt;br /&gt;
     &amp;lt;/obj&amp;gt;&lt;br /&gt;
     &amp;lt;obj id=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
       &amp;lt;bot weight=&amp;quot;1&amp;quot; t1min=&amp;quot;1000&amp;quot; t1max=&amp;quot;2000&amp;quot; t1percent=&amp;quot;10&amp;quot; t2min=&amp;quot;7000&amp;quot; t2max=&amp;quot;21000&amp;quot; twrongmax=&amp;quot;10000&amp;quot; /&amp;gt;&lt;br /&gt;
       &amp;lt;bot weight=&amp;quot;2&amp;quot; t1min=&amp;quot;1000&amp;quot; t1max=&amp;quot;2000&amp;quot; t1percent=&amp;quot;15&amp;quot; t2min=&amp;quot;3000&amp;quot; t2max=&amp;quot;5000&amp;quot; twrongmax=&amp;quot;10000&amp;quot; /&amp;gt;&lt;br /&gt;
     &amp;lt;/obj&amp;gt;&lt;br /&gt;
   &amp;lt;/bots&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*bots - основной таг&lt;br /&gt;
*obj &amp;gt; id - номер уровня&lt;br /&gt;
*bot - содержит те же параметры, что и настройки бота в хидден листе&lt;br /&gt;
&lt;br /&gt;
==Режим &amp;quot;блиц&amp;quot; с бесконечными объектами==&lt;br /&gt;
&lt;br /&gt;
'''Правила аномалии &amp;quot;блиц&amp;quot;''':&lt;br /&gt;
&lt;br /&gt;
*Блиц заканчивается победой, если игрок нашел хотя бы один предмет за отведенное время игры блиц.&lt;br /&gt;
*Если время вышло, но не было найдено ни одного предмета, то засчитывается поражение.&lt;br /&gt;
*В аномалии блиц количество возможных предметов ограничивается максимальным количеством уникальных хидден-предметов на сцене (считываем из хидден-листа, параметр num). А количество видимых предметов ограничивается количеством предметов, заданных на уровне мастерства локации. При постепенном разборе предметов добавляются новые пока не будет разобрано максимальное количество предметов на хидден сцене, либо, пока не закончится время, но одновременно видно предметов не больше, чем заданных на конкретном уровне мастерства локации.&lt;br /&gt;
&lt;br /&gt;
Для включения такого режима блиц используем поле в настройках хидден-листа:&lt;br /&gt;
*'''блиц с бесконечными объектами''' ('' endlessBlitz '') - При блице ставим максимальное количество объектов и засчитываем победу, если найден хоть один. (да - использовать режим, нет - не использовать).&lt;br /&gt;
&lt;br /&gt;
Если в этом поле настройка &amp;quot;нет&amp;quot;, то режим блиц работает по-старому: объектов столько, сколько указано в уровне мастерства.&lt;br /&gt;
&lt;br /&gt;
Прочитать, находится ли хидден в режиме блиц можно из поля &amp;quot;is_blitz&amp;quot; хидден листа (возможные значения - 0 или 1). Заполняется экономикой в момент старта локации.&lt;br /&gt;
&lt;br /&gt;
Для отображения в счетчике максимального количества уникальных хидден-предметов на сцене (считываем из хидден-листа, параметр num) вычитывать измененный num можно ТОЛЬКО ПОСЛЕ прихода start hiddenlist, т.е. не в ините.&lt;br /&gt;
&lt;br /&gt;
В экономике указываем блиц, как отдельную аномалию.&lt;br /&gt;
&lt;br /&gt;
==Состояния==&lt;br /&gt;
&lt;br /&gt;
Состояния которые есть у листа. Мы можем передавать их с помощью различных объектов:&lt;br /&gt;
*'''invert''' - горизонтально отображает изображение;&lt;br /&gt;
*'''run''' - переводит хидден в состояние активности, если до этого был на паузе;&lt;br /&gt;
*'''pause''' -переводит хидден в состояние паузы, объекты не кликаются!&lt;br /&gt;
*'''swap_hiddens''' -меняет отображаемые в таблице поисковые объекты на случайные другие.&lt;br /&gt;
*'''get_visible_ho''' - вернуть id активного HO объекта (объект пишет в себя два параметра - '''randomHO_id''' и '''randomHO_vis''' (id объекта и виден ли он сейчас юзеру)); Приоритет выбора HO объекта: с начала видимые юзеру, если таких нет - выводим невидимый на текущий момент HO (до предмета нужно фокусировать сцену).&lt;br /&gt;
&lt;br /&gt;
==Примечания==&lt;br /&gt;
&lt;br /&gt;
*HiddenList должен располагаться в дереве проекта ниже всех своих поисковых объектов.&lt;br /&gt;
&lt;br /&gt;
*Единственный '''обязательный объект''' о котором должен знать лист это [[Table]] для отображения списка поиска, даже если таблица не будет использоваться быть все равно должна!&lt;br /&gt;
&lt;br /&gt;
*После завершения хидден-игры (по разбору или по времени)при переходе на другой экран HiddenList записывает данные в опции в два места: первое - это то, которое указано у настройках (ID пака,  ID уровня, тип списка), для каждой локации свое; а второе - это last_game. &amp;lt;br&amp;gt;&lt;br /&gt;
Например, &amp;lt;br&amp;gt;&lt;br /&gt;
'''last_game.time_spent''' (либо же '''pck_N.lvl_N.kind_N.time_spent''') - время последней игры, &amp;lt;br&amp;gt; &lt;br /&gt;
'''last_game.clicks''' (либо же '''pck_N.lvl_N.kind_N.clicks''') - количество найденных объектов и т.д. &amp;lt;br&amp;gt;&lt;br /&gt;
Все их можно увидеть в опциях. last_game был придуман для того, чтобы было удобно задавать счетчики в окне результатов. Также эти данные могут быть сохранены в опциях, если задать листу состояние '''wait'''.&lt;br /&gt;
&lt;br /&gt;
*Для проверки кликабельности хидденобъектов можно воспользоваться следующими настройками в app.icf:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[GHiddenList]&lt;br /&gt;
HitTest=0&lt;br /&gt;
HitTestDx=1 - шаг по х&lt;br /&gt;
HitTestDy=1 - шаг по y&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;
[[Файл:+.png]] '''появляется новый объект: изменить состояние объекта''' ('' actst ''):&lt;br /&gt;
:'''объект''' ('' obj '') - Объект, состояние которого нужно изменить;&lt;br /&gt;
:'''состояние''' ('' st '') - Новое состояние объекта.&lt;br /&gt;
&lt;br /&gt;
[[Файл:HOList_3.jpg|right]]&lt;br /&gt;
&lt;br /&gt;
[[Файл:+.png]] '''разбор: если был экран''' ('' wscrOk '') - При нахождении всех объектов, переходим на определенный экран, если некоторый экран был уже хотя бы раз посещен:&lt;br /&gt;
:'''был экран''' ('' was '') - Экран, который мы проверяем на то, был ли он уже открыт хотя бы один раз;&lt;br /&gt;
:'''перейти на''' ('' scr '') - Переходим на этот экран, если экран из предыдущего поля уже открывался.&lt;br /&gt;
&lt;br /&gt;
[[Файл:+.png]] '''разбор: изменить состояние объекта''' ('' nstOk '') - При нахождении всех объектов, перевести объект в новое состояние:&lt;br /&gt;
:'''объект''' ('' obj '') - Перевести объект в состояние из следующего поля;&lt;br /&gt;
:'''состояние''' ('' st '') - Новое состояние для объекта из предыдущего поля.&lt;br /&gt;
&lt;br /&gt;
[[Файл:+.png]] '''разбор: изменить параметр объекта''' ('' chgOk '') - При нахождении всех объектов, изменить параметр объекта:&lt;br /&gt;
:'''объект''' ('' obj '') - этот объект меняет свой параметр;&lt;br /&gt;
:'''свойство''' ('' par '') - Параметр, который мы изменяем;&lt;br /&gt;
:'''значение''' ('' val '') - Новое значение параметра.&lt;br /&gt;
&lt;br /&gt;
[[Файл:+.png]] '''нет предметов (при создании из динамического конфига)''' ('' nstNoObjects '') - при загрузке локации без хидден-объектов (например не подтянулся пак либо нет локализации)  перевести объект в новое состояние:&lt;br /&gt;
:'''объект''' ('' obj '') - Перевести объект в состояние из следующего поля;&lt;br /&gt;
:'''состояние''' ('' st '') - Новое состояние для объекта из предыдущего поля.&lt;br /&gt;
&lt;br /&gt;
[[Файл:+.png]] '''не успел: если был экран''' ('' wscrOv '') - Если вышло время, а объекты не найдены, переходим на определенный экран, если некоторый экран был уже хотя бы раз посещен:&lt;br /&gt;
:'''был экран''' ('' was '') - Экран, который мы проверяем на то, был ли он уже открыт хотя бы один раз;&lt;br /&gt;
:'''перейти на''' ('' scr '') - Переходим на этот экран, если экран из предыдущего поля уже открывался.&lt;br /&gt;
&lt;br /&gt;
[[Файл:+.png]] '''не успел: изменить состояние объекта''' ('' nstOv '') - Если вышло время, а объекты не найдены, перевести объект в новое состояние:&lt;br /&gt;
:'''объект''' ('' obj '') - перевести объект в состояние из следующего поля;&lt;br /&gt;
:'''состояние''' ('' st '') - Новое состояние для объекта из предыдущего поля.&lt;br /&gt;
&lt;br /&gt;
[[Файл:+.png]] '''не успел: изменить параметр объекта''' ('' chgOv '') - Если вышло время, а объекты не найдены, изменить параметр объекта:&lt;br /&gt;
:'''объект''' ('' obj '') - этот объект меняет свой параметр;&lt;br /&gt;
:'''свойство''' ('' par '')- Параметр, который мы изменяем;&lt;br /&gt;
:'''значение''' ('' val '') - Новое значение параметра.&lt;br /&gt;
&lt;br /&gt;
[[Файл:+.png]] '''счетчик очков''' ('' scoreCnt ''):&lt;br /&gt;
:'''счетчик''' ('' cnt '') - Каунтер, которому приходят очки.&lt;br /&gt;
&lt;br /&gt;
[[Файл:+.png]] '''группа extra bonus''' ('' extraBonus ''). Используется для economics, при нахождении объекта с некой вероятностью может выпасть бонус. Объект который анимирует появление бонуса должен иметь состояние show, время на анимацию бонуса - 10 секунд:&lt;br /&gt;
:'''монетки объект''' ('' coinsObj '') - объект который анимирует получение монет;&lt;br /&gt;
:'''монетки вероятность''' ('' coinsProb '') - вероятность по нахождению объекта получить дополнительно монетки;&lt;br /&gt;
:'''опыт объект''' ('' expObj '') - объект который анимирует получение опыта;&lt;br /&gt;
:'''опыт вероятность''' ('' expProb '') - вероятность по нахождению объекта получить дополнительно опыт;&lt;br /&gt;
:'''энергия объект''' ('' energyObj '') - объект который анимирует получение энергии;&lt;br /&gt;
:'''энергия вероятность''' ('' energyProb '') - вероятность по нахождению объекта получить дополнительно энергию.&lt;br /&gt;
&lt;br /&gt;
[[Файл:+.png]] '''Объект, который срабатывает, если долго не находить хидден''' ('' notfnd ''):&lt;br /&gt;
:'''объект''' ('' obj '') -  Объект, который переводится в указанное состояние, если долго не находить хидден;&lt;br /&gt;
:'''состояние''' ('' st '') - Состояние, в которое переводится объект;&lt;br /&gt;
:'''время''' ('' tm '') - Время от последнего нахождения хиддена, после которого срабатывает объект.&lt;br /&gt;
&lt;br /&gt;
[[Файл:+.png]] '''параметры аномалии с исчезновением букв''' ('' hlPars ''):&lt;br /&gt;
:'''оставшиеся буквы''' ('' min '') - Минимальное количество оставшихся букв в предложении;&lt;br /&gt;
:'''задержка''' ('' wait '') - Момент времени, начиная с которого аномалия будет проявляться;&lt;br /&gt;
:'''задержка 2''' ('' wait2 '') - Задержка для появившихся слов, изначально недоступных;&lt;br /&gt;
:'''время''' ('' time '') - Время, за которое должны исчезнуть все буквы (если -1, то до конца времени в хиддене);&lt;br /&gt;
:'''промежутки''' ('' dt '') - промежутки времени между каждой итерацией;&lt;br /&gt;
:'''флайер''' ('' fl '') - Флайер, анимирующий исчезающую букву (должен иметь '''текстовый''' тип).&lt;br /&gt;
&lt;br /&gt;
[[Файл:+.png]] '''параметры аномалии ночь''' ('' nightPars ''): &lt;br /&gt;
:'''effect''' ('' ef '') - эффект, управляющий трансформацией цвета;&lt;br /&gt;
:'''tag''' ('' eftag '') - Тег эффекта, реализующего ночь.&lt;br /&gt;
&lt;br /&gt;
[[Файл:+.png]] '''параметры аномалии трансформации цвета''' ('' colInvPars ''):&lt;br /&gt;
:'''effect''' ('' ef '') - Эффект, управляющий трансформацией цвета;&lt;br /&gt;
:'''tags''' ('' eftags '') - Теги эффектов, реализующих трансформацию цвета, из которых будет выбран один.&lt;br /&gt;
&lt;br /&gt;
[[Файл:+.png]] '''параметры аномалии дым''' ('' smokePars ''): &lt;br /&gt;
:'''effect''' ('' ef '') - Машина, управляющая эффектом дыма;&lt;br /&gt;
:'''tag''' ('' eftag '') - Тег эффекта, реализующего дым.&lt;br /&gt;
&lt;br /&gt;
Все аномалии кроме текстовой должны быть настроены с помощью объекта [[Effect]]&lt;br /&gt;
&lt;br /&gt;
== Get Started==&lt;br /&gt;
Минимальный набор ресурсов:&lt;br /&gt;
* Фоновая картинка для поисковой сцены&lt;br /&gt;
* Комплект картинок, с которых будут сделаны поисковые [[HiddenObject|объекты]]&lt;br /&gt;
* Текстовые объекты для идентификации спрятанных объектов&lt;br /&gt;
&lt;br /&gt;
Минимальный набор объектов редактора:&lt;br /&gt;
* [[Image]] который будет изменен в хидден-лист&lt;br /&gt;
* [[Table|Таблица]] в которой будут отображаться тексты/картинки (зависит от режима) спрятанных объектов.&lt;br /&gt;
* По одному [[Image]] для каждого спрятанного объекта (будут созданы автоматически при добавлении картинок из базы ресурсов на сцену)&lt;br /&gt;
&lt;br /&gt;
Наши действия:&lt;br /&gt;
# откроем [[Интерфейс_ScenceEditor|редактор сцен]] и создадим новый проект,&lt;br /&gt;
# добавим новый экран с именем ''scrHList''&lt;br /&gt;
# создадим в этом экране сцену ''stgHList''&lt;br /&gt;
# перейдём в [[Интерфейс_ResourceEditor|редактор ресурсов]]&lt;br /&gt;
## создаём папку ''HList''&lt;br /&gt;
## добавим в ней картинку  для фона и картинки для спрятанных объектов.&lt;br /&gt;
## выделим все картинки в дереве ресурсов и перенесем их на нашу сцену ''stgHList'', при этом для каждой картинки автоматически создастся объект [[Image]].&lt;br /&gt;
## закроем редактор ресурсов&lt;br /&gt;
# перейдём в [[Интерфейс_TextEditor|редактор текстов]]&lt;br /&gt;
## создаём папку ''HListText''&lt;br /&gt;
## добавим в нее текстовые объекты, по одному на каждый поисковый объект.&lt;br /&gt;
## сохраним внесенные изменения.&lt;br /&gt;
# перейдём в редактор сцен.&lt;br /&gt;
# создадим в сцене stgHList объект [[Table]] и назовем его HOT&lt;br /&gt;
## настроим размер и положение таблицы, согласно нашего дизайна&lt;br /&gt;
## установим параметры колонок = &amp;quot;50&amp;quot;, колонок видно = &amp;quot;5&amp;quot;, строчек = &amp;quot;5&amp;quot;, строчек видно = &amp;quot;1&amp;quot; (таким образом в таблице будут отображаться 5 поисковых предметов, а максимальное количество объектов для поиска будет равно 250)&lt;br /&gt;
## установим параметры скорость листания = &amp;quot;650&amp;quot;, добавлять по строкам = &amp;quot;0&amp;quot;, центрировать = &amp;quot;растянуть&amp;quot;, сдвигать ячейки при удалении =&amp;quot;да&amp;quot;&lt;br /&gt;
# создадим в сцене stgHList объект '''HiddenList''', напоминаем что его размер и положение на сцене не имеют значения, по этому расположим его где-нибудь за границей экрана. &amp;lt;br&amp;gt;'''Важно''' В дереве проекта хидден-лист должен быть ниже всех своих поисковых объектов.&lt;br /&gt;
## в поле таблица указываем нашу HOT&lt;br /&gt;
## установим параметр объектов = &amp;quot;10&amp;quot;&lt;br /&gt;
## установим параметр пропадание объектов = &amp;quot;да&amp;quot;&lt;br /&gt;
## установим параметр реагировать на отпускание = &amp;quot;да&amp;quot;&lt;br /&gt;
## установим параметр реагировать на невидимые = &amp;quot;нет&amp;quot;&lt;br /&gt;
## установим параметр набор = &amp;quot;1&amp;quot;&lt;br /&gt;
# Настроим объекты, которые будут прятаться. Для этого выделим картинки поисковых объектов, добавленные нами ранее, и изменим им тип на &amp;quot;hiddenObject&amp;quot;. Оставляя группу этих объектов выделенной, настроим им параметры:&lt;br /&gt;
## в поле list укажем наш HiddenList&lt;br /&gt;
## параметр набор = &amp;quot;1&amp;quot;&lt;br /&gt;
## Теперь снимаем выделение и каждому объекту в поле текстID перетаскиваем мышкой соответствующий текстовый объект из текстовой базы (поле текстID должно быть активно для редактирования - по нему нужно кликнуть мышкой)&lt;br /&gt;
# сохраним проект&lt;br /&gt;
# запустим [[Интерфейс_Viewer|вьювер]]&lt;br /&gt;
&lt;br /&gt;
== Динамический HG==&lt;br /&gt;
Функционал позволяет генерировать HL самостоятельно HO объекты из файла конфига.&lt;br /&gt;
 &lt;br /&gt;
П.С. - вся графика д.б. динамической. Данные файлы может создавать HO_Manager ( http://wiki/index.php/HO_Manager )&lt;br /&gt;
&lt;br /&gt;
[[Файл:D485ecbbbb.jpg|right]]&lt;br /&gt;
*'''файл уровня''' ('' configFile'') — указываем путь к файлу конфигу, где перечисляем файлы с HG. &lt;br /&gt;
*'''список графических ресурсов''' — служебное, пока не используется;&lt;br /&gt;
*'''список текстовых ресурсов''' — служебное, пока не используется;&lt;br /&gt;
*'''номер уровня''' ('' hiddenLevelNum '') — номер уровня из файла;&lt;br /&gt;
*'''образец хиддена''' ('' hiddenTemplate '') — obj_id HO объект, должен иметь нужные параметры (остальные возьмутся из конфига) ;&lt;br /&gt;
*'''образец нашлёпки''' ('' hiddenPatchTempl '') — obj_id нашлёпки на HO объект, должна иметь нужные параметры (остальные возьмутся из конфига);&lt;br /&gt;
*'''корневой объект''' ('' hiddenRoot '') — obj_id корневого объект в который сложим всех клонов;&lt;br /&gt;
*'''точечный спецэффект''' ('' hiddenEffect '') — ;&lt;br /&gt;
*'''фоновый объект ''' ('' hiddenBG '') — obj_id объекта которому поменяем ресурс;&lt;br /&gt;
&lt;br /&gt;
Требования, вся графика HO,BG отрисовывается без учёта пивоты;&lt;br /&gt;
&lt;br /&gt;
Файлы конфиги имеют вид:&lt;br /&gt;
Файл уровня имеет вид:&lt;br /&gt;
   {&lt;br /&gt;
      &amp;quot;levels&amp;quot;: [&lt;br /&gt;
         {&lt;br /&gt;
            &amp;quot;file&amp;quot;: &amp;quot;ViewerFiles/DynHid/hidden0.cfg&amp;quot;,&lt;br /&gt;
            &amp;quot;pack&amp;quot;:3&lt;br /&gt;
         }&lt;br /&gt;
      ]&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
:Где &amp;quot;levels&amp;quot; - линки на файлы уровней. &lt;br /&gt;
:::&amp;quot;file&amp;quot; - путь к файлу;&lt;br /&gt;
:::&amp;quot;pack&amp;quot; - пак в который попадут ресурсы;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Файл конкретного уровня имеет вид:&lt;br /&gt;
   {&lt;br /&gt;
      &amp;quot;bg&amp;quot;: {&lt;br /&gt;
         &amp;quot;src&amp;quot;: &amp;quot;bg.png&amp;quot;,&lt;br /&gt;
         &amp;quot;w&amp;quot;: 2048,&lt;br /&gt;
         &amp;quot;h&amp;quot;: 1151,&lt;br /&gt;
         &amp;quot;id&amp;quot;: 16,&lt;br /&gt;
         &amp;quot;color&amp;quot;: &amp;quot;#ffffff&amp;quot;,&lt;br /&gt;
         &amp;quot;tile&amp;quot;: &amp;quot;&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;hiddens&amp;quot;: [&lt;br /&gt;
         {&lt;br /&gt;
            &amp;quot;id&amp;quot;: 1022,&lt;br /&gt;
            &amp;quot;nm&amp;quot;: &amp;quot;bucket_01&amp;quot;,&lt;br /&gt;
            &amp;quot;res&amp;quot;: 129,&lt;br /&gt;
            &amp;quot;bg&amp;quot;: 666,&lt;br /&gt;
            &amp;quot;rect&amp;quot;: {&lt;br /&gt;
               &amp;quot;x&amp;quot;: 1393,&lt;br /&gt;
               &amp;quot;y&amp;quot;: 653,&lt;br /&gt;
               &amp;quot;w&amp;quot;: 115,&lt;br /&gt;
               &amp;quot;h&amp;quot;: 137&lt;br /&gt;
            },&lt;br /&gt;
            &amp;quot;objs&amp;quot;: [{&lt;br /&gt;
               &amp;quot;res&amp;quot;: 1488,&lt;br /&gt;
               &amp;quot;rect&amp;quot;: {&lt;br /&gt;
                  &amp;quot;x&amp;quot;: 1393,&lt;br /&gt;
                  &amp;quot;y&amp;quot;: 653,&lt;br /&gt;
                  &amp;quot;w&amp;quot;: 115,&lt;br /&gt;
                  &amp;quot;h&amp;quot;: 137&lt;br /&gt;
               }&lt;br /&gt;
            }],&lt;br /&gt;
         }, &lt;br /&gt;
         {&lt;br /&gt;
            &amp;quot;x&amp;quot;: 1537,&lt;br /&gt;
            &amp;quot;y&amp;quot;: 409,&lt;br /&gt;
            &amp;quot;id&amp;quot;: 1023,&lt;br /&gt;
            &amp;quot;res&amp;quot;: 329,&lt;br /&gt;
            &amp;quot;nm&amp;quot;: &amp;quot;bucket_02&amp;quot;,&lt;br /&gt;
            &amp;quot;rect&amp;quot;: {&lt;br /&gt;
               &amp;quot;x&amp;quot;: 1493,&lt;br /&gt;
               &amp;quot;y&amp;quot;: 366,&lt;br /&gt;
               &amp;quot;w&amp;quot;: 81,&lt;br /&gt;
               &amp;quot;h&amp;quot;: 87&lt;br /&gt;
            }&lt;br /&gt;
         }&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;res&amp;quot;: {&lt;br /&gt;
         &amp;quot;images&amp;quot;: [16, 129, 1488, 329],&lt;br /&gt;
         &amp;quot;texts&amp;quot;: [1022, 1023],&lt;br /&gt;
         &amp;quot;sounds&amp;quot;: [],&lt;br /&gt;
      }&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
:Где &amp;quot;bg&amp;quot; - настройки фона. &lt;br /&gt;
:::&amp;quot;src&amp;quot; - сорс графического файла в ресурсной базе;&lt;br /&gt;
:::&amp;quot;color&amp;quot; - цвет которым будет залито под фоном, нужное если фон имеет дырки;&lt;br /&gt;
:::&amp;quot;tile&amp;quot; - тайлинг фона;&lt;br /&gt;
:::&amp;quot;id&amp;quot; - id ресурса из ресурсной базы;&lt;br /&gt;
::&amp;quot;hiddens&amp;quot; - перечень HO с их настройками&lt;br /&gt;
::::&amp;quot;id&amp;quot; - TxtId;&lt;br /&gt;
::::&amp;quot;nm&amp;quot; - имя HO;&lt;br /&gt;
::::&amp;quot;res&amp;quot; - графический ресурс HO;&lt;br /&gt;
::::&amp;quot;bg&amp;quot; - графический ресурс тени;&lt;br /&gt;
::::&amp;quot;rect&amp;quot; - настройки &amp;quot;res&amp;quot;;&lt;br /&gt;
:::::&amp;quot;x&amp;quot; - координата x, в координатах корневого объекта;&lt;br /&gt;
:::::&amp;quot;y&amp;quot; - координата y, в координатах корневого объекта;&lt;br /&gt;
:::::&amp;quot;w&amp;quot; - ширина;&lt;br /&gt;
:::::&amp;quot;h&amp;quot; - высота;&lt;br /&gt;
::::&amp;quot;objs&amp;quot; - перечень нашлёпок;&lt;br /&gt;
:::::&amp;quot;res&amp;quot; - графический ресурс нашлёпки;&lt;br /&gt;
:::::&amp;quot;rect&amp;quot; - настройки графического ресурса нашлёпки;&lt;br /&gt;
::::::&amp;quot;x&amp;quot; - координата x, в координатах HO;&lt;br /&gt;
::::::&amp;quot;y&amp;quot; - координата y, в координатах HO;&lt;br /&gt;
::::::&amp;quot;w&amp;quot; - ширина;&lt;br /&gt;
::::::&amp;quot;h&amp;quot; - высота;&lt;br /&gt;
::&amp;quot;res&amp;quot; - ресурсы которые входят в пак уровня ( будут вырезаны при экспорте в пак уровня)&lt;br /&gt;
::::&amp;quot;images&amp;quot; - перечень графических ресурсов&lt;br /&gt;
::::&amp;quot;texts&amp;quot; - перечень текстовых ресурсов&lt;br /&gt;
::::&amp;quot;sounds&amp;quot; - перечень звуковых ресурсов&lt;br /&gt;
&lt;br /&gt;
== Авто тест HL ==&lt;br /&gt;
Для запуска автотеста, нам нужно указать в app.icf параметры:&lt;br /&gt;
&lt;br /&gt;
[GHiddenList]&lt;br /&gt;
:'''HitTest''' - мода автотеста; (0- выкл.; 1 - разовая логика, пишется в файл раз в сессию для одного хидден листа ; 2 - при каждом init любого хидн листа дописывается статистика в файл);&lt;br /&gt;
:'''HitTestDx''' = 5 - шаг с которым проходит автокликер по X;&lt;br /&gt;
:'''HitTestDy''' = 5 - шаг с которым проходит автокликер по Y;&lt;br /&gt;
&lt;br /&gt;
Для HitTest==2, очень помогает параметр &amp;quot;allow_background&amp;quot;. Остаётся только написать скриптулину, которая ходит сама между экранами.&lt;br /&gt;
&lt;br /&gt;
== Пример ==&lt;br /&gt;
&lt;br /&gt;
S:\!MOBILE\!!!EditorGames\Wiki_sample&lt;br /&gt;
&lt;br /&gt;
HiddenList.rar&lt;br /&gt;
&lt;br /&gt;
[[Category:Game mechanic]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Get Started]]&lt;/div&gt;</summary>
		<author><name>Bmor</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.appsalutecreator.com/index.php?title=Cloud&amp;diff=9440</id>
		<title>Cloud</title>
		<link rel="alternate" type="text/html" href="https://wiki.appsalutecreator.com/index.php?title=Cloud&amp;diff=9440"/>
		<updated>2018-02-19T09:54:49Z</updated>

		<summary type="html">&lt;p&gt;Bmor: /* Состояния */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Объект необходим для синхронизации приложения с облаком.&lt;br /&gt;
&lt;br /&gt;
=Параметры объекта Cloud=&lt;br /&gt;
&lt;br /&gt;
==parse general==&lt;br /&gt;
&lt;br /&gt;
*'''app''' - Код приложения из parse&lt;br /&gt;
*'''key''' - Ключ приложения из parse&lt;br /&gt;
*'''имя игры''' - Наше внутреннее имя игры в parse&lt;br /&gt;
*'''имя игрока''' - Имя игрока. Заполнить до любых вызовов состояний&lt;br /&gt;
*'''cloud major field''' - Главное поле в опциях, по которому будет выбираться версия опций в cloud при кофликте (наибольшее из значений будет приоритетнее)&lt;br /&gt;
*'''автоприменение''' - Применять лучшие опции автоматически. Если &amp;quot;нет&amp;quot; то нужно подтверждение пользователя.&lt;br /&gt;
*'''esocial''' - объект типа esocial для получения списка друзей.&lt;br /&gt;
*'''повторять лоад раз''' - количество повторов parse_load при неуспехе, если не отсутствие интернета.&lt;br /&gt;
*'''автолоад''' - автоматически вызывать parse_load при логине в социальной сети.&lt;br /&gt;
&lt;br /&gt;
==parse leaderboards==&lt;br /&gt;
&lt;br /&gt;
*'''лидерборд''' - id таблицы на сервере, в которую будет засылать очки. Начинается с латинской буквы! Не содержит левых символов!&lt;br /&gt;
*'''очки''' - Очки для отправки. Валидное целое число!&lt;br /&gt;
*'''таблица''' - объект-таблица, в который сложим очки. Должна иметь три колонки (место-имя-очки), заполнение по строкам - в случае если не указан &amp;quot;шаблон&amp;quot;.&lt;br /&gt;
*'''шаблон''' - объект типа leaderboardsitem для помещения в таблицу&lt;br /&gt;
*'''свое место''' - каунтер в котором будет место игрока&lt;br /&gt;
*'''свои очки''' - каунтер в котором будут очки игрока&lt;br /&gt;
*'''своя иконка''' - иконка игрока&lt;br /&gt;
*'''запрашивать записей''' - сколько записей запросить из таблицы&lt;br /&gt;
*'''всегда запрашивать''' - запрашивать лидерборды даже если есть кешированные данные (нет=0, да=1)&lt;br /&gt;
*'''дефолтное имя''' - если у нас все еще нет имени человека, вместо него будет эта строка&lt;br /&gt;
*'''специальная сортировка''' ( special_sort ) - специальная сортировка, по лвлу ( задаём &amp;quot;1&amp;quot; когда открываем лидерборды глобальные/ друзей; ставим &amp;quot;0&amp;quot; в лидерах монстров/локаций)&lt;br /&gt;
*'''анимация смены мест''' - анимация смены мест игроком (нет=0, да=1)&lt;br /&gt;
&lt;br /&gt;
*'''периодический лидерборд''' - Периодический лидерборд в parse&lt;br /&gt;
*'''(периодический) таблица''' - объект-таблица, в который сложим очки за текущий период. Должна иметь три колонки (место-имя-очки), заполнение по строкам - в случае если не указан &amp;quot;шаблон&amp;quot;&lt;br /&gt;
*'''(периодический) таблица предыдущая''' - объект-таблица, в который сложим очки предыдущего периода. Должна иметь три колонки (место-имя-очки), заполнение по строкам - в случае если не указан &amp;quot;шаблон&amp;quot;&lt;br /&gt;
*'''(периодический) шаблон''' - объект типа leaderboardsitem для помещения в таблицу текущего лидерборда&lt;br /&gt;
*'''(периодический) шаблон предыдущий''' - объект типа leaderboardsitem для помещения в таблицу предыдущего лидерборда&lt;br /&gt;
*'''(периодический) свое место''' - каунтер в котором будет место игрока&lt;br /&gt;
*'''(периодический) свои очки''' - каунтер в котором будут очки игрока&lt;br /&gt;
*'''(периодический) своя иконка''' - иконка игрока&lt;br /&gt;
*'''(периодический) таймер''' - иконка игрока&lt;br /&gt;
*'''(периодический) запрашивать записей''' - сколько записей запросить из таблицы&lt;br /&gt;
*'''(периодический) анимация смены мест''' - Анимация смены мест игроком (нет=0, да=1)&lt;br /&gt;
*'''(периодический) в предыдущую таблицу только себя''' - в предыдущую таблицу только себя (нет=0, да=1)&lt;br /&gt;
*'''(периодический) таблица наград''' - объект-таблица, в который сложим шаблоны наград&lt;br /&gt;
*'''(периодический) шаблон награды''' - объект типа rewarditem&lt;br /&gt;
&lt;br /&gt;
==parse голосовалка==&lt;br /&gt;
&lt;br /&gt;
*'''таблица''' - объект-таблица, в который сложим ответы;&lt;br /&gt;
*'''шаблон''' - объект типа pollitem для помещения в таблицу;&lt;br /&gt;
*'''название''' - текстовый объект, куда мы сложим название опроса;&lt;br /&gt;
*'''таблица пред.''' - объект-таблица, в который сложим ответы;&lt;br /&gt;
*'''шаблон пред.''' - объект типа pollitem для помещения в таблицу;&lt;br /&gt;
*'''название пред.''' - текстовый объект, куда мы сложим название опроса;&lt;br /&gt;
*'''время''' - объект типа таймер, куда мы сложим оставшееся время опроса;&lt;br /&gt;
*'''текст шаринга''' - текст шаринга.&lt;br /&gt;
&lt;br /&gt;
==parse друзья и подарки==&lt;br /&gt;
&lt;br /&gt;
*'''таблица''' - объект-таблица, в который сложим шаблон leaderbordsitem;&lt;br /&gt;
*'''шаблон''' - объект типа leaderboardsitem для помещения в таблицу;&lt;br /&gt;
*'''добавить приглашаемых''' - &amp;quot;сколько приглашаемых друзей добавить к играющим друзьям;&lt;br /&gt;
*'''прятать одаренных''' - нет - в таблице все друзья; да - в таблице скрыты те, кому дарили подарок.&lt;br /&gt;
&lt;br /&gt;
==parse запросы дружбы==&lt;br /&gt;
&lt;br /&gt;
*'''текст запроса дружбы''' - Текстовый айди для исходящего запроса дружбы;&lt;br /&gt;
*'''окно''' - Само окно. Должно иметь состояние show;&lt;br /&gt;
*'''иконка''' - Портрет приглашающего;&lt;br /&gt;
*'''имя''' - Имя приглашающего;&lt;br /&gt;
*'''таблица инвайтов''' - таблица, в которую сложим все инвайты;&lt;br /&gt;
*'''шаблон инвайта (inviteitem)''' - Шаблон инвайта для помещения в таблицу.&lt;br /&gt;
&lt;br /&gt;
==parse окно обгона в таблице лидеров==&lt;br /&gt;
&lt;br /&gt;
*'''кого leaderboardsitem''' - кого leaderboardsitem&lt;br /&gt;
*'''кто leaderboardsitem''' - кто leaderboardsitem&lt;br /&gt;
*'''машина''' - собственно машина окна (или просто обработчик обгона). Должна иметь состояния show_up и show_down, соответственно при обгоне вверх и вниз.&lt;br /&gt;
&lt;br /&gt;
==parse окно обгона для периодических лидербордов==&lt;br /&gt;
&lt;br /&gt;
*'''кого leaderboardsitem''' - кого leaderboardsitem&lt;br /&gt;
*'''кто leaderboardsitem''' - кто leaderboardsitem&lt;br /&gt;
*'''машина''' - собственно машина окна (или просто обработчик обгона). Должна иметь состояния show_up и show_down, соответственно при обгоне вверх и вниз.&lt;br /&gt;
&lt;br /&gt;
==Приглашение в мультиплеер==&lt;br /&gt;
*'''multiplayer''' - объект мультиплеера&lt;br /&gt;
*'''информация''' - информация о приглашающем, объект типа leaderboardsitem&lt;br /&gt;
&lt;br /&gt;
==Боты для лидербордов==&lt;br /&gt;
*'''конфиг''' - файл с настройками ботов&lt;br /&gt;
*'''имена ботов в оффлайне''' - имена ботов, если они генерятся в оффлайне&lt;br /&gt;
*'''имена игрока в оффлайне''' - имя игрока в оффлайне&lt;br /&gt;
&lt;br /&gt;
Файл конфига умеет создавать &amp;quot;economicalCycle&amp;quot; (пока только боты для локаций, ModeWorkEconomicalCycle=&amp;quot;2&amp;quot; + указываем нужное количество ботов - &amp;quot;bot_loc=k_sc0=1.077#k_scMax=0.71#name=bot1&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
=Добавляемые свойства=&lt;br /&gt;
&lt;br /&gt;
==Обработчики для синхронизации==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:+.png]] '''параметр, синхронизируемый параметр между приложениями устройства''' - позволяет синхронизировать конкретный параметр между разными приложениями через parse.&lt;br /&gt;
*'''группа''' - имя группы, общее для различных приложений, которые синхронизируют данный параметр&lt;br /&gt;
*'''параметр''' - имя параметра в группе, общее для различных приложений&lt;br /&gt;
*'''объект''' - объект у которого синхронизируем параметр.&lt;br /&gt;
*'''параметр объекта''' - параметр который синхронизируем.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:+.png]] '''нечего загружать из cloud: изменить состояние объекта''' - обработчик успеха ''parse_load'' в случае отсутствия данных на сервере, не требует дополнительных запросов.&lt;br /&gt;
*'''объект''' - объект у которого мы меняем состояние.&lt;br /&gt;
*'''состояние''' - Значение нового состояния.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:+.png]] '''в cloud опции хуже, не применям их: изменить состояние объекта''' - обработчик успеха ''parse_load'' в случае, когда данные на сервере хуже, чем на текущем устройстве, не требует дополнительных запросов.&lt;br /&gt;
*'''объект''' - объект, состояние которого меняем.&lt;br /&gt;
*'''состояние''' - новое состояние для объекта из предыдущего поля.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:+.png]] '''подтверждение применения данных из cloud: изменить состояние объекта'''  - обработчик успеха ''parse_load'' в случае наличия данных на сервере с таким же ''device_id'', показываем игроку окно с предложением синхронизироваться. В окне 2 кнопки: синхронизировать - ''parse_apply'', не синхронизировать - ''parse_isolate''.&lt;br /&gt;
*'''объект''' - объект у которого мы меняем состояние.&lt;br /&gt;
*'''состояние''' - Значение нового состояния.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:+.png]] '''применены данные из cloud: изменить состояние объекта''' - обработчик успеха ''parse_apply'', необходимо перегрузить лайаут.&lt;br /&gt;
*'''объект''' - объект у которого мы меняем состояние.&lt;br /&gt;
*'''состояние''' - Значение нового состояния.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:+.png]] '''подтверждение применения данных из cloud при наличии двух комплектов данных в сети: изменить состояние объекта''' - обработчик успеха ''parse_load'' в случае наличия двух комплектов данных на сервере (например, по facebook_id), показываем игроку окно с предложением синхронизироваться. В окне 2 кнопки: синхронизировать - ''parse_apply_server'', не синхронизировать - ''parse_isolate''.&lt;br /&gt;
*'''объект''' - объект, состояние которого меняем.&lt;br /&gt;
*'''состояние''' - новое состояние для объекта из предыдущего поля.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:+.png]] '''успешно проведен серверный resolve''' - обработчик успеха ''parse_apply_server'', необходимо перезагрузить лэйаут.&lt;br /&gt;
*'''объект''' - объект, состояние которого меняем.&lt;br /&gt;
*'''состояние''' - новое состояние для объекта из предыдущего поля.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:+.png]] '''успешно проведена изоляция''' - обработчик успеха ''parse_isolate'', необходимо вызывать ''parse_save''.&lt;br /&gt;
*'''объект''' - объект, состояние которого меняем.&lt;br /&gt;
*'''состояние'''- новое состояние для объекта из предыдущего поля.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:+.png]] '''успешно проведена разизоляция''' - обработчик успеха ''parse_un_isolate'', необходимо вызывать ''parse_load''.&lt;br /&gt;
*'''объект''' - объект, состояние которого меняем.&lt;br /&gt;
*'''состояние''' - новое состояние для объекта из предыдущего поля.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:+.png]] '''ошибка, нужно обновить приложение''' - обработчик успеха ''parse_load'', когда версия текущего приложения ниже, чем версия опциях на сервере, показываем окно с кнопкой, ведущей на стор для обновления приложения.&lt;br /&gt;
*'''объект''' - объект, состояние которого меняем.&lt;br /&gt;
*'''состояние''' - новое состояние для объекта из предыдущего поля.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:+.png]] '''ошибка загрузки данных из cloud: изменить состояние объекта''' - сейчас не применяется, т.к. используем '''ErrorManager'''.&lt;br /&gt;
*'''объект''' - объект у которого мы меняем состояние.&lt;br /&gt;
*'''состояние''' - Значение нового состояния.&lt;br /&gt;
&lt;br /&gt;
==Обработчики голосования==&lt;br /&gt;
	&lt;br /&gt;
			&lt;br /&gt;
[[Файл:+.png]] '''голосование загружено: изменить состояние объекта''' - обработчик успеха ''parse_poll''&lt;br /&gt;
*'''объект''' - объект, состояние которого меняем.&lt;br /&gt;
*'''состояние''' - новое состояние для объекта из предыдущего поля.			&lt;br /&gt;
&lt;br /&gt;
				&lt;br /&gt;
[[Файл:+.png]] '''успешно проголосовали: изменить состояние объекта''' - обработчик успеха ''parse_vote''&lt;br /&gt;
*'''объект''' - объект, состояние которого меняем.&lt;br /&gt;
*'''состояние''' - новое состояние для объекта из предыдущего поля.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Обработчики для лидербордов==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:+.png]] '''успешно загружены лидерборды''' - обработчик успеха ''parse_leaderboards'', ''parse_leaderboards_friends'' и ''parse_leaderboards_friends_param'', выключаем &amp;quot;крутилку&amp;quot;&lt;br /&gt;
*'''объект''' - объект  - состояние которого меняем,&lt;br /&gt;
*'''состояние''' - состояние - значение нового состояния.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:+.png]] '''невозможно загрузить лидерборды из-за objectId''' - обработчик неуспеха ''parse_leaderboards'', ''parse_leaderboards_friends'' и ''parse_leaderboards_friends_param'', которая происходит из-за неуспешного ''parse_load'' (в этом случае ''parse_load'' необходимо повторить)&lt;br /&gt;
*'''объект''' - объект, состояние которого меняем,&lt;br /&gt;
*'''состояние''' - состояние - значение нового состояния.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:+.png]] '''добавляемые лидерборды''' - дополнительная группа настроек визуализации лидербордов, используется для смены таблиц при вызове лидербордов по локациям, монстрам и т.д.&lt;br /&gt;
*'''id''' - Идентификатор набора интерфейсных элементов, указывать нужно '''default''' для таблицы, в которую помещаются общие лидеры, для остальных не нужно&lt;br /&gt;
*'''имя лидербордов''' - Имя лидербордов, соотв. конфигу. Будет применено, если строка не пустая. Это имя задается в param при вызове ''parse_leaderbords_friends_param''&lt;br /&gt;
*'''таблица''' - объект-таблица, в который сложим очки&lt;br /&gt;
*'''шаблон''' - объект типа leaderboardsitem для помещения в таблицу&lt;br /&gt;
*'''свое место''' - каунтер в котором будет место игрока&lt;br /&gt;
*'''свои очки''' - каунтер в котором будут очки игрока&lt;br /&gt;
*'''своя иконка''' - иконка игрока&lt;br /&gt;
*'''кого leaderboardsitem''' - кого leaderboardsitem&amp;quot; hint=&amp;quot;кого leaderboardsitem&lt;br /&gt;
*'''кто leaderboardsitem''' - кто leaderboardsitem&amp;quot;  hint=&amp;quot;кто leaderboardsitem&lt;br /&gt;
*'''машина''' - собственно машина окна. Должна иметь состояние show&lt;br /&gt;
*'''анимация смены мест''' - Анимация смены мест игроком (нет=0, да=1)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Обработчики для друзей и подарков==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:+.png]] '''успешно загружены друзья''' - обработчик успеха ''parse_friends'', выключаем &amp;quot;крутилку&amp;quot;&lt;br /&gt;
*'''объект''' - объект  - состояние которого меняем,&lt;br /&gt;
*'''состояние''' - состояние - значение нового состояния.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:+.png]] '''отправлен запрос дружбы''' - обработчик успеха ''parse_friend_request_lb'', ''parse_friend_request_public'', ''parse_friend_request_param'', показываем информационное окно&lt;br /&gt;
*'''объект''' - объект  - состояние которого меняем,&lt;br /&gt;
*'''состояние''' - состояние - значение нового состояния.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:+.png]] '''отправлен подарок''' - обработчик успеха всех состояний отправки подарков через Cloud, показываем информационное окно&lt;br /&gt;
*'''объект''' - объект  - состояние которого меняем,&lt;br /&gt;
*'''состояние''' - состояние - значение нового состояния.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Обработчики для временных лидербордов (соревнований)==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:+.png]] '''загружена информация о всех лидербордах - соревнования сменились''' - обработчик успеха ''parse_all_leaderboards'', вызываем ''parse_leaderboards_temporary'' и ''parse_leaderboards_temporary_prev''&lt;br /&gt;
*'''объект''' - объект  - состояние которого меняем,&lt;br /&gt;
*'''состояние''' - состояние - значение нового состояния.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:+.png]] '''загружена информация о всех лидербордах - соревнования НЕ сменились''' - обработчик успеха ''parse_all_leaderboards'', вызываем ''parse_leaderboards_temporary'' и ''parse_leaderboards_temporary_prev'' при условии, что находимся не в окне соревнований&lt;br /&gt;
*'''объект''' - объект  - состояние которого меняем,&lt;br /&gt;
*'''состояние''' - состояние - значение нового состояния.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:+.png]] '''игрок потенциально попал в лидерборды прошлого периода''' - обработчик успеха ''parse_all_leaderboards'' - неинформативный, решили не использовать&lt;br /&gt;
*'''объект''' - объект  - состояние которого меняем,&lt;br /&gt;
*'''состояние''' - состояние - значение нового состояния.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:+.png]] '''у игрока призовое место в лидербордах прошлого периода и не забрана награда''' - обработчик успеха ''parse_all_leaderboards'', можно повести игрока забрать награду за предыдущий период соревнований&lt;br /&gt;
*'''объект''' - объект  - состояние которого меняем,&lt;br /&gt;
*'''состояние''' - состояние - значение нового состояния.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:+.png]] '''завершились лидерборды предыдущего периода''' - обработчик успеха ''parse_leaderboards_temporary'', вызываем ''parse_all_leaderboards'', показываем информационное окно с информацией о том, что идет подсчет результатов&lt;br /&gt;
*'''объект''' - объект  - состояние которого меняем,&lt;br /&gt;
*'''состояние''' - состояние - значение нового состояния.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:+.png]] '''невозможно загрузить лидерборды из-за levelId''' - обработчик неуспеха ''parse_leaderboards_temporary'', которая происходит из-за неуспеха ''parse_all_leaderboards'' (в этом случае ''parse_all_leaderboards'' желательно повторить)&lt;br /&gt;
*'''объект''' - объект, состояние которого меняем,&lt;br /&gt;
*'''состояние''' - состояние - значение нового состояния.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:+.png]] '''индикатор награды за временные лидерборды''' - визуализация награды за временные лидерборды&lt;br /&gt;
*'''res1''' - счетчик - награда за лидерство в res1,&lt;br /&gt;
*'''res2''' - счетчик - награда за лидерство в res2,&lt;br /&gt;
*'''item''' - иконка предмета - награды за лидерство,&lt;br /&gt;
*'''item num''' - счетчик предмета - награды за лидерство.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:+.png]] '''лидеры предыдущего этапа временных лидербордов''' - визуализация лидеров предыдущего этапа временных лидербордов (пъедестал)&lt;br /&gt;
*'''leaderboardsitem''' - объект типа leaderboardsitem.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:+.png]] '''периодические лидерборды''' - добавляемые периодические лидерборды используются для разделения игроков по группам в соответствии с уровнем опыта из экономики&lt;br /&gt;
*'''имя''' - Периодический лидерборд в parse (название таблицы)&lt;br /&gt;
*'''min''' - Минимальный уровень экономики&lt;br /&gt;
*'''max''' - Максимальный уровень экономики&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Общие обработчики==&lt;br /&gt;
&lt;br /&gt;
			&lt;br /&gt;
[[Файл:+.png]] '''запрос в парсе успешно выполнен (любой)''' - обработчик успеха любого запроса.&lt;br /&gt;
*'''объект''' - объект, состояние которого меняем.&lt;br /&gt;
*'''состояние''' - новое состояние для объекта из предыдущего поля.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Обработчики для мультиплеера==&lt;br /&gt;
		&lt;br /&gt;
[[Файл:+.png]] '''приглашение в мультиплеер''' - когда мы получили приглашение поиграть.&lt;br /&gt;
*'''объект''' - объект, состояние которого меняем.&lt;br /&gt;
*'''состояние''' - новое состояние для объекта из предыдущего поля.&lt;br /&gt;
&lt;br /&gt;
[[Файл:+.png]] '''подтверждение приглашения в мультиплеер''' - когда приняли наше приглашение поиграть.&lt;br /&gt;
*'''объект''' - объект, состояние которого меняем.&lt;br /&gt;
*'''состояние''' - новое состояние для объекта из предыдущего поля.&lt;br /&gt;
&lt;br /&gt;
=Особенности использования=&lt;br /&gt;
&lt;br /&gt;
Для пользователей, которые не логиняться в социальные сети и соответственно не сохраняют в игре свои имя и аватарку, существует система присвоения дефолтных имен и иконок. Это происходит при вызове ''parse_load''. В этом случае человек попадает в таблицы лидербордов (ранее игроки без имени и без иконки отфильтровывались).&lt;br /&gt;
&lt;br /&gt;
=Состояния=&lt;br /&gt;
&lt;br /&gt;
*'''0  - local_device_synchronization''' - синхронизация параметров между приложениями одного устройства;&lt;br /&gt;
&lt;br /&gt;
*'''1  - parse_resolve''' - ресолвим конфликт и ждем подтверждения;&lt;br /&gt;
&lt;br /&gt;
*'''2  - parse_idle''' - состояние простоя, означает, что мы не ждем ответа ни на один запрос;&lt;br /&gt;
&lt;br /&gt;
*'''3  - parse_load''' - загрузить опции из парса (вызываться должно снаружи, после ввода имени) ;&lt;br /&gt;
&lt;br /&gt;
*'''4  - parse_save''' - сохранить опции в парс c учетом предохранительной задержки SAVE_DELAY_SEC (на 2014-09-17 вызывается из единственного места - GOptions::save);&lt;br /&gt;
        &lt;br /&gt;
*'''5  - parse_leaderboards''' - загрузить лидерборды из парса и сложить в соответствующую таблицу;&lt;br /&gt;
&lt;br /&gt;
*'''6  - parse_leaderboards_friends''' - загрузить лидерборды из парса и сложить в соответствующую таблицу;&lt;br /&gt;
&lt;br /&gt;
*'''7  - parse_submit''' - заслать очки в парс взяв очки из поля score и уровень из поля level;&lt;br /&gt;
&lt;br /&gt;
*'''8  - parse_apply''' - применить скачанные опции;&lt;br /&gt;
&lt;br /&gt;
*'''9  - parse_get_public_lb''' - скопировать паблик данные кликнутого юзера из лидербордов в доступную область;&lt;br /&gt;
&lt;br /&gt;
*'''10 - parse_poll''' - получить данные о текущем опроснике от клауда. Заполнить таблицу ответов;&lt;br /&gt;
&lt;br /&gt;
*'''11 - parse_poll_prev''' - получить данные о предыдущем опроснике от клауда. Заполнить таблицу ответов №2;&lt;br /&gt;
&lt;br /&gt;
*'''12 - parse_vote''' - проголосовать в текущем опроснике (номер ответа возьмем из таблицы) TODO - не нужно ли состояний против и за?;&lt;br /&gt;
&lt;br /&gt;
*'''13 - parse_share_poll''' - зашарить результаты текущего опроса;&lt;br /&gt;
&lt;br /&gt;
*'''14 - parse_forced_save''' - сохранить опции в парс незамедлительно (на 2014-09-17 вызывается из единственного места - GOptions::save);&lt;br /&gt;
&lt;br /&gt;
*'''15 - parse_apply_server''' - применить опции и отправить ресолв;&lt;br /&gt;
&lt;br /&gt;
*'''16 - parse_clear_notifications''' - отписаться от уведомлений;&lt;br /&gt;
&lt;br /&gt;
*'''17 - parse_add_notification''' - добавить уведомление (не требует действий с сетью, реальная отправка - по потере фокуса);&lt;br /&gt;
&lt;br /&gt;
*'''18 - parse_time''' - запросить время;&lt;br /&gt;
&lt;br /&gt;
*'''19 - parse_friends''' - заполнить таблицу всех друзей (новые подарки);&lt;br /&gt;
   &lt;br /&gt;
*'''20 - parse_isolate''' - отказаться от слияния аккаунтов;&lt;br /&gt;
&lt;br /&gt;
*'''21 - parse_un_isolate''' - отменить изоляцию;&lt;br /&gt;
&lt;br /&gt;
*'''22 - parse_cancel_apply''' - отменить синхронизацию и разрешить сейвы;&lt;br /&gt;
&lt;br /&gt;
*'''23 - scroll_friends_to_lb''' - проскролить таблицу друзей на юзера кликнутого в таблице лидербордов;&lt;br /&gt;
&lt;br /&gt;
*'''24 - '''номер зарезервирован&lt;br /&gt;
&lt;br /&gt;
*'''25 - '''номер зарезервирован&lt;br /&gt;
&lt;br /&gt;
*'''26 - '''номер зарезервирован&lt;br /&gt;
&lt;br /&gt;
*'''27 - parse_flush_notifications''' - принудительно зафлушить нотификейшены, если мы этого не делали ранее;&lt;br /&gt;
&lt;br /&gt;
*'''28 - parse_all_leaderboards''' - получение информации по всем лидербордам, возможное обнуление текущих очков.&lt;br /&gt;
&lt;br /&gt;
*'''29 - parse_submit_temporary''' - сабмит очков в temporary лидерборд;&lt;br /&gt;
&lt;br /&gt;
*'''30 - parse_leaderboards_temporary''' - получение таблицы temporary лидерборда;&lt;br /&gt;
&lt;br /&gt;
*'''31 - parse_leaderboards_temporary_prev''' - получение таблицы результатов предыдущего периода в temporary лидерборде;&lt;br /&gt;
&lt;br /&gt;
*'''32 - parse_leaderboards_claim''' - начисление награды по кнопке получения награды в шаблоне лидерборда за предыдущий период в temporary лидерборде;&lt;br /&gt;
&lt;br /&gt;
*'''33 - parse_leaderboards_animation''' - старт анимации перемещения ячеек таблицы в temporary лидерборде;&lt;br /&gt;
&lt;br /&gt;
*'''34 - parse_friend_request_param''' - приглашение дружить, в param указать object_id;&lt;br /&gt;
&lt;br /&gt;
*'''35 - parse_friend_request_lb''' - приглашение дружить по кнопке пригласить в друзья из шаблона лидербордов;&lt;br /&gt;
&lt;br /&gt;
*'''36 - parse_friend_confirm''' - подтверждение дружбы из окна ''parse запросы дружбы'';&lt;br /&gt;
&lt;br /&gt;
*'''37 - parse_friend_cancel''' - отмена дружбы из окна ''parse запросы дружбы'';&lt;br /&gt;
&lt;br /&gt;
*'''38 - parse_friend_confirm_table''' - подтверждение дружбы из таблицы инвайтов ''parse запросы дружбы'';&lt;br /&gt;
&lt;br /&gt;
*'''39 - parse_friend_cancel_table''' - отмена дружбы из таблицы инвайтов ''parse запросы дружбы'';&lt;br /&gt;
&lt;br /&gt;
*'''40 - parse_friend_request_public''' - запрос дружбы из окна Инфо (parse_get_public_lb), проверять параметр ''selected_public.cloud_is_friend'' у объекта cloud: 0 - я сам, 1 - не друг, 2 - друг (для показа-прятания кнопок);&lt;br /&gt;
&lt;br /&gt;
*'''41 - parse_friend_delete_public''' - запрос на отмену дружбы из окна Инфо (parse_get_public_lb), проверять параметр ''selected_public.cloud_is_friend'' у объекта cloud: 0 - я сам, 1 - не друг, 2 - друг (для показа-прятания кнопок);&lt;br /&gt;
&lt;br /&gt;
*'''42 - parse_friend_check_requests''' - проверить входящие запросы (инвайты, подарки...);&lt;br /&gt;
&lt;br /&gt;
*'''43 - parse_leaderboards_friends_param''' -  показать лидерборд по друзьям, предварительно изменив контролы для отображения таблицы лидербордов и т.п.;&lt;br /&gt;
&lt;br /&gt;
*'''44 - parse_get_public_fr''' - скопировать паблик данные кликнутого юзера из таблицы парсовых друзей из лидербордов в доступную область;&lt;br /&gt;
&lt;br /&gt;
*'''45 - parse_scroll_temporary_on_me''' - промотка таблицы периодических лидербордов на ячейку с моим результатом до указателя (если он задан);&lt;br /&gt;
&lt;br /&gt;
*'''46 - parse_bots_info''' - получить информацию о ботах отдельно от периодических лидербордов.&lt;br /&gt;
&lt;br /&gt;
*'''47 - get_country''' - получить страну&lt;br /&gt;
&lt;br /&gt;
*'''48 - parse_scroll_default_on_me''' - промотать таблицу default на меня&lt;br /&gt;
&lt;br /&gt;
*'''49 - parse_info''' - получить инфо о пользователе взяв objectId из param&lt;br /&gt;
&lt;br /&gt;
*'''50 - parse_invitable''' - заполнить таблицу приглашаемых друзей&lt;br /&gt;
&lt;br /&gt;
=Сообщения в лог=&lt;br /&gt;
&lt;br /&gt;
Объект пишет в опции строки:&lt;br /&gt;
I/GCloud GCloud::state() state val = 2 state = 3 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Где val = 2 - это состояние в которое хотим перейти в дальнейшем ( в зависимости от текущего состояния, или станет в очередь или выполниться следующим тиком), state = 3 - это состояние в котором сейчас находиться объект.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Коды ошибок:==&lt;br /&gt;
&lt;br /&gt;
*'''6''' - опрос закончился;&lt;br /&gt;
*'''7''' - ошибка версионности;&lt;br /&gt;
*'''1000''' - отсутсвие интернета.&lt;br /&gt;
В прочих случаях код ошибки будет '''2000 + номер состояния''', т.е. для лоада, например ошибка будет 2000 + 3 = 2003&lt;br /&gt;
&lt;br /&gt;
Дополнительно клауд будет отправлять коды ошибок по таймауту ( превышению времени ответа - сейчас равен 60 сек):&lt;br /&gt;
'''4000 + номер состояния''', т.е. для запроса лидербордов, например ошибка будет 4000 + 5 = 4005 ( глобальные) или 4000 + 6 = 4006 (друзья)&lt;br /&gt;
&lt;br /&gt;
Для обработки ошибок использовать [[Errormanager|ErrorManager]].&lt;br /&gt;
&lt;br /&gt;
[[Category:Options|*]]&lt;/div&gt;</summary>
		<author><name>Bmor</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.appsalutecreator.com/index.php?title=Economics&amp;diff=9429</id>
		<title>Economics</title>
		<link rel="alternate" type="text/html" href="https://wiki.appsalutecreator.com/index.php?title=Economics&amp;diff=9429"/>
		<updated>2018-02-06T13:34:06Z</updated>

		<summary type="html">&lt;p&gt;Bmor: /* Состояния */&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;.&lt;br /&gt;
*'''опции для facebook''' - поле в опциях, куда мы будем записывать 32 битное целое: Уровень + Коллекции.ESocial добавит к ним число друзей и засабмит при вызове соотв. состояние&lt;br /&gt;
*'''перегрузить очки из опций''' - если поле не пустое - будут взяты очки из поля опций текущего пользователя, указаного в этой строке.&lt;br /&gt;
*'''во временные отправлять''' - какие очки будут отправлены во временные лидерборды esocial'ом. При выборе '''кастомное заполнение''' будут отправлены очки из поля temporary_lb_score в опциях текущего пользователя (p0.temporary_lb_score например). Кастомные очки нужно добавлять вручную, по окончанию периода они будут обнулены автоматически.&lt;br /&gt;
&lt;br /&gt;
===Основные счетчики===&lt;br /&gt;
Этот раздел содержит необходимые объекты для подсчета (counter, timer, progressbar).&lt;br /&gt;
&lt;br /&gt;
*'''Уровень''' - счетчик текущего уровня игрока.&lt;br /&gt;
*'''Прогресс в уровне (счетчик)''' - Набранный на этом уровне опыт и остаток до следующего уровня (счетчик).&lt;br /&gt;
*'''Прогресс в уровне (бар)''' - Набранный на этом уровне опыт и остаток до следующего уровня (прогрессбар).&lt;br /&gt;
*'''Опыта до уровня''' - счетчик показывающий сколько опыта необходимо для перехода с текущего уровня на следующий.&lt;br /&gt;
*'''Текущая энергия''' - прогрессбар текущей энергии.&lt;br /&gt;
*'''Максимальная энергия''' - счетчик, который отображает значение максимальной энергии.&lt;br /&gt;
*'''Таймер энергии''' - таймер отображающий время до восстановления единицы энергии.&lt;br /&gt;
*'''Таймер всей энергии''' - таймер, который отображает время до восстановления всей энергии.&lt;br /&gt;
*'''Ресурс 1''' - счетчик первого ресурса (денег).&lt;br /&gt;
*'''Ресурс 2''' - счетчик второго ресурса (кристаллов).&lt;br /&gt;
*'''анимация рес.1''' - Анимационный объект награды в ресурсе 1. Должен иметь состояние show.&lt;br /&gt;
*'''анимация рес.2''' - Анимационный объект награды в ресурсе 2. Должен иметь состояние show.&lt;br /&gt;
*'''анимация опыт''' - Анимационный объект награды в опыте. Должен иметь состояние show.&lt;br /&gt;
&lt;br /&gt;
===Окно перед локацией===&lt;br /&gt;
Настройка окна, которое всплывает перед посещением локации. В этом окне отображается информация о локации которую мы хотим посетить.&lt;br /&gt;
&lt;br /&gt;
*'''Окно''' - некая машина, олицетворяющая собой само окно превью. Должна иметь состояния ''open'' - открыта, ''open_lvl'' - не хватает лвл, ''open_buy'' - разница в уровнях позволяет нам купить анлок, ''open_item'' - не хватает предмета для анлока,  ''open_unlock'' - состояние вызываемое окну перед локацией после успешной покупки предмета для анлока, ''open_energy'' - состояние вызываемое окну перед локацией в случае нехватки энергии.&lt;br /&gt;
*'''Превью локации''' - графический ресурс для отображения превью локации. В это поле можно поставить любую картинку для того, чтобы корректно разместить ее в &amp;quot;окне перед локацией&amp;quot;. Далее экономикс сам будет подставлять нужные превью.&lt;br /&gt;
*'''Название локации''' - текстовый объект, в который будет подставляться название локации.&lt;br /&gt;
*'''Описание локации''' - текстовый объект, в который будет подставляться описание локации.&lt;br /&gt;
*'''Уровень мастерства''' - счетчик уровня мастерства.&lt;br /&gt;
*'''Прогрессбар уровня мастерства''' - прогрессбар, который отображает уровень мастерства.&lt;br /&gt;
*'''Текущий уровень''' - счетчик текущего уровня мастерства.&lt;br /&gt;
*'''Необходимая энергия''' - счетчик необходимой энергии.&lt;br /&gt;
*'''Аномальная энергия''' - счетчик, который отображает дополнительную энергию при наличии аномалии в локации.&lt;br /&gt;
*'''Призовой ресурс 1''' - счетчик призовых денег.&lt;br /&gt;
*'''Аномальный ресурс 1''' - счетчик, который отображает количество дополнительных призовых денег, которые даются за игру в локацию с наличием аномалии.&lt;br /&gt;
*'''Призовой ресурс 2''' - счетчик призовых кристаллов.&lt;br /&gt;
*'''Призовой опыт''' - счетчик призового опыта.&lt;br /&gt;
*'''Аномальный опыт''' - счетчик, который отображает значение дополнительного опыта, который дается за игру в локацию с наличием аномалии.&lt;br /&gt;
*'''Таблица коллекции''' - таблица, в которой будут отображаться предметы, которые можно найти в данной локации.&lt;br /&gt;
&lt;br /&gt;
''для закрытой по уровню локации''&lt;br /&gt;
*'''Режим игры''' - машина, которой будут устанавливаться состояния в зависимости от режима игры (может быть смешанный, текст или силуэт). TODO пока обладает только режимом text и icon. Эта машина будет передавать настройки таблице, в которую помещаются поисковые объекты, поэтому важно, чтобы к этой таблице был доступ (например она может находится на глобальном экране).&lt;br /&gt;
&lt;br /&gt;
*'''индикатор уровня''' - счетчик с необходимым для локации уровнем.&lt;br /&gt;
&lt;br /&gt;
''для локации c ценой''&lt;br /&gt;
&lt;br /&gt;
*'''цена ресурс 1''' - Стоимость анлока локации в ресурсе 1.&lt;br /&gt;
*'''цена ресурс 2''' - Стоимость анлока локации в ресурсе 2.&lt;br /&gt;
&lt;br /&gt;
''для локации c требуемым предметом''&lt;br /&gt;
&lt;br /&gt;
*'''предмет''' - иконка необходимого для локации предмета.&lt;br /&gt;
*'''название предмета''' - в этом поле указывается название, необходимого для локации предмета.&lt;br /&gt;
*'''счетчик цены''' - счетчик, который отображает стоимость предмета.&lt;br /&gt;
*'''иконка цены'''  - иконка цены предмета, представляет собой картинку, которая перетаскивается из базы ресурсов.&lt;br /&gt;
*'''кнопка купить''' - Будет видна, если предмет нужно купить. Передает экономиксу состояние unlock_item.&lt;br /&gt;
*'''кнопка искать''' - Будет видна, если предмет поисковый.&lt;br /&gt;
*'''блок аномалии''' - контейнер, представляющий собой машину, которая содержит всю информацию про аномалию. Должна содержать в себе состояния hide, show и remov (состояние после прогона аномалии, чтобы сделать красивые эффекты, после которого машина попадет в состояние hide).&lt;br /&gt;
*'''иконка аномалии''' - иконка аномалии.&lt;br /&gt;
*'''название аномалии''' - текстовый объект, который будет отображать название аномалии.&lt;br /&gt;
*'''описание аномалии''' - текстовый объект, который будет отображать описание аномалии.&lt;br /&gt;
*'''иконка предмета''' - иконка предмета, необходимого для того что бы прогнать аномалию.&lt;br /&gt;
*'''кнопка прогнать предметом''' - кнопка по нажатию которой, можно прогнать аномалию используя предмет.&lt;br /&gt;
*'''кнопка купить предмет''' -  кнопка по нажатию которой, можно купить предмет для прогона аномалии.&lt;br /&gt;
*'''кнопка прогнать миниигрой''' - кнопка по нажатию которой, можно прогнать аномалию мини игрой.&lt;br /&gt;
*'''корневой объект''' - некая машина, олицетворяющая собой блок перехода в связанную локацию. Должно иметь состояния 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;
*'''призовой опыт''' - счетчик, отображающий количество призового опыта.&lt;br /&gt;
*'''таблица коллекции''' - таблица, в которой будут отображаться предметы, которые можно отжать у данного монстра.&lt;br /&gt;
*'''иконка предмета''' - картинка, которая отображает предмет необходимый для игры с монстром.&lt;br /&gt;
*'''нужно предметов''' - счетчик, который отображает необходимое количество предметов.&lt;br /&gt;
*'''есть предметов''' - счетчик, который отображает текущее количество предметов, находящееся в наличии.&lt;br /&gt;
*'''суммарная стоимость''' - счетчик, который отображает суммарную стоимость недостающих предметов.&lt;br /&gt;
*'''кнопка купить''' - кнопка, по нажатию которой, происходит покупка недостающих предметов.&lt;br /&gt;
*'''кнопка прогнать''' - кнопка, по нажатию которой, можно прогнать монстра не играя в игру, эту кнопку можно не задавать.&lt;br /&gt;
&lt;br /&gt;
===Окно после монстра===&lt;br /&gt;
&lt;br /&gt;
*'''окно''' - некая машина, олицетворяющая собой само окно превью. Должна иметь состояние open.&lt;br /&gt;
*'''превью монстра''' - картинка, отображающая превью монстра.&lt;br /&gt;
*'''название монстра''' - текстовый объект, показывающий название монстра.&lt;br /&gt;
*'''описание монстра''' - текстовый объект, показывающий описание монстра.&lt;br /&gt;
*'''призовой ресурс 1''' - счетчик, отображающий количество призовых денег.&lt;br /&gt;
*'''призовой опыт''' - счетчик, отображающий количество призового опыта.&lt;br /&gt;
*'''таблица коллекции''' - таблица, в которой будут отображаться предметы, которые можно отжать у данного монстра.&lt;br /&gt;
*'''ничего не найдено''' - любой объект, сообщающий игроку, так или иначе, что он не нашел ничего ценного на данной локации.&lt;br /&gt;
&lt;br /&gt;
===Окно коллекций===&lt;br /&gt;
&lt;br /&gt;
*'''Шаблон коллекции''' - ссылка на объект типа ecollection который будет использоваться в качестве исходного для всех коллекций.&lt;br /&gt;
*'''Таблица''' - таблица, куда по ссылке будут добавлены шаблоны коллекции.&lt;br /&gt;
*'''алерт''' - некая машина, олицетворяющая собой само окно предмета. Должна иметь состояние open. Окно с информацией о предмете всплывает в окне с коллекциями.&lt;br /&gt;
*'''иконка''' - Иконка предмета.&lt;br /&gt;
*'''текст (объект)''' - Текстовый объект в окошке.&lt;br /&gt;
*'''описание (объект)''' - Текстовый объект в окошке, в который сложим описание предмета.&lt;br /&gt;
*'''имя коллекции (объект)''' - В это поле будет записано имя коллекции, к которой относится предмет.&lt;br /&gt;
*'''цифры''' - фреймовая анимация содержащая в себе цифры. Последний фрейм анимации - отметка много.&lt;br /&gt;
&lt;br /&gt;
===Окошко коллекционного предмета===&lt;br /&gt;
&lt;br /&gt;
*'''окно''' - Некая машина, олицетворяющая собой само окно предмета. Должна иметь состояние open. Окошко всплывает при клике на предмет в таблице окна перед/после локации.&lt;br /&gt;
*'''иконка''' - Иконка предмета.&lt;br /&gt;
*'''текст (объект)''' - Текстовый объект в окошке.&lt;br /&gt;
*'''описание (объект)''' - Текстовый объект в окошке, в который сложим описание предмета.&lt;br /&gt;
*'''имя коллекции (объект)''' - В это поле будет записано имя коллекции, к которой относится предмет.&lt;br /&gt;
&lt;br /&gt;
===Окошко поздравления со сдачей коллекции===&lt;br /&gt;
&lt;br /&gt;
*'''окно''' - некая машина,содержащая необходимую информацию, олицетворяющая само окно предмета. Должна иметь в себе состояние open.&lt;br /&gt;
*'''иконка''' - картинка отображающая иконку предмета-награды ( в параметр 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;
Форма редактора экономикса разделена на 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;
*'''ресурс 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.&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;
Во вкладке ''Коллекция'' используются только первые две колонки. В первой колонке отображаются добавленные коллекции. Добавляются кнопкой ''Добавить локацию''. Удаляются кнопкой ''Удалить локацию''. Коллекции можно переименовывать. Второй столбик содержит 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;, то действие предмета будет вечным, отображаться в таблице амулетов он не будет.&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;
*'''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;
&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 - то для достижения может использоваться любая аномалия.&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;
&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;
&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;
&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;
[[Category:Game mechanic]]&lt;br /&gt;
[[Category:Economics|*]]&lt;/div&gt;</summary>
		<author><name>Bmor</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.appsalutecreator.com/index.php?title=%D0%98%D0%BD%D1%82%D0%B5%D1%80%D1%84%D0%B5%D0%B9%D1%81_ScenceEditor&amp;diff=9419</id>
		<title>Интерфейс ScenceEditor</title>
		<link rel="alternate" type="text/html" href="https://wiki.appsalutecreator.com/index.php?title=%D0%98%D0%BD%D1%82%D0%B5%D1%80%D1%84%D0%B5%D0%B9%D1%81_ScenceEditor&amp;diff=9419"/>
		<updated>2018-02-05T10:09:03Z</updated>

		<summary type="html">&lt;p&gt;Bmor: /* Debug Options */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC right}}&lt;br /&gt;
== [[Файл:Ico_main.png]]Редактор сцен ==&lt;br /&gt;
&lt;br /&gt;
'''Редактор сцен''' — программа, предназначенная для создания, редактирования и экспорта  игровых экранов, в котором происходит настройка свойств объектов и игровой логики. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Окно редактора сцен состоит из:'''&lt;br /&gt;
*меню редактора;&lt;br /&gt;
*рабочей области, в которой размещен объект сцена, на котором размещают другие объекты;&lt;br /&gt;
*панель Лэйаут, в которой размещено иерархическое дерево проекта, которое состоит из экранов, на которых находятся игровые объекты;&lt;br /&gt;
*панель Свойства, которая отображает свойства объекта, который выбран в дереве проекта;&lt;br /&gt;
*панель для построения сплайна;&lt;br /&gt;
*панель инструментов;&lt;br /&gt;
*строка Координаты, отображающая координаты курсора в текущий момент времени&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для включения или отключения панели кликаем правой кнопкой мыши по серой области меню редактора и ставим галочку. Панели можно расположить на экране в любом порядке.&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[Файл:Головна2.PNG|700px]]&lt;br /&gt;
&lt;br /&gt;
=== Меню редактора ===&lt;br /&gt;
&lt;br /&gt;
==== Project (Проект)====&lt;br /&gt;
меню, которое содержит список команд, с помощью которых можно создать новый или загрузить уже созданный проект, сохранить проект с указанием места сохранения и т.д.&lt;br /&gt;
*'''New project''' - создать новый проект; &lt;br /&gt;
*'''Open''' - открыть уже созданный проект (проект обязательно должен находится в подкаталоге редактора); &lt;br /&gt;
*'''Recent project...''' - показывает список последних открывавшихся проектов; &lt;br /&gt;
*'''Close''' - закрытие проекта (редактор при этом не закрывается); &lt;br /&gt;
*'''New project''' - создать новый проект; &lt;br /&gt;
*'''Save''' - сохранение проекта; &lt;br /&gt;
*'''Save as...''' - сохранение проекта под новым именем или в новом каталоге; &lt;br /&gt;
*'''Export...''' - экспорт проекта; &lt;br /&gt;
*'''Project options...''' - опции проекта; &lt;br /&gt;
*'''Exit''' - закрытие редактора. &lt;br /&gt;
&lt;br /&gt;
==== Edit (Редактирование)====&lt;br /&gt;
меню редактирования проекта:&lt;br /&gt;
*'''Copy''' - копирование объекта; &lt;br /&gt;
*'''Paste into current object''' - вставка объекта в выбранный объект; &lt;br /&gt;
*'''Paste after current object''' - вставка объекта после выбранного объекта;&lt;br /&gt;
*'''Delete...''' - удаление объекта;&lt;br /&gt;
*'''Scale object''' - масштабирование выбранного объекта, если у него есть масштаб (scale x \ scale y);&lt;br /&gt;
*'''Rotate object''' - поворот выбранного объекта, если у него есть параметр поворота (angle);&lt;br /&gt;
*'''Modify vertex''' - изменение положения точек вертекса у выбранного объекта, если вертексы включены; &lt;br /&gt;
*'''Find object...''' - поиск объекта по id или по имени;&lt;br /&gt;
*'''Setup Editor...''' - настройки редактора.&lt;br /&gt;
&lt;br /&gt;
[[Файл:SetupEditor.png|right|400px]]&lt;br /&gt;
&lt;br /&gt;
1) Языки - выбор языка редактора.&lt;br /&gt;
&lt;br /&gt;
2) Work mode - выбор режима работы.&lt;br /&gt;
&lt;br /&gt;
3) Syles - выбор темы редактора.&lt;br /&gt;
&lt;br /&gt;
4) Перемещение сцены мышью или клавишами клавиатуры - позволяет перемещать сцену на экране.&lt;br /&gt;
&lt;br /&gt;
5) Рисовать сетку на экране - отображать сетку на экране или нет.&lt;br /&gt;
&lt;br /&gt;
6) Utilities - Подключение утилит.&lt;br /&gt;
&lt;br /&gt;
	В редакторе есть возможность подключения утилит в форматах *.bat, *.exe, *.py, *.pyw, *.vbs.&lt;br /&gt;
&lt;br /&gt;
	&lt;br /&gt;
	Для примера, подключим bat-файл, открывающий логи вьвера в notepad++.&lt;br /&gt;
&lt;br /&gt;
	Для этого создадим файл Logs.bat со следущими командами:&lt;br /&gt;
&lt;br /&gt;
	&lt;br /&gt;
		cd C:\Users\&amp;lt;your-user&amp;gt;\AppData\Roaming\Absolutist\Viewer&lt;br /&gt;
&lt;br /&gt;
		start &amp;quot;C:\Program Files (x86)\Notepad++\notepad++.exe&amp;quot; &amp;quot;viewer.log&amp;quot; &lt;br /&gt;
&lt;br /&gt;
		&lt;br /&gt;
	В настройки редактора добавим утилиту нажав на плюсик. В списке ниже появится поле добавленной утилиты.&lt;br /&gt;
 &lt;br /&gt;
Нажмем на многоточие в столбце &amp;quot;Browse&amp;quot;. В открывшимся окне &amp;quot;Open utility&amp;quot; откроем Logs.bat файл. После этого в меню редактора появится меню &amp;quot;Utilities&amp;quot; с командой Logs.&lt;br /&gt;
&lt;br /&gt;
==== View (Просмотр)====&lt;br /&gt;
*'''Toggle grid''' - включает\выключает отображение сетки на сцене;&lt;br /&gt;
*'''open/hide comment''' - показывает\скрывает комментарии к объекту;&lt;br /&gt;
*'''Disable object movements''' - выключает\включает возможность перемещать объекты по сцене.&lt;br /&gt;
&lt;br /&gt;
=== Viewer (Вьювер) ===&lt;br /&gt;
*'''Start Viewer''' - запуск вьювера;&lt;br /&gt;
*'''Start Viewer with changed time''' - запуск вьювера с заданным временем;&lt;br /&gt;
*'''Save and run viewer...''' - сохраняет проект и запускает вьювер;&lt;br /&gt;
*'''Run Viewer.bat''' - ???;&lt;br /&gt;
*'''Delete temp data''' - удаление опций; &lt;br /&gt;
&lt;br /&gt;
====Layouts (Лейаут, Макеты)====&lt;br /&gt;
меню работа с лейаутами проекта (выбор макета устройства для проекта, редактирование экранов):&lt;br /&gt;
*'''Add new layout...''' - создание нового лейаута;&lt;br /&gt;
*'''Delete layout...''' - удаление лейаута;&lt;br /&gt;
*'''Layout settings...''' - настройки лейаута;&lt;br /&gt;
*'''Add folder...''' - создание папки в текущем лейаута;&lt;br /&gt;
*'''Add screen...''' - создание нового экрана.&lt;br /&gt;
==== Tools (Инструменты)====&lt;br /&gt;
меню дополнительных редакторов и инструментов для проекта (вызов редактора ресурсов, текстового редактора, анализ проекта). Список этого меню вынесен на панель с кнопками быстрого запуска:&lt;br /&gt;
*'''Resources Editor''' - редактор ресурсов;&lt;br /&gt;
*'''Texts Editor''' - текстовый редактор;&lt;br /&gt;
*'''Analyzer''' - анализатор ресурсов (показывает количество объектов проекта, их размер занимаемой памяти, сведения о ресурсах каждого объекта (размер, ID номер, название (имя), местонахождение в базе ресурсов));&lt;br /&gt;
*'''Object info...''' - общие свойства объекта (показывает размер памяти занимаемой текстурами);&lt;br /&gt;
*'''Options info...''' - информация об опциях.&lt;br /&gt;
&lt;br /&gt;
==== Help (Помощь)====&lt;br /&gt;
меню вызова справки.&lt;br /&gt;
&lt;br /&gt;
=== Кнопки панели Инструменты ===&lt;br /&gt;
Некоторые инструменты также вызываются горячими клавишами (комбинация клавиш приведена в скобках )&lt;br /&gt;
&lt;br /&gt;
[[Файл:00 6.png]] (Ctrl+N) — создать новый проект; &amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:00 7.png]](Ctrl+O) — загрузить уже созданный проект;&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:00 8.png]](Ctrl+S) — сохранить изменения в проекте;&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:00 9.png]] —  запустить Viewer;&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:009.JPG]] — нормальный вид; &amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:Ico_text.png|25px]] - вызов текстового редактора; &amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:Ico_base.png|25px]] — вызов редактора ресурсов;&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:013.JPG]] — анализатор ресурсов (показывает количество объектов проекта, их размер занимаемой памяти, сведения о ресурсах каждого объекта (размер, ID номер, название (имя), местонахождение в базе ресурсов)); &amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:014.JPG]]— поиск объекта по id или по имени.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Функции рабочей области===&lt;br /&gt;
&lt;br /&gt;
'''1) Масштабирование рабочей области&amp;lt;br&amp;gt;'''&lt;br /&gt;
Ctrl + колесико мышки   крутим  вперед  - увеличиваем объекты  , назад  - уменьшаем объекты.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''2)Перемещение по рабочей области&amp;lt;br&amp;gt;'''&lt;br /&gt;
После масштабирования возникает необходимость переместиться  с левого  уголка экрана в далекий правый, переместиться к выбраному обьекту, вверх или вниз.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Кликаем правой кнопкой мыши по горизонтальному scroll и выпадает меню: &lt;br /&gt;
*scroll here —  функция перемещает экран к объекту, который выделен в Лэйауте;&lt;br /&gt;
*scroll left / right  -  функция перемещает экран на маленькое расстояние вправо / влево;&lt;br /&gt;
*left  / right edge — функция  перемещает экран в левый / правый угол экрана;&lt;br /&gt;
*page left / right  - функция показывает левую/правую часть экрана&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Кликаем правой кнопкой мыши по вертикальному scroll и выпадает меню: &lt;br /&gt;
*scroll here —  функция перемещает экран к объекту, который выделен в Лэйауте;&lt;br /&gt;
*scroll up / down  -  функция перемещает экран на маленькое расстояние вверх / вниз;&lt;br /&gt;
*top/bottom  - функция  перемещает экран вверх / вниз;&lt;br /&gt;
*page up / down  - функция перемещает экран  верхнюю / нижнюю часть экрана.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Меню прокрутки скрывается по нажатию клавиши Alt&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Функции панели Лэйаут===&lt;br /&gt;
[[Файл:Лэйаут_1.JPG|right]] &lt;br /&gt;
При клике правой кнопкой мыши по выбранному лэйауту (см. рисунок справа)&lt;br /&gt;
*Создать папку в текущем объекте;&lt;br /&gt;
*Создать экран в текущем объекте -  создание объекта в текущем лэйауте;&lt;br /&gt;
*Импорт/экспорт экранов — импорт/экспорт одного или нескольких экранов;&lt;br /&gt;
*Развернуть / Свернуть объекты с подобъектами — сворачивает  / разворачивает дерево объектов всех экранов&amp;lt;br&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
При клике правой кнопкой мыши по выбранному экрану, сцене или объекту возможно:&lt;br /&gt;
*Lock (Unlock) screen -  золочивание (разлочивание) экрана: нельзя перемещать, удалять и изменять объекты (сцены) экрана, причем, если сцена расшареная, то она становиться залоченой и на остальных экранах; на залоченых экранах в панели проекта появляется замочек; &lt;br /&gt;
*Lock (Unlock) scene -  золочивание (разлочивание) сцены: нельзя перемещать, удалять и изменять объекты (машины, картинки и др.) сцены, причем, если сцена расшареная, то она становиться залоченой и на остальных экранах; на залоченых сценах также появляется замочек; &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;
Пусть на сцене будет находится очень много картинок, которые должны находиться в строго определенных местах. Переместим нашу картинку в нужную точку на сцене. Но у нас картинок очень много и мы потратим много времени на их расстановку. Для уменьшения времени на расстановку картинок воспользуемся функцией расположить сцену в соответствии  с изображением.&amp;lt;br&amp;gt;&lt;br /&gt;
Функция расположить сцену в соответствии с изображением перемещает картинку  в заданную точку  художниками.   Художник решил, что клумба должна быть в правом нижнем углу, после применения функции  расположить сцену в соответствии с изображением, картинка станет именно на указанное художником место. &amp;lt;br&amp;gt;&lt;br /&gt;
Данная функция вызывается кликом правой кнопкой мыши по  объекту&amp;lt;br&amp;gt; [[Файл:панель_свойства_1.JPG|right]]&lt;br /&gt;
&lt;br /&gt;
===Функции панели Свойства===&lt;br /&gt;
&lt;br /&gt;
*При клике на  тип или имя  некоторых объектов вызываются дополнительные окна.Например, при клике на тип Machine открывается окно, где прописываются функции объекта типа Machine.&lt;br /&gt;
*При наведении на поле тип выпадет подсказка с уникальным номером объекта.&lt;br /&gt;
*При клике правой мышкой по названию свойства объекта выпадает меню с дополнительными свойствами объекта&lt;br /&gt;
*Некоторые свойства объектов объединены в группы (см. рисунок справа)&lt;br /&gt;
&lt;br /&gt;
=== Создание проекта ===&lt;br /&gt;
&lt;br /&gt;
1. Для создания нового игрового проекта необходимо запустить редактор сцен SceneEditor.&amp;lt;br&amp;gt;&lt;br /&gt;
2. В верхнем меню Проект выбрать Новый (т.е. создать новый проект).&amp;lt;br&amp;gt;&lt;br /&gt;
3. В появившемся окне указываем имя проекта и имя базы ресурсов.Выбираем папку для сохранения проекта&amp;lt;br&amp;gt;&lt;br /&gt;
4. В этом окне выбираем устройство для которого создаётся проект, а затем выбираем тип магазина и вариант версии игры&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:020.JPG]] [[Файл:021.JPG]]&lt;br /&gt;
&lt;br /&gt;
5. В редакторе сцен в меню Проект → Сохранить → проект с именем Learning.&amp;lt;br&amp;gt; &lt;br /&gt;
Эту методику действий можно брать за шаблон для создания других проектов.&amp;lt;br&amp;gt;&lt;br /&gt;
Результат: Создана база ресурсов и проект для выполнения Уроков. &lt;br /&gt;
&lt;br /&gt;
====Важное замечание по созданию проекта====&lt;br /&gt;
[[Файл:2_лэйаута.JPG|right]]&amp;lt;br&amp;gt;&lt;br /&gt;
Предположим нам необходимо создать игру для магазина А и магазина Б. Игра будет отличаться только 10 функциями. Мы можем создать игру для магазина А., а потом скопировать папку с проектом, проект переименовать, внести изменения и получить игру для магазина Б. Результат:  2 игры и 2 папки с ресурсами. Такой подход не приветствуется.&amp;lt;br&amp;gt;&lt;br /&gt;
Для уменьшения времени на создание проекта, подключение ресурсов, внесения одинаковых объектов и  удобства отслеживания багов и прочего в Редакторе Сцен существует возможность создания двух лэйаутов в одном проекте.&lt;br /&gt;
При создании проекта мы выбираем оба магазина, после чего в панели Лэйаут  появится два лэйаута для магазина А и магазина Б(см. рисунок справа. При этом текстовая база проекта и база ресурсов у них будут идентичны. При создании новых объектов в одном лэйауте они же будут создаваться и в другом, при этом можно изменять свойства объекта каждого лэйаута независимо от второго.&amp;lt;br&amp;gt;&lt;br /&gt;
За применение изменений между лэйаутами отвечает параметр &amp;quot;синхронизация&amp;quot;, который есть у каждого объекта. Если стоит &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;
*Очистка базы ресурсов от неиспользуемой графики&lt;br /&gt;
*Запаковка графики в текстуры и контейнер&lt;br /&gt;
*При необходимости конвертирование файлов в pvr форматы&amp;lt;br&amp;gt;&lt;br /&gt;
С целью экономии оперативной памяти на устройстве возможно сжатие графики, упаковка графики в текстуры, создание нескольких исполняемых файлов, проекта, содержащих в себе несколько сцен проекта, и загружаемых в оперативную память устройства по мере прохождения игры.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Процедура экспорта проекта вызывается через меню редактора Проект - Экспортировать проект&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Файл:Scene editor export window.jpg|right]]&lt;br /&gt;
'''Параметры экспорта проекта:'''&amp;lt;br&amp;gt;&lt;br /&gt;
''Настройки параметров графики''&lt;br /&gt;
*Ось Х, ось У — параметры сжатия графики по оси Х,У. Значения  параметра от 0 до 1.&lt;br /&gt;
*При выполнении сжатия рекомендуется обращать внимания на размер лэйаута&lt;br /&gt;
*Сжатие графики  возможно и непропорциональное . Используется редко&lt;br /&gt;
&lt;br /&gt;
''Параметры запаковки графики''&lt;br /&gt;
*Common textures size - максимальный размер графической текстуры для графики, которая не находится в контейнерах и попадает в одну текстуру, или максимальный размер графического файла, если он не в контейнере и не попадает в текстуру.&lt;br /&gt;
*Create dat container -  упаковка ресурсов в файл с типом DAT. Обеспечиваем защиту ресурсов проекта от несанкционированного доступа. Увеличиваем производительность при операциях чтения файлов ресурсов с твердотельного носителя.&lt;br /&gt;
*Quality - Качество графики, которая не находится в контейнерах&lt;br /&gt;
*Optimization - оптимизация графики для лучшего быстродействия(speed) или для занимаемого дискового пространства в распакованном виде(size)&lt;br /&gt;
&lt;br /&gt;
''Тип экспорта''  &lt;br /&gt;
*One project file - формируется один XML файл описывающий проект.     &lt;br /&gt;
*Split project on screens, load partly' - проект будет разбит на отдельные файлы описывающие экраны, загружаться файлы будут в порядке использования (вызова) в проекте. В результате получаем увеличение начальной загрузки проекта и использование меньшего объема оперативной памяти.&lt;br /&gt;
*Release build - оптимизация по размеру файла базы ресурсов и основного файла проекта.&lt;br /&gt;
&lt;br /&gt;
''Export to folder'' - Путь для экспорта. Если указан путь экспорта проекта - производится экспорт согласно настройкам для выбранной платформы. Если не указан - проект экспортируются под выбранную платформу и автоматически запускается сборка проекта.&lt;br /&gt;
Структура папки:&lt;br /&gt;
[[Файл:TreeFolder.png|TreeFolder.png]]&amp;lt;br&amp;gt;&lt;br /&gt;
'''Select platform''' - необходимо выбрать платформу для которой будем собирать проект. При экспорте на все платформы необходимо установить Marmalade SDK [[Установка и настройка|см. инструкцию]] при этом не нужно указывать путь для экспорта (оставить поле пустым). В результате запустится скрипт сборки исполняемого пакета, это будет видно по черным экранам с ходом выполнения процесса сборки.Процесс экспорта будет отображаться в окне.&lt;br /&gt;
&lt;br /&gt;
Таблица результирующих форматов для платформ&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
 |качество, оптимизация&lt;br /&gt;
 |IOS&lt;br /&gt;
 |Android&lt;br /&gt;
 |Windows Phone8&lt;br /&gt;
 |BlackBerry&lt;br /&gt;
 |Windows&lt;br /&gt;
 |-&lt;br /&gt;
 |Best, size&lt;br /&gt;
 |png(RGBA)&lt;br /&gt;
 |png(RGBA)&lt;br /&gt;
 |png(RGBA)&lt;br /&gt;
 |png(RGBA)&lt;br /&gt;
 |png(RGBA)&lt;br /&gt;
 |-&lt;br /&gt;
 |Best, speed&lt;br /&gt;
 |jxr&lt;br /&gt;
 |jxr&lt;br /&gt;
 |jxr&lt;br /&gt;
 |jxr&lt;br /&gt;
 |jxr&lt;br /&gt;
 |-&lt;br /&gt;
 |Medium, size&lt;br /&gt;
 |jpg + png(a)&lt;br /&gt;
 |jpg + png(a)&lt;br /&gt;
 |jpg + png(a)&lt;br /&gt;
 |jpg + png(a)&lt;br /&gt;
 |jpg + png(a)&lt;br /&gt;
 |-&lt;br /&gt;
 |Medium, speed&lt;br /&gt;
 |PVRTC + jxr&lt;br /&gt;
 |ETC1 + jxr&lt;br /&gt;
 |BC3 + hitmask&lt;br /&gt;
 |PVR8888&lt;br /&gt;
 |BC3 + hitmask&lt;br /&gt;
 |-&lt;br /&gt;
 |Low, size&lt;br /&gt;
 |PVRTC + png(a)&lt;br /&gt;
 |ETC1 + png(a)&lt;br /&gt;
 |jpg + png(a)&lt;br /&gt;
 |jpg + png(a)&lt;br /&gt;
 |jpg + png(a)&lt;br /&gt;
 |-&lt;br /&gt;
 |Low, speed&lt;br /&gt;
 |PVRTC(RGBA) + hitmask&lt;br /&gt;
 |ETC1 + PVRA8&lt;br /&gt;
 |BC3 + hitmask&lt;br /&gt;
 |PVR8888&lt;br /&gt;
 |BC3 + hitmask&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
*'''ETC''' - Ericsson Texture Compression : для устройств Android&lt;br /&gt;
*'''PVR''' - PowerVR Texture Compression : для устройств IOS&lt;br /&gt;
*'''bc3(dxt)''' -  DirectX Texture : Windows, Windows Phone 8&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Режим отладки ===&lt;br /&gt;
&lt;br /&gt;
Включение режима отладки:&lt;br /&gt;
&lt;br /&gt;
[[Файл:SE debug0.JPG]]&lt;br /&gt;
&lt;br /&gt;
Инструменты отладки:&lt;br /&gt;
&lt;br /&gt;
[[Файл:SE debug1.JPG]]&lt;br /&gt;
&lt;br /&gt;
* '''Debug dock''' - установка брейкпоинтов (точек остановки) и вывод отладочного лога от сервера.&lt;br /&gt;
* '''Logging''' - вывод логов вьювера (параллельно с viewer.log) с подсветкой и фильтрами.&lt;br /&gt;
* '''Debug Options''' - вывод дерева опций, подсветка изменений (при работе вьювера), слежение за конкретными параметрами.&lt;br /&gt;
* '''Debug Properties''' - вывод параметров объекта под курсором по хоткею (из вьювера) - на момент написания не реализовано.&lt;br /&gt;
&lt;br /&gt;
==== Debug dock ====&lt;br /&gt;
&lt;br /&gt;
[[Файл:SE debug2.JPG]]&lt;br /&gt;
&lt;br /&gt;
Принцип работы брейкпоинтов (точек остановки):&lt;br /&gt;
* Добавляем в табличку брейкпоинтов новый пункт&lt;br /&gt;
* Задает objectID интересующего объекта&lt;br /&gt;
** Задаем название состояния, при переходе на которое вьювер станет на паузу&lt;br /&gt;
** ИЛИ задаем название параметра, при изменении которого вьювер станет на паузу&lt;br /&gt;
* Запускаем вьювер с отладкой&lt;br /&gt;
*: [[Файл:SE debug3.jpg]]&lt;br /&gt;
* После перехода в заданное состояние вьювер станет за паузу, а в редактре сцен откроется окно машинки с этим состоянием.&lt;br /&gt;
&lt;br /&gt;
==== Logging ====&lt;br /&gt;
&lt;br /&gt;
[[Файл:SE debug4.JPG]]&lt;br /&gt;
&lt;br /&gt;
* Сие логирование происходит только с запущеным в режиме отладки вьювером;&lt;br /&gt;
* Логи с ворнингами выделены оранжевым цветом ('''не игнорируйте их''');&lt;br /&gt;
* Логи с ошибками выделены красным цветом ('''а их уж тем более не игнорируйте!''');&lt;br /&gt;
* Кнопка ''Clear log'' - очищает логи из данного окна;&lt;br /&gt;
* Кнопка ''(...)'' - открыть лог из файла&lt;br /&gt;
* Флаг ''Autoscroll'' - при добавлении новой записи листает список в конец&lt;br /&gt;
&lt;br /&gt;
'''Фильтрация логов'''&lt;br /&gt;
* Фильтр задается для каждого поля отдельно;&lt;br /&gt;
* Можно фильтровать по нескольким полям одновременно;&lt;br /&gt;
* Для фильтрации по какому-либо полю просто нажмите на его заглавие (Level / Time / ...)&lt;br /&gt;
* '''Как правильно задавать фильтр''':&lt;br /&gt;
** ''[value]'' - поиск по полному совпадению - будут показаны только записи, текст которых в данном поле '''равен''' ''[value]''&lt;br /&gt;
**: [[Файл:SE debug log1.jpg]]&lt;br /&gt;
** ''[value]*'' - поиск по началу строки - будут показаны только те записи, текст которых в данном поле '''начинается с''' ''[value]''&lt;br /&gt;
**: [[Файл:SE debug log2.jpg]]&lt;br /&gt;
** ''*[value]'' - поиск по окончанию строки - будут показаны только те записи, текст которых в данном поле '''заканчивается на''' ''[value]''&lt;br /&gt;
**: [[Файл:SE debug log3.jpg]]&lt;br /&gt;
** ''*[value]*'' - поиск по вхождению - будут показаны только те записи, текст которых в данном поле '''содержит''' текст ''[value]''&lt;br /&gt;
**: [[Файл:SE debug log4.jpg]]&lt;br /&gt;
** ''![filter]'' - исключение - при добавлении знака '''!''' перед фильтром (любой его вариацией), будут показаны все записи, текст которых в данном поле '''НЕ''' подходит под фильтр.&lt;br /&gt;
**: [[Файл:SE debug log5.jpg]]&lt;br /&gt;
** ''[filter1]&amp;amp;[filter2]&amp;amp;[...]'' - фильтрация по нескольким критериям - будут показаны все записи, текст которых '''подходит хотя бы под один из фильтров'''&lt;br /&gt;
**: [[Файл:SE debug log6.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Debug Options ====&lt;br /&gt;
&lt;br /&gt;
Окно ''Debug options'' предназначено для отслеживания изменений опций в реальном времени.&lt;br /&gt;
&lt;br /&gt;
[[Файл:SE debug6.JPG]]&lt;br /&gt;
&lt;br /&gt;
* Кнопка '''Refresh''' - подгружает опции из файла options.xml&lt;br /&gt;
* ''Options update'':&lt;br /&gt;
** '''Manual update''' - обновление опций '''ТОЛЬКО''' в ручном режиме (кнопкой '''Refresh''')&lt;br /&gt;
** '''Auto Update''' - обновление опций вьювером - все записи, что меняет в опциях вьювер, будут обновлены (так же всё еще можно обновить вручную)&lt;br /&gt;
** '''Timer Update''' - обновление опций по таймеру - раз в заданный период автоматически обновляет опции из файла options.xml (команды вьювера игнорируются, все изменения берутся только из файла)&lt;br /&gt;
* Кнопка '''Save options''' - создает локальную копию текущего файла с опциями (в том же каталоге, где лежит options.xml)&lt;br /&gt;
* Кнопка '''Open options filder''' - открывает папку с опциями.&lt;br /&gt;
&lt;br /&gt;
* '''All options''' - отображает все опции в виде дерева, показывает текущее значение параметров и предыдущее (если было изменено)&lt;br /&gt;
* '''Custom params''' - позволяет отслеживать изменений конкретных параметров; в поле ''Custom param tracking'' указывается тот же путь к параметру, что и в машинках:&lt;br /&gt;
*: [[Файл:SE debug7.JPG]]&lt;br /&gt;
&lt;br /&gt;
=Горячие клавиши=&lt;br /&gt;
* '''Клавиша F10''' - По нажатию разворачивает/сворачивает все объекты и подобъекты в дереве проекта или в свойствах объекта.&lt;br /&gt;
* '''Клавиша Num* и Num-''' - По нажатию разворачивают/сворачивают подобъекты у выделенного объекта в дереве проекта или в свойствах объекта.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:AppSalute]]&lt;/div&gt;</summary>
		<author><name>Bmor</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.appsalutecreator.com/index.php?title=%D0%98%D0%BD%D1%82%D0%B5%D1%80%D1%84%D0%B5%D0%B9%D1%81_ScenceEditor&amp;diff=9418</id>
		<title>Интерфейс ScenceEditor</title>
		<link rel="alternate" type="text/html" href="https://wiki.appsalutecreator.com/index.php?title=%D0%98%D0%BD%D1%82%D0%B5%D1%80%D1%84%D0%B5%D0%B9%D1%81_ScenceEditor&amp;diff=9418"/>
		<updated>2018-02-05T10:08:43Z</updated>

		<summary type="html">&lt;p&gt;Bmor: /* Режим отладки */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC right}}&lt;br /&gt;
== [[Файл:Ico_main.png]]Редактор сцен ==&lt;br /&gt;
&lt;br /&gt;
'''Редактор сцен''' — программа, предназначенная для создания, редактирования и экспорта  игровых экранов, в котором происходит настройка свойств объектов и игровой логики. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Окно редактора сцен состоит из:'''&lt;br /&gt;
*меню редактора;&lt;br /&gt;
*рабочей области, в которой размещен объект сцена, на котором размещают другие объекты;&lt;br /&gt;
*панель Лэйаут, в которой размещено иерархическое дерево проекта, которое состоит из экранов, на которых находятся игровые объекты;&lt;br /&gt;
*панель Свойства, которая отображает свойства объекта, который выбран в дереве проекта;&lt;br /&gt;
*панель для построения сплайна;&lt;br /&gt;
*панель инструментов;&lt;br /&gt;
*строка Координаты, отображающая координаты курсора в текущий момент времени&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для включения или отключения панели кликаем правой кнопкой мыши по серой области меню редактора и ставим галочку. Панели можно расположить на экране в любом порядке.&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[Файл:Головна2.PNG|700px]]&lt;br /&gt;
&lt;br /&gt;
=== Меню редактора ===&lt;br /&gt;
&lt;br /&gt;
==== Project (Проект)====&lt;br /&gt;
меню, которое содержит список команд, с помощью которых можно создать новый или загрузить уже созданный проект, сохранить проект с указанием места сохранения и т.д.&lt;br /&gt;
*'''New project''' - создать новый проект; &lt;br /&gt;
*'''Open''' - открыть уже созданный проект (проект обязательно должен находится в подкаталоге редактора); &lt;br /&gt;
*'''Recent project...''' - показывает список последних открывавшихся проектов; &lt;br /&gt;
*'''Close''' - закрытие проекта (редактор при этом не закрывается); &lt;br /&gt;
*'''New project''' - создать новый проект; &lt;br /&gt;
*'''Save''' - сохранение проекта; &lt;br /&gt;
*'''Save as...''' - сохранение проекта под новым именем или в новом каталоге; &lt;br /&gt;
*'''Export...''' - экспорт проекта; &lt;br /&gt;
*'''Project options...''' - опции проекта; &lt;br /&gt;
*'''Exit''' - закрытие редактора. &lt;br /&gt;
&lt;br /&gt;
==== Edit (Редактирование)====&lt;br /&gt;
меню редактирования проекта:&lt;br /&gt;
*'''Copy''' - копирование объекта; &lt;br /&gt;
*'''Paste into current object''' - вставка объекта в выбранный объект; &lt;br /&gt;
*'''Paste after current object''' - вставка объекта после выбранного объекта;&lt;br /&gt;
*'''Delete...''' - удаление объекта;&lt;br /&gt;
*'''Scale object''' - масштабирование выбранного объекта, если у него есть масштаб (scale x \ scale y);&lt;br /&gt;
*'''Rotate object''' - поворот выбранного объекта, если у него есть параметр поворота (angle);&lt;br /&gt;
*'''Modify vertex''' - изменение положения точек вертекса у выбранного объекта, если вертексы включены; &lt;br /&gt;
*'''Find object...''' - поиск объекта по id или по имени;&lt;br /&gt;
*'''Setup Editor...''' - настройки редактора.&lt;br /&gt;
&lt;br /&gt;
[[Файл:SetupEditor.png|right|400px]]&lt;br /&gt;
&lt;br /&gt;
1) Языки - выбор языка редактора.&lt;br /&gt;
&lt;br /&gt;
2) Work mode - выбор режима работы.&lt;br /&gt;
&lt;br /&gt;
3) Syles - выбор темы редактора.&lt;br /&gt;
&lt;br /&gt;
4) Перемещение сцены мышью или клавишами клавиатуры - позволяет перемещать сцену на экране.&lt;br /&gt;
&lt;br /&gt;
5) Рисовать сетку на экране - отображать сетку на экране или нет.&lt;br /&gt;
&lt;br /&gt;
6) Utilities - Подключение утилит.&lt;br /&gt;
&lt;br /&gt;
	В редакторе есть возможность подключения утилит в форматах *.bat, *.exe, *.py, *.pyw, *.vbs.&lt;br /&gt;
&lt;br /&gt;
	&lt;br /&gt;
	Для примера, подключим bat-файл, открывающий логи вьвера в notepad++.&lt;br /&gt;
&lt;br /&gt;
	Для этого создадим файл Logs.bat со следущими командами:&lt;br /&gt;
&lt;br /&gt;
	&lt;br /&gt;
		cd C:\Users\&amp;lt;your-user&amp;gt;\AppData\Roaming\Absolutist\Viewer&lt;br /&gt;
&lt;br /&gt;
		start &amp;quot;C:\Program Files (x86)\Notepad++\notepad++.exe&amp;quot; &amp;quot;viewer.log&amp;quot; &lt;br /&gt;
&lt;br /&gt;
		&lt;br /&gt;
	В настройки редактора добавим утилиту нажав на плюсик. В списке ниже появится поле добавленной утилиты.&lt;br /&gt;
 &lt;br /&gt;
Нажмем на многоточие в столбце &amp;quot;Browse&amp;quot;. В открывшимся окне &amp;quot;Open utility&amp;quot; откроем Logs.bat файл. После этого в меню редактора появится меню &amp;quot;Utilities&amp;quot; с командой Logs.&lt;br /&gt;
&lt;br /&gt;
==== View (Просмотр)====&lt;br /&gt;
*'''Toggle grid''' - включает\выключает отображение сетки на сцене;&lt;br /&gt;
*'''open/hide comment''' - показывает\скрывает комментарии к объекту;&lt;br /&gt;
*'''Disable object movements''' - выключает\включает возможность перемещать объекты по сцене.&lt;br /&gt;
&lt;br /&gt;
=== Viewer (Вьювер) ===&lt;br /&gt;
*'''Start Viewer''' - запуск вьювера;&lt;br /&gt;
*'''Start Viewer with changed time''' - запуск вьювера с заданным временем;&lt;br /&gt;
*'''Save and run viewer...''' - сохраняет проект и запускает вьювер;&lt;br /&gt;
*'''Run Viewer.bat''' - ???;&lt;br /&gt;
*'''Delete temp data''' - удаление опций; &lt;br /&gt;
&lt;br /&gt;
====Layouts (Лейаут, Макеты)====&lt;br /&gt;
меню работа с лейаутами проекта (выбор макета устройства для проекта, редактирование экранов):&lt;br /&gt;
*'''Add new layout...''' - создание нового лейаута;&lt;br /&gt;
*'''Delete layout...''' - удаление лейаута;&lt;br /&gt;
*'''Layout settings...''' - настройки лейаута;&lt;br /&gt;
*'''Add folder...''' - создание папки в текущем лейаута;&lt;br /&gt;
*'''Add screen...''' - создание нового экрана.&lt;br /&gt;
==== Tools (Инструменты)====&lt;br /&gt;
меню дополнительных редакторов и инструментов для проекта (вызов редактора ресурсов, текстового редактора, анализ проекта). Список этого меню вынесен на панель с кнопками быстрого запуска:&lt;br /&gt;
*'''Resources Editor''' - редактор ресурсов;&lt;br /&gt;
*'''Texts Editor''' - текстовый редактор;&lt;br /&gt;
*'''Analyzer''' - анализатор ресурсов (показывает количество объектов проекта, их размер занимаемой памяти, сведения о ресурсах каждого объекта (размер, ID номер, название (имя), местонахождение в базе ресурсов));&lt;br /&gt;
*'''Object info...''' - общие свойства объекта (показывает размер памяти занимаемой текстурами);&lt;br /&gt;
*'''Options info...''' - информация об опциях.&lt;br /&gt;
&lt;br /&gt;
==== Help (Помощь)====&lt;br /&gt;
меню вызова справки.&lt;br /&gt;
&lt;br /&gt;
=== Кнопки панели Инструменты ===&lt;br /&gt;
Некоторые инструменты также вызываются горячими клавишами (комбинация клавиш приведена в скобках )&lt;br /&gt;
&lt;br /&gt;
[[Файл:00 6.png]] (Ctrl+N) — создать новый проект; &amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:00 7.png]](Ctrl+O) — загрузить уже созданный проект;&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:00 8.png]](Ctrl+S) — сохранить изменения в проекте;&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:00 9.png]] —  запустить Viewer;&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:009.JPG]] — нормальный вид; &amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:Ico_text.png|25px]] - вызов текстового редактора; &amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:Ico_base.png|25px]] — вызов редактора ресурсов;&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:013.JPG]] — анализатор ресурсов (показывает количество объектов проекта, их размер занимаемой памяти, сведения о ресурсах каждого объекта (размер, ID номер, название (имя), местонахождение в базе ресурсов)); &amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:014.JPG]]— поиск объекта по id или по имени.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Функции рабочей области===&lt;br /&gt;
&lt;br /&gt;
'''1) Масштабирование рабочей области&amp;lt;br&amp;gt;'''&lt;br /&gt;
Ctrl + колесико мышки   крутим  вперед  - увеличиваем объекты  , назад  - уменьшаем объекты.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''2)Перемещение по рабочей области&amp;lt;br&amp;gt;'''&lt;br /&gt;
После масштабирования возникает необходимость переместиться  с левого  уголка экрана в далекий правый, переместиться к выбраному обьекту, вверх или вниз.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Кликаем правой кнопкой мыши по горизонтальному scroll и выпадает меню: &lt;br /&gt;
*scroll here —  функция перемещает экран к объекту, который выделен в Лэйауте;&lt;br /&gt;
*scroll left / right  -  функция перемещает экран на маленькое расстояние вправо / влево;&lt;br /&gt;
*left  / right edge — функция  перемещает экран в левый / правый угол экрана;&lt;br /&gt;
*page left / right  - функция показывает левую/правую часть экрана&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Кликаем правой кнопкой мыши по вертикальному scroll и выпадает меню: &lt;br /&gt;
*scroll here —  функция перемещает экран к объекту, который выделен в Лэйауте;&lt;br /&gt;
*scroll up / down  -  функция перемещает экран на маленькое расстояние вверх / вниз;&lt;br /&gt;
*top/bottom  - функция  перемещает экран вверх / вниз;&lt;br /&gt;
*page up / down  - функция перемещает экран  верхнюю / нижнюю часть экрана.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Меню прокрутки скрывается по нажатию клавиши Alt&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Функции панели Лэйаут===&lt;br /&gt;
[[Файл:Лэйаут_1.JPG|right]] &lt;br /&gt;
При клике правой кнопкой мыши по выбранному лэйауту (см. рисунок справа)&lt;br /&gt;
*Создать папку в текущем объекте;&lt;br /&gt;
*Создать экран в текущем объекте -  создание объекта в текущем лэйауте;&lt;br /&gt;
*Импорт/экспорт экранов — импорт/экспорт одного или нескольких экранов;&lt;br /&gt;
*Развернуть / Свернуть объекты с подобъектами — сворачивает  / разворачивает дерево объектов всех экранов&amp;lt;br&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
При клике правой кнопкой мыши по выбранному экрану, сцене или объекту возможно:&lt;br /&gt;
*Lock (Unlock) screen -  золочивание (разлочивание) экрана: нельзя перемещать, удалять и изменять объекты (сцены) экрана, причем, если сцена расшареная, то она становиться залоченой и на остальных экранах; на залоченых экранах в панели проекта появляется замочек; &lt;br /&gt;
*Lock (Unlock) scene -  золочивание (разлочивание) сцены: нельзя перемещать, удалять и изменять объекты (машины, картинки и др.) сцены, причем, если сцена расшареная, то она становиться залоченой и на остальных экранах; на залоченых сценах также появляется замочек; &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;
Пусть на сцене будет находится очень много картинок, которые должны находиться в строго определенных местах. Переместим нашу картинку в нужную точку на сцене. Но у нас картинок очень много и мы потратим много времени на их расстановку. Для уменьшения времени на расстановку картинок воспользуемся функцией расположить сцену в соответствии  с изображением.&amp;lt;br&amp;gt;&lt;br /&gt;
Функция расположить сцену в соответствии с изображением перемещает картинку  в заданную точку  художниками.   Художник решил, что клумба должна быть в правом нижнем углу, после применения функции  расположить сцену в соответствии с изображением, картинка станет именно на указанное художником место. &amp;lt;br&amp;gt;&lt;br /&gt;
Данная функция вызывается кликом правой кнопкой мыши по  объекту&amp;lt;br&amp;gt; [[Файл:панель_свойства_1.JPG|right]]&lt;br /&gt;
&lt;br /&gt;
===Функции панели Свойства===&lt;br /&gt;
&lt;br /&gt;
*При клике на  тип или имя  некоторых объектов вызываются дополнительные окна.Например, при клике на тип Machine открывается окно, где прописываются функции объекта типа Machine.&lt;br /&gt;
*При наведении на поле тип выпадет подсказка с уникальным номером объекта.&lt;br /&gt;
*При клике правой мышкой по названию свойства объекта выпадает меню с дополнительными свойствами объекта&lt;br /&gt;
*Некоторые свойства объектов объединены в группы (см. рисунок справа)&lt;br /&gt;
&lt;br /&gt;
=== Создание проекта ===&lt;br /&gt;
&lt;br /&gt;
1. Для создания нового игрового проекта необходимо запустить редактор сцен SceneEditor.&amp;lt;br&amp;gt;&lt;br /&gt;
2. В верхнем меню Проект выбрать Новый (т.е. создать новый проект).&amp;lt;br&amp;gt;&lt;br /&gt;
3. В появившемся окне указываем имя проекта и имя базы ресурсов.Выбираем папку для сохранения проекта&amp;lt;br&amp;gt;&lt;br /&gt;
4. В этом окне выбираем устройство для которого создаётся проект, а затем выбираем тип магазина и вариант версии игры&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:020.JPG]] [[Файл:021.JPG]]&lt;br /&gt;
&lt;br /&gt;
5. В редакторе сцен в меню Проект → Сохранить → проект с именем Learning.&amp;lt;br&amp;gt; &lt;br /&gt;
Эту методику действий можно брать за шаблон для создания других проектов.&amp;lt;br&amp;gt;&lt;br /&gt;
Результат: Создана база ресурсов и проект для выполнения Уроков. &lt;br /&gt;
&lt;br /&gt;
====Важное замечание по созданию проекта====&lt;br /&gt;
[[Файл:2_лэйаута.JPG|right]]&amp;lt;br&amp;gt;&lt;br /&gt;
Предположим нам необходимо создать игру для магазина А и магазина Б. Игра будет отличаться только 10 функциями. Мы можем создать игру для магазина А., а потом скопировать папку с проектом, проект переименовать, внести изменения и получить игру для магазина Б. Результат:  2 игры и 2 папки с ресурсами. Такой подход не приветствуется.&amp;lt;br&amp;gt;&lt;br /&gt;
Для уменьшения времени на создание проекта, подключение ресурсов, внесения одинаковых объектов и  удобства отслеживания багов и прочего в Редакторе Сцен существует возможность создания двух лэйаутов в одном проекте.&lt;br /&gt;
При создании проекта мы выбираем оба магазина, после чего в панели Лэйаут  появится два лэйаута для магазина А и магазина Б(см. рисунок справа. При этом текстовая база проекта и база ресурсов у них будут идентичны. При создании новых объектов в одном лэйауте они же будут создаваться и в другом, при этом можно изменять свойства объекта каждого лэйаута независимо от второго.&amp;lt;br&amp;gt;&lt;br /&gt;
За применение изменений между лэйаутами отвечает параметр &amp;quot;синхронизация&amp;quot;, который есть у каждого объекта. Если стоит &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;
*Очистка базы ресурсов от неиспользуемой графики&lt;br /&gt;
*Запаковка графики в текстуры и контейнер&lt;br /&gt;
*При необходимости конвертирование файлов в pvr форматы&amp;lt;br&amp;gt;&lt;br /&gt;
С целью экономии оперативной памяти на устройстве возможно сжатие графики, упаковка графики в текстуры, создание нескольких исполняемых файлов, проекта, содержащих в себе несколько сцен проекта, и загружаемых в оперативную память устройства по мере прохождения игры.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Процедура экспорта проекта вызывается через меню редактора Проект - Экспортировать проект&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Файл:Scene editor export window.jpg|right]]&lt;br /&gt;
'''Параметры экспорта проекта:'''&amp;lt;br&amp;gt;&lt;br /&gt;
''Настройки параметров графики''&lt;br /&gt;
*Ось Х, ось У — параметры сжатия графики по оси Х,У. Значения  параметра от 0 до 1.&lt;br /&gt;
*При выполнении сжатия рекомендуется обращать внимания на размер лэйаута&lt;br /&gt;
*Сжатие графики  возможно и непропорциональное . Используется редко&lt;br /&gt;
&lt;br /&gt;
''Параметры запаковки графики''&lt;br /&gt;
*Common textures size - максимальный размер графической текстуры для графики, которая не находится в контейнерах и попадает в одну текстуру, или максимальный размер графического файла, если он не в контейнере и не попадает в текстуру.&lt;br /&gt;
*Create dat container -  упаковка ресурсов в файл с типом DAT. Обеспечиваем защиту ресурсов проекта от несанкционированного доступа. Увеличиваем производительность при операциях чтения файлов ресурсов с твердотельного носителя.&lt;br /&gt;
*Quality - Качество графики, которая не находится в контейнерах&lt;br /&gt;
*Optimization - оптимизация графики для лучшего быстродействия(speed) или для занимаемого дискового пространства в распакованном виде(size)&lt;br /&gt;
&lt;br /&gt;
''Тип экспорта''  &lt;br /&gt;
*One project file - формируется один XML файл описывающий проект.     &lt;br /&gt;
*Split project on screens, load partly' - проект будет разбит на отдельные файлы описывающие экраны, загружаться файлы будут в порядке использования (вызова) в проекте. В результате получаем увеличение начальной загрузки проекта и использование меньшего объема оперативной памяти.&lt;br /&gt;
*Release build - оптимизация по размеру файла базы ресурсов и основного файла проекта.&lt;br /&gt;
&lt;br /&gt;
''Export to folder'' - Путь для экспорта. Если указан путь экспорта проекта - производится экспорт согласно настройкам для выбранной платформы. Если не указан - проект экспортируются под выбранную платформу и автоматически запускается сборка проекта.&lt;br /&gt;
Структура папки:&lt;br /&gt;
[[Файл:TreeFolder.png|TreeFolder.png]]&amp;lt;br&amp;gt;&lt;br /&gt;
'''Select platform''' - необходимо выбрать платформу для которой будем собирать проект. При экспорте на все платформы необходимо установить Marmalade SDK [[Установка и настройка|см. инструкцию]] при этом не нужно указывать путь для экспорта (оставить поле пустым). В результате запустится скрипт сборки исполняемого пакета, это будет видно по черным экранам с ходом выполнения процесса сборки.Процесс экспорта будет отображаться в окне.&lt;br /&gt;
&lt;br /&gt;
Таблица результирующих форматов для платформ&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
 |качество, оптимизация&lt;br /&gt;
 |IOS&lt;br /&gt;
 |Android&lt;br /&gt;
 |Windows Phone8&lt;br /&gt;
 |BlackBerry&lt;br /&gt;
 |Windows&lt;br /&gt;
 |-&lt;br /&gt;
 |Best, size&lt;br /&gt;
 |png(RGBA)&lt;br /&gt;
 |png(RGBA)&lt;br /&gt;
 |png(RGBA)&lt;br /&gt;
 |png(RGBA)&lt;br /&gt;
 |png(RGBA)&lt;br /&gt;
 |-&lt;br /&gt;
 |Best, speed&lt;br /&gt;
 |jxr&lt;br /&gt;
 |jxr&lt;br /&gt;
 |jxr&lt;br /&gt;
 |jxr&lt;br /&gt;
 |jxr&lt;br /&gt;
 |-&lt;br /&gt;
 |Medium, size&lt;br /&gt;
 |jpg + png(a)&lt;br /&gt;
 |jpg + png(a)&lt;br /&gt;
 |jpg + png(a)&lt;br /&gt;
 |jpg + png(a)&lt;br /&gt;
 |jpg + png(a)&lt;br /&gt;
 |-&lt;br /&gt;
 |Medium, speed&lt;br /&gt;
 |PVRTC + jxr&lt;br /&gt;
 |ETC1 + jxr&lt;br /&gt;
 |BC3 + hitmask&lt;br /&gt;
 |PVR8888&lt;br /&gt;
 |BC3 + hitmask&lt;br /&gt;
 |-&lt;br /&gt;
 |Low, size&lt;br /&gt;
 |PVRTC + png(a)&lt;br /&gt;
 |ETC1 + png(a)&lt;br /&gt;
 |jpg + png(a)&lt;br /&gt;
 |jpg + png(a)&lt;br /&gt;
 |jpg + png(a)&lt;br /&gt;
 |-&lt;br /&gt;
 |Low, speed&lt;br /&gt;
 |PVRTC(RGBA) + hitmask&lt;br /&gt;
 |ETC1 + PVRA8&lt;br /&gt;
 |BC3 + hitmask&lt;br /&gt;
 |PVR8888&lt;br /&gt;
 |BC3 + hitmask&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
*'''ETC''' - Ericsson Texture Compression : для устройств Android&lt;br /&gt;
*'''PVR''' - PowerVR Texture Compression : для устройств IOS&lt;br /&gt;
*'''bc3(dxt)''' -  DirectX Texture : Windows, Windows Phone 8&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Режим отладки ===&lt;br /&gt;
&lt;br /&gt;
Включение режима отладки:&lt;br /&gt;
&lt;br /&gt;
[[Файл:SE debug0.JPG]]&lt;br /&gt;
&lt;br /&gt;
Инструменты отладки:&lt;br /&gt;
&lt;br /&gt;
[[Файл:SE debug1.JPG]]&lt;br /&gt;
&lt;br /&gt;
* '''Debug dock''' - установка брейкпоинтов (точек остановки) и вывод отладочного лога от сервера.&lt;br /&gt;
* '''Logging''' - вывод логов вьювера (параллельно с viewer.log) с подсветкой и фильтрами.&lt;br /&gt;
* '''Debug Options''' - вывод дерева опций, подсветка изменений (при работе вьювера), слежение за конкретными параметрами.&lt;br /&gt;
* '''Debug Properties''' - вывод параметров объекта под курсором по хоткею (из вьювера) - на момент написания не реализовано.&lt;br /&gt;
&lt;br /&gt;
==== Debug dock ====&lt;br /&gt;
&lt;br /&gt;
[[Файл:SE debug2.JPG]]&lt;br /&gt;
&lt;br /&gt;
Принцип работы брейкпоинтов (точек остановки):&lt;br /&gt;
* Добавляем в табличку брейкпоинтов новый пункт&lt;br /&gt;
* Задает objectID интересующего объекта&lt;br /&gt;
** Задаем название состояния, при переходе на которое вьювер станет на паузу&lt;br /&gt;
** ИЛИ задаем название параметра, при изменении которого вьювер станет на паузу&lt;br /&gt;
* Запускаем вьювер с отладкой&lt;br /&gt;
*: [[Файл:SE debug3.jpg]]&lt;br /&gt;
* После перехода в заданное состояние вьювер станет за паузу, а в редактре сцен откроется окно машинки с этим состоянием.&lt;br /&gt;
&lt;br /&gt;
==== Logging ====&lt;br /&gt;
&lt;br /&gt;
[[Файл:SE debug4.JPG]]&lt;br /&gt;
&lt;br /&gt;
* Сие логирование происходит только с запущеным в режиме отладки вьювером;&lt;br /&gt;
* Логи с ворнингами выделены оранжевым цветом ('''не игнорируйте их''');&lt;br /&gt;
* Логи с ошибками выделены красным цветом ('''а их уж тем более не игнорируйте!''');&lt;br /&gt;
* Кнопка ''Clear log'' - очищает логи из данного окна;&lt;br /&gt;
* Кнопка ''(...)'' - открыть лог из файла&lt;br /&gt;
* Флаг ''Autoscroll'' - при добавлении новой записи листает список в конец&lt;br /&gt;
&lt;br /&gt;
'''Фильтрация логов'''&lt;br /&gt;
* Фильтр задается для каждого поля отдельно;&lt;br /&gt;
* Можно фильтровать по нескольким полям одновременно;&lt;br /&gt;
* Для фильтрации по какому-либо полю просто нажмите на его заглавие (Level / Time / ...)&lt;br /&gt;
* '''Как правильно задавать фильтр''':&lt;br /&gt;
** ''[value]'' - поиск по полному совпадению - будут показаны только записи, текст которых в данном поле '''равен''' ''[value]''&lt;br /&gt;
**: [[Файл:SE debug log1.jpg]]&lt;br /&gt;
** ''[value]*'' - поиск по началу строки - будут показаны только те записи, текст которых в данном поле '''начинается с''' ''[value]''&lt;br /&gt;
**: [[Файл:SE debug log2.jpg]]&lt;br /&gt;
** ''*[value]'' - поиск по окончанию строки - будут показаны только те записи, текст которых в данном поле '''заканчивается на''' ''[value]''&lt;br /&gt;
**: [[Файл:SE debug log3.jpg]]&lt;br /&gt;
** ''*[value]*'' - поиск по вхождению - будут показаны только те записи, текст которых в данном поле '''содержит''' текст ''[value]''&lt;br /&gt;
**: [[Файл:SE debug log4.jpg]]&lt;br /&gt;
** ''![filter]'' - исключение - при добавлении знака '''!''' перед фильтром (любой его вариацией), будут показаны все записи, текст которых в данном поле '''НЕ''' подходит под фильтр.&lt;br /&gt;
**: [[Файл:SE debug log5.jpg]]&lt;br /&gt;
** ''[filter1]&amp;amp;[filter2]&amp;amp;[...]'' - фильтрация по нескольким критериям - будут показаны все записи, текст которых '''подходит хотя бы под один из фильтров'''&lt;br /&gt;
**: [[Файл:SE debug log6.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Debug Options ====&lt;br /&gt;
&lt;br /&gt;
Окно ''Debug options'' предназначено для отслеживания изменений опций в реальном времени.&lt;br /&gt;
&lt;br /&gt;
[[Файл:SE debug6.JPG|right]]&lt;br /&gt;
&lt;br /&gt;
* Кнопка '''Refresh''' - подгружает опции из файла options.xml&lt;br /&gt;
* ''Options update'':&lt;br /&gt;
** '''Manual update''' - обновление опций '''ТОЛЬКО''' в ручном режиме (кнопкой '''Refresh''')&lt;br /&gt;
** '''Auto Update''' - обновление опций вьювером - все записи, что меняет в опциях вьювер, будут обновлены (так же всё еще можно обновить вручную)&lt;br /&gt;
** '''Timer Update''' - обновление опций по таймеру - раз в заданный период автоматически обновляет опции из файла options.xml (команды вьювера игнорируются, все изменения берутся только из файла)&lt;br /&gt;
* Кнопка '''Save options''' - создает локальную копию текущего файла с опциями (в том же каталоге, где лежит options.xml)&lt;br /&gt;
* Кнопка '''Open options filder''' - открывает папку с опциями.&lt;br /&gt;
&lt;br /&gt;
* '''All options''' - отображает все опции в виде дерева, показывает текущее значение параметров и предыдущее (если было изменено)&lt;br /&gt;
* '''Custom params''' - позволяет отслеживать изменений конкретных параметров; в поле ''Custom param tracking'' указывается тот же путь к параметру, что и в машинках:&lt;br /&gt;
*: [[Файл:SE debug7.JPG]]&lt;br /&gt;
&lt;br /&gt;
=Горячие клавиши=&lt;br /&gt;
* '''Клавиша F10''' - По нажатию разворачивает/сворачивает все объекты и подобъекты в дереве проекта или в свойствах объекта.&lt;br /&gt;
* '''Клавиша Num* и Num-''' - По нажатию разворачивают/сворачивают подобъекты у выделенного объекта в дереве проекта или в свойствах объекта.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:AppSalute]]&lt;/div&gt;</summary>
		<author><name>Bmor</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.appsalutecreator.com/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:SE_debug7.JPG&amp;diff=9417</id>
		<title>Файл:SE debug7.JPG</title>
		<link rel="alternate" type="text/html" href="https://wiki.appsalutecreator.com/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:SE_debug7.JPG&amp;diff=9417"/>
		<updated>2018-02-05T10:08:27Z</updated>

		<summary type="html">&lt;p&gt;Bmor: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Bmor</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.appsalutecreator.com/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:SE_debug6.JPG&amp;diff=9416</id>
		<title>Файл:SE debug6.JPG</title>
		<link rel="alternate" type="text/html" href="https://wiki.appsalutecreator.com/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:SE_debug6.JPG&amp;diff=9416"/>
		<updated>2018-02-05T10:02:25Z</updated>

		<summary type="html">&lt;p&gt;Bmor: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Bmor</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.appsalutecreator.com/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:SE_debug5.JPG&amp;diff=9415</id>
		<title>Файл:SE debug5.JPG</title>
		<link rel="alternate" type="text/html" href="https://wiki.appsalutecreator.com/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:SE_debug5.JPG&amp;diff=9415"/>
		<updated>2018-02-05T10:01:54Z</updated>

		<summary type="html">&lt;p&gt;Bmor: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Bmor</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.appsalutecreator.com/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:SE_debug4.JPG&amp;diff=9414</id>
		<title>Файл:SE debug4.JPG</title>
		<link rel="alternate" type="text/html" href="https://wiki.appsalutecreator.com/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:SE_debug4.JPG&amp;diff=9414"/>
		<updated>2018-02-05T10:01:20Z</updated>

		<summary type="html">&lt;p&gt;Bmor: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Bmor</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.appsalutecreator.com/index.php?title=%D0%98%D0%BD%D1%82%D0%B5%D1%80%D1%84%D0%B5%D0%B9%D1%81_ScenceEditor&amp;diff=9413</id>
		<title>Интерфейс ScenceEditor</title>
		<link rel="alternate" type="text/html" href="https://wiki.appsalutecreator.com/index.php?title=%D0%98%D0%BD%D1%82%D0%B5%D1%80%D1%84%D0%B5%D0%B9%D1%81_ScenceEditor&amp;diff=9413"/>
		<updated>2018-02-05T09:44:05Z</updated>

		<summary type="html">&lt;p&gt;Bmor: /* Logging */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC right}}&lt;br /&gt;
== [[Файл:Ico_main.png]]Редактор сцен ==&lt;br /&gt;
&lt;br /&gt;
'''Редактор сцен''' — программа, предназначенная для создания, редактирования и экспорта  игровых экранов, в котором происходит настройка свойств объектов и игровой логики. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Окно редактора сцен состоит из:'''&lt;br /&gt;
*меню редактора;&lt;br /&gt;
*рабочей области, в которой размещен объект сцена, на котором размещают другие объекты;&lt;br /&gt;
*панель Лэйаут, в которой размещено иерархическое дерево проекта, которое состоит из экранов, на которых находятся игровые объекты;&lt;br /&gt;
*панель Свойства, которая отображает свойства объекта, который выбран в дереве проекта;&lt;br /&gt;
*панель для построения сплайна;&lt;br /&gt;
*панель инструментов;&lt;br /&gt;
*строка Координаты, отображающая координаты курсора в текущий момент времени&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для включения или отключения панели кликаем правой кнопкой мыши по серой области меню редактора и ставим галочку. Панели можно расположить на экране в любом порядке.&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[Файл:Головна2.PNG|700px]]&lt;br /&gt;
&lt;br /&gt;
=== Меню редактора ===&lt;br /&gt;
&lt;br /&gt;
==== Project (Проект)====&lt;br /&gt;
меню, которое содержит список команд, с помощью которых можно создать новый или загрузить уже созданный проект, сохранить проект с указанием места сохранения и т.д.&lt;br /&gt;
*'''New project''' - создать новый проект; &lt;br /&gt;
*'''Open''' - открыть уже созданный проект (проект обязательно должен находится в подкаталоге редактора); &lt;br /&gt;
*'''Recent project...''' - показывает список последних открывавшихся проектов; &lt;br /&gt;
*'''Close''' - закрытие проекта (редактор при этом не закрывается); &lt;br /&gt;
*'''New project''' - создать новый проект; &lt;br /&gt;
*'''Save''' - сохранение проекта; &lt;br /&gt;
*'''Save as...''' - сохранение проекта под новым именем или в новом каталоге; &lt;br /&gt;
*'''Export...''' - экспорт проекта; &lt;br /&gt;
*'''Project options...''' - опции проекта; &lt;br /&gt;
*'''Exit''' - закрытие редактора. &lt;br /&gt;
&lt;br /&gt;
==== Edit (Редактирование)====&lt;br /&gt;
меню редактирования проекта:&lt;br /&gt;
*'''Copy''' - копирование объекта; &lt;br /&gt;
*'''Paste into current object''' - вставка объекта в выбранный объект; &lt;br /&gt;
*'''Paste after current object''' - вставка объекта после выбранного объекта;&lt;br /&gt;
*'''Delete...''' - удаление объекта;&lt;br /&gt;
*'''Scale object''' - масштабирование выбранного объекта, если у него есть масштаб (scale x \ scale y);&lt;br /&gt;
*'''Rotate object''' - поворот выбранного объекта, если у него есть параметр поворота (angle);&lt;br /&gt;
*'''Modify vertex''' - изменение положения точек вертекса у выбранного объекта, если вертексы включены; &lt;br /&gt;
*'''Find object...''' - поиск объекта по id или по имени;&lt;br /&gt;
*'''Setup Editor...''' - настройки редактора.&lt;br /&gt;
&lt;br /&gt;
[[Файл:SetupEditor.png|right|400px]]&lt;br /&gt;
&lt;br /&gt;
1) Языки - выбор языка редактора.&lt;br /&gt;
&lt;br /&gt;
2) Work mode - выбор режима работы.&lt;br /&gt;
&lt;br /&gt;
3) Syles - выбор темы редактора.&lt;br /&gt;
&lt;br /&gt;
4) Перемещение сцены мышью или клавишами клавиатуры - позволяет перемещать сцену на экране.&lt;br /&gt;
&lt;br /&gt;
5) Рисовать сетку на экране - отображать сетку на экране или нет.&lt;br /&gt;
&lt;br /&gt;
6) Utilities - Подключение утилит.&lt;br /&gt;
&lt;br /&gt;
	В редакторе есть возможность подключения утилит в форматах *.bat, *.exe, *.py, *.pyw, *.vbs.&lt;br /&gt;
&lt;br /&gt;
	&lt;br /&gt;
	Для примера, подключим bat-файл, открывающий логи вьвера в notepad++.&lt;br /&gt;
&lt;br /&gt;
	Для этого создадим файл Logs.bat со следущими командами:&lt;br /&gt;
&lt;br /&gt;
	&lt;br /&gt;
		cd C:\Users\&amp;lt;your-user&amp;gt;\AppData\Roaming\Absolutist\Viewer&lt;br /&gt;
&lt;br /&gt;
		start &amp;quot;C:\Program Files (x86)\Notepad++\notepad++.exe&amp;quot; &amp;quot;viewer.log&amp;quot; &lt;br /&gt;
&lt;br /&gt;
		&lt;br /&gt;
	В настройки редактора добавим утилиту нажав на плюсик. В списке ниже появится поле добавленной утилиты.&lt;br /&gt;
 &lt;br /&gt;
Нажмем на многоточие в столбце &amp;quot;Browse&amp;quot;. В открывшимся окне &amp;quot;Open utility&amp;quot; откроем Logs.bat файл. После этого в меню редактора появится меню &amp;quot;Utilities&amp;quot; с командой Logs.&lt;br /&gt;
&lt;br /&gt;
==== View (Просмотр)====&lt;br /&gt;
*'''Toggle grid''' - включает\выключает отображение сетки на сцене;&lt;br /&gt;
*'''open/hide comment''' - показывает\скрывает комментарии к объекту;&lt;br /&gt;
*'''Disable object movements''' - выключает\включает возможность перемещать объекты по сцене.&lt;br /&gt;
&lt;br /&gt;
=== Viewer (Вьювер) ===&lt;br /&gt;
*'''Start Viewer''' - запуск вьювера;&lt;br /&gt;
*'''Start Viewer with changed time''' - запуск вьювера с заданным временем;&lt;br /&gt;
*'''Save and run viewer...''' - сохраняет проект и запускает вьювер;&lt;br /&gt;
*'''Run Viewer.bat''' - ???;&lt;br /&gt;
*'''Delete temp data''' - удаление опций; &lt;br /&gt;
&lt;br /&gt;
====Layouts (Лейаут, Макеты)====&lt;br /&gt;
меню работа с лейаутами проекта (выбор макета устройства для проекта, редактирование экранов):&lt;br /&gt;
*'''Add new layout...''' - создание нового лейаута;&lt;br /&gt;
*'''Delete layout...''' - удаление лейаута;&lt;br /&gt;
*'''Layout settings...''' - настройки лейаута;&lt;br /&gt;
*'''Add folder...''' - создание папки в текущем лейаута;&lt;br /&gt;
*'''Add screen...''' - создание нового экрана.&lt;br /&gt;
==== Tools (Инструменты)====&lt;br /&gt;
меню дополнительных редакторов и инструментов для проекта (вызов редактора ресурсов, текстового редактора, анализ проекта). Список этого меню вынесен на панель с кнопками быстрого запуска:&lt;br /&gt;
*'''Resources Editor''' - редактор ресурсов;&lt;br /&gt;
*'''Texts Editor''' - текстовый редактор;&lt;br /&gt;
*'''Analyzer''' - анализатор ресурсов (показывает количество объектов проекта, их размер занимаемой памяти, сведения о ресурсах каждого объекта (размер, ID номер, название (имя), местонахождение в базе ресурсов));&lt;br /&gt;
*'''Object info...''' - общие свойства объекта (показывает размер памяти занимаемой текстурами);&lt;br /&gt;
*'''Options info...''' - информация об опциях.&lt;br /&gt;
&lt;br /&gt;
==== Help (Помощь)====&lt;br /&gt;
меню вызова справки.&lt;br /&gt;
&lt;br /&gt;
=== Кнопки панели Инструменты ===&lt;br /&gt;
Некоторые инструменты также вызываются горячими клавишами (комбинация клавиш приведена в скобках )&lt;br /&gt;
&lt;br /&gt;
[[Файл:00 6.png]] (Ctrl+N) — создать новый проект; &amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:00 7.png]](Ctrl+O) — загрузить уже созданный проект;&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:00 8.png]](Ctrl+S) — сохранить изменения в проекте;&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:00 9.png]] —  запустить Viewer;&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:009.JPG]] — нормальный вид; &amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:Ico_text.png|25px]] - вызов текстового редактора; &amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:Ico_base.png|25px]] — вызов редактора ресурсов;&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:013.JPG]] — анализатор ресурсов (показывает количество объектов проекта, их размер занимаемой памяти, сведения о ресурсах каждого объекта (размер, ID номер, название (имя), местонахождение в базе ресурсов)); &amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:014.JPG]]— поиск объекта по id или по имени.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Функции рабочей области===&lt;br /&gt;
&lt;br /&gt;
'''1) Масштабирование рабочей области&amp;lt;br&amp;gt;'''&lt;br /&gt;
Ctrl + колесико мышки   крутим  вперед  - увеличиваем объекты  , назад  - уменьшаем объекты.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''2)Перемещение по рабочей области&amp;lt;br&amp;gt;'''&lt;br /&gt;
После масштабирования возникает необходимость переместиться  с левого  уголка экрана в далекий правый, переместиться к выбраному обьекту, вверх или вниз.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Кликаем правой кнопкой мыши по горизонтальному scroll и выпадает меню: &lt;br /&gt;
*scroll here —  функция перемещает экран к объекту, который выделен в Лэйауте;&lt;br /&gt;
*scroll left / right  -  функция перемещает экран на маленькое расстояние вправо / влево;&lt;br /&gt;
*left  / right edge — функция  перемещает экран в левый / правый угол экрана;&lt;br /&gt;
*page left / right  - функция показывает левую/правую часть экрана&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Кликаем правой кнопкой мыши по вертикальному scroll и выпадает меню: &lt;br /&gt;
*scroll here —  функция перемещает экран к объекту, который выделен в Лэйауте;&lt;br /&gt;
*scroll up / down  -  функция перемещает экран на маленькое расстояние вверх / вниз;&lt;br /&gt;
*top/bottom  - функция  перемещает экран вверх / вниз;&lt;br /&gt;
*page up / down  - функция перемещает экран  верхнюю / нижнюю часть экрана.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Меню прокрутки скрывается по нажатию клавиши Alt&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Функции панели Лэйаут===&lt;br /&gt;
[[Файл:Лэйаут_1.JPG|right]] &lt;br /&gt;
При клике правой кнопкой мыши по выбранному лэйауту (см. рисунок справа)&lt;br /&gt;
*Создать папку в текущем объекте;&lt;br /&gt;
*Создать экран в текущем объекте -  создание объекта в текущем лэйауте;&lt;br /&gt;
*Импорт/экспорт экранов — импорт/экспорт одного или нескольких экранов;&lt;br /&gt;
*Развернуть / Свернуть объекты с подобъектами — сворачивает  / разворачивает дерево объектов всех экранов&amp;lt;br&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
При клике правой кнопкой мыши по выбранному экрану, сцене или объекту возможно:&lt;br /&gt;
*Lock (Unlock) screen -  золочивание (разлочивание) экрана: нельзя перемещать, удалять и изменять объекты (сцены) экрана, причем, если сцена расшареная, то она становиться залоченой и на остальных экранах; на залоченых экранах в панели проекта появляется замочек; &lt;br /&gt;
*Lock (Unlock) scene -  золочивание (разлочивание) сцены: нельзя перемещать, удалять и изменять объекты (машины, картинки и др.) сцены, причем, если сцена расшареная, то она становиться залоченой и на остальных экранах; на залоченых сценах также появляется замочек; &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;
Пусть на сцене будет находится очень много картинок, которые должны находиться в строго определенных местах. Переместим нашу картинку в нужную точку на сцене. Но у нас картинок очень много и мы потратим много времени на их расстановку. Для уменьшения времени на расстановку картинок воспользуемся функцией расположить сцену в соответствии  с изображением.&amp;lt;br&amp;gt;&lt;br /&gt;
Функция расположить сцену в соответствии с изображением перемещает картинку  в заданную точку  художниками.   Художник решил, что клумба должна быть в правом нижнем углу, после применения функции  расположить сцену в соответствии с изображением, картинка станет именно на указанное художником место. &amp;lt;br&amp;gt;&lt;br /&gt;
Данная функция вызывается кликом правой кнопкой мыши по  объекту&amp;lt;br&amp;gt; [[Файл:панель_свойства_1.JPG|right]]&lt;br /&gt;
&lt;br /&gt;
===Функции панели Свойства===&lt;br /&gt;
&lt;br /&gt;
*При клике на  тип или имя  некоторых объектов вызываются дополнительные окна.Например, при клике на тип Machine открывается окно, где прописываются функции объекта типа Machine.&lt;br /&gt;
*При наведении на поле тип выпадет подсказка с уникальным номером объекта.&lt;br /&gt;
*При клике правой мышкой по названию свойства объекта выпадает меню с дополнительными свойствами объекта&lt;br /&gt;
*Некоторые свойства объектов объединены в группы (см. рисунок справа)&lt;br /&gt;
&lt;br /&gt;
=== Создание проекта ===&lt;br /&gt;
&lt;br /&gt;
1. Для создания нового игрового проекта необходимо запустить редактор сцен SceneEditor.&amp;lt;br&amp;gt;&lt;br /&gt;
2. В верхнем меню Проект выбрать Новый (т.е. создать новый проект).&amp;lt;br&amp;gt;&lt;br /&gt;
3. В появившемся окне указываем имя проекта и имя базы ресурсов.Выбираем папку для сохранения проекта&amp;lt;br&amp;gt;&lt;br /&gt;
4. В этом окне выбираем устройство для которого создаётся проект, а затем выбираем тип магазина и вариант версии игры&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:020.JPG]] [[Файл:021.JPG]]&lt;br /&gt;
&lt;br /&gt;
5. В редакторе сцен в меню Проект → Сохранить → проект с именем Learning.&amp;lt;br&amp;gt; &lt;br /&gt;
Эту методику действий можно брать за шаблон для создания других проектов.&amp;lt;br&amp;gt;&lt;br /&gt;
Результат: Создана база ресурсов и проект для выполнения Уроков. &lt;br /&gt;
&lt;br /&gt;
====Важное замечание по созданию проекта====&lt;br /&gt;
[[Файл:2_лэйаута.JPG|right]]&amp;lt;br&amp;gt;&lt;br /&gt;
Предположим нам необходимо создать игру для магазина А и магазина Б. Игра будет отличаться только 10 функциями. Мы можем создать игру для магазина А., а потом скопировать папку с проектом, проект переименовать, внести изменения и получить игру для магазина Б. Результат:  2 игры и 2 папки с ресурсами. Такой подход не приветствуется.&amp;lt;br&amp;gt;&lt;br /&gt;
Для уменьшения времени на создание проекта, подключение ресурсов, внесения одинаковых объектов и  удобства отслеживания багов и прочего в Редакторе Сцен существует возможность создания двух лэйаутов в одном проекте.&lt;br /&gt;
При создании проекта мы выбираем оба магазина, после чего в панели Лэйаут  появится два лэйаута для магазина А и магазина Б(см. рисунок справа. При этом текстовая база проекта и база ресурсов у них будут идентичны. При создании новых объектов в одном лэйауте они же будут создаваться и в другом, при этом можно изменять свойства объекта каждого лэйаута независимо от второго.&amp;lt;br&amp;gt;&lt;br /&gt;
За применение изменений между лэйаутами отвечает параметр &amp;quot;синхронизация&amp;quot;, который есть у каждого объекта. Если стоит &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;
*Очистка базы ресурсов от неиспользуемой графики&lt;br /&gt;
*Запаковка графики в текстуры и контейнер&lt;br /&gt;
*При необходимости конвертирование файлов в pvr форматы&amp;lt;br&amp;gt;&lt;br /&gt;
С целью экономии оперативной памяти на устройстве возможно сжатие графики, упаковка графики в текстуры, создание нескольких исполняемых файлов, проекта, содержащих в себе несколько сцен проекта, и загружаемых в оперативную память устройства по мере прохождения игры.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Процедура экспорта проекта вызывается через меню редактора Проект - Экспортировать проект&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Файл:Scene editor export window.jpg|right]]&lt;br /&gt;
'''Параметры экспорта проекта:'''&amp;lt;br&amp;gt;&lt;br /&gt;
''Настройки параметров графики''&lt;br /&gt;
*Ось Х, ось У — параметры сжатия графики по оси Х,У. Значения  параметра от 0 до 1.&lt;br /&gt;
*При выполнении сжатия рекомендуется обращать внимания на размер лэйаута&lt;br /&gt;
*Сжатие графики  возможно и непропорциональное . Используется редко&lt;br /&gt;
&lt;br /&gt;
''Параметры запаковки графики''&lt;br /&gt;
*Common textures size - максимальный размер графической текстуры для графики, которая не находится в контейнерах и попадает в одну текстуру, или максимальный размер графического файла, если он не в контейнере и не попадает в текстуру.&lt;br /&gt;
*Create dat container -  упаковка ресурсов в файл с типом DAT. Обеспечиваем защиту ресурсов проекта от несанкционированного доступа. Увеличиваем производительность при операциях чтения файлов ресурсов с твердотельного носителя.&lt;br /&gt;
*Quality - Качество графики, которая не находится в контейнерах&lt;br /&gt;
*Optimization - оптимизация графики для лучшего быстродействия(speed) или для занимаемого дискового пространства в распакованном виде(size)&lt;br /&gt;
&lt;br /&gt;
''Тип экспорта''  &lt;br /&gt;
*One project file - формируется один XML файл описывающий проект.     &lt;br /&gt;
*Split project on screens, load partly' - проект будет разбит на отдельные файлы описывающие экраны, загружаться файлы будут в порядке использования (вызова) в проекте. В результате получаем увеличение начальной загрузки проекта и использование меньшего объема оперативной памяти.&lt;br /&gt;
*Release build - оптимизация по размеру файла базы ресурсов и основного файла проекта.&lt;br /&gt;
&lt;br /&gt;
''Export to folder'' - Путь для экспорта. Если указан путь экспорта проекта - производится экспорт согласно настройкам для выбранной платформы. Если не указан - проект экспортируются под выбранную платформу и автоматически запускается сборка проекта.&lt;br /&gt;
Структура папки:&lt;br /&gt;
[[Файл:TreeFolder.png|TreeFolder.png]]&amp;lt;br&amp;gt;&lt;br /&gt;
'''Select platform''' - необходимо выбрать платформу для которой будем собирать проект. При экспорте на все платформы необходимо установить Marmalade SDK [[Установка и настройка|см. инструкцию]] при этом не нужно указывать путь для экспорта (оставить поле пустым). В результате запустится скрипт сборки исполняемого пакета, это будет видно по черным экранам с ходом выполнения процесса сборки.Процесс экспорта будет отображаться в окне.&lt;br /&gt;
&lt;br /&gt;
Таблица результирующих форматов для платформ&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
 |качество, оптимизация&lt;br /&gt;
 |IOS&lt;br /&gt;
 |Android&lt;br /&gt;
 |Windows Phone8&lt;br /&gt;
 |BlackBerry&lt;br /&gt;
 |Windows&lt;br /&gt;
 |-&lt;br /&gt;
 |Best, size&lt;br /&gt;
 |png(RGBA)&lt;br /&gt;
 |png(RGBA)&lt;br /&gt;
 |png(RGBA)&lt;br /&gt;
 |png(RGBA)&lt;br /&gt;
 |png(RGBA)&lt;br /&gt;
 |-&lt;br /&gt;
 |Best, speed&lt;br /&gt;
 |jxr&lt;br /&gt;
 |jxr&lt;br /&gt;
 |jxr&lt;br /&gt;
 |jxr&lt;br /&gt;
 |jxr&lt;br /&gt;
 |-&lt;br /&gt;
 |Medium, size&lt;br /&gt;
 |jpg + png(a)&lt;br /&gt;
 |jpg + png(a)&lt;br /&gt;
 |jpg + png(a)&lt;br /&gt;
 |jpg + png(a)&lt;br /&gt;
 |jpg + png(a)&lt;br /&gt;
 |-&lt;br /&gt;
 |Medium, speed&lt;br /&gt;
 |PVRTC + jxr&lt;br /&gt;
 |ETC1 + jxr&lt;br /&gt;
 |BC3 + hitmask&lt;br /&gt;
 |PVR8888&lt;br /&gt;
 |BC3 + hitmask&lt;br /&gt;
 |-&lt;br /&gt;
 |Low, size&lt;br /&gt;
 |PVRTC + png(a)&lt;br /&gt;
 |ETC1 + png(a)&lt;br /&gt;
 |jpg + png(a)&lt;br /&gt;
 |jpg + png(a)&lt;br /&gt;
 |jpg + png(a)&lt;br /&gt;
 |-&lt;br /&gt;
 |Low, speed&lt;br /&gt;
 |PVRTC(RGBA) + hitmask&lt;br /&gt;
 |ETC1 + PVRA8&lt;br /&gt;
 |BC3 + hitmask&lt;br /&gt;
 |PVR8888&lt;br /&gt;
 |BC3 + hitmask&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
*'''ETC''' - Ericsson Texture Compression : для устройств Android&lt;br /&gt;
*'''PVR''' - PowerVR Texture Compression : для устройств IOS&lt;br /&gt;
*'''bc3(dxt)''' -  DirectX Texture : Windows, Windows Phone 8&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Режим отладки ===&lt;br /&gt;
&lt;br /&gt;
Включение режима отладки:&lt;br /&gt;
&lt;br /&gt;
[[Файл:SE debug0.JPG]]&lt;br /&gt;
&lt;br /&gt;
Инструменты отладки:&lt;br /&gt;
&lt;br /&gt;
[[Файл:SE debug1.JPG]]&lt;br /&gt;
&lt;br /&gt;
1) '''Debug dock''' - установка брейкпоинтов (точек остановки) и вывод отладочного лога от сервера.&lt;br /&gt;
2) '''Logging''' - вывод логов вьювера (параллельно с viewer.log) с подсветкой и фильтрами.&lt;br /&gt;
3) '''Debug Options''' - вывод дерева опций, подсветка изменений (при работе вьювера), слежение за конкретными параметрами.&lt;br /&gt;
4) '''Debug Properties''' - вывод параметров объекта под курсором по хоткею (из вьювера) - на момент написания не реализовано.&lt;br /&gt;
&lt;br /&gt;
==== Debug dock ====&lt;br /&gt;
&lt;br /&gt;
[[Файл:SE debug2.JPG]]&lt;br /&gt;
&lt;br /&gt;
Принцип работы брейкпоинтов (точек остановки):&lt;br /&gt;
* Добавляем в табличку брейкпоинтов новый пункт&lt;br /&gt;
* Задает objectID интересующего объекта&lt;br /&gt;
** Задаем название состояния, при переходе на которое вьювер станет на паузу&lt;br /&gt;
** ИЛИ задаем название параметра, при изменении которого вьювер станет на паузу&lt;br /&gt;
* Запускаем вьювер с отладкой&lt;br /&gt;
*: [[Файл:SE debug3.jpg]]&lt;br /&gt;
* После перехода в заданное состояние вьювер станет за паузу, а в редактре сцен откроется окно машинки с этим состоянием.&lt;br /&gt;
&lt;br /&gt;
==== Logging ====&lt;br /&gt;
&lt;br /&gt;
Se_debug4&lt;br /&gt;
&lt;br /&gt;
* Сие логирование происходит только с запущеным в режиме отладки вьювером;&lt;br /&gt;
* Логи с ворнингами выделены оранжевым цветом ('''не игнорируйте их''');&lt;br /&gt;
* Логи с ошибками выделены красным цветом ('''а их уж тем более не игнорируйте!''');&lt;br /&gt;
* Кнопка ''Clear log'' - очищает логи из данного окна;&lt;br /&gt;
* Кнопка ''(...)'' - открыть лог из файла&lt;br /&gt;
* Флаг ''Autoscroll'' - при добавлении новой записи листает список в конец&lt;br /&gt;
&lt;br /&gt;
'''Фильтрация логов'''&lt;br /&gt;
* Фильтр задается для каждого поля отдельно;&lt;br /&gt;
* Можно фильтровать по нескольким полям одновременно;&lt;br /&gt;
* Для фильтрации по какому-либо полю просто нажмите на его заглавие (Level / Time / ...)&lt;br /&gt;
* '''Как правильно задавать фильтр''':&lt;br /&gt;
** ''[value]'' - поиск по полному совпадению - будут показаны только записи, текст которых в данном поле '''равен''' ''[value]''&lt;br /&gt;
**: [[Файл:SE debug log1.jpg]]&lt;br /&gt;
** ''[value]*'' - поиск по началу строки - будут показаны только те записи, текст которых в данном поле '''начинается с''' ''[value]''&lt;br /&gt;
**: [[Файл:SE debug log2.jpg]]&lt;br /&gt;
** ''*[value]'' - поиск по окончанию строки - будут показаны только те записи, текст которых в данном поле '''заканчивается на''' ''[value]''&lt;br /&gt;
**: [[Файл:SE debug log3.jpg]]&lt;br /&gt;
** ''*[value]*'' - поиск по вхождению - будут показаны только те записи, текст которых в данном поле '''содержит''' текст ''[value]''&lt;br /&gt;
**: [[Файл:SE debug log4.jpg]]&lt;br /&gt;
** ''![filter]'' - исключение - при добавлении знака '''!''' перед фильтром (любой его вариацией), будут показаны все записи, текст которых в данном поле '''НЕ''' подходит под фильтр.&lt;br /&gt;
**: [[Файл:SE debug log5.jpg]]&lt;br /&gt;
** ''[filter1]&amp;amp;[filter2]&amp;amp;[...]'' - фильтрация по нескольким критериям - будут показаны все записи, текст которых '''подходит хотя бы под один из фильтров'''&lt;br /&gt;
**: [[Файл:SE debug log6.jpg]]&lt;br /&gt;
&lt;br /&gt;
=Горячие клавиши=&lt;br /&gt;
* '''Клавиша F10''' - По нажатию разворачивает/сворачивает все объекты и подобъекты в дереве проекта или в свойствах объекта.&lt;br /&gt;
* '''Клавиша Num* и Num-''' - По нажатию разворачивают/сворачивают подобъекты у выделенного объекта в дереве проекта или в свойствах объекта.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:AppSalute]]&lt;/div&gt;</summary>
		<author><name>Bmor</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.appsalutecreator.com/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:SE_debug_log6.jpg&amp;diff=9412</id>
		<title>Файл:SE debug log6.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.appsalutecreator.com/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:SE_debug_log6.jpg&amp;diff=9412"/>
		<updated>2018-02-05T09:43:37Z</updated>

		<summary type="html">&lt;p&gt;Bmor: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Bmor</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.appsalutecreator.com/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:SE_debug_log5.jpg&amp;diff=9411</id>
		<title>Файл:SE debug log5.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.appsalutecreator.com/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:SE_debug_log5.jpg&amp;diff=9411"/>
		<updated>2018-02-05T09:43:23Z</updated>

		<summary type="html">&lt;p&gt;Bmor: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Bmor</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.appsalutecreator.com/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:SE_debug_log4.jpg&amp;diff=9410</id>
		<title>Файл:SE debug log4.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.appsalutecreator.com/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:SE_debug_log4.jpg&amp;diff=9410"/>
		<updated>2018-02-05T09:42:57Z</updated>

		<summary type="html">&lt;p&gt;Bmor: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Bmor</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.appsalutecreator.com/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:SE_debug_log3.jpg&amp;diff=9409</id>
		<title>Файл:SE debug log3.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.appsalutecreator.com/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:SE_debug_log3.jpg&amp;diff=9409"/>
		<updated>2018-02-05T09:42:42Z</updated>

		<summary type="html">&lt;p&gt;Bmor: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Bmor</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.appsalutecreator.com/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:SE_debug_log2.jpg&amp;diff=9408</id>
		<title>Файл:SE debug log2.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.appsalutecreator.com/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:SE_debug_log2.jpg&amp;diff=9408"/>
		<updated>2018-02-05T09:42:26Z</updated>

		<summary type="html">&lt;p&gt;Bmor: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Bmor</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.appsalutecreator.com/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:SE_debug_log1.jpg&amp;diff=9407</id>
		<title>Файл:SE debug log1.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.appsalutecreator.com/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:SE_debug_log1.jpg&amp;diff=9407"/>
		<updated>2018-02-05T09:42:08Z</updated>

		<summary type="html">&lt;p&gt;Bmor: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Bmor</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.appsalutecreator.com/index.php?title=%D0%98%D0%BD%D1%82%D0%B5%D1%80%D1%84%D0%B5%D0%B9%D1%81_ScenceEditor&amp;diff=9406</id>
		<title>Интерфейс ScenceEditor</title>
		<link rel="alternate" type="text/html" href="https://wiki.appsalutecreator.com/index.php?title=%D0%98%D0%BD%D1%82%D0%B5%D1%80%D1%84%D0%B5%D0%B9%D1%81_ScenceEditor&amp;diff=9406"/>
		<updated>2018-02-05T09:23:24Z</updated>

		<summary type="html">&lt;p&gt;Bmor: /* Режим отладки */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC right}}&lt;br /&gt;
== [[Файл:Ico_main.png]]Редактор сцен ==&lt;br /&gt;
&lt;br /&gt;
'''Редактор сцен''' — программа, предназначенная для создания, редактирования и экспорта  игровых экранов, в котором происходит настройка свойств объектов и игровой логики. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Окно редактора сцен состоит из:'''&lt;br /&gt;
*меню редактора;&lt;br /&gt;
*рабочей области, в которой размещен объект сцена, на котором размещают другие объекты;&lt;br /&gt;
*панель Лэйаут, в которой размещено иерархическое дерево проекта, которое состоит из экранов, на которых находятся игровые объекты;&lt;br /&gt;
*панель Свойства, которая отображает свойства объекта, который выбран в дереве проекта;&lt;br /&gt;
*панель для построения сплайна;&lt;br /&gt;
*панель инструментов;&lt;br /&gt;
*строка Координаты, отображающая координаты курсора в текущий момент времени&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для включения или отключения панели кликаем правой кнопкой мыши по серой области меню редактора и ставим галочку. Панели можно расположить на экране в любом порядке.&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[Файл:Головна2.PNG|700px]]&lt;br /&gt;
&lt;br /&gt;
=== Меню редактора ===&lt;br /&gt;
&lt;br /&gt;
==== Project (Проект)====&lt;br /&gt;
меню, которое содержит список команд, с помощью которых можно создать новый или загрузить уже созданный проект, сохранить проект с указанием места сохранения и т.д.&lt;br /&gt;
*'''New project''' - создать новый проект; &lt;br /&gt;
*'''Open''' - открыть уже созданный проект (проект обязательно должен находится в подкаталоге редактора); &lt;br /&gt;
*'''Recent project...''' - показывает список последних открывавшихся проектов; &lt;br /&gt;
*'''Close''' - закрытие проекта (редактор при этом не закрывается); &lt;br /&gt;
*'''New project''' - создать новый проект; &lt;br /&gt;
*'''Save''' - сохранение проекта; &lt;br /&gt;
*'''Save as...''' - сохранение проекта под новым именем или в новом каталоге; &lt;br /&gt;
*'''Export...''' - экспорт проекта; &lt;br /&gt;
*'''Project options...''' - опции проекта; &lt;br /&gt;
*'''Exit''' - закрытие редактора. &lt;br /&gt;
&lt;br /&gt;
==== Edit (Редактирование)====&lt;br /&gt;
меню редактирования проекта:&lt;br /&gt;
*'''Copy''' - копирование объекта; &lt;br /&gt;
*'''Paste into current object''' - вставка объекта в выбранный объект; &lt;br /&gt;
*'''Paste after current object''' - вставка объекта после выбранного объекта;&lt;br /&gt;
*'''Delete...''' - удаление объекта;&lt;br /&gt;
*'''Scale object''' - масштабирование выбранного объекта, если у него есть масштаб (scale x \ scale y);&lt;br /&gt;
*'''Rotate object''' - поворот выбранного объекта, если у него есть параметр поворота (angle);&lt;br /&gt;
*'''Modify vertex''' - изменение положения точек вертекса у выбранного объекта, если вертексы включены; &lt;br /&gt;
*'''Find object...''' - поиск объекта по id или по имени;&lt;br /&gt;
*'''Setup Editor...''' - настройки редактора.&lt;br /&gt;
&lt;br /&gt;
[[Файл:SetupEditor.png|right|400px]]&lt;br /&gt;
&lt;br /&gt;
1) Языки - выбор языка редактора.&lt;br /&gt;
&lt;br /&gt;
2) Work mode - выбор режима работы.&lt;br /&gt;
&lt;br /&gt;
3) Syles - выбор темы редактора.&lt;br /&gt;
&lt;br /&gt;
4) Перемещение сцены мышью или клавишами клавиатуры - позволяет перемещать сцену на экране.&lt;br /&gt;
&lt;br /&gt;
5) Рисовать сетку на экране - отображать сетку на экране или нет.&lt;br /&gt;
&lt;br /&gt;
6) Utilities - Подключение утилит.&lt;br /&gt;
&lt;br /&gt;
	В редакторе есть возможность подключения утилит в форматах *.bat, *.exe, *.py, *.pyw, *.vbs.&lt;br /&gt;
&lt;br /&gt;
	&lt;br /&gt;
	Для примера, подключим bat-файл, открывающий логи вьвера в notepad++.&lt;br /&gt;
&lt;br /&gt;
	Для этого создадим файл Logs.bat со следущими командами:&lt;br /&gt;
&lt;br /&gt;
	&lt;br /&gt;
		cd C:\Users\&amp;lt;your-user&amp;gt;\AppData\Roaming\Absolutist\Viewer&lt;br /&gt;
&lt;br /&gt;
		start &amp;quot;C:\Program Files (x86)\Notepad++\notepad++.exe&amp;quot; &amp;quot;viewer.log&amp;quot; &lt;br /&gt;
&lt;br /&gt;
		&lt;br /&gt;
	В настройки редактора добавим утилиту нажав на плюсик. В списке ниже появится поле добавленной утилиты.&lt;br /&gt;
 &lt;br /&gt;
Нажмем на многоточие в столбце &amp;quot;Browse&amp;quot;. В открывшимся окне &amp;quot;Open utility&amp;quot; откроем Logs.bat файл. После этого в меню редактора появится меню &amp;quot;Utilities&amp;quot; с командой Logs.&lt;br /&gt;
&lt;br /&gt;
==== View (Просмотр)====&lt;br /&gt;
*'''Toggle grid''' - включает\выключает отображение сетки на сцене;&lt;br /&gt;
*'''open/hide comment''' - показывает\скрывает комментарии к объекту;&lt;br /&gt;
*'''Disable object movements''' - выключает\включает возможность перемещать объекты по сцене.&lt;br /&gt;
&lt;br /&gt;
=== Viewer (Вьювер) ===&lt;br /&gt;
*'''Start Viewer''' - запуск вьювера;&lt;br /&gt;
*'''Start Viewer with changed time''' - запуск вьювера с заданным временем;&lt;br /&gt;
*'''Save and run viewer...''' - сохраняет проект и запускает вьювер;&lt;br /&gt;
*'''Run Viewer.bat''' - ???;&lt;br /&gt;
*'''Delete temp data''' - удаление опций; &lt;br /&gt;
&lt;br /&gt;
====Layouts (Лейаут, Макеты)====&lt;br /&gt;
меню работа с лейаутами проекта (выбор макета устройства для проекта, редактирование экранов):&lt;br /&gt;
*'''Add new layout...''' - создание нового лейаута;&lt;br /&gt;
*'''Delete layout...''' - удаление лейаута;&lt;br /&gt;
*'''Layout settings...''' - настройки лейаута;&lt;br /&gt;
*'''Add folder...''' - создание папки в текущем лейаута;&lt;br /&gt;
*'''Add screen...''' - создание нового экрана.&lt;br /&gt;
==== Tools (Инструменты)====&lt;br /&gt;
меню дополнительных редакторов и инструментов для проекта (вызов редактора ресурсов, текстового редактора, анализ проекта). Список этого меню вынесен на панель с кнопками быстрого запуска:&lt;br /&gt;
*'''Resources Editor''' - редактор ресурсов;&lt;br /&gt;
*'''Texts Editor''' - текстовый редактор;&lt;br /&gt;
*'''Analyzer''' - анализатор ресурсов (показывает количество объектов проекта, их размер занимаемой памяти, сведения о ресурсах каждого объекта (размер, ID номер, название (имя), местонахождение в базе ресурсов));&lt;br /&gt;
*'''Object info...''' - общие свойства объекта (показывает размер памяти занимаемой текстурами);&lt;br /&gt;
*'''Options info...''' - информация об опциях.&lt;br /&gt;
&lt;br /&gt;
==== Help (Помощь)====&lt;br /&gt;
меню вызова справки.&lt;br /&gt;
&lt;br /&gt;
=== Кнопки панели Инструменты ===&lt;br /&gt;
Некоторые инструменты также вызываются горячими клавишами (комбинация клавиш приведена в скобках )&lt;br /&gt;
&lt;br /&gt;
[[Файл:00 6.png]] (Ctrl+N) — создать новый проект; &amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:00 7.png]](Ctrl+O) — загрузить уже созданный проект;&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:00 8.png]](Ctrl+S) — сохранить изменения в проекте;&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:00 9.png]] —  запустить Viewer;&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:009.JPG]] — нормальный вид; &amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:Ico_text.png|25px]] - вызов текстового редактора; &amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:Ico_base.png|25px]] — вызов редактора ресурсов;&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:013.JPG]] — анализатор ресурсов (показывает количество объектов проекта, их размер занимаемой памяти, сведения о ресурсах каждого объекта (размер, ID номер, название (имя), местонахождение в базе ресурсов)); &amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:014.JPG]]— поиск объекта по id или по имени.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Функции рабочей области===&lt;br /&gt;
&lt;br /&gt;
'''1) Масштабирование рабочей области&amp;lt;br&amp;gt;'''&lt;br /&gt;
Ctrl + колесико мышки   крутим  вперед  - увеличиваем объекты  , назад  - уменьшаем объекты.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''2)Перемещение по рабочей области&amp;lt;br&amp;gt;'''&lt;br /&gt;
После масштабирования возникает необходимость переместиться  с левого  уголка экрана в далекий правый, переместиться к выбраному обьекту, вверх или вниз.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Кликаем правой кнопкой мыши по горизонтальному scroll и выпадает меню: &lt;br /&gt;
*scroll here —  функция перемещает экран к объекту, который выделен в Лэйауте;&lt;br /&gt;
*scroll left / right  -  функция перемещает экран на маленькое расстояние вправо / влево;&lt;br /&gt;
*left  / right edge — функция  перемещает экран в левый / правый угол экрана;&lt;br /&gt;
*page left / right  - функция показывает левую/правую часть экрана&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Кликаем правой кнопкой мыши по вертикальному scroll и выпадает меню: &lt;br /&gt;
*scroll here —  функция перемещает экран к объекту, который выделен в Лэйауте;&lt;br /&gt;
*scroll up / down  -  функция перемещает экран на маленькое расстояние вверх / вниз;&lt;br /&gt;
*top/bottom  - функция  перемещает экран вверх / вниз;&lt;br /&gt;
*page up / down  - функция перемещает экран  верхнюю / нижнюю часть экрана.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Меню прокрутки скрывается по нажатию клавиши Alt&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Функции панели Лэйаут===&lt;br /&gt;
[[Файл:Лэйаут_1.JPG|right]] &lt;br /&gt;
При клике правой кнопкой мыши по выбранному лэйауту (см. рисунок справа)&lt;br /&gt;
*Создать папку в текущем объекте;&lt;br /&gt;
*Создать экран в текущем объекте -  создание объекта в текущем лэйауте;&lt;br /&gt;
*Импорт/экспорт экранов — импорт/экспорт одного или нескольких экранов;&lt;br /&gt;
*Развернуть / Свернуть объекты с подобъектами — сворачивает  / разворачивает дерево объектов всех экранов&amp;lt;br&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
При клике правой кнопкой мыши по выбранному экрану, сцене или объекту возможно:&lt;br /&gt;
*Lock (Unlock) screen -  золочивание (разлочивание) экрана: нельзя перемещать, удалять и изменять объекты (сцены) экрана, причем, если сцена расшареная, то она становиться залоченой и на остальных экранах; на залоченых экранах в панели проекта появляется замочек; &lt;br /&gt;
*Lock (Unlock) scene -  золочивание (разлочивание) сцены: нельзя перемещать, удалять и изменять объекты (машины, картинки и др.) сцены, причем, если сцена расшареная, то она становиться залоченой и на остальных экранах; на залоченых сценах также появляется замочек; &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;
Пусть на сцене будет находится очень много картинок, которые должны находиться в строго определенных местах. Переместим нашу картинку в нужную точку на сцене. Но у нас картинок очень много и мы потратим много времени на их расстановку. Для уменьшения времени на расстановку картинок воспользуемся функцией расположить сцену в соответствии  с изображением.&amp;lt;br&amp;gt;&lt;br /&gt;
Функция расположить сцену в соответствии с изображением перемещает картинку  в заданную точку  художниками.   Художник решил, что клумба должна быть в правом нижнем углу, после применения функции  расположить сцену в соответствии с изображением, картинка станет именно на указанное художником место. &amp;lt;br&amp;gt;&lt;br /&gt;
Данная функция вызывается кликом правой кнопкой мыши по  объекту&amp;lt;br&amp;gt; [[Файл:панель_свойства_1.JPG|right]]&lt;br /&gt;
&lt;br /&gt;
===Функции панели Свойства===&lt;br /&gt;
&lt;br /&gt;
*При клике на  тип или имя  некоторых объектов вызываются дополнительные окна.Например, при клике на тип Machine открывается окно, где прописываются функции объекта типа Machine.&lt;br /&gt;
*При наведении на поле тип выпадет подсказка с уникальным номером объекта.&lt;br /&gt;
*При клике правой мышкой по названию свойства объекта выпадает меню с дополнительными свойствами объекта&lt;br /&gt;
*Некоторые свойства объектов объединены в группы (см. рисунок справа)&lt;br /&gt;
&lt;br /&gt;
=== Создание проекта ===&lt;br /&gt;
&lt;br /&gt;
1. Для создания нового игрового проекта необходимо запустить редактор сцен SceneEditor.&amp;lt;br&amp;gt;&lt;br /&gt;
2. В верхнем меню Проект выбрать Новый (т.е. создать новый проект).&amp;lt;br&amp;gt;&lt;br /&gt;
3. В появившемся окне указываем имя проекта и имя базы ресурсов.Выбираем папку для сохранения проекта&amp;lt;br&amp;gt;&lt;br /&gt;
4. В этом окне выбираем устройство для которого создаётся проект, а затем выбираем тип магазина и вариант версии игры&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:020.JPG]] [[Файл:021.JPG]]&lt;br /&gt;
&lt;br /&gt;
5. В редакторе сцен в меню Проект → Сохранить → проект с именем Learning.&amp;lt;br&amp;gt; &lt;br /&gt;
Эту методику действий можно брать за шаблон для создания других проектов.&amp;lt;br&amp;gt;&lt;br /&gt;
Результат: Создана база ресурсов и проект для выполнения Уроков. &lt;br /&gt;
&lt;br /&gt;
====Важное замечание по созданию проекта====&lt;br /&gt;
[[Файл:2_лэйаута.JPG|right]]&amp;lt;br&amp;gt;&lt;br /&gt;
Предположим нам необходимо создать игру для магазина А и магазина Б. Игра будет отличаться только 10 функциями. Мы можем создать игру для магазина А., а потом скопировать папку с проектом, проект переименовать, внести изменения и получить игру для магазина Б. Результат:  2 игры и 2 папки с ресурсами. Такой подход не приветствуется.&amp;lt;br&amp;gt;&lt;br /&gt;
Для уменьшения времени на создание проекта, подключение ресурсов, внесения одинаковых объектов и  удобства отслеживания багов и прочего в Редакторе Сцен существует возможность создания двух лэйаутов в одном проекте.&lt;br /&gt;
При создании проекта мы выбираем оба магазина, после чего в панели Лэйаут  появится два лэйаута для магазина А и магазина Б(см. рисунок справа. При этом текстовая база проекта и база ресурсов у них будут идентичны. При создании новых объектов в одном лэйауте они же будут создаваться и в другом, при этом можно изменять свойства объекта каждого лэйаута независимо от второго.&amp;lt;br&amp;gt;&lt;br /&gt;
За применение изменений между лэйаутами отвечает параметр &amp;quot;синхронизация&amp;quot;, который есть у каждого объекта. Если стоит &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;
*Очистка базы ресурсов от неиспользуемой графики&lt;br /&gt;
*Запаковка графики в текстуры и контейнер&lt;br /&gt;
*При необходимости конвертирование файлов в pvr форматы&amp;lt;br&amp;gt;&lt;br /&gt;
С целью экономии оперативной памяти на устройстве возможно сжатие графики, упаковка графики в текстуры, создание нескольких исполняемых файлов, проекта, содержащих в себе несколько сцен проекта, и загружаемых в оперативную память устройства по мере прохождения игры.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Процедура экспорта проекта вызывается через меню редактора Проект - Экспортировать проект&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Файл:Scene editor export window.jpg|right]]&lt;br /&gt;
'''Параметры экспорта проекта:'''&amp;lt;br&amp;gt;&lt;br /&gt;
''Настройки параметров графики''&lt;br /&gt;
*Ось Х, ось У — параметры сжатия графики по оси Х,У. Значения  параметра от 0 до 1.&lt;br /&gt;
*При выполнении сжатия рекомендуется обращать внимания на размер лэйаута&lt;br /&gt;
*Сжатие графики  возможно и непропорциональное . Используется редко&lt;br /&gt;
&lt;br /&gt;
''Параметры запаковки графики''&lt;br /&gt;
*Common textures size - максимальный размер графической текстуры для графики, которая не находится в контейнерах и попадает в одну текстуру, или максимальный размер графического файла, если он не в контейнере и не попадает в текстуру.&lt;br /&gt;
*Create dat container -  упаковка ресурсов в файл с типом DAT. Обеспечиваем защиту ресурсов проекта от несанкционированного доступа. Увеличиваем производительность при операциях чтения файлов ресурсов с твердотельного носителя.&lt;br /&gt;
*Quality - Качество графики, которая не находится в контейнерах&lt;br /&gt;
*Optimization - оптимизация графики для лучшего быстродействия(speed) или для занимаемого дискового пространства в распакованном виде(size)&lt;br /&gt;
&lt;br /&gt;
''Тип экспорта''  &lt;br /&gt;
*One project file - формируется один XML файл описывающий проект.     &lt;br /&gt;
*Split project on screens, load partly' - проект будет разбит на отдельные файлы описывающие экраны, загружаться файлы будут в порядке использования (вызова) в проекте. В результате получаем увеличение начальной загрузки проекта и использование меньшего объема оперативной памяти.&lt;br /&gt;
*Release build - оптимизация по размеру файла базы ресурсов и основного файла проекта.&lt;br /&gt;
&lt;br /&gt;
''Export to folder'' - Путь для экспорта. Если указан путь экспорта проекта - производится экспорт согласно настройкам для выбранной платформы. Если не указан - проект экспортируются под выбранную платформу и автоматически запускается сборка проекта.&lt;br /&gt;
Структура папки:&lt;br /&gt;
[[Файл:TreeFolder.png|TreeFolder.png]]&amp;lt;br&amp;gt;&lt;br /&gt;
'''Select platform''' - необходимо выбрать платформу для которой будем собирать проект. При экспорте на все платформы необходимо установить Marmalade SDK [[Установка и настройка|см. инструкцию]] при этом не нужно указывать путь для экспорта (оставить поле пустым). В результате запустится скрипт сборки исполняемого пакета, это будет видно по черным экранам с ходом выполнения процесса сборки.Процесс экспорта будет отображаться в окне.&lt;br /&gt;
&lt;br /&gt;
Таблица результирующих форматов для платформ&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
 |качество, оптимизация&lt;br /&gt;
 |IOS&lt;br /&gt;
 |Android&lt;br /&gt;
 |Windows Phone8&lt;br /&gt;
 |BlackBerry&lt;br /&gt;
 |Windows&lt;br /&gt;
 |-&lt;br /&gt;
 |Best, size&lt;br /&gt;
 |png(RGBA)&lt;br /&gt;
 |png(RGBA)&lt;br /&gt;
 |png(RGBA)&lt;br /&gt;
 |png(RGBA)&lt;br /&gt;
 |png(RGBA)&lt;br /&gt;
 |-&lt;br /&gt;
 |Best, speed&lt;br /&gt;
 |jxr&lt;br /&gt;
 |jxr&lt;br /&gt;
 |jxr&lt;br /&gt;
 |jxr&lt;br /&gt;
 |jxr&lt;br /&gt;
 |-&lt;br /&gt;
 |Medium, size&lt;br /&gt;
 |jpg + png(a)&lt;br /&gt;
 |jpg + png(a)&lt;br /&gt;
 |jpg + png(a)&lt;br /&gt;
 |jpg + png(a)&lt;br /&gt;
 |jpg + png(a)&lt;br /&gt;
 |-&lt;br /&gt;
 |Medium, speed&lt;br /&gt;
 |PVRTC + jxr&lt;br /&gt;
 |ETC1 + jxr&lt;br /&gt;
 |BC3 + hitmask&lt;br /&gt;
 |PVR8888&lt;br /&gt;
 |BC3 + hitmask&lt;br /&gt;
 |-&lt;br /&gt;
 |Low, size&lt;br /&gt;
 |PVRTC + png(a)&lt;br /&gt;
 |ETC1 + png(a)&lt;br /&gt;
 |jpg + png(a)&lt;br /&gt;
 |jpg + png(a)&lt;br /&gt;
 |jpg + png(a)&lt;br /&gt;
 |-&lt;br /&gt;
 |Low, speed&lt;br /&gt;
 |PVRTC(RGBA) + hitmask&lt;br /&gt;
 |ETC1 + PVRA8&lt;br /&gt;
 |BC3 + hitmask&lt;br /&gt;
 |PVR8888&lt;br /&gt;
 |BC3 + hitmask&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
*'''ETC''' - Ericsson Texture Compression : для устройств Android&lt;br /&gt;
*'''PVR''' - PowerVR Texture Compression : для устройств IOS&lt;br /&gt;
*'''bc3(dxt)''' -  DirectX Texture : Windows, Windows Phone 8&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Режим отладки ===&lt;br /&gt;
&lt;br /&gt;
Включение режима отладки:&lt;br /&gt;
&lt;br /&gt;
[[Файл:SE debug0.JPG]]&lt;br /&gt;
&lt;br /&gt;
Инструменты отладки:&lt;br /&gt;
&lt;br /&gt;
[[Файл:SE debug1.JPG]]&lt;br /&gt;
&lt;br /&gt;
1) '''Debug dock''' - установка брейкпоинтов (точек остановки) и вывод отладочного лога от сервера.&lt;br /&gt;
2) '''Logging''' - вывод логов вьювера (параллельно с viewer.log) с подсветкой и фильтрами.&lt;br /&gt;
3) '''Debug Options''' - вывод дерева опций, подсветка изменений (при работе вьювера), слежение за конкретными параметрами.&lt;br /&gt;
4) '''Debug Properties''' - вывод параметров объекта под курсором по хоткею (из вьювера) - на момент написания не реализовано.&lt;br /&gt;
&lt;br /&gt;
==== Debug dock ====&lt;br /&gt;
&lt;br /&gt;
[[Файл:SE debug2.JPG]]&lt;br /&gt;
&lt;br /&gt;
Принцип работы брейкпоинтов (точек остановки):&lt;br /&gt;
* Добавляем в табличку брейкпоинтов новый пункт&lt;br /&gt;
* Задает objectID интересующего объекта&lt;br /&gt;
** Задаем название состояния, при переходе на которое вьювер станет на паузу&lt;br /&gt;
** ИЛИ задаем название параметра, при изменении которого вьювер станет на паузу&lt;br /&gt;
* Запускаем вьювер с отладкой&lt;br /&gt;
*: [[Файл:SE debug3.jpg]]&lt;br /&gt;
* После перехода в заданное состояние вьювер станет за паузу, а в редактре сцен откроется окно машинки с этим состоянием.&lt;br /&gt;
&lt;br /&gt;
==== Logging ====&lt;br /&gt;
&lt;br /&gt;
Se_debug4&lt;br /&gt;
&lt;br /&gt;
* Сие логирование происходит только с запущеным в режиме отладки вьювером;&lt;br /&gt;
* Логи с ворнингами выделены оранжевым цветом ('''не игнорируйте их''');&lt;br /&gt;
* Логи с ошибками выделены красным цветом ('''а их уж тем более не игнорируйте!''');&lt;br /&gt;
* Кнопка ''Clear log'' - очищает логи из данного окна;&lt;br /&gt;
* Кнопка ''(...)'' - открыть лог из файла&lt;br /&gt;
* Флаг ''Autoscroll'' - при добавлении новой записи листает список в конец&lt;br /&gt;
&lt;br /&gt;
'''Фильтрация логов'''&lt;br /&gt;
* Фильтр задается для каждого поля отдельно;&lt;br /&gt;
* Можно фильтровать по нескольким полям одновременно;&lt;br /&gt;
* Для фильтрации по какому-либо полю просто нажмите на его заглавие (Level / Time / ...)&lt;br /&gt;
* '''Как правильно задавать фильтр''':&lt;br /&gt;
** [value] - поиск по полному совпадению - будут показаны только записи, текст которых в данном поле '''равен''' [value]&lt;br /&gt;
**: IMAGE&lt;br /&gt;
** [value]* - поиск по началу строки - будут показаны только те записи, текст которых в данном поле '''начинается с''' [value]&lt;br /&gt;
**: IMAGE&lt;br /&gt;
** *[value] - поиск по окончанию строки - будут показаны только те записи, текст которых в данном поле '''заканчивается на''' [value]&lt;br /&gt;
**: IMAGE&lt;br /&gt;
** *[value]* - поиск по вхождению - будут показаны только те записи, текст которых в данном поле '''содержит''' текст [value]&lt;br /&gt;
**: IMAGE&lt;br /&gt;
** ![filter] - исключение - при добавлении знака '''!''' перед фильтром (любой его вариацией), будут показаны все записи, текст которых в данном поле '''НЕ''' подходит под фильтр.&lt;br /&gt;
**: IMAGE&lt;br /&gt;
** [filter1]&amp;amp;[filter2]&amp;amp;[...] - фильтрация по нескольким критериям - будут показаны все записи, текст которых '''подходит хотя бы под один из фильтров'''&lt;br /&gt;
**: IMAGE&lt;br /&gt;
&lt;br /&gt;
=Горячие клавиши=&lt;br /&gt;
* '''Клавиша F10''' - По нажатию разворачивает/сворачивает все объекты и подобъекты в дереве проекта или в свойствах объекта.&lt;br /&gt;
* '''Клавиша Num* и Num-''' - По нажатию разворачивают/сворачивают подобъекты у выделенного объекта в дереве проекта или в свойствах объекта.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:AppSalute]]&lt;/div&gt;</summary>
		<author><name>Bmor</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.appsalutecreator.com/index.php?title=%D0%98%D0%BD%D1%82%D0%B5%D1%80%D1%84%D0%B5%D0%B9%D1%81_ScenceEditor&amp;diff=9405</id>
		<title>Интерфейс ScenceEditor</title>
		<link rel="alternate" type="text/html" href="https://wiki.appsalutecreator.com/index.php?title=%D0%98%D0%BD%D1%82%D0%B5%D1%80%D1%84%D0%B5%D0%B9%D1%81_ScenceEditor&amp;diff=9405"/>
		<updated>2018-02-05T09:14:34Z</updated>

		<summary type="html">&lt;p&gt;Bmor: /* Режим отладки */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC right}}&lt;br /&gt;
== [[Файл:Ico_main.png]]Редактор сцен ==&lt;br /&gt;
&lt;br /&gt;
'''Редактор сцен''' — программа, предназначенная для создания, редактирования и экспорта  игровых экранов, в котором происходит настройка свойств объектов и игровой логики. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Окно редактора сцен состоит из:'''&lt;br /&gt;
*меню редактора;&lt;br /&gt;
*рабочей области, в которой размещен объект сцена, на котором размещают другие объекты;&lt;br /&gt;
*панель Лэйаут, в которой размещено иерархическое дерево проекта, которое состоит из экранов, на которых находятся игровые объекты;&lt;br /&gt;
*панель Свойства, которая отображает свойства объекта, который выбран в дереве проекта;&lt;br /&gt;
*панель для построения сплайна;&lt;br /&gt;
*панель инструментов;&lt;br /&gt;
*строка Координаты, отображающая координаты курсора в текущий момент времени&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для включения или отключения панели кликаем правой кнопкой мыши по серой области меню редактора и ставим галочку. Панели можно расположить на экране в любом порядке.&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[Файл:Головна2.PNG|700px]]&lt;br /&gt;
&lt;br /&gt;
=== Меню редактора ===&lt;br /&gt;
&lt;br /&gt;
==== Project (Проект)====&lt;br /&gt;
меню, которое содержит список команд, с помощью которых можно создать новый или загрузить уже созданный проект, сохранить проект с указанием места сохранения и т.д.&lt;br /&gt;
*'''New project''' - создать новый проект; &lt;br /&gt;
*'''Open''' - открыть уже созданный проект (проект обязательно должен находится в подкаталоге редактора); &lt;br /&gt;
*'''Recent project...''' - показывает список последних открывавшихся проектов; &lt;br /&gt;
*'''Close''' - закрытие проекта (редактор при этом не закрывается); &lt;br /&gt;
*'''New project''' - создать новый проект; &lt;br /&gt;
*'''Save''' - сохранение проекта; &lt;br /&gt;
*'''Save as...''' - сохранение проекта под новым именем или в новом каталоге; &lt;br /&gt;
*'''Export...''' - экспорт проекта; &lt;br /&gt;
*'''Project options...''' - опции проекта; &lt;br /&gt;
*'''Exit''' - закрытие редактора. &lt;br /&gt;
&lt;br /&gt;
==== Edit (Редактирование)====&lt;br /&gt;
меню редактирования проекта:&lt;br /&gt;
*'''Copy''' - копирование объекта; &lt;br /&gt;
*'''Paste into current object''' - вставка объекта в выбранный объект; &lt;br /&gt;
*'''Paste after current object''' - вставка объекта после выбранного объекта;&lt;br /&gt;
*'''Delete...''' - удаление объекта;&lt;br /&gt;
*'''Scale object''' - масштабирование выбранного объекта, если у него есть масштаб (scale x \ scale y);&lt;br /&gt;
*'''Rotate object''' - поворот выбранного объекта, если у него есть параметр поворота (angle);&lt;br /&gt;
*'''Modify vertex''' - изменение положения точек вертекса у выбранного объекта, если вертексы включены; &lt;br /&gt;
*'''Find object...''' - поиск объекта по id или по имени;&lt;br /&gt;
*'''Setup Editor...''' - настройки редактора.&lt;br /&gt;
&lt;br /&gt;
[[Файл:SetupEditor.png|right|400px]]&lt;br /&gt;
&lt;br /&gt;
1) Языки - выбор языка редактора.&lt;br /&gt;
&lt;br /&gt;
2) Work mode - выбор режима работы.&lt;br /&gt;
&lt;br /&gt;
3) Syles - выбор темы редактора.&lt;br /&gt;
&lt;br /&gt;
4) Перемещение сцены мышью или клавишами клавиатуры - позволяет перемещать сцену на экране.&lt;br /&gt;
&lt;br /&gt;
5) Рисовать сетку на экране - отображать сетку на экране или нет.&lt;br /&gt;
&lt;br /&gt;
6) Utilities - Подключение утилит.&lt;br /&gt;
&lt;br /&gt;
	В редакторе есть возможность подключения утилит в форматах *.bat, *.exe, *.py, *.pyw, *.vbs.&lt;br /&gt;
&lt;br /&gt;
	&lt;br /&gt;
	Для примера, подключим bat-файл, открывающий логи вьвера в notepad++.&lt;br /&gt;
&lt;br /&gt;
	Для этого создадим файл Logs.bat со следущими командами:&lt;br /&gt;
&lt;br /&gt;
	&lt;br /&gt;
		cd C:\Users\&amp;lt;your-user&amp;gt;\AppData\Roaming\Absolutist\Viewer&lt;br /&gt;
&lt;br /&gt;
		start &amp;quot;C:\Program Files (x86)\Notepad++\notepad++.exe&amp;quot; &amp;quot;viewer.log&amp;quot; &lt;br /&gt;
&lt;br /&gt;
		&lt;br /&gt;
	В настройки редактора добавим утилиту нажав на плюсик. В списке ниже появится поле добавленной утилиты.&lt;br /&gt;
 &lt;br /&gt;
Нажмем на многоточие в столбце &amp;quot;Browse&amp;quot;. В открывшимся окне &amp;quot;Open utility&amp;quot; откроем Logs.bat файл. После этого в меню редактора появится меню &amp;quot;Utilities&amp;quot; с командой Logs.&lt;br /&gt;
&lt;br /&gt;
==== View (Просмотр)====&lt;br /&gt;
*'''Toggle grid''' - включает\выключает отображение сетки на сцене;&lt;br /&gt;
*'''open/hide comment''' - показывает\скрывает комментарии к объекту;&lt;br /&gt;
*'''Disable object movements''' - выключает\включает возможность перемещать объекты по сцене.&lt;br /&gt;
&lt;br /&gt;
=== Viewer (Вьювер) ===&lt;br /&gt;
*'''Start Viewer''' - запуск вьювера;&lt;br /&gt;
*'''Start Viewer with changed time''' - запуск вьювера с заданным временем;&lt;br /&gt;
*'''Save and run viewer...''' - сохраняет проект и запускает вьювер;&lt;br /&gt;
*'''Run Viewer.bat''' - ???;&lt;br /&gt;
*'''Delete temp data''' - удаление опций; &lt;br /&gt;
&lt;br /&gt;
====Layouts (Лейаут, Макеты)====&lt;br /&gt;
меню работа с лейаутами проекта (выбор макета устройства для проекта, редактирование экранов):&lt;br /&gt;
*'''Add new layout...''' - создание нового лейаута;&lt;br /&gt;
*'''Delete layout...''' - удаление лейаута;&lt;br /&gt;
*'''Layout settings...''' - настройки лейаута;&lt;br /&gt;
*'''Add folder...''' - создание папки в текущем лейаута;&lt;br /&gt;
*'''Add screen...''' - создание нового экрана.&lt;br /&gt;
==== Tools (Инструменты)====&lt;br /&gt;
меню дополнительных редакторов и инструментов для проекта (вызов редактора ресурсов, текстового редактора, анализ проекта). Список этого меню вынесен на панель с кнопками быстрого запуска:&lt;br /&gt;
*'''Resources Editor''' - редактор ресурсов;&lt;br /&gt;
*'''Texts Editor''' - текстовый редактор;&lt;br /&gt;
*'''Analyzer''' - анализатор ресурсов (показывает количество объектов проекта, их размер занимаемой памяти, сведения о ресурсах каждого объекта (размер, ID номер, название (имя), местонахождение в базе ресурсов));&lt;br /&gt;
*'''Object info...''' - общие свойства объекта (показывает размер памяти занимаемой текстурами);&lt;br /&gt;
*'''Options info...''' - информация об опциях.&lt;br /&gt;
&lt;br /&gt;
==== Help (Помощь)====&lt;br /&gt;
меню вызова справки.&lt;br /&gt;
&lt;br /&gt;
=== Кнопки панели Инструменты ===&lt;br /&gt;
Некоторые инструменты также вызываются горячими клавишами (комбинация клавиш приведена в скобках )&lt;br /&gt;
&lt;br /&gt;
[[Файл:00 6.png]] (Ctrl+N) — создать новый проект; &amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:00 7.png]](Ctrl+O) — загрузить уже созданный проект;&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:00 8.png]](Ctrl+S) — сохранить изменения в проекте;&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:00 9.png]] —  запустить Viewer;&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:009.JPG]] — нормальный вид; &amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:Ico_text.png|25px]] - вызов текстового редактора; &amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:Ico_base.png|25px]] — вызов редактора ресурсов;&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:013.JPG]] — анализатор ресурсов (показывает количество объектов проекта, их размер занимаемой памяти, сведения о ресурсах каждого объекта (размер, ID номер, название (имя), местонахождение в базе ресурсов)); &amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:014.JPG]]— поиск объекта по id или по имени.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Функции рабочей области===&lt;br /&gt;
&lt;br /&gt;
'''1) Масштабирование рабочей области&amp;lt;br&amp;gt;'''&lt;br /&gt;
Ctrl + колесико мышки   крутим  вперед  - увеличиваем объекты  , назад  - уменьшаем объекты.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''2)Перемещение по рабочей области&amp;lt;br&amp;gt;'''&lt;br /&gt;
После масштабирования возникает необходимость переместиться  с левого  уголка экрана в далекий правый, переместиться к выбраному обьекту, вверх или вниз.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Кликаем правой кнопкой мыши по горизонтальному scroll и выпадает меню: &lt;br /&gt;
*scroll here —  функция перемещает экран к объекту, который выделен в Лэйауте;&lt;br /&gt;
*scroll left / right  -  функция перемещает экран на маленькое расстояние вправо / влево;&lt;br /&gt;
*left  / right edge — функция  перемещает экран в левый / правый угол экрана;&lt;br /&gt;
*page left / right  - функция показывает левую/правую часть экрана&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Кликаем правой кнопкой мыши по вертикальному scroll и выпадает меню: &lt;br /&gt;
*scroll here —  функция перемещает экран к объекту, который выделен в Лэйауте;&lt;br /&gt;
*scroll up / down  -  функция перемещает экран на маленькое расстояние вверх / вниз;&lt;br /&gt;
*top/bottom  - функция  перемещает экран вверх / вниз;&lt;br /&gt;
*page up / down  - функция перемещает экран  верхнюю / нижнюю часть экрана.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Меню прокрутки скрывается по нажатию клавиши Alt&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Функции панели Лэйаут===&lt;br /&gt;
[[Файл:Лэйаут_1.JPG|right]] &lt;br /&gt;
При клике правой кнопкой мыши по выбранному лэйауту (см. рисунок справа)&lt;br /&gt;
*Создать папку в текущем объекте;&lt;br /&gt;
*Создать экран в текущем объекте -  создание объекта в текущем лэйауте;&lt;br /&gt;
*Импорт/экспорт экранов — импорт/экспорт одного или нескольких экранов;&lt;br /&gt;
*Развернуть / Свернуть объекты с подобъектами — сворачивает  / разворачивает дерево объектов всех экранов&amp;lt;br&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
При клике правой кнопкой мыши по выбранному экрану, сцене или объекту возможно:&lt;br /&gt;
*Lock (Unlock) screen -  золочивание (разлочивание) экрана: нельзя перемещать, удалять и изменять объекты (сцены) экрана, причем, если сцена расшареная, то она становиться залоченой и на остальных экранах; на залоченых экранах в панели проекта появляется замочек; &lt;br /&gt;
*Lock (Unlock) scene -  золочивание (разлочивание) сцены: нельзя перемещать, удалять и изменять объекты (машины, картинки и др.) сцены, причем, если сцена расшареная, то она становиться залоченой и на остальных экранах; на залоченых сценах также появляется замочек; &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;
Пусть на сцене будет находится очень много картинок, которые должны находиться в строго определенных местах. Переместим нашу картинку в нужную точку на сцене. Но у нас картинок очень много и мы потратим много времени на их расстановку. Для уменьшения времени на расстановку картинок воспользуемся функцией расположить сцену в соответствии  с изображением.&amp;lt;br&amp;gt;&lt;br /&gt;
Функция расположить сцену в соответствии с изображением перемещает картинку  в заданную точку  художниками.   Художник решил, что клумба должна быть в правом нижнем углу, после применения функции  расположить сцену в соответствии с изображением, картинка станет именно на указанное художником место. &amp;lt;br&amp;gt;&lt;br /&gt;
Данная функция вызывается кликом правой кнопкой мыши по  объекту&amp;lt;br&amp;gt; [[Файл:панель_свойства_1.JPG|right]]&lt;br /&gt;
&lt;br /&gt;
===Функции панели Свойства===&lt;br /&gt;
&lt;br /&gt;
*При клике на  тип или имя  некоторых объектов вызываются дополнительные окна.Например, при клике на тип Machine открывается окно, где прописываются функции объекта типа Machine.&lt;br /&gt;
*При наведении на поле тип выпадет подсказка с уникальным номером объекта.&lt;br /&gt;
*При клике правой мышкой по названию свойства объекта выпадает меню с дополнительными свойствами объекта&lt;br /&gt;
*Некоторые свойства объектов объединены в группы (см. рисунок справа)&lt;br /&gt;
&lt;br /&gt;
=== Создание проекта ===&lt;br /&gt;
&lt;br /&gt;
1. Для создания нового игрового проекта необходимо запустить редактор сцен SceneEditor.&amp;lt;br&amp;gt;&lt;br /&gt;
2. В верхнем меню Проект выбрать Новый (т.е. создать новый проект).&amp;lt;br&amp;gt;&lt;br /&gt;
3. В появившемся окне указываем имя проекта и имя базы ресурсов.Выбираем папку для сохранения проекта&amp;lt;br&amp;gt;&lt;br /&gt;
4. В этом окне выбираем устройство для которого создаётся проект, а затем выбираем тип магазина и вариант версии игры&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:020.JPG]] [[Файл:021.JPG]]&lt;br /&gt;
&lt;br /&gt;
5. В редакторе сцен в меню Проект → Сохранить → проект с именем Learning.&amp;lt;br&amp;gt; &lt;br /&gt;
Эту методику действий можно брать за шаблон для создания других проектов.&amp;lt;br&amp;gt;&lt;br /&gt;
Результат: Создана база ресурсов и проект для выполнения Уроков. &lt;br /&gt;
&lt;br /&gt;
====Важное замечание по созданию проекта====&lt;br /&gt;
[[Файл:2_лэйаута.JPG|right]]&amp;lt;br&amp;gt;&lt;br /&gt;
Предположим нам необходимо создать игру для магазина А и магазина Б. Игра будет отличаться только 10 функциями. Мы можем создать игру для магазина А., а потом скопировать папку с проектом, проект переименовать, внести изменения и получить игру для магазина Б. Результат:  2 игры и 2 папки с ресурсами. Такой подход не приветствуется.&amp;lt;br&amp;gt;&lt;br /&gt;
Для уменьшения времени на создание проекта, подключение ресурсов, внесения одинаковых объектов и  удобства отслеживания багов и прочего в Редакторе Сцен существует возможность создания двух лэйаутов в одном проекте.&lt;br /&gt;
При создании проекта мы выбираем оба магазина, после чего в панели Лэйаут  появится два лэйаута для магазина А и магазина Б(см. рисунок справа. При этом текстовая база проекта и база ресурсов у них будут идентичны. При создании новых объектов в одном лэйауте они же будут создаваться и в другом, при этом можно изменять свойства объекта каждого лэйаута независимо от второго.&amp;lt;br&amp;gt;&lt;br /&gt;
За применение изменений между лэйаутами отвечает параметр &amp;quot;синхронизация&amp;quot;, который есть у каждого объекта. Если стоит &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;
*Очистка базы ресурсов от неиспользуемой графики&lt;br /&gt;
*Запаковка графики в текстуры и контейнер&lt;br /&gt;
*При необходимости конвертирование файлов в pvr форматы&amp;lt;br&amp;gt;&lt;br /&gt;
С целью экономии оперативной памяти на устройстве возможно сжатие графики, упаковка графики в текстуры, создание нескольких исполняемых файлов, проекта, содержащих в себе несколько сцен проекта, и загружаемых в оперативную память устройства по мере прохождения игры.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Процедура экспорта проекта вызывается через меню редактора Проект - Экспортировать проект&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Файл:Scene editor export window.jpg|right]]&lt;br /&gt;
'''Параметры экспорта проекта:'''&amp;lt;br&amp;gt;&lt;br /&gt;
''Настройки параметров графики''&lt;br /&gt;
*Ось Х, ось У — параметры сжатия графики по оси Х,У. Значения  параметра от 0 до 1.&lt;br /&gt;
*При выполнении сжатия рекомендуется обращать внимания на размер лэйаута&lt;br /&gt;
*Сжатие графики  возможно и непропорциональное . Используется редко&lt;br /&gt;
&lt;br /&gt;
''Параметры запаковки графики''&lt;br /&gt;
*Common textures size - максимальный размер графической текстуры для графики, которая не находится в контейнерах и попадает в одну текстуру, или максимальный размер графического файла, если он не в контейнере и не попадает в текстуру.&lt;br /&gt;
*Create dat container -  упаковка ресурсов в файл с типом DAT. Обеспечиваем защиту ресурсов проекта от несанкционированного доступа. Увеличиваем производительность при операциях чтения файлов ресурсов с твердотельного носителя.&lt;br /&gt;
*Quality - Качество графики, которая не находится в контейнерах&lt;br /&gt;
*Optimization - оптимизация графики для лучшего быстродействия(speed) или для занимаемого дискового пространства в распакованном виде(size)&lt;br /&gt;
&lt;br /&gt;
''Тип экспорта''  &lt;br /&gt;
*One project file - формируется один XML файл описывающий проект.     &lt;br /&gt;
*Split project on screens, load partly' - проект будет разбит на отдельные файлы описывающие экраны, загружаться файлы будут в порядке использования (вызова) в проекте. В результате получаем увеличение начальной загрузки проекта и использование меньшего объема оперативной памяти.&lt;br /&gt;
*Release build - оптимизация по размеру файла базы ресурсов и основного файла проекта.&lt;br /&gt;
&lt;br /&gt;
''Export to folder'' - Путь для экспорта. Если указан путь экспорта проекта - производится экспорт согласно настройкам для выбранной платформы. Если не указан - проект экспортируются под выбранную платформу и автоматически запускается сборка проекта.&lt;br /&gt;
Структура папки:&lt;br /&gt;
[[Файл:TreeFolder.png|TreeFolder.png]]&amp;lt;br&amp;gt;&lt;br /&gt;
'''Select platform''' - необходимо выбрать платформу для которой будем собирать проект. При экспорте на все платформы необходимо установить Marmalade SDK [[Установка и настройка|см. инструкцию]] при этом не нужно указывать путь для экспорта (оставить поле пустым). В результате запустится скрипт сборки исполняемого пакета, это будет видно по черным экранам с ходом выполнения процесса сборки.Процесс экспорта будет отображаться в окне.&lt;br /&gt;
&lt;br /&gt;
Таблица результирующих форматов для платформ&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
 |качество, оптимизация&lt;br /&gt;
 |IOS&lt;br /&gt;
 |Android&lt;br /&gt;
 |Windows Phone8&lt;br /&gt;
 |BlackBerry&lt;br /&gt;
 |Windows&lt;br /&gt;
 |-&lt;br /&gt;
 |Best, size&lt;br /&gt;
 |png(RGBA)&lt;br /&gt;
 |png(RGBA)&lt;br /&gt;
 |png(RGBA)&lt;br /&gt;
 |png(RGBA)&lt;br /&gt;
 |png(RGBA)&lt;br /&gt;
 |-&lt;br /&gt;
 |Best, speed&lt;br /&gt;
 |jxr&lt;br /&gt;
 |jxr&lt;br /&gt;
 |jxr&lt;br /&gt;
 |jxr&lt;br /&gt;
 |jxr&lt;br /&gt;
 |-&lt;br /&gt;
 |Medium, size&lt;br /&gt;
 |jpg + png(a)&lt;br /&gt;
 |jpg + png(a)&lt;br /&gt;
 |jpg + png(a)&lt;br /&gt;
 |jpg + png(a)&lt;br /&gt;
 |jpg + png(a)&lt;br /&gt;
 |-&lt;br /&gt;
 |Medium, speed&lt;br /&gt;
 |PVRTC + jxr&lt;br /&gt;
 |ETC1 + jxr&lt;br /&gt;
 |BC3 + hitmask&lt;br /&gt;
 |PVR8888&lt;br /&gt;
 |BC3 + hitmask&lt;br /&gt;
 |-&lt;br /&gt;
 |Low, size&lt;br /&gt;
 |PVRTC + png(a)&lt;br /&gt;
 |ETC1 + png(a)&lt;br /&gt;
 |jpg + png(a)&lt;br /&gt;
 |jpg + png(a)&lt;br /&gt;
 |jpg + png(a)&lt;br /&gt;
 |-&lt;br /&gt;
 |Low, speed&lt;br /&gt;
 |PVRTC(RGBA) + hitmask&lt;br /&gt;
 |ETC1 + PVRA8&lt;br /&gt;
 |BC3 + hitmask&lt;br /&gt;
 |PVR8888&lt;br /&gt;
 |BC3 + hitmask&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
*'''ETC''' - Ericsson Texture Compression : для устройств Android&lt;br /&gt;
*'''PVR''' - PowerVR Texture Compression : для устройств IOS&lt;br /&gt;
*'''bc3(dxt)''' -  DirectX Texture : Windows, Windows Phone 8&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Режим отладки ===&lt;br /&gt;
&lt;br /&gt;
Включение режима отладки:&lt;br /&gt;
&lt;br /&gt;
[[Файл:SE debug0.JPG]]&lt;br /&gt;
&lt;br /&gt;
Инструменты отладки:&lt;br /&gt;
&lt;br /&gt;
[[Файл:SE debug1.JPG]]&lt;br /&gt;
&lt;br /&gt;
1) '''Debug dock''' - установка брейкпоинтов (точек остановки) и вывод отладочного лога от сервера.&lt;br /&gt;
2) '''Logging''' - вывод логов вьювера (параллельно с viewer.log) с подсветкой и фильтрами.&lt;br /&gt;
3) '''Debug Options''' - вывод дерева опций, подсветка изменений (при работе вьювера), слежение за конкретными параметрами.&lt;br /&gt;
4) '''Debug Properties''' - вывод параметров объекта под курсором по хоткею (из вьювера) - на момент написания не реализовано.&lt;br /&gt;
&lt;br /&gt;
==== Debug dock ====&lt;br /&gt;
&lt;br /&gt;
[[Файл:SE debug2.JPG]]&lt;br /&gt;
&lt;br /&gt;
Принцип работы брейкпоинтов (точек остановки):&lt;br /&gt;
* Добавляем в табличку брейкпоинтов новый пункт&lt;br /&gt;
* Задает objectID интересующего объекта&lt;br /&gt;
** Задаем название состояния, при переходе на которое вьювер станет на паузу&lt;br /&gt;
** ИЛИ задаем название параметра, при изменении которого вьювер станет на паузу&lt;br /&gt;
* Запускаем вьювер с отладкой&lt;br /&gt;
*: [[Файл:SE debug3.jpg]]&lt;br /&gt;
* После перехода в заданное состояние вьювер станет за паузу, а в редактре сцен откроется окно машинки с этим состоянием.&lt;br /&gt;
&lt;br /&gt;
==== Logging ====&lt;br /&gt;
&lt;br /&gt;
Se_debug4&lt;br /&gt;
&lt;br /&gt;
* Сие логирование происходит только с запущеным в режиме отладки вьювером;&lt;br /&gt;
* Логи с ворнингами выделены оранжевым цветом ('''не игнорируйте их''');&lt;br /&gt;
* Логи с ошибками выделены красным цветом ('''а их уж тем более не игнорируйте!''');&lt;br /&gt;
* Кнопка ''Clear log'' - очищает логи из данного окна;&lt;br /&gt;
* Кнопка ''(...)'' - открыть лог из файла&lt;br /&gt;
* Флаг ''Autoscroll'' - при добавлении новой записи листает список в конец&lt;br /&gt;
&lt;br /&gt;
'''Фильтрация логов'''&lt;br /&gt;
* Фильтр задается для каждого поля отдельно;&lt;br /&gt;
* Можно фильтровать по нескольким полям одновременно;&lt;br /&gt;
* Для фильтрации по какому-либо полю просто нажмите на его заглавие (Level / Time / ...)&lt;br /&gt;
* '''Как правильно задавать фильтр''':&lt;br /&gt;
**&lt;br /&gt;
&lt;br /&gt;
=Горячие клавиши=&lt;br /&gt;
* '''Клавиша F10''' - По нажатию разворачивает/сворачивает все объекты и подобъекты в дереве проекта или в свойствах объекта.&lt;br /&gt;
* '''Клавиша Num* и Num-''' - По нажатию разворачивают/сворачивают подобъекты у выделенного объекта в дереве проекта или в свойствах объекта.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:AppSalute]]&lt;/div&gt;</summary>
		<author><name>Bmor</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.appsalutecreator.com/index.php?title=%D0%98%D0%BD%D1%82%D0%B5%D1%80%D1%84%D0%B5%D0%B9%D1%81_ScenceEditor&amp;diff=9404</id>
		<title>Интерфейс ScenceEditor</title>
		<link rel="alternate" type="text/html" href="https://wiki.appsalutecreator.com/index.php?title=%D0%98%D0%BD%D1%82%D0%B5%D1%80%D1%84%D0%B5%D0%B9%D1%81_ScenceEditor&amp;diff=9404"/>
		<updated>2018-02-05T09:06:38Z</updated>

		<summary type="html">&lt;p&gt;Bmor: /* Режим отладки */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC right}}&lt;br /&gt;
== [[Файл:Ico_main.png]]Редактор сцен ==&lt;br /&gt;
&lt;br /&gt;
'''Редактор сцен''' — программа, предназначенная для создания, редактирования и экспорта  игровых экранов, в котором происходит настройка свойств объектов и игровой логики. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Окно редактора сцен состоит из:'''&lt;br /&gt;
*меню редактора;&lt;br /&gt;
*рабочей области, в которой размещен объект сцена, на котором размещают другие объекты;&lt;br /&gt;
*панель Лэйаут, в которой размещено иерархическое дерево проекта, которое состоит из экранов, на которых находятся игровые объекты;&lt;br /&gt;
*панель Свойства, которая отображает свойства объекта, который выбран в дереве проекта;&lt;br /&gt;
*панель для построения сплайна;&lt;br /&gt;
*панель инструментов;&lt;br /&gt;
*строка Координаты, отображающая координаты курсора в текущий момент времени&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для включения или отключения панели кликаем правой кнопкой мыши по серой области меню редактора и ставим галочку. Панели можно расположить на экране в любом порядке.&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[Файл:Головна2.PNG|700px]]&lt;br /&gt;
&lt;br /&gt;
=== Меню редактора ===&lt;br /&gt;
&lt;br /&gt;
==== Project (Проект)====&lt;br /&gt;
меню, которое содержит список команд, с помощью которых можно создать новый или загрузить уже созданный проект, сохранить проект с указанием места сохранения и т.д.&lt;br /&gt;
*'''New project''' - создать новый проект; &lt;br /&gt;
*'''Open''' - открыть уже созданный проект (проект обязательно должен находится в подкаталоге редактора); &lt;br /&gt;
*'''Recent project...''' - показывает список последних открывавшихся проектов; &lt;br /&gt;
*'''Close''' - закрытие проекта (редактор при этом не закрывается); &lt;br /&gt;
*'''New project''' - создать новый проект; &lt;br /&gt;
*'''Save''' - сохранение проекта; &lt;br /&gt;
*'''Save as...''' - сохранение проекта под новым именем или в новом каталоге; &lt;br /&gt;
*'''Export...''' - экспорт проекта; &lt;br /&gt;
*'''Project options...''' - опции проекта; &lt;br /&gt;
*'''Exit''' - закрытие редактора. &lt;br /&gt;
&lt;br /&gt;
==== Edit (Редактирование)====&lt;br /&gt;
меню редактирования проекта:&lt;br /&gt;
*'''Copy''' - копирование объекта; &lt;br /&gt;
*'''Paste into current object''' - вставка объекта в выбранный объект; &lt;br /&gt;
*'''Paste after current object''' - вставка объекта после выбранного объекта;&lt;br /&gt;
*'''Delete...''' - удаление объекта;&lt;br /&gt;
*'''Scale object''' - масштабирование выбранного объекта, если у него есть масштаб (scale x \ scale y);&lt;br /&gt;
*'''Rotate object''' - поворот выбранного объекта, если у него есть параметр поворота (angle);&lt;br /&gt;
*'''Modify vertex''' - изменение положения точек вертекса у выбранного объекта, если вертексы включены; &lt;br /&gt;
*'''Find object...''' - поиск объекта по id или по имени;&lt;br /&gt;
*'''Setup Editor...''' - настройки редактора.&lt;br /&gt;
&lt;br /&gt;
[[Файл:SetupEditor.png|right|400px]]&lt;br /&gt;
&lt;br /&gt;
1) Языки - выбор языка редактора.&lt;br /&gt;
&lt;br /&gt;
2) Work mode - выбор режима работы.&lt;br /&gt;
&lt;br /&gt;
3) Syles - выбор темы редактора.&lt;br /&gt;
&lt;br /&gt;
4) Перемещение сцены мышью или клавишами клавиатуры - позволяет перемещать сцену на экране.&lt;br /&gt;
&lt;br /&gt;
5) Рисовать сетку на экране - отображать сетку на экране или нет.&lt;br /&gt;
&lt;br /&gt;
6) Utilities - Подключение утилит.&lt;br /&gt;
&lt;br /&gt;
	В редакторе есть возможность подключения утилит в форматах *.bat, *.exe, *.py, *.pyw, *.vbs.&lt;br /&gt;
&lt;br /&gt;
	&lt;br /&gt;
	Для примера, подключим bat-файл, открывающий логи вьвера в notepad++.&lt;br /&gt;
&lt;br /&gt;
	Для этого создадим файл Logs.bat со следущими командами:&lt;br /&gt;
&lt;br /&gt;
	&lt;br /&gt;
		cd C:\Users\&amp;lt;your-user&amp;gt;\AppData\Roaming\Absolutist\Viewer&lt;br /&gt;
&lt;br /&gt;
		start &amp;quot;C:\Program Files (x86)\Notepad++\notepad++.exe&amp;quot; &amp;quot;viewer.log&amp;quot; &lt;br /&gt;
&lt;br /&gt;
		&lt;br /&gt;
	В настройки редактора добавим утилиту нажав на плюсик. В списке ниже появится поле добавленной утилиты.&lt;br /&gt;
 &lt;br /&gt;
Нажмем на многоточие в столбце &amp;quot;Browse&amp;quot;. В открывшимся окне &amp;quot;Open utility&amp;quot; откроем Logs.bat файл. После этого в меню редактора появится меню &amp;quot;Utilities&amp;quot; с командой Logs.&lt;br /&gt;
&lt;br /&gt;
==== View (Просмотр)====&lt;br /&gt;
*'''Toggle grid''' - включает\выключает отображение сетки на сцене;&lt;br /&gt;
*'''open/hide comment''' - показывает\скрывает комментарии к объекту;&lt;br /&gt;
*'''Disable object movements''' - выключает\включает возможность перемещать объекты по сцене.&lt;br /&gt;
&lt;br /&gt;
=== Viewer (Вьювер) ===&lt;br /&gt;
*'''Start Viewer''' - запуск вьювера;&lt;br /&gt;
*'''Start Viewer with changed time''' - запуск вьювера с заданным временем;&lt;br /&gt;
*'''Save and run viewer...''' - сохраняет проект и запускает вьювер;&lt;br /&gt;
*'''Run Viewer.bat''' - ???;&lt;br /&gt;
*'''Delete temp data''' - удаление опций; &lt;br /&gt;
&lt;br /&gt;
====Layouts (Лейаут, Макеты)====&lt;br /&gt;
меню работа с лейаутами проекта (выбор макета устройства для проекта, редактирование экранов):&lt;br /&gt;
*'''Add new layout...''' - создание нового лейаута;&lt;br /&gt;
*'''Delete layout...''' - удаление лейаута;&lt;br /&gt;
*'''Layout settings...''' - настройки лейаута;&lt;br /&gt;
*'''Add folder...''' - создание папки в текущем лейаута;&lt;br /&gt;
*'''Add screen...''' - создание нового экрана.&lt;br /&gt;
==== Tools (Инструменты)====&lt;br /&gt;
меню дополнительных редакторов и инструментов для проекта (вызов редактора ресурсов, текстового редактора, анализ проекта). Список этого меню вынесен на панель с кнопками быстрого запуска:&lt;br /&gt;
*'''Resources Editor''' - редактор ресурсов;&lt;br /&gt;
*'''Texts Editor''' - текстовый редактор;&lt;br /&gt;
*'''Analyzer''' - анализатор ресурсов (показывает количество объектов проекта, их размер занимаемой памяти, сведения о ресурсах каждого объекта (размер, ID номер, название (имя), местонахождение в базе ресурсов));&lt;br /&gt;
*'''Object info...''' - общие свойства объекта (показывает размер памяти занимаемой текстурами);&lt;br /&gt;
*'''Options info...''' - информация об опциях.&lt;br /&gt;
&lt;br /&gt;
==== Help (Помощь)====&lt;br /&gt;
меню вызова справки.&lt;br /&gt;
&lt;br /&gt;
=== Кнопки панели Инструменты ===&lt;br /&gt;
Некоторые инструменты также вызываются горячими клавишами (комбинация клавиш приведена в скобках )&lt;br /&gt;
&lt;br /&gt;
[[Файл:00 6.png]] (Ctrl+N) — создать новый проект; &amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:00 7.png]](Ctrl+O) — загрузить уже созданный проект;&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:00 8.png]](Ctrl+S) — сохранить изменения в проекте;&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:00 9.png]] —  запустить Viewer;&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:009.JPG]] — нормальный вид; &amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:Ico_text.png|25px]] - вызов текстового редактора; &amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:Ico_base.png|25px]] — вызов редактора ресурсов;&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:013.JPG]] — анализатор ресурсов (показывает количество объектов проекта, их размер занимаемой памяти, сведения о ресурсах каждого объекта (размер, ID номер, название (имя), местонахождение в базе ресурсов)); &amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:014.JPG]]— поиск объекта по id или по имени.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Функции рабочей области===&lt;br /&gt;
&lt;br /&gt;
'''1) Масштабирование рабочей области&amp;lt;br&amp;gt;'''&lt;br /&gt;
Ctrl + колесико мышки   крутим  вперед  - увеличиваем объекты  , назад  - уменьшаем объекты.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''2)Перемещение по рабочей области&amp;lt;br&amp;gt;'''&lt;br /&gt;
После масштабирования возникает необходимость переместиться  с левого  уголка экрана в далекий правый, переместиться к выбраному обьекту, вверх или вниз.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Кликаем правой кнопкой мыши по горизонтальному scroll и выпадает меню: &lt;br /&gt;
*scroll here —  функция перемещает экран к объекту, который выделен в Лэйауте;&lt;br /&gt;
*scroll left / right  -  функция перемещает экран на маленькое расстояние вправо / влево;&lt;br /&gt;
*left  / right edge — функция  перемещает экран в левый / правый угол экрана;&lt;br /&gt;
*page left / right  - функция показывает левую/правую часть экрана&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Кликаем правой кнопкой мыши по вертикальному scroll и выпадает меню: &lt;br /&gt;
*scroll here —  функция перемещает экран к объекту, который выделен в Лэйауте;&lt;br /&gt;
*scroll up / down  -  функция перемещает экран на маленькое расстояние вверх / вниз;&lt;br /&gt;
*top/bottom  - функция  перемещает экран вверх / вниз;&lt;br /&gt;
*page up / down  - функция перемещает экран  верхнюю / нижнюю часть экрана.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Меню прокрутки скрывается по нажатию клавиши Alt&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Функции панели Лэйаут===&lt;br /&gt;
[[Файл:Лэйаут_1.JPG|right]] &lt;br /&gt;
При клике правой кнопкой мыши по выбранному лэйауту (см. рисунок справа)&lt;br /&gt;
*Создать папку в текущем объекте;&lt;br /&gt;
*Создать экран в текущем объекте -  создание объекта в текущем лэйауте;&lt;br /&gt;
*Импорт/экспорт экранов — импорт/экспорт одного или нескольких экранов;&lt;br /&gt;
*Развернуть / Свернуть объекты с подобъектами — сворачивает  / разворачивает дерево объектов всех экранов&amp;lt;br&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
При клике правой кнопкой мыши по выбранному экрану, сцене или объекту возможно:&lt;br /&gt;
*Lock (Unlock) screen -  золочивание (разлочивание) экрана: нельзя перемещать, удалять и изменять объекты (сцены) экрана, причем, если сцена расшареная, то она становиться залоченой и на остальных экранах; на залоченых экранах в панели проекта появляется замочек; &lt;br /&gt;
*Lock (Unlock) scene -  золочивание (разлочивание) сцены: нельзя перемещать, удалять и изменять объекты (машины, картинки и др.) сцены, причем, если сцена расшареная, то она становиться залоченой и на остальных экранах; на залоченых сценах также появляется замочек; &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;
Пусть на сцене будет находится очень много картинок, которые должны находиться в строго определенных местах. Переместим нашу картинку в нужную точку на сцене. Но у нас картинок очень много и мы потратим много времени на их расстановку. Для уменьшения времени на расстановку картинок воспользуемся функцией расположить сцену в соответствии  с изображением.&amp;lt;br&amp;gt;&lt;br /&gt;
Функция расположить сцену в соответствии с изображением перемещает картинку  в заданную точку  художниками.   Художник решил, что клумба должна быть в правом нижнем углу, после применения функции  расположить сцену в соответствии с изображением, картинка станет именно на указанное художником место. &amp;lt;br&amp;gt;&lt;br /&gt;
Данная функция вызывается кликом правой кнопкой мыши по  объекту&amp;lt;br&amp;gt; [[Файл:панель_свойства_1.JPG|right]]&lt;br /&gt;
&lt;br /&gt;
===Функции панели Свойства===&lt;br /&gt;
&lt;br /&gt;
*При клике на  тип или имя  некоторых объектов вызываются дополнительные окна.Например, при клике на тип Machine открывается окно, где прописываются функции объекта типа Machine.&lt;br /&gt;
*При наведении на поле тип выпадет подсказка с уникальным номером объекта.&lt;br /&gt;
*При клике правой мышкой по названию свойства объекта выпадает меню с дополнительными свойствами объекта&lt;br /&gt;
*Некоторые свойства объектов объединены в группы (см. рисунок справа)&lt;br /&gt;
&lt;br /&gt;
=== Создание проекта ===&lt;br /&gt;
&lt;br /&gt;
1. Для создания нового игрового проекта необходимо запустить редактор сцен SceneEditor.&amp;lt;br&amp;gt;&lt;br /&gt;
2. В верхнем меню Проект выбрать Новый (т.е. создать новый проект).&amp;lt;br&amp;gt;&lt;br /&gt;
3. В появившемся окне указываем имя проекта и имя базы ресурсов.Выбираем папку для сохранения проекта&amp;lt;br&amp;gt;&lt;br /&gt;
4. В этом окне выбираем устройство для которого создаётся проект, а затем выбираем тип магазина и вариант версии игры&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:020.JPG]] [[Файл:021.JPG]]&lt;br /&gt;
&lt;br /&gt;
5. В редакторе сцен в меню Проект → Сохранить → проект с именем Learning.&amp;lt;br&amp;gt; &lt;br /&gt;
Эту методику действий можно брать за шаблон для создания других проектов.&amp;lt;br&amp;gt;&lt;br /&gt;
Результат: Создана база ресурсов и проект для выполнения Уроков. &lt;br /&gt;
&lt;br /&gt;
====Важное замечание по созданию проекта====&lt;br /&gt;
[[Файл:2_лэйаута.JPG|right]]&amp;lt;br&amp;gt;&lt;br /&gt;
Предположим нам необходимо создать игру для магазина А и магазина Б. Игра будет отличаться только 10 функциями. Мы можем создать игру для магазина А., а потом скопировать папку с проектом, проект переименовать, внести изменения и получить игру для магазина Б. Результат:  2 игры и 2 папки с ресурсами. Такой подход не приветствуется.&amp;lt;br&amp;gt;&lt;br /&gt;
Для уменьшения времени на создание проекта, подключение ресурсов, внесения одинаковых объектов и  удобства отслеживания багов и прочего в Редакторе Сцен существует возможность создания двух лэйаутов в одном проекте.&lt;br /&gt;
При создании проекта мы выбираем оба магазина, после чего в панели Лэйаут  появится два лэйаута для магазина А и магазина Б(см. рисунок справа. При этом текстовая база проекта и база ресурсов у них будут идентичны. При создании новых объектов в одном лэйауте они же будут создаваться и в другом, при этом можно изменять свойства объекта каждого лэйаута независимо от второго.&amp;lt;br&amp;gt;&lt;br /&gt;
За применение изменений между лэйаутами отвечает параметр &amp;quot;синхронизация&amp;quot;, который есть у каждого объекта. Если стоит &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;
*Очистка базы ресурсов от неиспользуемой графики&lt;br /&gt;
*Запаковка графики в текстуры и контейнер&lt;br /&gt;
*При необходимости конвертирование файлов в pvr форматы&amp;lt;br&amp;gt;&lt;br /&gt;
С целью экономии оперативной памяти на устройстве возможно сжатие графики, упаковка графики в текстуры, создание нескольких исполняемых файлов, проекта, содержащих в себе несколько сцен проекта, и загружаемых в оперативную память устройства по мере прохождения игры.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Процедура экспорта проекта вызывается через меню редактора Проект - Экспортировать проект&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Файл:Scene editor export window.jpg|right]]&lt;br /&gt;
'''Параметры экспорта проекта:'''&amp;lt;br&amp;gt;&lt;br /&gt;
''Настройки параметров графики''&lt;br /&gt;
*Ось Х, ось У — параметры сжатия графики по оси Х,У. Значения  параметра от 0 до 1.&lt;br /&gt;
*При выполнении сжатия рекомендуется обращать внимания на размер лэйаута&lt;br /&gt;
*Сжатие графики  возможно и непропорциональное . Используется редко&lt;br /&gt;
&lt;br /&gt;
''Параметры запаковки графики''&lt;br /&gt;
*Common textures size - максимальный размер графической текстуры для графики, которая не находится в контейнерах и попадает в одну текстуру, или максимальный размер графического файла, если он не в контейнере и не попадает в текстуру.&lt;br /&gt;
*Create dat container -  упаковка ресурсов в файл с типом DAT. Обеспечиваем защиту ресурсов проекта от несанкционированного доступа. Увеличиваем производительность при операциях чтения файлов ресурсов с твердотельного носителя.&lt;br /&gt;
*Quality - Качество графики, которая не находится в контейнерах&lt;br /&gt;
*Optimization - оптимизация графики для лучшего быстродействия(speed) или для занимаемого дискового пространства в распакованном виде(size)&lt;br /&gt;
&lt;br /&gt;
''Тип экспорта''  &lt;br /&gt;
*One project file - формируется один XML файл описывающий проект.     &lt;br /&gt;
*Split project on screens, load partly' - проект будет разбит на отдельные файлы описывающие экраны, загружаться файлы будут в порядке использования (вызова) в проекте. В результате получаем увеличение начальной загрузки проекта и использование меньшего объема оперативной памяти.&lt;br /&gt;
*Release build - оптимизация по размеру файла базы ресурсов и основного файла проекта.&lt;br /&gt;
&lt;br /&gt;
''Export to folder'' - Путь для экспорта. Если указан путь экспорта проекта - производится экспорт согласно настройкам для выбранной платформы. Если не указан - проект экспортируются под выбранную платформу и автоматически запускается сборка проекта.&lt;br /&gt;
Структура папки:&lt;br /&gt;
[[Файл:TreeFolder.png|TreeFolder.png]]&amp;lt;br&amp;gt;&lt;br /&gt;
'''Select platform''' - необходимо выбрать платформу для которой будем собирать проект. При экспорте на все платформы необходимо установить Marmalade SDK [[Установка и настройка|см. инструкцию]] при этом не нужно указывать путь для экспорта (оставить поле пустым). В результате запустится скрипт сборки исполняемого пакета, это будет видно по черным экранам с ходом выполнения процесса сборки.Процесс экспорта будет отображаться в окне.&lt;br /&gt;
&lt;br /&gt;
Таблица результирующих форматов для платформ&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
 |качество, оптимизация&lt;br /&gt;
 |IOS&lt;br /&gt;
 |Android&lt;br /&gt;
 |Windows Phone8&lt;br /&gt;
 |BlackBerry&lt;br /&gt;
 |Windows&lt;br /&gt;
 |-&lt;br /&gt;
 |Best, size&lt;br /&gt;
 |png(RGBA)&lt;br /&gt;
 |png(RGBA)&lt;br /&gt;
 |png(RGBA)&lt;br /&gt;
 |png(RGBA)&lt;br /&gt;
 |png(RGBA)&lt;br /&gt;
 |-&lt;br /&gt;
 |Best, speed&lt;br /&gt;
 |jxr&lt;br /&gt;
 |jxr&lt;br /&gt;
 |jxr&lt;br /&gt;
 |jxr&lt;br /&gt;
 |jxr&lt;br /&gt;
 |-&lt;br /&gt;
 |Medium, size&lt;br /&gt;
 |jpg + png(a)&lt;br /&gt;
 |jpg + png(a)&lt;br /&gt;
 |jpg + png(a)&lt;br /&gt;
 |jpg + png(a)&lt;br /&gt;
 |jpg + png(a)&lt;br /&gt;
 |-&lt;br /&gt;
 |Medium, speed&lt;br /&gt;
 |PVRTC + jxr&lt;br /&gt;
 |ETC1 + jxr&lt;br /&gt;
 |BC3 + hitmask&lt;br /&gt;
 |PVR8888&lt;br /&gt;
 |BC3 + hitmask&lt;br /&gt;
 |-&lt;br /&gt;
 |Low, size&lt;br /&gt;
 |PVRTC + png(a)&lt;br /&gt;
 |ETC1 + png(a)&lt;br /&gt;
 |jpg + png(a)&lt;br /&gt;
 |jpg + png(a)&lt;br /&gt;
 |jpg + png(a)&lt;br /&gt;
 |-&lt;br /&gt;
 |Low, speed&lt;br /&gt;
 |PVRTC(RGBA) + hitmask&lt;br /&gt;
 |ETC1 + PVRA8&lt;br /&gt;
 |BC3 + hitmask&lt;br /&gt;
 |PVR8888&lt;br /&gt;
 |BC3 + hitmask&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
*'''ETC''' - Ericsson Texture Compression : для устройств Android&lt;br /&gt;
*'''PVR''' - PowerVR Texture Compression : для устройств IOS&lt;br /&gt;
*'''bc3(dxt)''' -  DirectX Texture : Windows, Windows Phone 8&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Режим отладки ===&lt;br /&gt;
&lt;br /&gt;
Включение режима отладки:&lt;br /&gt;
&lt;br /&gt;
[[Файл:SE debug0.JPG]]&lt;br /&gt;
&lt;br /&gt;
Инструменты отладки:&lt;br /&gt;
&lt;br /&gt;
[[Файл:SE debug1.JPG]]&lt;br /&gt;
&lt;br /&gt;
1) '''Debug dock''' - установка брейкпоинтов (точек остановки) и вывод отладочного лога от сервера.&lt;br /&gt;
2) '''Logging''' - вывод логов вьювера (параллельно с viewer.log) с подсветкой и фильтрами.&lt;br /&gt;
3) '''Debug Options''' - вывод дерева опций, подсветка изменений (при работе вьювера), слежение за конкретными параметрами.&lt;br /&gt;
4) '''Debug Properties''' - вывод параметров объекта под курсором по хоткею (из вьювера) - на момент написания не реализовано.&lt;br /&gt;
&lt;br /&gt;
==== Debug dock ====&lt;br /&gt;
&lt;br /&gt;
[[Файл:SE debug2.JPG]]&lt;br /&gt;
&lt;br /&gt;
Принцип работы брейкпоинтов (точек остановки):&lt;br /&gt;
* Добавляем в табличку брейкпоинтов новый пункт&lt;br /&gt;
* Задает objectID интересующего объекта&lt;br /&gt;
** Задаем название состояния, при переходе на которое вьювер станет на паузу&lt;br /&gt;
** ИЛИ задаем название параметра, при изменении которого вьювер станет на паузу&lt;br /&gt;
* Запускаем вьювер с отладкой&lt;br /&gt;
*: [[Файл:SE debug3.JPG]]&lt;br /&gt;
* После перехода в заданное состояние вьювер станет за паузу, а в редактре сцен откроется окно машинки с этим состоянием.&lt;br /&gt;
&lt;br /&gt;
=Горячие клавиши=&lt;br /&gt;
* '''Клавиша F10''' - По нажатию разворачивает/сворачивает все объекты и подобъекты в дереве проекта или в свойствах объекта.&lt;br /&gt;
* '''Клавиша Num* и Num-''' - По нажатию разворачивают/сворачивают подобъекты у выделенного объекта в дереве проекта или в свойствах объекта.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:AppSalute]]&lt;/div&gt;</summary>
		<author><name>Bmor</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.appsalutecreator.com/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:SE_debug3.jpg&amp;diff=9403</id>
		<title>Файл:SE debug3.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.appsalutecreator.com/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:SE_debug3.jpg&amp;diff=9403"/>
		<updated>2018-02-05T09:06:33Z</updated>

		<summary type="html">&lt;p&gt;Bmor: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Bmor</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.appsalutecreator.com/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:SE_debug2.JPG&amp;diff=9402</id>
		<title>Файл:SE debug2.JPG</title>
		<link rel="alternate" type="text/html" href="https://wiki.appsalutecreator.com/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:SE_debug2.JPG&amp;diff=9402"/>
		<updated>2018-02-05T09:05:57Z</updated>

		<summary type="html">&lt;p&gt;Bmor: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Bmor</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.appsalutecreator.com/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:SE_debug1.JPG&amp;diff=9401</id>
		<title>Файл:SE debug1.JPG</title>
		<link rel="alternate" type="text/html" href="https://wiki.appsalutecreator.com/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:SE_debug1.JPG&amp;diff=9401"/>
		<updated>2018-02-05T09:05:37Z</updated>

		<summary type="html">&lt;p&gt;Bmor: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Bmor</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.appsalutecreator.com/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:SE_debug0.JPG&amp;diff=9400</id>
		<title>Файл:SE debug0.JPG</title>
		<link rel="alternate" type="text/html" href="https://wiki.appsalutecreator.com/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:SE_debug0.JPG&amp;diff=9400"/>
		<updated>2018-02-05T09:05:09Z</updated>

		<summary type="html">&lt;p&gt;Bmor: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Bmor</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.appsalutecreator.com/index.php?title=%D0%98%D0%BD%D1%82%D0%B5%D1%80%D1%84%D0%B5%D0%B9%D1%81_ScenceEditor&amp;diff=9399</id>
		<title>Интерфейс ScenceEditor</title>
		<link rel="alternate" type="text/html" href="https://wiki.appsalutecreator.com/index.php?title=%D0%98%D0%BD%D1%82%D0%B5%D1%80%D1%84%D0%B5%D0%B9%D1%81_ScenceEditor&amp;diff=9399"/>
		<updated>2018-02-05T07:54:17Z</updated>

		<summary type="html">&lt;p&gt;Bmor: /* Файл:Ico_main.pngРедактор сцен */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC right}}&lt;br /&gt;
== [[Файл:Ico_main.png]]Редактор сцен ==&lt;br /&gt;
&lt;br /&gt;
'''Редактор сцен''' — программа, предназначенная для создания, редактирования и экспорта  игровых экранов, в котором происходит настройка свойств объектов и игровой логики. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Окно редактора сцен состоит из:'''&lt;br /&gt;
*меню редактора;&lt;br /&gt;
*рабочей области, в которой размещен объект сцена, на котором размещают другие объекты;&lt;br /&gt;
*панель Лэйаут, в которой размещено иерархическое дерево проекта, которое состоит из экранов, на которых находятся игровые объекты;&lt;br /&gt;
*панель Свойства, которая отображает свойства объекта, который выбран в дереве проекта;&lt;br /&gt;
*панель для построения сплайна;&lt;br /&gt;
*панель инструментов;&lt;br /&gt;
*строка Координаты, отображающая координаты курсора в текущий момент времени&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для включения или отключения панели кликаем правой кнопкой мыши по серой области меню редактора и ставим галочку. Панели можно расположить на экране в любом порядке.&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[Файл:Головна2.PNG|700px]]&lt;br /&gt;
&lt;br /&gt;
=== Меню редактора ===&lt;br /&gt;
&lt;br /&gt;
==== Project (Проект)====&lt;br /&gt;
меню, которое содержит список команд, с помощью которых можно создать новый или загрузить уже созданный проект, сохранить проект с указанием места сохранения и т.д.&lt;br /&gt;
*'''New project''' - создать новый проект; &lt;br /&gt;
*'''Open''' - открыть уже созданный проект (проект обязательно должен находится в подкаталоге редактора); &lt;br /&gt;
*'''Recent project...''' - показывает список последних открывавшихся проектов; &lt;br /&gt;
*'''Close''' - закрытие проекта (редактор при этом не закрывается); &lt;br /&gt;
*'''New project''' - создать новый проект; &lt;br /&gt;
*'''Save''' - сохранение проекта; &lt;br /&gt;
*'''Save as...''' - сохранение проекта под новым именем или в новом каталоге; &lt;br /&gt;
*'''Export...''' - экспорт проекта; &lt;br /&gt;
*'''Project options...''' - опции проекта; &lt;br /&gt;
*'''Exit''' - закрытие редактора. &lt;br /&gt;
&lt;br /&gt;
==== Edit (Редактирование)====&lt;br /&gt;
меню редактирования проекта:&lt;br /&gt;
*'''Copy''' - копирование объекта; &lt;br /&gt;
*'''Paste into current object''' - вставка объекта в выбранный объект; &lt;br /&gt;
*'''Paste after current object''' - вставка объекта после выбранного объекта;&lt;br /&gt;
*'''Delete...''' - удаление объекта;&lt;br /&gt;
*'''Scale object''' - масштабирование выбранного объекта, если у него есть масштаб (scale x \ scale y);&lt;br /&gt;
*'''Rotate object''' - поворот выбранного объекта, если у него есть параметр поворота (angle);&lt;br /&gt;
*'''Modify vertex''' - изменение положения точек вертекса у выбранного объекта, если вертексы включены; &lt;br /&gt;
*'''Find object...''' - поиск объекта по id или по имени;&lt;br /&gt;
*'''Setup Editor...''' - настройки редактора.&lt;br /&gt;
&lt;br /&gt;
[[Файл:SetupEditor.png|right|400px]]&lt;br /&gt;
&lt;br /&gt;
1) Языки - выбор языка редактора.&lt;br /&gt;
&lt;br /&gt;
2) Work mode - выбор режима работы.&lt;br /&gt;
&lt;br /&gt;
3) Syles - выбор темы редактора.&lt;br /&gt;
&lt;br /&gt;
4) Перемещение сцены мышью или клавишами клавиатуры - позволяет перемещать сцену на экране.&lt;br /&gt;
&lt;br /&gt;
5) Рисовать сетку на экране - отображать сетку на экране или нет.&lt;br /&gt;
&lt;br /&gt;
6) Utilities - Подключение утилит.&lt;br /&gt;
&lt;br /&gt;
	В редакторе есть возможность подключения утилит в форматах *.bat, *.exe, *.py, *.pyw, *.vbs.&lt;br /&gt;
&lt;br /&gt;
	&lt;br /&gt;
	Для примера, подключим bat-файл, открывающий логи вьвера в notepad++.&lt;br /&gt;
&lt;br /&gt;
	Для этого создадим файл Logs.bat со следущими командами:&lt;br /&gt;
&lt;br /&gt;
	&lt;br /&gt;
		cd C:\Users\&amp;lt;your-user&amp;gt;\AppData\Roaming\Absolutist\Viewer&lt;br /&gt;
&lt;br /&gt;
		start &amp;quot;C:\Program Files (x86)\Notepad++\notepad++.exe&amp;quot; &amp;quot;viewer.log&amp;quot; &lt;br /&gt;
&lt;br /&gt;
		&lt;br /&gt;
	В настройки редактора добавим утилиту нажав на плюсик. В списке ниже появится поле добавленной утилиты.&lt;br /&gt;
 &lt;br /&gt;
Нажмем на многоточие в столбце &amp;quot;Browse&amp;quot;. В открывшимся окне &amp;quot;Open utility&amp;quot; откроем Logs.bat файл. После этого в меню редактора появится меню &amp;quot;Utilities&amp;quot; с командой Logs.&lt;br /&gt;
&lt;br /&gt;
==== View (Просмотр)====&lt;br /&gt;
*'''Toggle grid''' - включает\выключает отображение сетки на сцене;&lt;br /&gt;
*'''open/hide comment''' - показывает\скрывает комментарии к объекту;&lt;br /&gt;
*'''Disable object movements''' - выключает\включает возможность перемещать объекты по сцене.&lt;br /&gt;
&lt;br /&gt;
=== Viewer (Вьювер) ===&lt;br /&gt;
*'''Start Viewer''' - запуск вьювера;&lt;br /&gt;
*'''Start Viewer with changed time''' - запуск вьювера с заданным временем;&lt;br /&gt;
*'''Save and run viewer...''' - сохраняет проект и запускает вьювер;&lt;br /&gt;
*'''Run Viewer.bat''' - ???;&lt;br /&gt;
*'''Delete temp data''' - удаление опций; &lt;br /&gt;
&lt;br /&gt;
====Layouts (Лейаут, Макеты)====&lt;br /&gt;
меню работа с лейаутами проекта (выбор макета устройства для проекта, редактирование экранов):&lt;br /&gt;
*'''Add new layout...''' - создание нового лейаута;&lt;br /&gt;
*'''Delete layout...''' - удаление лейаута;&lt;br /&gt;
*'''Layout settings...''' - настройки лейаута;&lt;br /&gt;
*'''Add folder...''' - создание папки в текущем лейаута;&lt;br /&gt;
*'''Add screen...''' - создание нового экрана.&lt;br /&gt;
==== Tools (Инструменты)====&lt;br /&gt;
меню дополнительных редакторов и инструментов для проекта (вызов редактора ресурсов, текстового редактора, анализ проекта). Список этого меню вынесен на панель с кнопками быстрого запуска:&lt;br /&gt;
*'''Resources Editor''' - редактор ресурсов;&lt;br /&gt;
*'''Texts Editor''' - текстовый редактор;&lt;br /&gt;
*'''Analyzer''' - анализатор ресурсов (показывает количество объектов проекта, их размер занимаемой памяти, сведения о ресурсах каждого объекта (размер, ID номер, название (имя), местонахождение в базе ресурсов));&lt;br /&gt;
*'''Object info...''' - общие свойства объекта (показывает размер памяти занимаемой текстурами);&lt;br /&gt;
*'''Options info...''' - информация об опциях.&lt;br /&gt;
&lt;br /&gt;
==== Help (Помощь)====&lt;br /&gt;
меню вызова справки.&lt;br /&gt;
&lt;br /&gt;
=== Кнопки панели Инструменты ===&lt;br /&gt;
Некоторые инструменты также вызываются горячими клавишами (комбинация клавиш приведена в скобках )&lt;br /&gt;
&lt;br /&gt;
[[Файл:00 6.png]] (Ctrl+N) — создать новый проект; &amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:00 7.png]](Ctrl+O) — загрузить уже созданный проект;&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:00 8.png]](Ctrl+S) — сохранить изменения в проекте;&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:00 9.png]] —  запустить Viewer;&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:009.JPG]] — нормальный вид; &amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:Ico_text.png|25px]] - вызов текстового редактора; &amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:Ico_base.png|25px]] — вызов редактора ресурсов;&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:013.JPG]] — анализатор ресурсов (показывает количество объектов проекта, их размер занимаемой памяти, сведения о ресурсах каждого объекта (размер, ID номер, название (имя), местонахождение в базе ресурсов)); &amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:014.JPG]]— поиск объекта по id или по имени.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Функции рабочей области===&lt;br /&gt;
&lt;br /&gt;
'''1) Масштабирование рабочей области&amp;lt;br&amp;gt;'''&lt;br /&gt;
Ctrl + колесико мышки   крутим  вперед  - увеличиваем объекты  , назад  - уменьшаем объекты.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''2)Перемещение по рабочей области&amp;lt;br&amp;gt;'''&lt;br /&gt;
После масштабирования возникает необходимость переместиться  с левого  уголка экрана в далекий правый, переместиться к выбраному обьекту, вверх или вниз.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Кликаем правой кнопкой мыши по горизонтальному scroll и выпадает меню: &lt;br /&gt;
*scroll here —  функция перемещает экран к объекту, который выделен в Лэйауте;&lt;br /&gt;
*scroll left / right  -  функция перемещает экран на маленькое расстояние вправо / влево;&lt;br /&gt;
*left  / right edge — функция  перемещает экран в левый / правый угол экрана;&lt;br /&gt;
*page left / right  - функция показывает левую/правую часть экрана&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Кликаем правой кнопкой мыши по вертикальному scroll и выпадает меню: &lt;br /&gt;
*scroll here —  функция перемещает экран к объекту, который выделен в Лэйауте;&lt;br /&gt;
*scroll up / down  -  функция перемещает экран на маленькое расстояние вверх / вниз;&lt;br /&gt;
*top/bottom  - функция  перемещает экран вверх / вниз;&lt;br /&gt;
*page up / down  - функция перемещает экран  верхнюю / нижнюю часть экрана.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Меню прокрутки скрывается по нажатию клавиши Alt&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Функции панели Лэйаут===&lt;br /&gt;
[[Файл:Лэйаут_1.JPG|right]] &lt;br /&gt;
При клике правой кнопкой мыши по выбранному лэйауту (см. рисунок справа)&lt;br /&gt;
*Создать папку в текущем объекте;&lt;br /&gt;
*Создать экран в текущем объекте -  создание объекта в текущем лэйауте;&lt;br /&gt;
*Импорт/экспорт экранов — импорт/экспорт одного или нескольких экранов;&lt;br /&gt;
*Развернуть / Свернуть объекты с подобъектами — сворачивает  / разворачивает дерево объектов всех экранов&amp;lt;br&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
При клике правой кнопкой мыши по выбранному экрану, сцене или объекту возможно:&lt;br /&gt;
*Lock (Unlock) screen -  золочивание (разлочивание) экрана: нельзя перемещать, удалять и изменять объекты (сцены) экрана, причем, если сцена расшареная, то она становиться залоченой и на остальных экранах; на залоченых экранах в панели проекта появляется замочек; &lt;br /&gt;
*Lock (Unlock) scene -  золочивание (разлочивание) сцены: нельзя перемещать, удалять и изменять объекты (машины, картинки и др.) сцены, причем, если сцена расшареная, то она становиться залоченой и на остальных экранах; на залоченых сценах также появляется замочек; &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;
Пусть на сцене будет находится очень много картинок, которые должны находиться в строго определенных местах. Переместим нашу картинку в нужную точку на сцене. Но у нас картинок очень много и мы потратим много времени на их расстановку. Для уменьшения времени на расстановку картинок воспользуемся функцией расположить сцену в соответствии  с изображением.&amp;lt;br&amp;gt;&lt;br /&gt;
Функция расположить сцену в соответствии с изображением перемещает картинку  в заданную точку  художниками.   Художник решил, что клумба должна быть в правом нижнем углу, после применения функции  расположить сцену в соответствии с изображением, картинка станет именно на указанное художником место. &amp;lt;br&amp;gt;&lt;br /&gt;
Данная функция вызывается кликом правой кнопкой мыши по  объекту&amp;lt;br&amp;gt; [[Файл:панель_свойства_1.JPG|right]]&lt;br /&gt;
&lt;br /&gt;
===Функции панели Свойства===&lt;br /&gt;
&lt;br /&gt;
*При клике на  тип или имя  некоторых объектов вызываются дополнительные окна.Например, при клике на тип Machine открывается окно, где прописываются функции объекта типа Machine.&lt;br /&gt;
*При наведении на поле тип выпадет подсказка с уникальным номером объекта.&lt;br /&gt;
*При клике правой мышкой по названию свойства объекта выпадает меню с дополнительными свойствами объекта&lt;br /&gt;
*Некоторые свойства объектов объединены в группы (см. рисунок справа)&lt;br /&gt;
&lt;br /&gt;
=== Создание проекта ===&lt;br /&gt;
&lt;br /&gt;
1. Для создания нового игрового проекта необходимо запустить редактор сцен SceneEditor.&amp;lt;br&amp;gt;&lt;br /&gt;
2. В верхнем меню Проект выбрать Новый (т.е. создать новый проект).&amp;lt;br&amp;gt;&lt;br /&gt;
3. В появившемся окне указываем имя проекта и имя базы ресурсов.Выбираем папку для сохранения проекта&amp;lt;br&amp;gt;&lt;br /&gt;
4. В этом окне выбираем устройство для которого создаётся проект, а затем выбираем тип магазина и вариант версии игры&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:020.JPG]] [[Файл:021.JPG]]&lt;br /&gt;
&lt;br /&gt;
5. В редакторе сцен в меню Проект → Сохранить → проект с именем Learning.&amp;lt;br&amp;gt; &lt;br /&gt;
Эту методику действий можно брать за шаблон для создания других проектов.&amp;lt;br&amp;gt;&lt;br /&gt;
Результат: Создана база ресурсов и проект для выполнения Уроков. &lt;br /&gt;
&lt;br /&gt;
====Важное замечание по созданию проекта====&lt;br /&gt;
[[Файл:2_лэйаута.JPG|right]]&amp;lt;br&amp;gt;&lt;br /&gt;
Предположим нам необходимо создать игру для магазина А и магазина Б. Игра будет отличаться только 10 функциями. Мы можем создать игру для магазина А., а потом скопировать папку с проектом, проект переименовать, внести изменения и получить игру для магазина Б. Результат:  2 игры и 2 папки с ресурсами. Такой подход не приветствуется.&amp;lt;br&amp;gt;&lt;br /&gt;
Для уменьшения времени на создание проекта, подключение ресурсов, внесения одинаковых объектов и  удобства отслеживания багов и прочего в Редакторе Сцен существует возможность создания двух лэйаутов в одном проекте.&lt;br /&gt;
При создании проекта мы выбираем оба магазина, после чего в панели Лэйаут  появится два лэйаута для магазина А и магазина Б(см. рисунок справа. При этом текстовая база проекта и база ресурсов у них будут идентичны. При создании новых объектов в одном лэйауте они же будут создаваться и в другом, при этом можно изменять свойства объекта каждого лэйаута независимо от второго.&amp;lt;br&amp;gt;&lt;br /&gt;
За применение изменений между лэйаутами отвечает параметр &amp;quot;синхронизация&amp;quot;, который есть у каждого объекта. Если стоит &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;
*Очистка базы ресурсов от неиспользуемой графики&lt;br /&gt;
*Запаковка графики в текстуры и контейнер&lt;br /&gt;
*При необходимости конвертирование файлов в pvr форматы&amp;lt;br&amp;gt;&lt;br /&gt;
С целью экономии оперативной памяти на устройстве возможно сжатие графики, упаковка графики в текстуры, создание нескольких исполняемых файлов, проекта, содержащих в себе несколько сцен проекта, и загружаемых в оперативную память устройства по мере прохождения игры.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Процедура экспорта проекта вызывается через меню редактора Проект - Экспортировать проект&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Файл:Scene editor export window.jpg|right]]&lt;br /&gt;
'''Параметры экспорта проекта:'''&amp;lt;br&amp;gt;&lt;br /&gt;
''Настройки параметров графики''&lt;br /&gt;
*Ось Х, ось У — параметры сжатия графики по оси Х,У. Значения  параметра от 0 до 1.&lt;br /&gt;
*При выполнении сжатия рекомендуется обращать внимания на размер лэйаута&lt;br /&gt;
*Сжатие графики  возможно и непропорциональное . Используется редко&lt;br /&gt;
&lt;br /&gt;
''Параметры запаковки графики''&lt;br /&gt;
*Common textures size - максимальный размер графической текстуры для графики, которая не находится в контейнерах и попадает в одну текстуру, или максимальный размер графического файла, если он не в контейнере и не попадает в текстуру.&lt;br /&gt;
*Create dat container -  упаковка ресурсов в файл с типом DAT. Обеспечиваем защиту ресурсов проекта от несанкционированного доступа. Увеличиваем производительность при операциях чтения файлов ресурсов с твердотельного носителя.&lt;br /&gt;
*Quality - Качество графики, которая не находится в контейнерах&lt;br /&gt;
*Optimization - оптимизация графики для лучшего быстродействия(speed) или для занимаемого дискового пространства в распакованном виде(size)&lt;br /&gt;
&lt;br /&gt;
''Тип экспорта''  &lt;br /&gt;
*One project file - формируется один XML файл описывающий проект.     &lt;br /&gt;
*Split project on screens, load partly' - проект будет разбит на отдельные файлы описывающие экраны, загружаться файлы будут в порядке использования (вызова) в проекте. В результате получаем увеличение начальной загрузки проекта и использование меньшего объема оперативной памяти.&lt;br /&gt;
*Release build - оптимизация по размеру файла базы ресурсов и основного файла проекта.&lt;br /&gt;
&lt;br /&gt;
''Export to folder'' - Путь для экспорта. Если указан путь экспорта проекта - производится экспорт согласно настройкам для выбранной платформы. Если не указан - проект экспортируются под выбранную платформу и автоматически запускается сборка проекта.&lt;br /&gt;
Структура папки:&lt;br /&gt;
[[Файл:TreeFolder.png|TreeFolder.png]]&amp;lt;br&amp;gt;&lt;br /&gt;
'''Select platform''' - необходимо выбрать платформу для которой будем собирать проект. При экспорте на все платформы необходимо установить Marmalade SDK [[Установка и настройка|см. инструкцию]] при этом не нужно указывать путь для экспорта (оставить поле пустым). В результате запустится скрипт сборки исполняемого пакета, это будет видно по черным экранам с ходом выполнения процесса сборки.Процесс экспорта будет отображаться в окне.&lt;br /&gt;
&lt;br /&gt;
Таблица результирующих форматов для платформ&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
 |качество, оптимизация&lt;br /&gt;
 |IOS&lt;br /&gt;
 |Android&lt;br /&gt;
 |Windows Phone8&lt;br /&gt;
 |BlackBerry&lt;br /&gt;
 |Windows&lt;br /&gt;
 |-&lt;br /&gt;
 |Best, size&lt;br /&gt;
 |png(RGBA)&lt;br /&gt;
 |png(RGBA)&lt;br /&gt;
 |png(RGBA)&lt;br /&gt;
 |png(RGBA)&lt;br /&gt;
 |png(RGBA)&lt;br /&gt;
 |-&lt;br /&gt;
 |Best, speed&lt;br /&gt;
 |jxr&lt;br /&gt;
 |jxr&lt;br /&gt;
 |jxr&lt;br /&gt;
 |jxr&lt;br /&gt;
 |jxr&lt;br /&gt;
 |-&lt;br /&gt;
 |Medium, size&lt;br /&gt;
 |jpg + png(a)&lt;br /&gt;
 |jpg + png(a)&lt;br /&gt;
 |jpg + png(a)&lt;br /&gt;
 |jpg + png(a)&lt;br /&gt;
 |jpg + png(a)&lt;br /&gt;
 |-&lt;br /&gt;
 |Medium, speed&lt;br /&gt;
 |PVRTC + jxr&lt;br /&gt;
 |ETC1 + jxr&lt;br /&gt;
 |BC3 + hitmask&lt;br /&gt;
 |PVR8888&lt;br /&gt;
 |BC3 + hitmask&lt;br /&gt;
 |-&lt;br /&gt;
 |Low, size&lt;br /&gt;
 |PVRTC + png(a)&lt;br /&gt;
 |ETC1 + png(a)&lt;br /&gt;
 |jpg + png(a)&lt;br /&gt;
 |jpg + png(a)&lt;br /&gt;
 |jpg + png(a)&lt;br /&gt;
 |-&lt;br /&gt;
 |Low, speed&lt;br /&gt;
 |PVRTC(RGBA) + hitmask&lt;br /&gt;
 |ETC1 + PVRA8&lt;br /&gt;
 |BC3 + hitmask&lt;br /&gt;
 |PVR8888&lt;br /&gt;
 |BC3 + hitmask&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
*'''ETC''' - Ericsson Texture Compression : для устройств Android&lt;br /&gt;
*'''PVR''' - PowerVR Texture Compression : для устройств IOS&lt;br /&gt;
*'''bc3(dxt)''' -  DirectX Texture : Windows, Windows Phone 8&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Режим отладки ===&lt;br /&gt;
&lt;br /&gt;
=Горячие клавиши=&lt;br /&gt;
* '''Клавиша F10''' - По нажатию разворачивает/сворачивает все объекты и подобъекты в дереве проекта или в свойствах объекта.&lt;br /&gt;
* '''Клавиша Num* и Num-''' - По нажатию разворачивают/сворачивают подобъекты у выделенного объекта в дереве проекта или в свойствах объекта.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:AppSalute]]&lt;/div&gt;</summary>
		<author><name>Bmor</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.appsalutecreator.com/index.php?title=%D0%98%D0%BD%D1%82%D0%B5%D1%80%D1%84%D0%B5%D0%B9%D1%81_TextEditor&amp;diff=9397</id>
		<title>Интерфейс TextEditor</title>
		<link rel="alternate" type="text/html" href="https://wiki.appsalutecreator.com/index.php?title=%D0%98%D0%BD%D1%82%D0%B5%D1%80%D1%84%D0%B5%D0%B9%D1%81_TextEditor&amp;diff=9397"/>
		<updated>2018-02-02T15:11:57Z</updated>

		<summary type="html">&lt;p&gt;Bmor: /* Настройка импорта из внешней базы (CSV) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC right}}&lt;br /&gt;
== [[Файл:Ico_text.png]]Редактор текстов ==&lt;br /&gt;
&lt;br /&gt;
[[Файл:Ico_text.png|40px]] '''Text Editor''' - хранилище всех текстовых ресурсов (надписей) на различных языках. &amp;lt;br&amp;gt;&lt;br /&gt;
Аналогично графике и звукам при помощи мышки они перетаскиваются в соответствующие свойства объектов, находящихся в Scene Editor.&amp;lt;br&amp;gt; &lt;br /&gt;
;См. также: [[Редактор_текстовых_ресурсов|Урок 6]]&lt;br /&gt;
&lt;br /&gt;
Окно редактора имеет следующий вид:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Файл:Text baze main.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Общие свойства и действия с текстом===&lt;br /&gt;
&lt;br /&gt;
'''После сохранения действий в текстовом редакторе база автоматически обновляется в редакторе сцен.''' &lt;br /&gt;
*элемент текстовой базы - строка текста, которая может хранить в себе несколько различных фраз,записанных в разные поля&lt;br /&gt;
*один текст на разных языках записывается в один элемент текстовой базы&lt;br /&gt;
*в текстовой базе может храниться voice&lt;br /&gt;
*элемент текстовой базы может хранить в себе несколько иконок, для которых можно выбрать одну из 4-х категорий (mainPicture, icon1, icon2,icon3)&lt;br /&gt;
*каждому элементу текстовой базы присваивается уникальный номер. &lt;br /&gt;
*при добавлении элемента - присваивается следующий по порядку уникальный номер &lt;br /&gt;
*при экспорте экранов в текущий проект элементы текстовой базы добавляются автоматически в базу текущего проекта и присваиваются им следующие по порядку уникальные номера &lt;br /&gt;
*может существовать несколько элементов с одинаковыми именами ('''но следует избегать этого!''')&lt;br /&gt;
*текст может быть автоматически добавлен в текущий проект или добавлен из другой текстовой базы  &lt;br /&gt;
*элемент текстовой базы может быть удален, модифицирован, категоризирован&lt;br /&gt;
&lt;br /&gt;
=== Кнопки быстрого запуска ===&lt;br /&gt;
Вверху окна приложения расположены кнопки общего меню:&lt;br /&gt;
*[[Файл:00 6.png]] — команда создать Новый файл; &lt;br /&gt;
*[[Файл:00 7.png]] — команда открыть уже созданный проект;&lt;br /&gt;
*[[Файл:00 8.png]] — сохранить изменения в файле;&lt;br /&gt;
*[[Файл:TxtEditor open Res base.JPG]] — открыть базу ресурсов;&lt;br /&gt;
*[[Файл:00 18.png]] — создать новую папку в корневой базе;&lt;br /&gt;
*[[Файл:New record.jpg]] — добавить новую текстовую запись; &lt;br /&gt;
*[[Файл:Add new rec fr.jpg]] — добавить новую текстовую запись из базы ресурсов; &lt;br /&gt;
*[[Файл:Add url.jpg]] — добавить новую url запись; &lt;br /&gt;
*[[Файл:00 19.png]] — удалить текстовую запись;&lt;br /&gt;
*[[Файл:Text base find.png]] — найти необходимую текстовую запись в текстовой базе.&lt;br /&gt;
&lt;br /&gt;
=== Меню редактора ===&lt;br /&gt;
1. Если нажать в меню кнопку '''File''', выпадет список команд, с помощью которых можно создать новый или загрузить уже созданный файл, сохранить файл с указанием места сохранения и т.д.&amp;lt;br&amp;gt;&lt;br /&gt;
2.Для импорта фраз на другом языке необходимо воспользоваться Функцией Импортировать меню File  и выбрать .xml-файл с текстом и выбрать язык&amp;lt;br&amp;gt;&lt;br /&gt;
3. Если нажать в меню кнопку '''Resource''', выпадет список команд:&amp;lt;br&amp;gt;&lt;br /&gt;
* Open Resource - позволяет создать базу по ранее подготовленной графической базе ресурсов с точным совпадением структуры и названием папок и файлов. Используется для Hidden Objects;&lt;br /&gt;
* Choose Resource File - позволяет подгрузить базу графических ресурсов для перетаскивания изображений из ResourcesEditor на иконку;&lt;br /&gt;
* Choose Categories Config - помогает классифицировать текстовые файлы по категориям.&lt;br /&gt;
[[Файл:00_51.PNG]] [[Файл:00_52.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Создание и заполнение текстовой базы проекта ===&lt;br /&gt;
Текстовая база не создается автоматически при создании проекта. &amp;lt;br&amp;gt;&lt;br /&gt;
Для создания и заполнения текстовой базы: &amp;lt;br&amp;gt;&lt;br /&gt;
1. Заходите в пункт меню '''file -&amp;gt; New'''. Появляется пустая база ресурсов, по умолчанию названная '''Untitled'''. &amp;lt;br&amp;gt;&lt;br /&gt;
2. Слева в дереве текстовых объектов кликаем правой кнопкой мыши  и выбираем '''Add record'''. Каждый раз при добавлении новой текстовой записи редактор просит нас написать ее имя. Это имя можно будет изменить в любой момент. Запишем имя '''arrow_If_down'''. &amp;lt;br&amp;gt;&lt;br /&gt;
3. Выделить запись и  в окне приложения TextEditor справа в столбце Word запишем слово, в столбце Sentence1,Sentence2 - указать подсказку для текстовой записи, в столбце voice - подключить звуковой файл для текстовой записи из ResourcesEditor.&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:00_54.PNG]]&lt;br /&gt;
&lt;br /&gt;
'''Необходимо обязательно сохранять любые изменения с текстом в редакторе TextEditor.'''&amp;lt;br&amp;gt;&lt;br /&gt;
Для вызова текстового редактора можно воспользоваться меню '''Инструменты -&amp;gt; Редактор текстов''', либо кнопкой быстрого запуска [[Файл:Text base.png]].&lt;br /&gt;
&lt;br /&gt;
'''Замечание.''' Букву Ё заменяем на Е&lt;br /&gt;
&lt;br /&gt;
=== Импорт текстовой базы ===&lt;br /&gt;
&lt;br /&gt;
Открыть окно импорта можно через меню '''Project''' &amp;gt; '''Import''' &amp;gt; '''Import From XML / CSV'''&lt;br /&gt;
&lt;br /&gt;
[[Файл:TextsEditor_import_menu.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Настройка импорта ====&lt;br /&gt;
&lt;br /&gt;
Окно импорта:&lt;br /&gt;
&lt;br /&gt;
[[Файл:TextEditor import dialog wnd.jpg]]&lt;br /&gt;
&lt;br /&gt;
* '''Путь к импортируемому файлу''':&lt;br /&gt;
** Для выбора импортируемого файла нажмите на кнопку справа поля (...)&lt;br /&gt;
** Импорт возможен только из файлов .xml и .csv&lt;br /&gt;
* '''Тип импортируемой базы''':&lt;br /&gt;
** ''База текущего проекта'' - импорт базы вашего текущего открытого проекта; импорт записей будет осуществлен по их id.&lt;br /&gt;
** ''База другого проекта (наша структура xml/csv файла)'' - импорт текстов из другого проекта; импорт записей может быть осуществлен по структуре базы либо по именам записей.&lt;br /&gt;
** ''Внешняя база (со своей структурой)'' - импорт внешнего файла с отличающейся от нашей структурой; для данного типа импорта нужна детальная настройка (об этом ниже).&lt;br /&gt;
* '''Тип импорта''':&lt;br /&gt;
** ''Добавить как новые с сохранением структуры'' - для каждой импортируемой записи создает новую запись в текущей базе; сохраняется изначальная структура записей импортируемого файла.&lt;br /&gt;
** ''Добавить как новые в отдельный каталог'' - создает в корне базы новый каталог, для каждой импортируемой записи создает новую запись в каталоге; сохраняется изначальная структура записей импортируемого файла относительно нового каталога.&lt;br /&gt;
** ''Обновить записи (дополняет отсутствующие поля)'' - &amp;quot;мягкое&amp;quot; обновление записей - добавляет в существующие записи отсутствующие там поля, если таковые заполнены в импортируемой базе.&lt;br /&gt;
** ''Обновить записи (заменяет поля импортированными не-пустыми)'' - &amp;quot;жесткое&amp;quot; обновление записей - добавляет либо заменяет в существующих записях те поля, которые заполнены в импортируемой базе.&lt;br /&gt;
** ''Заменить записи'' - перезаписывает все поля записи на импортируемые, даже если в импортируемой записи они пустые.&lt;br /&gt;
* '''Добавлять отсутствующие (новые) записи''' - если установлено - добавляет импортируемые записи, отсутствующие в текущей базе, как новые записи (с сохранением структуры).&lt;br /&gt;
* '''Импорт по полю''':&lt;br /&gt;
** ''ID записи'' - сравнение записей при импорте по их iid.&lt;br /&gt;
** ''Путь к записи'' - сравнение записей при импорте по их пути в структуре и имени записи.&lt;br /&gt;
** ''Имя записи'' - сравнение записей при импорте по их имени. '''Берётся первое найденное имя!''' Для данного пункта '''КРАЙНЕ ЖЕЛАТЕЛЬНО''' иметь уникальные имена записей во избежание потери данных и лишних проблем.&lt;br /&gt;
* '''Выбор импортируемых локализаций'''&lt;br /&gt;
** В данном поле показаны все локализации, находящиеся в импортируемом файле.&lt;br /&gt;
** Для импорта той или иной локали - '''отметьте её галочкой'''.&lt;br /&gt;
** Для импорта всех локалей - отметьте их все.&lt;br /&gt;
** Кнопка &amp;quot;Reload locales&amp;quot; перегружает локали импортируемого файла (например если он был изменен в процессе работы с этим окном).&lt;br /&gt;
** Зелеными шариками [[Файл:TextsEditor_green_sphere.png | 16px ]] обозначены языки, используемые в проекте (выбранные в Project &amp;gt; Properties &amp;gt; Selected languages...).&lt;br /&gt;
** Серыми шариками [[Файл:TextsEditor_gray_sphere.png | 16px ]] обозначены языки, которые на данный момент не используются в проекте. Вы можете их импортировать, но для работы с ними их нужно будет включить.&lt;br /&gt;
&lt;br /&gt;
==== Настройка импорта из внешней базы (XML) ====&lt;br /&gt;
&lt;br /&gt;
Окно импорта внешней XML базы:&lt;br /&gt;
&lt;br /&gt;
[[Файл:TextEditor import custom base.jpg]]&lt;br /&gt;
&lt;br /&gt;
'''Элементы интерфейса''':&lt;br /&gt;
* '''(1)''' - структура импортируемого файла&lt;br /&gt;
* '''(2)''' - выбранный элемент структуры, отвечающий за текстовую запись&lt;br /&gt;
* '''(3)''' - структура выбранного элемента текстовой записи&lt;br /&gt;
* '''(4)''' - основные параметра записи - id, имя и каталог&lt;br /&gt;
* '''(5)''' - параметры импорта локалей&lt;br /&gt;
&lt;br /&gt;
'''Пошаговая инструкция на примере xml нашей текстовой базы'''&lt;br /&gt;
# В структуре импортируемого файла '''(1)''' найдите элемент, отвечающий за текстовую запись, и дважды кликните по нему левой кнопкой мыши (ЛКМ)&lt;br /&gt;
# Задайте соответствие между полями в структуре выбранного элемента '''(3)''' и необходимыми полями для нашей текстовой базы '''(4)''':&lt;br /&gt;
#: Первый способ сделать это: перетащите строку из структуры '''(3)''' в соответствующее поле '''(4)'''&lt;br /&gt;
#: [[Файл:TextEditor import custom dragndrop.jpg | x160px]]&lt;br /&gt;
#: Второй способ: выбрать нужную строку '''(3)''' и нажать кнопку напротив соответствующего поля '''(4)'''&lt;br /&gt;
#: [[Файл:TextEditor import custom buttonclick.jpg | x160px]]&lt;br /&gt;
#: Способ третий (хардкор): вписать путь к полю вручную (делать на свой страх и риск, либо если нужного поля по какой-то причине нет в структурке)&lt;br /&gt;
# Выберите тип хранение локали и записей:&lt;br /&gt;
## ''Locale is attribute value'' - код локали находится в значении атрибута, например как в нашей базе: &lt;br /&gt;
##: [[Файл:TextEditor import custom localeisvalue 1.jpg]]&lt;br /&gt;
### ''Select by sentence_id'' или ''Select sentence field'' - покажу на примере&lt;br /&gt;
###: [[Файл:TextEditor import custom localeisvalue 2.jpg]]&lt;br /&gt;
### ''Locale'' - путь к атрибуту с локалью&lt;br /&gt;
### ''sentence_id'' и ''sentence_text'' - путь к атрибуту, содержащему sentnce, и путь к атрибуту, содержащему его текст&lt;br /&gt;
### ''_word'', ''_sent1..3'' - пути к атрибутам, содержащим соответствующие данные&lt;br /&gt;
## ''Locale is attribute name'' - код локали является самим атрибутом, а его значение - текстом&lt;br /&gt;
##: [[Файл:TextEditor import custom localeisattribute 1.jpg | x160px]]&lt;br /&gt;
##: [[Файл:TextEditor import custom localeisattribute 2.jpg]]&lt;br /&gt;
##: Заполните соответствующие поля для нужных \ присутствующих в файле локалей.&lt;br /&gt;
&lt;br /&gt;
После всех установок нажмите '''ОК'''.  Если всё установлено правильно - вы увидите список доступных в файле языков и сможете импортировать файл.&lt;br /&gt;
&lt;br /&gt;
==== Настройка импорта из внешней базы (CSV) ====&lt;br /&gt;
&lt;br /&gt;
Окно импорта из CSV:&lt;br /&gt;
&lt;br /&gt;
[[Файл:TextEditor import custom csv.jpg]]&lt;br /&gt;
&lt;br /&gt;
'''Элементы интерфейса''':&lt;br /&gt;
* '''(1)''' - тип разделителя&lt;br /&gt;
* '''(2)''' - структура csv файла&lt;br /&gt;
* '''(3)''' - поля для импорта&lt;br /&gt;
&lt;br /&gt;
'''Пошаговая инструкция''':&lt;br /&gt;
# Выберите тип разделителя '''(1)''' - обычно используется табуляция (Tab \t ), но в некоторых случаях разделителем может быть другой символ.&lt;br /&gt;
# Если разделитель был изменен - для применения нажмите '''Reload'''&lt;br /&gt;
# Задайте соответствие между структурой импортируемого CSV файла '''(2)''' и полями для импорта '''(3)'''&lt;br /&gt;
#* Первый способ: перетащите строку из структуры '''(2)''' в соответствующее поле '''(3)'''&lt;br /&gt;
#* Второй способ:выбрать нужную строку '''(2)''' и нажать кнопку напротив соответствующего поля '''(3)'''&lt;br /&gt;
#* Третий способ: заполните поля вручную&lt;br /&gt;
# Когда все необходимые поля будут заполнены - жмите '''OK''' &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Экспорт текстовой базы ===&lt;br /&gt;
&lt;br /&gt;
Существует два варианта экспорта текстовой базы:&lt;br /&gt;
*'''Export into txt . . .''' - в файл с расширением .csv (текстовый файл)&lt;br /&gt;
*'''Export into xml . . .''' - в файл с расширением .xml (текстовая база)&lt;br /&gt;
&lt;br /&gt;
Само окно экспорта аналогично окну импорта:&lt;br /&gt;
&lt;br /&gt;
[[Файл:TextsEditor_export_menu.jpg]] &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Экспорт в xml генерирует файл, идентичный файлу текстовой базы, но лишь с выбранными в окне языками;&lt;br /&gt;
* При экспорте в csv создается файл такой структуры:&lt;br /&gt;
&lt;br /&gt;
[[Файл:text_baza_export_5.jpg]] &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Экспортироваться будут лишь те языки, которые были выбраны в данном окне, вне зависимости от их наличия в базе. Пустые поля и языки экспортированы не будут.&lt;br /&gt;
&lt;br /&gt;
При выборе флага '''&amp;quot;Export empty lines&amp;quot;''' будут экспортированы все пустые поля и языки, что очень полезно для перевода базы.&lt;br /&gt;
&lt;br /&gt;
=== Добавление иконок в текстовый элемент ===&lt;br /&gt;
&lt;br /&gt;
Необходимость добавления изображения в текстовый элемент, может возникнуть, например, при формировании элементов hiddenObject, или при работе с элементами economics.&lt;br /&gt;
Изображение перетаскивается в текстовый элемент из редактора ресурсов мышкой. Но, в случае необходимости создать множество элементов за один раз, есть более эффективный способ:&lt;br /&gt;
*На панели с кнопками быстрого запуска нажимаем ''Add new text records from resource...''. &lt;br /&gt;
[[Файл:Add new rec from.jpg|300px|]]&lt;br /&gt;
*Открылось окошко ''choose resource file'' в нем следует выбрать необходимый sirx файл.&lt;br /&gt;
[[Файл:Choose resource file.jpg]]&lt;br /&gt;
*В открывшемся дереве ресурсов выбираем нужную папку&lt;br /&gt;
[[Файл:Tree resources.jpg|400px|]]&lt;br /&gt;
*Из отмеченной папки файлы преобразуются в текстовые элементы, содержащие строку ''word'' и соответствующее изображение. Причем добавятся они в текстовый редактор в папку, которая создастся в соответствии с папкой, содержащей эти иконки в редакторе ресурсов.&lt;br /&gt;
&lt;br /&gt;
Если вдруг так получилось, что к текстовой записи подвязан ресурс которого больше нет в базе ресурсов -- он будет обозначен как &amp;quot;INVALID RESOURCE&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
[[Файл:TextsEditor_invalid_image.JPG]]&lt;br /&gt;
&lt;br /&gt;
=== Поиск записи в текстовой базе ===&lt;br /&gt;
&lt;br /&gt;
Окно поиска текстовой записи активируется при нажатии кнопки быстрого запуска [[Файл:Text base find.png]].&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:Text base find wind.jpg]] &amp;lt;br&amp;gt;&lt;br /&gt;
Поиск проходит по непосредственно содержимому текстового поля.&amp;lt;br&amp;gt;&lt;br /&gt;
Поиск по дереву базы может проходить сверху вниз и снизу вверх, если выбрать один из пунктов группы '''Find direction''': &amp;lt;br&amp;gt;&lt;br /&gt;
*'''down'''  - искать сверху вниз;&lt;br /&gt;
*'''up''' - искать снизу вверх.&amp;lt;br&amp;gt;&lt;br /&gt;
Для оптимизации процесса поиска можно выбрать в группе '''Find mode''' один из следующих пунктов:&lt;br /&gt;
*'''in the whole tree'''  - искать во всем дереве;&lt;br /&gt;
*'''from the current item''' - искать от текущего элемента.&amp;lt;br&amp;gt;&lt;br /&gt;
Строка, которая вводится в строку поиска может быть подстрокой интересующей нас записи либо же полностью с ней совпадать. Это можно регулировать с помощью пункта '''Only the whole text'''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:AppSalute]]&lt;/div&gt;</summary>
		<author><name>Bmor</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.appsalutecreator.com/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:TextEditor_import_custom_csv.jpg&amp;diff=9396</id>
		<title>Файл:TextEditor import custom csv.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.appsalutecreator.com/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:TextEditor_import_custom_csv.jpg&amp;diff=9396"/>
		<updated>2018-02-02T15:05:21Z</updated>

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

		<summary type="html">&lt;p&gt;Bmor: /* Настройка импорта из внешней базы (XML) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC right}}&lt;br /&gt;
== [[Файл:Ico_text.png]]Редактор текстов ==&lt;br /&gt;
&lt;br /&gt;
[[Файл:Ico_text.png|40px]] '''Text Editor''' - хранилище всех текстовых ресурсов (надписей) на различных языках. &amp;lt;br&amp;gt;&lt;br /&gt;
Аналогично графике и звукам при помощи мышки они перетаскиваются в соответствующие свойства объектов, находящихся в Scene Editor.&amp;lt;br&amp;gt; &lt;br /&gt;
;См. также: [[Редактор_текстовых_ресурсов|Урок 6]]&lt;br /&gt;
&lt;br /&gt;
Окно редактора имеет следующий вид:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Файл:Text baze main.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Общие свойства и действия с текстом===&lt;br /&gt;
&lt;br /&gt;
'''После сохранения действий в текстовом редакторе база автоматически обновляется в редакторе сцен.''' &lt;br /&gt;
*элемент текстовой базы - строка текста, которая может хранить в себе несколько различных фраз,записанных в разные поля&lt;br /&gt;
*один текст на разных языках записывается в один элемент текстовой базы&lt;br /&gt;
*в текстовой базе может храниться voice&lt;br /&gt;
*элемент текстовой базы может хранить в себе несколько иконок, для которых можно выбрать одну из 4-х категорий (mainPicture, icon1, icon2,icon3)&lt;br /&gt;
*каждому элементу текстовой базы присваивается уникальный номер. &lt;br /&gt;
*при добавлении элемента - присваивается следующий по порядку уникальный номер &lt;br /&gt;
*при экспорте экранов в текущий проект элементы текстовой базы добавляются автоматически в базу текущего проекта и присваиваются им следующие по порядку уникальные номера &lt;br /&gt;
*может существовать несколько элементов с одинаковыми именами ('''но следует избегать этого!''')&lt;br /&gt;
*текст может быть автоматически добавлен в текущий проект или добавлен из другой текстовой базы  &lt;br /&gt;
*элемент текстовой базы может быть удален, модифицирован, категоризирован&lt;br /&gt;
&lt;br /&gt;
=== Кнопки быстрого запуска ===&lt;br /&gt;
Вверху окна приложения расположены кнопки общего меню:&lt;br /&gt;
*[[Файл:00 6.png]] — команда создать Новый файл; &lt;br /&gt;
*[[Файл:00 7.png]] — команда открыть уже созданный проект;&lt;br /&gt;
*[[Файл:00 8.png]] — сохранить изменения в файле;&lt;br /&gt;
*[[Файл:TxtEditor open Res base.JPG]] — открыть базу ресурсов;&lt;br /&gt;
*[[Файл:00 18.png]] — создать новую папку в корневой базе;&lt;br /&gt;
*[[Файл:New record.jpg]] — добавить новую текстовую запись; &lt;br /&gt;
*[[Файл:Add new rec fr.jpg]] — добавить новую текстовую запись из базы ресурсов; &lt;br /&gt;
*[[Файл:Add url.jpg]] — добавить новую url запись; &lt;br /&gt;
*[[Файл:00 19.png]] — удалить текстовую запись;&lt;br /&gt;
*[[Файл:Text base find.png]] — найти необходимую текстовую запись в текстовой базе.&lt;br /&gt;
&lt;br /&gt;
=== Меню редактора ===&lt;br /&gt;
1. Если нажать в меню кнопку '''File''', выпадет список команд, с помощью которых можно создать новый или загрузить уже созданный файл, сохранить файл с указанием места сохранения и т.д.&amp;lt;br&amp;gt;&lt;br /&gt;
2.Для импорта фраз на другом языке необходимо воспользоваться Функцией Импортировать меню File  и выбрать .xml-файл с текстом и выбрать язык&amp;lt;br&amp;gt;&lt;br /&gt;
3. Если нажать в меню кнопку '''Resource''', выпадет список команд:&amp;lt;br&amp;gt;&lt;br /&gt;
* Open Resource - позволяет создать базу по ранее подготовленной графической базе ресурсов с точным совпадением структуры и названием папок и файлов. Используется для Hidden Objects;&lt;br /&gt;
* Choose Resource File - позволяет подгрузить базу графических ресурсов для перетаскивания изображений из ResourcesEditor на иконку;&lt;br /&gt;
* Choose Categories Config - помогает классифицировать текстовые файлы по категориям.&lt;br /&gt;
[[Файл:00_51.PNG]] [[Файл:00_52.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Создание и заполнение текстовой базы проекта ===&lt;br /&gt;
Текстовая база не создается автоматически при создании проекта. &amp;lt;br&amp;gt;&lt;br /&gt;
Для создания и заполнения текстовой базы: &amp;lt;br&amp;gt;&lt;br /&gt;
1. Заходите в пункт меню '''file -&amp;gt; New'''. Появляется пустая база ресурсов, по умолчанию названная '''Untitled'''. &amp;lt;br&amp;gt;&lt;br /&gt;
2. Слева в дереве текстовых объектов кликаем правой кнопкой мыши  и выбираем '''Add record'''. Каждый раз при добавлении новой текстовой записи редактор просит нас написать ее имя. Это имя можно будет изменить в любой момент. Запишем имя '''arrow_If_down'''. &amp;lt;br&amp;gt;&lt;br /&gt;
3. Выделить запись и  в окне приложения TextEditor справа в столбце Word запишем слово, в столбце Sentence1,Sentence2 - указать подсказку для текстовой записи, в столбце voice - подключить звуковой файл для текстовой записи из ResourcesEditor.&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:00_54.PNG]]&lt;br /&gt;
&lt;br /&gt;
'''Необходимо обязательно сохранять любые изменения с текстом в редакторе TextEditor.'''&amp;lt;br&amp;gt;&lt;br /&gt;
Для вызова текстового редактора можно воспользоваться меню '''Инструменты -&amp;gt; Редактор текстов''', либо кнопкой быстрого запуска [[Файл:Text base.png]].&lt;br /&gt;
&lt;br /&gt;
'''Замечание.''' Букву Ё заменяем на Е&lt;br /&gt;
&lt;br /&gt;
=== Импорт текстовой базы ===&lt;br /&gt;
&lt;br /&gt;
Открыть окно импорта можно через меню '''Project''' &amp;gt; '''Import''' &amp;gt; '''Import From XML / CSV'''&lt;br /&gt;
&lt;br /&gt;
[[Файл:TextsEditor_import_menu.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Настройка импорта ====&lt;br /&gt;
&lt;br /&gt;
Окно импорта:&lt;br /&gt;
&lt;br /&gt;
[[Файл:TextEditor import dialog wnd.jpg]]&lt;br /&gt;
&lt;br /&gt;
* '''Путь к импортируемому файлу''':&lt;br /&gt;
** Для выбора импортируемого файла нажмите на кнопку справа поля (...)&lt;br /&gt;
** Импорт возможен только из файлов .xml и .csv&lt;br /&gt;
* '''Тип импортируемой базы''':&lt;br /&gt;
** ''База текущего проекта'' - импорт базы вашего текущего открытого проекта; импорт записей будет осуществлен по их id.&lt;br /&gt;
** ''База другого проекта (наша структура xml/csv файла)'' - импорт текстов из другого проекта; импорт записей может быть осуществлен по структуре базы либо по именам записей.&lt;br /&gt;
** ''Внешняя база (со своей структурой)'' - импорт внешнего файла с отличающейся от нашей структурой; для данного типа импорта нужна детальная настройка (об этом ниже).&lt;br /&gt;
* '''Тип импорта''':&lt;br /&gt;
** ''Добавить как новые с сохранением структуры'' - для каждой импортируемой записи создает новую запись в текущей базе; сохраняется изначальная структура записей импортируемого файла.&lt;br /&gt;
** ''Добавить как новые в отдельный каталог'' - создает в корне базы новый каталог, для каждой импортируемой записи создает новую запись в каталоге; сохраняется изначальная структура записей импортируемого файла относительно нового каталога.&lt;br /&gt;
** ''Обновить записи (дополняет отсутствующие поля)'' - &amp;quot;мягкое&amp;quot; обновление записей - добавляет в существующие записи отсутствующие там поля, если таковые заполнены в импортируемой базе.&lt;br /&gt;
** ''Обновить записи (заменяет поля импортированными не-пустыми)'' - &amp;quot;жесткое&amp;quot; обновление записей - добавляет либо заменяет в существующих записях те поля, которые заполнены в импортируемой базе.&lt;br /&gt;
** ''Заменить записи'' - перезаписывает все поля записи на импортируемые, даже если в импортируемой записи они пустые.&lt;br /&gt;
* '''Добавлять отсутствующие (новые) записи''' - если установлено - добавляет импортируемые записи, отсутствующие в текущей базе, как новые записи (с сохранением структуры).&lt;br /&gt;
* '''Импорт по полю''':&lt;br /&gt;
** ''ID записи'' - сравнение записей при импорте по их iid.&lt;br /&gt;
** ''Путь к записи'' - сравнение записей при импорте по их пути в структуре и имени записи.&lt;br /&gt;
** ''Имя записи'' - сравнение записей при импорте по их имени. '''Берётся первое найденное имя!''' Для данного пункта '''КРАЙНЕ ЖЕЛАТЕЛЬНО''' иметь уникальные имена записей во избежание потери данных и лишних проблем.&lt;br /&gt;
* '''Выбор импортируемых локализаций'''&lt;br /&gt;
** В данном поле показаны все локализации, находящиеся в импортируемом файле.&lt;br /&gt;
** Для импорта той или иной локали - '''отметьте её галочкой'''.&lt;br /&gt;
** Для импорта всех локалей - отметьте их все.&lt;br /&gt;
** Кнопка &amp;quot;Reload locales&amp;quot; перегружает локали импортируемого файла (например если он был изменен в процессе работы с этим окном).&lt;br /&gt;
** Зелеными шариками [[Файл:TextsEditor_green_sphere.png | 16px ]] обозначены языки, используемые в проекте (выбранные в Project &amp;gt; Properties &amp;gt; Selected languages...).&lt;br /&gt;
** Серыми шариками [[Файл:TextsEditor_gray_sphere.png | 16px ]] обозначены языки, которые на данный момент не используются в проекте. Вы можете их импортировать, но для работы с ними их нужно будет включить.&lt;br /&gt;
&lt;br /&gt;
==== Настройка импорта из внешней базы (XML) ====&lt;br /&gt;
&lt;br /&gt;
Окно импорта внешней XML базы:&lt;br /&gt;
&lt;br /&gt;
[[Файл:TextEditor import custom base.jpg]]&lt;br /&gt;
&lt;br /&gt;
'''Элементы интерфейса''':&lt;br /&gt;
* '''(1)''' - структура импортируемого файла&lt;br /&gt;
* '''(2)''' - выбранный элемент структуры, отвечающий за текстовую запись&lt;br /&gt;
* '''(3)''' - структура выбранного элемента текстовой записи&lt;br /&gt;
* '''(4)''' - основные параметра записи - id, имя и каталог&lt;br /&gt;
* '''(5)''' - параметры импорта локалей&lt;br /&gt;
&lt;br /&gt;
'''Пошаговая инструкция на примере xml нашей текстовой базы'''&lt;br /&gt;
# В структуре импортируемого файла '''(1)''' найдите элемент, отвечающий за текстовую запись, и дважды кликните по нему левой кнопкой мыши (ЛКМ)&lt;br /&gt;
# Задайте соответствие между полями в структуре выбранного элемента '''(3)''' и необходимыми полями для нашей текстовой базы '''(4)''':&lt;br /&gt;
#: Первый способ сделать это: перетащите строку из структуры '''(3)''' в соответствующее поле '''(4)'''&lt;br /&gt;
#: [[Файл:TextEditor import custom dragndrop.jpg | x160px]]&lt;br /&gt;
#: Второй способ: выбрать нужную строку '''(3)''' и нажать кнопку напротив соответствующего поля '''(4)'''&lt;br /&gt;
#: [[Файл:TextEditor import custom buttonclick.jpg | x160px]]&lt;br /&gt;
#: Способ третий (хардкор): вписать путь к полю вручную (делать на свой страх и риск, либо если нужного поля по какой-то причине нет в структурке)&lt;br /&gt;
# Выберите тип хранение локали и записей:&lt;br /&gt;
## ''Locale is attribute value'' - код локали находится в значении атрибута, например как в нашей базе: &lt;br /&gt;
##: [[Файл:TextEditor import custom localeisvalue 1.jpg]]&lt;br /&gt;
### ''Select by sentence_id'' или ''Select sentence field'' - покажу на примере&lt;br /&gt;
###: [[Файл:TextEditor import custom localeisvalue 2.jpg]]&lt;br /&gt;
### ''Locale'' - путь к атрибуту с локалью&lt;br /&gt;
### ''sentence_id'' и ''sentence_text'' - путь к атрибуту, содержащему sentnce, и путь к атрибуту, содержащему его текст&lt;br /&gt;
### ''_word'', ''_sent1..3'' - пути к атрибутам, содержащим соответствующие данные&lt;br /&gt;
## ''Locale is attribute name'' - код локали является самим атрибутом, а его значение - текстом&lt;br /&gt;
##: [[Файл:TextEditor import custom localeisattribute 1.jpg | x160px]]&lt;br /&gt;
##: [[Файл:TextEditor import custom localeisattribute 2.jpg]]&lt;br /&gt;
##: Заполните соответствующие поля для нужных \ присутствующих в файле локалей.&lt;br /&gt;
&lt;br /&gt;
После всех установок нажмите '''ОК'''.  Если всё установлено правильно - вы увидите список доступных в файле языков и сможете импортировать файл.&lt;br /&gt;
&lt;br /&gt;
==== Настройка импорта из внешней базы (CSV) ====&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Экспорт текстовой базы ===&lt;br /&gt;
&lt;br /&gt;
Существует два варианта экспорта текстовой базы:&lt;br /&gt;
*'''Export into txt . . .''' - в файл с расширением .csv (текстовый файл)&lt;br /&gt;
*'''Export into xml . . .''' - в файл с расширением .xml (текстовая база)&lt;br /&gt;
&lt;br /&gt;
Само окно экспорта аналогично окну импорта:&lt;br /&gt;
&lt;br /&gt;
[[Файл:TextsEditor_export_menu.jpg]] &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Экспорт в xml генерирует файл, идентичный файлу текстовой базы, но лишь с выбранными в окне языками;&lt;br /&gt;
* При экспорте в csv создается файл такой структуры:&lt;br /&gt;
&lt;br /&gt;
[[Файл:text_baza_export_5.jpg]] &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Экспортироваться будут лишь те языки, которые были выбраны в данном окне, вне зависимости от их наличия в базе. Пустые поля и языки экспортированы не будут.&lt;br /&gt;
&lt;br /&gt;
При выборе флага '''&amp;quot;Export empty lines&amp;quot;''' будут экспортированы все пустые поля и языки, что очень полезно для перевода базы.&lt;br /&gt;
&lt;br /&gt;
=== Добавление иконок в текстовый элемент ===&lt;br /&gt;
&lt;br /&gt;
Необходимость добавления изображения в текстовый элемент, может возникнуть, например, при формировании элементов hiddenObject, или при работе с элементами economics.&lt;br /&gt;
Изображение перетаскивается в текстовый элемент из редактора ресурсов мышкой. Но, в случае необходимости создать множество элементов за один раз, есть более эффективный способ:&lt;br /&gt;
*На панели с кнопками быстрого запуска нажимаем ''Add new text records from resource...''. &lt;br /&gt;
[[Файл:Add new rec from.jpg|300px|]]&lt;br /&gt;
*Открылось окошко ''choose resource file'' в нем следует выбрать необходимый sirx файл.&lt;br /&gt;
[[Файл:Choose resource file.jpg]]&lt;br /&gt;
*В открывшемся дереве ресурсов выбираем нужную папку&lt;br /&gt;
[[Файл:Tree resources.jpg|400px|]]&lt;br /&gt;
*Из отмеченной папки файлы преобразуются в текстовые элементы, содержащие строку ''word'' и соответствующее изображение. Причем добавятся они в текстовый редактор в папку, которая создастся в соответствии с папкой, содержащей эти иконки в редакторе ресурсов.&lt;br /&gt;
&lt;br /&gt;
Если вдруг так получилось, что к текстовой записи подвязан ресурс которого больше нет в базе ресурсов -- он будет обозначен как &amp;quot;INVALID RESOURCE&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
[[Файл:TextsEditor_invalid_image.JPG]]&lt;br /&gt;
&lt;br /&gt;
=== Поиск записи в текстовой базе ===&lt;br /&gt;
&lt;br /&gt;
Окно поиска текстовой записи активируется при нажатии кнопки быстрого запуска [[Файл:Text base find.png]].&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:Text base find wind.jpg]] &amp;lt;br&amp;gt;&lt;br /&gt;
Поиск проходит по непосредственно содержимому текстового поля.&amp;lt;br&amp;gt;&lt;br /&gt;
Поиск по дереву базы может проходить сверху вниз и снизу вверх, если выбрать один из пунктов группы '''Find direction''': &amp;lt;br&amp;gt;&lt;br /&gt;
*'''down'''  - искать сверху вниз;&lt;br /&gt;
*'''up''' - искать снизу вверх.&amp;lt;br&amp;gt;&lt;br /&gt;
Для оптимизации процесса поиска можно выбрать в группе '''Find mode''' один из следующих пунктов:&lt;br /&gt;
*'''in the whole tree'''  - искать во всем дереве;&lt;br /&gt;
*'''from the current item''' - искать от текущего элемента.&amp;lt;br&amp;gt;&lt;br /&gt;
Строка, которая вводится в строку поиска может быть подстрокой интересующей нас записи либо же полностью с ней совпадать. Это можно регулировать с помощью пункта '''Only the whole text'''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:AppSalute]]&lt;/div&gt;</summary>
		<author><name>Bmor</name></author>
		
	</entry>
</feed>